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

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

[复制链接]

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

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

admin 楼主

2015-6-5 11:20:12

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

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

x
这段代码可以参考看看哦,显然比ufun的代码长点,但是是新的也是最好的方法# y. B$ J* k9 m* C
, L: e# O: \* v4 y$ C' |

0 y/ i; I  p$ R; s( t1 y& p4 W" E{: q+ d  i' ]$ B: Y3 i# `
    /* Initialize the API environment */
% ~2 ^9 z. }+ n7 E/ ?, {    if( UF_CALL(UF_initialize()) ) 9 C0 }0 f5 R% w0 k( ~6 n; L
    {
* o% @; Q' R6 E, N        /* Failed to initialize */
5 Z# j' b+ H/ |0 h7 Q        return;5 Y1 o/ d  m2 L
    }* v8 y& p+ z# p) G/ t
2 y3 O8 e& p7 R# W1 q/ l
    Session *theSession = Session::GetSession();
/ ~# V/ N' S" f, d2 E6 q7 T2 c( W    Part *workPart = theSession->Parts()->Work();
4 p3 k% p& _9 o2 Z, b2 E
2 P0 X; v/ U0 Q* s" Z% c    /*Get the existing group objects to create the operation under*/
2 H- Y4 N0 ^% [8 a  `2 u    CAM::NCGroup *programGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("PROGRAM");, n9 {9 P5 H' B+ @# `  i* n" B
    CAM::NCGroup *methodGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("METHOD");+ ~8 J3 z7 O+ Q; g) K- t- n! P
    CAM::NCGroup *toolGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("MILL");
9 l* @. U# ?6 r1 E8 f- D4 O    CAM::NCGroup *geometryGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("WORKPIECE");  r3 t* j1 Z! ]/ M

$ L& j3 P6 T; w2 P" u) u6 h    /*Create the Cavity Mill operation*/  O, F* p) I1 m, r; M, g4 @
    CAM::Operation *operation = workPart->CAMSetup()->CAMOperationCollection()->Create(programGroup, methodGroup, toolGroup, geometryGroup, "mill_contour", "CAVITY_MILL", CAM::OperationCollection::UseDefaultNameTrue, "CAVITY_MILL");
6 a: E! S- P* w9 j, X* K8 D8 H
7 ]( R, v1 i* M+ C' y9 b0 e    /*Create the Cavity Milling builder*/0 c! n  @0 k- X; S' l0 |( c
    CAM::CavityMillingBuilder *cavityMillingBuilder = workPart->CAMSetup()->CAMOperationCollection()->CreateCavityMillingBuilder(operation);
& W2 Y+ l$ M" c8 v, c/ m  }3 y% e) i: y- H/ S* b# a: `# H5 m  k
    /*Get the solid body named PART*/( }7 Y4 s+ n0 H5 \" ]% T
    tag_t partSolid = NULL_TAG;
$ `% q+ \7 s; }( o; U* b( N; Q: H8 N* n    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "PART", UF_solid_type, false, &partSolid);/ }) @" l: p4 G. `+ A( x
    Body *partBody = dynamic_cast<Body *> (NXObjectManager::Get(partSolid));9 F$ B" `; a! R
    std::vector<Body *> partBodies(1);
* y9 D& Z! T0 }  Y! X# v! g' w+ j: i    partBodies[0] = partBody;$ y+ _) b/ H! I1 u2 P/ i( \
( u  C7 I8 [/ L; ?& ]% L
    /*Set the part geometry*/
- w! g  Y: T+ F/ H- u    cavityMillingBuilder->PartGeometry()->InitializeData(false);
5 t* {! L/ _2 F8 O    CAM::GeometrySet *partGeometrySet = cavityMillingBuilder->PartGeometry()->GeometryList()->FindItem(0);' V+ b9 d& D2 _, X
    BodyDumbRule *partBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(partBodies);5 U+ Q, z( |. w+ ^+ [
    std::vector<SelectionIntentRule *> partRules(1);1 {* T+ `4 ]: G! o' }2 o
    partRules[0] = partBodyDumbRule;% y# C3 b8 G. m6 b9 M: V5 h
    partGeometrySet->ScCollector()->ReplaceRules(partRules, false);3 N- W, T" _, @! k7 j" i
( B- Z2 O% r5 N8 @4 e1 z2 h! \# n: A
    /*Get the solid body named BLANK*/
2 X$ z0 b) V4 t5 y1 p' T    tag_t blankSolid = NULL_TAG;7 T- J- u% U; b- Q
    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "BLANK", UF_solid_type, false, &blankSolid);8 H1 a. i* q: c8 M6 z" k; I- h
    Body *blankBody = dynamic_cast<Body *> (NXObjectManager::Get(blankSolid));
5 }: B- H/ y+ R# W    std::vector<Body *> blankBodies(1);, {0 a$ u% S/ n# ?4 J  }* z  {
    blankBodies[0] = blankBody;
, D0 @* _, w  _1 Y! b; Q' |: R0 o6 h" I& K- R! v0 m
    /*Set the blank geometry*/' B% o2 ^0 A& F  b  z3 m4 r
    cavityMillingBuilder->BlankGeometry()->InitializeData(false);3 Q8 j. e: ~! ~2 g7 b, j
    CAM::GeometrySet *blankGeometrySet = cavityMillingBuilder->BlankGeometry()->GeometryList()->FindItem(0);* B/ K9 X' ]; v1 b
    BodyDumbRule *blankBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(blankBodies);2 k" ?) U. v2 _7 E% F# i5 g, K
    std::vector<SelectionIntentRule *> blankRules(1);4 `' ~2 j& F( D' s$ q5 |& i
    blankRules[0] = blankBodyDumbRule;/ k/ e1 ]- c5 i! J- G/ N
    blankGeometrySet->ScCollector()->ReplaceRules(blankRules, false);) U2 k0 K; u% Y
- f9 b9 P! U9 v2 ~* \# Q3 i# \
    cavityMillingBuilder->Commit();
, p' c, @! J! `( w- W    cavityMillingBuilder->Destroy();
5 Z3 O- m- M7 \2 z) J/ y! q; G2 J& D1 f3 j" n. b& H
    /*Generate the tool path*/
' l% P! ]4 g( l2 K2 l( M6 D    std::vector<CAM::CAMObject *> operations(1);
; x# q* h: |2 U3 v0 z1 q$ h    operations[0] = operation;; V, g3 Q" ]- B! y& f9 H
    workPart->CAMSetup()->GenerateToolPath(operations);
. ^# H4 r2 [3 a  o
. E& p" Q0 Y; `. Y, M' N6 C3 J1 Y+ o    /* Terminate the API environment */( W1 r( }) P  H1 ]! S4 L7 u
    UF_CALL(UF_terminate());
* O6 o- C  {. W}5 x! i5 L& q+ @8 e/ }! [1 m7 Y8 X

1 r# p: V. J5 J1 z4 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二次开发专题模块培训报名开始啦

    我知道了