PLM之家PLMHome-工业软件与AI结合践行者

[资料分享] NX二次开发源码分享:使用NXOpen C++创建加工型腔铣

[复制链接]

2015-6-5 11:20:12 4522 0

admin 发表于 2015-6-5 11:20:12 |阅读模式

admin 楼主

2015-6-5 11:20:12

请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!

您需要 登录 才可以下载或查看,没有账号?注册

x
这段代码可以参考看看哦,显然比ufun的代码长点,但是是新的也是最好的方法9 K) N6 @9 k& D5 y7 u  f$ D

2 b- H. l" L3 F' ]9 q' z6 z2 c
& [" \$ K. m$ A0 t6 ~4 p{
9 }, y4 a/ ?, b0 i. k# j, p/ @    /* Initialize the API environment */' {' T  E' f1 x
    if( UF_CALL(UF_initialize()) )
! g; f: o" O3 M$ V. n    {. a& R3 N" u' P! h
        /* Failed to initialize */
! B* H4 ?( K- R) T4 j! V        return;
* `- M1 _5 |8 }    }
9 h- w+ i7 X6 F( _' r5 l! {' X) U" }' f7 j; V- f
    Session *theSession = Session::GetSession();6 K: k0 o4 {8 C! `% [
    Part *workPart = theSession->Parts()->Work();
, P! G% Z9 E. d+ v+ Z. m% H5 c
. T. R0 }% W* C    /*Get the existing group objects to create the operation under*/8 d2 X8 ~. `: N
    CAM::NCGroup *programGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("PROGRAM");
8 `  ?6 l1 l+ P    CAM::NCGroup *methodGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("METHOD");
* J! S2 l7 q1 W# D( J, @$ J8 _9 X1 ~    CAM::NCGroup *toolGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("MILL");3 G! a8 i  i: P& R4 Q
    CAM::NCGroup *geometryGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("WORKPIECE");$ j  g7 L; T$ F  ?7 N3 ?
6 j9 |3 H. [" Z) O" L' `
    /*Create the Cavity Mill operation*/
0 r( L- h6 Y9 J, U, V    CAM::Operation *operation = workPart->CAMSetup()->CAMOperationCollection()->Create(programGroup, methodGroup, toolGroup, geometryGroup, "mill_contour", "CAVITY_MILL", CAM::OperationCollection::UseDefaultNameTrue, "CAVITY_MILL");
) z5 h3 i& L. Z& w+ V9 y! L) A( K, B* j9 B& p5 f$ A
    /*Create the Cavity Milling builder*/
) ~0 `  Q; s! `' q2 S    CAM::CavityMillingBuilder *cavityMillingBuilder = workPart->CAMSetup()->CAMOperationCollection()->CreateCavityMillingBuilder(operation);
  O3 x2 N" q. i$ {% y+ {4 w1 b( ~/ V: b  l$ d# z9 c
    /*Get the solid body named PART*/
+ I' }5 C- x# P) k/ Q7 v$ J7 S4 O. _) Q    tag_t partSolid = NULL_TAG;
3 {; V6 C3 W9 e  P5 `1 ^8 L    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "PART", UF_solid_type, false, &partSolid);
: Y, j1 T3 b+ ~6 {# h. Q, G    Body *partBody = dynamic_cast<Body *> (NXObjectManager::Get(partSolid));
# U8 O! d3 u$ W$ t    std::vector<Body *> partBodies(1);
1 U, x4 A# B* S! o" f$ S% F  p    partBodies[0] = partBody;
7 S) V7 j4 F( {' V  e! B9 p6 y$ o
    /*Set the part geometry*/6 Z6 u2 [+ P8 y" Y# a# U" E
    cavityMillingBuilder->PartGeometry()->InitializeData(false);
. W+ q' B3 b( O3 |9 W# {; ?( n+ ]    CAM::GeometrySet *partGeometrySet = cavityMillingBuilder->PartGeometry()->GeometryList()->FindItem(0);  O2 D1 e) V: g2 @4 q1 k
    BodyDumbRule *partBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(partBodies);5 e, b$ x" |% B5 \+ E: S
    std::vector<SelectionIntentRule *> partRules(1);
  g5 l$ e: R  m+ q; ]2 Q+ }* `6 W    partRules[0] = partBodyDumbRule;
! w, y) I: S2 P0 ]2 _    partGeometrySet->ScCollector()->ReplaceRules(partRules, false);
/ _( ?5 E1 Z+ u/ h" O
! s5 B0 q& U( l) H    /*Get the solid body named BLANK*/. P& a6 t2 u9 J" L- J4 F, `
    tag_t blankSolid = NULL_TAG;& ^) B% ]* {4 }; J- h
    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "BLANK", UF_solid_type, false, &blankSolid);; f/ T2 P  o  d4 S
    Body *blankBody = dynamic_cast<Body *> (NXObjectManager::Get(blankSolid));
+ ?' S& s# C1 B1 e& b) ^    std::vector<Body *> blankBodies(1);
" I4 a  _4 U& K% h3 M    blankBodies[0] = blankBody;
; a8 |- ]! }$ I+ Y3 Q$ M
5 O* e( n# t8 n: F    /*Set the blank geometry*/0 O; ]' I) |* R# l
    cavityMillingBuilder->BlankGeometry()->InitializeData(false);
. `+ j% r; ]$ i( W& `) e- |( T    CAM::GeometrySet *blankGeometrySet = cavityMillingBuilder->BlankGeometry()->GeometryList()->FindItem(0);
8 F! I5 g' u. d5 K- [  Y$ g    BodyDumbRule *blankBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(blankBodies);
0 W0 z- {8 K2 L% i) t    std::vector<SelectionIntentRule *> blankRules(1);% B6 X8 `4 V+ \& w
    blankRules[0] = blankBodyDumbRule;
; w5 s$ l( i# _9 A5 A    blankGeometrySet->ScCollector()->ReplaceRules(blankRules, false);) T  |3 N4 X" x5 S/ f  p1 i3 g

1 I5 B" L! u3 |8 ~    cavityMillingBuilder->Commit();8 b$ i1 N2 M  g( F5 r
    cavityMillingBuilder->Destroy();( h9 `5 m; n$ r( Z6 G% J
" \4 g- B( U$ b3 z8 y
    /*Generate the tool path*/8 H2 N" l# X" L) W8 o; y4 x5 g
    std::vector<CAM::CAMObject *> operations(1);; F8 x! d) v4 [
    operations[0] = operation;6 o  X5 i$ S: f4 U* k
    workPart->CAMSetup()->GenerateToolPath(operations);$ g6 u: G" Z9 j& q1 j! M( v! n
/ [+ O; N, O0 K7 w  P8 `& t" N
    /* Terminate the API environment */
: m+ q- J& M- z. Q+ ^    UF_CALL(UF_terminate());5 M) i; O1 c) d5 u- w/ f
}
: k9 I' d+ s8 I; F" n4 q. z$ y- e" m$ Q5 K6 a
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了