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

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

[复制链接]

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

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

admin 楼主

2015-6-5 11:20:12

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

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

x
这段代码可以参考看看哦,显然比ufun的代码长点,但是是新的也是最好的方法
! z6 b- e/ Q3 `) c0 L
8 Z2 ?3 {2 A0 Z' {4 o5 _
# c3 b4 p9 y" t( k" O{* P1 O( D, m& L3 V2 F
    /* Initialize the API environment */& v1 c! V5 k% i9 q* B
    if( UF_CALL(UF_initialize()) ) ' V$ u1 m* \8 F5 e; ~" I
    {3 g: u; l. L& p5 r7 O- t
        /* Failed to initialize */
: {, n& Y; Z  q        return;) V; u$ G7 x) m3 s
    }9 M% T; T% h2 }

: C1 `5 P3 A8 w0 Z    Session *theSession = Session::GetSession();3 [' l- G2 U; z% o
    Part *workPart = theSession->Parts()->Work();
6 h3 C4 K7 m! b: |# `2 K% d) R4 n9 w( O
    /*Get the existing group objects to create the operation under*/
7 F- q/ {! w& n1 b" L# ~    CAM::NCGroup *programGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("PROGRAM");, H' |/ T4 \/ `, M& f
    CAM::NCGroup *methodGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("METHOD");
$ h# J. g) o5 @7 Y7 ?    CAM::NCGroup *toolGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("MILL");
7 @/ a! t% M2 C+ V4 T, \0 I0 {    CAM::NCGroup *geometryGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("WORKPIECE");7 ]& g* C/ ?3 @6 w

+ @, r- w8 `# C  B/ l5 I    /*Create the Cavity Mill operation*/+ D6 g% C" E8 u, s, w. C
    CAM::Operation *operation = workPart->CAMSetup()->CAMOperationCollection()->Create(programGroup, methodGroup, toolGroup, geometryGroup, "mill_contour", "CAVITY_MILL", CAM::OperationCollection::UseDefaultNameTrue, "CAVITY_MILL");
* k7 r- ?4 ?( w- z" d9 v
5 Y3 l% g) Q/ i; s    /*Create the Cavity Milling builder*/
- W7 M) [. L% E3 t4 U' h# ~    CAM::CavityMillingBuilder *cavityMillingBuilder = workPart->CAMSetup()->CAMOperationCollection()->CreateCavityMillingBuilder(operation);
; D" T! H4 c) {4 `* w2 Y- C" t8 S( v& K
    /*Get the solid body named PART*/, p$ r5 w" B; B& j
    tag_t partSolid = NULL_TAG;7 g+ u2 b2 E4 Q
    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "PART", UF_solid_type, false, &partSolid);
9 w  h" v, e) h6 M! B1 A+ A- o% w    Body *partBody = dynamic_cast<Body *> (NXObjectManager::Get(partSolid));3 k8 N: Z: V+ @7 T! Z
    std::vector<Body *> partBodies(1);
: D- {9 R: `1 G    partBodies[0] = partBody;
) C4 g/ C4 m% I8 K2 u* d4 T5 u& i2 F7 H* R+ A# ^& D' S
    /*Set the part geometry*/! d4 u: e- b6 H6 Z2 ?+ W- f
    cavityMillingBuilder->PartGeometry()->InitializeData(false);
5 l! e# H  ]6 `" j6 a    CAM::GeometrySet *partGeometrySet = cavityMillingBuilder->PartGeometry()->GeometryList()->FindItem(0);! c& i% w+ o; G1 N5 t+ B% i0 r/ Z
    BodyDumbRule *partBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(partBodies);
, q+ i) R8 D4 @5 A) N+ e( W    std::vector<SelectionIntentRule *> partRules(1);
; c5 n+ _- E4 |7 K& i5 M2 y9 \    partRules[0] = partBodyDumbRule;
5 {/ t) ^" l1 p! N    partGeometrySet->ScCollector()->ReplaceRules(partRules, false);  @8 r' |- W. ^3 n# X2 l! I7 x
. F0 k7 ~* z/ r6 `( y/ X3 ^
    /*Get the solid body named BLANK*/9 P8 z3 |1 L: W. O9 d! }# k
    tag_t blankSolid = NULL_TAG;
1 T" D, Z* l; A' p# M: _8 L5 ]" J& E    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "BLANK", UF_solid_type, false, &blankSolid);
' F6 u7 G# P* e6 r& i    Body *blankBody = dynamic_cast<Body *> (NXObjectManager::Get(blankSolid));
- K( ?2 u  o( ]$ I1 M    std::vector<Body *> blankBodies(1);+ w# H3 i) P& p5 S
    blankBodies[0] = blankBody;3 m2 O1 m' K1 {5 M( U0 f
2 e; |6 b, J8 L4 M9 B
    /*Set the blank geometry*/
7 y/ Q5 F" Q$ f7 k. a    cavityMillingBuilder->BlankGeometry()->InitializeData(false);
: w! x) {" M6 ~" G/ h8 O    CAM::GeometrySet *blankGeometrySet = cavityMillingBuilder->BlankGeometry()->GeometryList()->FindItem(0);( e: X( z! G/ m5 @* O
    BodyDumbRule *blankBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(blankBodies);
6 A3 N/ Q. s& ^9 s6 M! R8 l, M    std::vector<SelectionIntentRule *> blankRules(1);
* q+ z( Y& Q" Q  r0 ~/ O3 p    blankRules[0] = blankBodyDumbRule;
' K* p, x5 L- ^- \' l    blankGeometrySet->ScCollector()->ReplaceRules(blankRules, false);
. {' g, Q# ]' z& i2 I: o6 T6 M* Z
    cavityMillingBuilder->Commit();
% J/ O# J  H  Z+ i& }! V    cavityMillingBuilder->Destroy();
; s. M) e" w+ D: U) _
8 S: k( e  Y& n    /*Generate the tool path*/
8 L; B( _; p; A" x  G    std::vector<CAM::CAMObject *> operations(1);% Z) H. I- P- x* V0 }; @
    operations[0] = operation;
2 `. d: e1 V: Y2 ^" a    workPart->CAMSetup()->GenerateToolPath(operations);  Z- ^3 C" o/ C; p9 w  b, s0 r
* d1 \5 H# T! n6 y6 e: c
    /* Terminate the API environment */
0 Y* l) n( U/ L    UF_CALL(UF_terminate());
% @, y) E! I2 S- O* m}
: t& V, b- X! K/ u
5 z7 ~; h" j. e/ I
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了