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

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

[复制链接]

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

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

admin 楼主

2015-6-5 11:20:12

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

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

x
这段代码可以参考看看哦,显然比ufun的代码长点,但是是新的也是最好的方法
  z0 S3 m8 |  A+ x
5 ?3 l9 e2 C5 I  E- b' I7 x( H! ^# j. n# E& Z
{
0 E9 c0 Y+ i# }    /* Initialize the API environment */
. C; X4 w3 S+ ?    if( UF_CALL(UF_initialize()) ) ! m2 W9 o' y( t5 |4 O. p
    {
) ?5 ?( d3 [/ |: P) X$ ]2 X        /* Failed to initialize */
( J9 z& J$ J3 T5 p        return;+ a2 p. x, K1 B
    }
8 z3 h7 d6 q4 I: S9 x- w& f
3 i* }- }- p; B0 J+ s# |    Session *theSession = Session::GetSession();* ~1 r' N- @8 \- W
    Part *workPart = theSession->Parts()->Work();4 s& o+ L1 G* d4 }
" N: E: A; u- r1 p  V
    /*Get the existing group objects to create the operation under*/
2 H0 `: K. t( K/ s, x& z! ?    CAM::NCGroup *programGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("PROGRAM");. x0 m* T; q1 R" U- G% C
    CAM::NCGroup *methodGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("METHOD");
$ b: z; N# u! k3 e& I4 Z) _& s    CAM::NCGroup *toolGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("MILL");2 d/ E8 j7 W+ {' M) y5 y! l
    CAM::NCGroup *geometryGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("WORKPIECE");; p7 Q0 \& P5 a: @7 P" i$ ?

, @4 U% F( w, ~9 _* e; C5 _! H# M    /*Create the Cavity Mill operation*/
0 c8 N5 j& P7 X9 U5 o6 p- K    CAM::Operation *operation = workPart->CAMSetup()->CAMOperationCollection()->Create(programGroup, methodGroup, toolGroup, geometryGroup, "mill_contour", "CAVITY_MILL", CAM::OperationCollection::UseDefaultNameTrue, "CAVITY_MILL");
$ a) R% n" K9 Q; E# J) E- p! t5 G0 S4 W! y6 d  t
    /*Create the Cavity Milling builder*/& `3 t- @; d' \4 {4 l+ {
    CAM::CavityMillingBuilder *cavityMillingBuilder = workPart->CAMSetup()->CAMOperationCollection()->CreateCavityMillingBuilder(operation);$ u* L1 h1 `" N7 D$ m  |
* S  h) {% D0 W5 A
    /*Get the solid body named PART*/8 J8 b6 V0 T1 F2 \7 T1 \2 o
    tag_t partSolid = NULL_TAG;
6 r8 ^2 m0 j3 W    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "PART", UF_solid_type, false, &partSolid);- u( I* |4 ^; Q! {
    Body *partBody = dynamic_cast<Body *> (NXObjectManager::Get(partSolid));7 B, s6 C. h, U. X) G
    std::vector<Body *> partBodies(1);
. B; T5 l8 D" X4 w    partBodies[0] = partBody;
" j' g% G( h0 [6 M
2 ]$ ^( Y! ]0 M& {    /*Set the part geometry*/% ?! N% `; N6 I1 k( e7 w) t9 }
    cavityMillingBuilder->PartGeometry()->InitializeData(false);1 k; v/ l) T# @/ w8 M4 C) l
    CAM::GeometrySet *partGeometrySet = cavityMillingBuilder->PartGeometry()->GeometryList()->FindItem(0);
7 G* M8 ?, e1 M" _    BodyDumbRule *partBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(partBodies);# |9 P# N% @& y# }& n& l1 }( r; m
    std::vector<SelectionIntentRule *> partRules(1);
( P2 G  H: l9 y# l    partRules[0] = partBodyDumbRule;- k/ Q& b9 A2 E, @; D
    partGeometrySet->ScCollector()->ReplaceRules(partRules, false);
, |' x) @7 L2 E+ ~0 o& X! r5 u' v) |* u* [$ P* Q
    /*Get the solid body named BLANK*/7 [  ?1 G, m: b. N( D4 e% v( `( Z
    tag_t blankSolid = NULL_TAG;
/ d& h$ W+ Q" Y5 X/ m$ v. X* U    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "BLANK", UF_solid_type, false, &blankSolid);2 i. z3 o6 Z9 K( }) g1 R
    Body *blankBody = dynamic_cast<Body *> (NXObjectManager::Get(blankSolid));5 M; G' t$ J: h$ G' J, Z0 s
    std::vector<Body *> blankBodies(1);  ]( W8 [+ q! m
    blankBodies[0] = blankBody;
6 }. H8 N" `0 C! F1 |
9 E% d# h7 U" L7 ], b    /*Set the blank geometry*/
5 s( |) H0 f9 k4 g3 W; c4 n% w* G  j    cavityMillingBuilder->BlankGeometry()->InitializeData(false);; ]2 m8 a' f7 v) I
    CAM::GeometrySet *blankGeometrySet = cavityMillingBuilder->BlankGeometry()->GeometryList()->FindItem(0);
8 m# N( h7 g2 U$ ?; _+ n    BodyDumbRule *blankBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(blankBodies);- p  ]- x: `2 P+ r: |
    std::vector<SelectionIntentRule *> blankRules(1);  G2 D% X: g- N
    blankRules[0] = blankBodyDumbRule;0 @* [8 c5 V& B5 _$ O
    blankGeometrySet->ScCollector()->ReplaceRules(blankRules, false);
$ C( T7 b' n  c5 U5 o7 R+ X) D1 k3 ^; c* s
    cavityMillingBuilder->Commit();: n( N5 p# E8 k) l: A
    cavityMillingBuilder->Destroy();
* @& J# ~: N! M( H: f! B
' M+ _. a7 I) ]/ F+ o2 Y! G    /*Generate the tool path*/& b! v/ t& g, y! j
    std::vector<CAM::CAMObject *> operations(1);
, E9 z- y! i: y8 D. K+ Z8 c    operations[0] = operation;: ~" G0 a3 G8 w) {
    workPart->CAMSetup()->GenerateToolPath(operations);
) @; m  p3 _$ |1 Q$ `; |+ R% u. I* j3 x& j# S1 c$ t) H, ~+ s
    /* Terminate the API environment */
5 G. l3 y; |( K8 J    UF_CALL(UF_terminate());
! k/ F! z! k2 ]}
  O: g6 |: ?: s3 g) A" k& |) J
" c1 ?! p, I2 U/ Q/ s% \0 u
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了