PLM之家PLMHome-国产软件践行者

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

[复制链接]

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

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

admin 楼主

2015-6-5 11:20:12

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

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

x
这段代码可以参考看看哦,显然比ufun的代码长点,但是是新的也是最好的方法
" @# P# Z4 c' I0 ]5 q" D4 l; x
" [$ _; o5 `4 M5 p3 [
$ C, {5 Z6 A$ w5 L1 x! L{
1 `4 p7 z6 r. [/ @& D    /* Initialize the API environment */
& g2 Q1 `1 z8 j" K* X  h1 u( L    if( UF_CALL(UF_initialize()) )
( v, Z6 b+ n' d1 q0 N    {+ k6 z2 k/ I7 z* i: t$ z+ d
        /* Failed to initialize */
. G" o* M  d- O) |3 p4 {- S, G        return;
5 @, X2 w& V* x5 r* E6 f$ s    }. M1 }7 N- }$ T; d$ z

9 Y+ s1 z1 p! @: P. s5 x1 i! f    Session *theSession = Session::GetSession();* J! W1 s, t# z. ^* U
    Part *workPart = theSession->Parts()->Work();3 k) W3 G( @" q) c

& `/ `# M. q( Y3 }" h/ h+ K    /*Get the existing group objects to create the operation under*/1 @& T2 F* v. O7 k  [0 F
    CAM::NCGroup *programGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("PROGRAM");
5 _/ @3 E# ~1 C1 e: Q: O! h" k9 @0 F    CAM::NCGroup *methodGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("METHOD");6 Z$ p3 E9 E" D1 ]
    CAM::NCGroup *toolGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("MILL");. F5 D* m; ?  Y' Q
    CAM::NCGroup *geometryGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("WORKPIECE");; V5 \; c" g) x; b- H

* p" H# q7 y; M  ]    /*Create the Cavity Mill operation*/
( K$ S3 O1 j4 e# F( o# C    CAM::Operation *operation = workPart->CAMSetup()->CAMOperationCollection()->Create(programGroup, methodGroup, toolGroup, geometryGroup, "mill_contour", "CAVITY_MILL", CAM::OperationCollection::UseDefaultNameTrue, "CAVITY_MILL");
7 e5 y" G& L- H; c5 c& c4 P1 r# F, t: a, D
    /*Create the Cavity Milling builder*/" p  {* E7 y, s) }
    CAM::CavityMillingBuilder *cavityMillingBuilder = workPart->CAMSetup()->CAMOperationCollection()->CreateCavityMillingBuilder(operation);
( {: x9 f6 X* o4 P
0 u- h5 I+ X( x' n( b+ P; E7 R& e    /*Get the solid body named PART*/
( T1 v- w& G' S+ H* N0 p1 E    tag_t partSolid = NULL_TAG;
- {8 f6 p1 f4 e8 `9 v/ G/ k* n. @    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "PART", UF_solid_type, false, &partSolid);& q4 C2 I2 F) p2 U
    Body *partBody = dynamic_cast<Body *> (NXObjectManager::Get(partSolid));
( Z, ?8 K8 N! H  |- b    std::vector<Body *> partBodies(1);, }: h3 ]6 G1 w0 P$ b: h8 }" z
    partBodies[0] = partBody;
; A, k  K6 A3 l& s
; V9 h: R0 G  q/ ^    /*Set the part geometry*/- I# v7 [  _# A5 j1 `3 s
    cavityMillingBuilder->PartGeometry()->InitializeData(false);
! V5 r0 R+ O- q' \; |5 J    CAM::GeometrySet *partGeometrySet = cavityMillingBuilder->PartGeometry()->GeometryList()->FindItem(0);
' V/ \  m& Z) V* G. X: ?- L' I$ Z    BodyDumbRule *partBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(partBodies);
. y1 t) s$ s2 x- ?' K. U5 x* h    std::vector<SelectionIntentRule *> partRules(1);; Q: s/ J, ?! O
    partRules[0] = partBodyDumbRule;
8 s; Y1 v" _8 D; g; K    partGeometrySet->ScCollector()->ReplaceRules(partRules, false);
& S  R/ ^% u1 V0 _/ I
; U3 P* `4 Q$ `5 T6 g8 W    /*Get the solid body named BLANK*/
' U! G7 |) A; _! X. }. e8 m    tag_t blankSolid = NULL_TAG;
$ l3 C2 A. C6 z( Q2 a; z    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "BLANK", UF_solid_type, false, &blankSolid);
$ m; _% A3 [, x    Body *blankBody = dynamic_cast<Body *> (NXObjectManager::Get(blankSolid));
3 t* V. ^* `3 a9 E9 v8 |, b4 N    std::vector<Body *> blankBodies(1);
' e! w( \; g/ @0 E    blankBodies[0] = blankBody;
7 T6 l7 E/ q+ W) Q- y4 `
# @. l. E1 e  @% U. G    /*Set the blank geometry*/
# D/ Y& k( J. e: p! c    cavityMillingBuilder->BlankGeometry()->InitializeData(false);
( h2 S: I3 m0 l" v$ t0 X) `+ w* Z) P    CAM::GeometrySet *blankGeometrySet = cavityMillingBuilder->BlankGeometry()->GeometryList()->FindItem(0);2 H1 ?8 j- e6 N3 e# e
    BodyDumbRule *blankBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(blankBodies);& h1 B0 [3 a7 h! _. P$ k6 B
    std::vector<SelectionIntentRule *> blankRules(1);9 g' p/ @% q" c/ t
    blankRules[0] = blankBodyDumbRule;
" v$ X; U; _8 w6 o9 F    blankGeometrySet->ScCollector()->ReplaceRules(blankRules, false);
  W2 D) P. n8 o$ e- h. g" \# `. K. C6 N& ~; }. o/ U4 @7 h
    cavityMillingBuilder->Commit();
6 d& Z3 q  ]3 C# w8 j4 B0 L) D9 s/ e    cavityMillingBuilder->Destroy();+ e" I3 F9 V, Q7 C& y4 Y

( v  N$ v( B4 g  M  n    /*Generate the tool path*/1 O! I- f9 F# u; `6 W$ C/ ~
    std::vector<CAM::CAMObject *> operations(1);
9 B- |3 t  n8 W% f2 r    operations[0] = operation;( d9 R7 {( C; Y' [6 ?& N
    workPart->CAMSetup()->GenerateToolPath(operations);
- `3 ]3 K; N% _6 \7 I) s3 L0 o1 k. j1 j
    /* Terminate the API environment */
% e/ v8 v& I  ?: U, z6 Z    UF_CALL(UF_terminate());0 \6 D, U  _6 G& h, `" O4 T4 M* P$ \2 q7 [
}
0 U! A' }, ?- B
. p3 U2 [. T6 S) u# X% n
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了