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

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

[复制链接]

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

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

admin 楼主

2015-6-5 11:20:12

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

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

x
这段代码可以参考看看哦,显然比ufun的代码长点,但是是新的也是最好的方法  y. Z* P) _' t/ Y- \: P

3 @+ @! R& V* A7 m1 ?1 W3 t7 z, a- u
{5 E/ a7 e- }, T7 J0 Q5 r  m! {! S% ~
    /* Initialize the API environment */8 s9 u3 ~; V8 E$ N1 p1 }
    if( UF_CALL(UF_initialize()) )
  F( A* E  V4 F  h: r. ?2 W5 Q7 }    {  }4 T. [; U) v3 s
        /* Failed to initialize */
9 r3 b2 z# K) w0 n: z" J) O        return;5 k: U5 o& L$ ?. A) M2 @3 U
    }: A* i/ a/ D9 B' ^9 L8 L

4 Q5 l, v% v5 p7 I, |+ h9 b/ _: l    Session *theSession = Session::GetSession();- k! D. P" y% `0 D1 I6 S
    Part *workPart = theSession->Parts()->Work();
$ I% F5 e3 y: h5 c: G2 s; k6 {. K5 r7 y$ N6 Z5 E$ h/ i* n% F5 @
    /*Get the existing group objects to create the operation under*/! y2 ]; d' F! A. G
    CAM::NCGroup *programGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("PROGRAM");
4 \/ \+ E' n* b! l. |    CAM::NCGroup *methodGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("METHOD");7 @: y* q$ ]9 r  t4 H
    CAM::NCGroup *toolGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("MILL");9 i" f; m# c; `6 f4 n. q
    CAM::NCGroup *geometryGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("WORKPIECE");. A9 k& F5 _- n. M7 m3 y
; u$ ~2 Y9 a+ Z( `* B( ]) u
    /*Create the Cavity Mill operation*/
' n0 r4 y) n: a- @    CAM::Operation *operation = workPart->CAMSetup()->CAMOperationCollection()->Create(programGroup, methodGroup, toolGroup, geometryGroup, "mill_contour", "CAVITY_MILL", CAM::OperationCollection::UseDefaultNameTrue, "CAVITY_MILL");) O+ G3 ?9 i2 ^5 X0 Y

: n0 M4 U$ B; U0 p" w& |3 k    /*Create the Cavity Milling builder*/
* G* r1 B5 {3 T9 A2 N    CAM::CavityMillingBuilder *cavityMillingBuilder = workPart->CAMSetup()->CAMOperationCollection()->CreateCavityMillingBuilder(operation);
4 }( i; g4 E1 m# _/ S0 V
1 B" N% [8 I6 B' Y4 w! D# |- _2 M    /*Get the solid body named PART*/
+ c- x1 W* B. K. o1 Z    tag_t partSolid = NULL_TAG;9 H/ H# [* V# c3 P. p8 X& w
    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "PART", UF_solid_type, false, &partSolid);( `% B- I3 [( l) r$ a/ s, C- j: w
    Body *partBody = dynamic_cast<Body *> (NXObjectManager::Get(partSolid));3 b5 x& A# ]& y$ F# Z' J' I7 ]" c+ l! R
    std::vector<Body *> partBodies(1);
# z& \# V0 [( n! h+ V    partBodies[0] = partBody;
! C4 i6 H* \; W# D) B( b& ~
. ^% T6 I$ W, j    /*Set the part geometry*/( L& K7 r3 k% q, R" o4 x' f! H; e
    cavityMillingBuilder->PartGeometry()->InitializeData(false);1 O4 C- f9 v4 n0 u! {
    CAM::GeometrySet *partGeometrySet = cavityMillingBuilder->PartGeometry()->GeometryList()->FindItem(0);
6 g, k+ }" Z! V4 D: b# j, N    BodyDumbRule *partBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(partBodies);0 ?, v& Z% p1 S) I) r# u
    std::vector<SelectionIntentRule *> partRules(1);: _* l# x: p1 V9 Y& X1 k( S
    partRules[0] = partBodyDumbRule;+ ^2 j( c3 N4 @5 |; J. i3 _5 i
    partGeometrySet->ScCollector()->ReplaceRules(partRules, false);/ v8 J' \2 l# m/ o+ T& C
. v8 i% ^3 C! G4 o5 `, v- j
    /*Get the solid body named BLANK*/. |/ H) _. o" U! Y- K0 \1 V
    tag_t blankSolid = NULL_TAG;
) s9 T. I4 g- h* U& T( I- F    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "BLANK", UF_solid_type, false, &blankSolid);
, f8 {9 B. L! J% q' ^0 K    Body *blankBody = dynamic_cast<Body *> (NXObjectManager::Get(blankSolid));* P9 L& ]2 g( m- e
    std::vector<Body *> blankBodies(1);
( g' {( l# J* C9 f( U; P# y! e    blankBodies[0] = blankBody;5 U  @. ?2 y# \+ P& G7 P- E% }( Q! m

" g) C! }0 Z4 q2 N! T1 O7 J7 @    /*Set the blank geometry*/6 R: }) \5 S$ L( y4 T
    cavityMillingBuilder->BlankGeometry()->InitializeData(false);# t9 \( C( r6 d4 S- X- N: Q3 T
    CAM::GeometrySet *blankGeometrySet = cavityMillingBuilder->BlankGeometry()->GeometryList()->FindItem(0);9 [0 D) k$ j' s
    BodyDumbRule *blankBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(blankBodies);) d! j: v& |! p
    std::vector<SelectionIntentRule *> blankRules(1);
( m8 t- p5 o& c; ~    blankRules[0] = blankBodyDumbRule;
7 U0 s, J3 C, V( h% b    blankGeometrySet->ScCollector()->ReplaceRules(blankRules, false);
9 F1 |( \8 {" w- L* R  P  r
1 g; T- W  \* t- U    cavityMillingBuilder->Commit();
- Z: b& ]4 x7 i% |3 s5 o    cavityMillingBuilder->Destroy();
$ L, c. O+ p' R4 i! I% k7 m  ]4 k! C6 V5 T! F# G" G( y$ U
    /*Generate the tool path*/1 R! A& X/ Q, i% M) x
    std::vector<CAM::CAMObject *> operations(1);9 G# m  J! ~5 ]# m# y& s
    operations[0] = operation;# ]8 T. O! G* v- \- l2 {4 R0 U
    workPart->CAMSetup()->GenerateToolPath(operations);
  \3 ~1 Q( k" v" x- ]' _6 ~$ X8 W7 E2 z2 K$ p) z( P" O. r$ u. M) K+ S+ J
    /* Terminate the API environment */& U# Y4 f2 r2 p2 D# \# P9 ~6 F
    UF_CALL(UF_terminate());
2 E8 A0 n8 x+ t1 |$ T0 ^}" B/ ?+ d9 M  s$ ^/ O: @8 c# h2 \9 ]- g* T
) o, t( z6 _. K7 s4 b5 F
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了