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

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

[复制链接]

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

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

admin 楼主

2015-6-5 11:20:12

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

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

x
这段代码可以参考看看哦,显然比ufun的代码长点,但是是新的也是最好的方法: Z* b+ g! B1 K0 _* ?5 H" g

3 S9 `6 n! V9 ^( e! N( L1 N& W" d7 q9 Z9 F* @8 ]
{
5 s, q6 Z0 Q1 x/ {' j% d    /* Initialize the API environment */- j8 L9 S/ }1 m
    if( UF_CALL(UF_initialize()) ) $ h2 e9 W! y8 {7 i- N+ [8 u" ]; F* Q
    {/ c- c: C% R: K0 ~" X9 n7 C
        /* Failed to initialize */
& }# x  f; m' \% `7 v; M, @. g        return;4 L0 u2 J3 r6 a, i" V+ p
    }) N. L- d; A3 n. i

; ], Y5 L+ n8 N* {5 L9 f. y    Session *theSession = Session::GetSession();8 d6 V0 a& @$ ?+ Q: }
    Part *workPart = theSession->Parts()->Work();
# e* |' L8 ]: H" X* R  r# d0 R6 P  ~: ?2 t) J
    /*Get the existing group objects to create the operation under*/7 m& B+ t. x! D  G0 y) w2 ^( M
    CAM::NCGroup *programGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("PROGRAM");
' m. {7 B1 \4 e! ~/ E    CAM::NCGroup *methodGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("METHOD");
- p+ k0 J7 |0 N    CAM::NCGroup *toolGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("MILL");# I- m5 L% X- k0 t3 z
    CAM::NCGroup *geometryGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("WORKPIECE");
8 w; F6 |6 t; X  W; g% C7 d: Q! t# c4 _* |' X- A  y
    /*Create the Cavity Mill operation*/
( d9 o7 j( K% Q" \3 x9 |    CAM::Operation *operation = workPart->CAMSetup()->CAMOperationCollection()->Create(programGroup, methodGroup, toolGroup, geometryGroup, "mill_contour", "CAVITY_MILL", CAM::OperationCollection::UseDefaultNameTrue, "CAVITY_MILL");; ^3 R% N2 c$ {/ J8 p8 E' Y5 C
5 L7 r- M& j* T3 k
    /*Create the Cavity Milling builder*/* F- @4 [4 b& O% x) B
    CAM::CavityMillingBuilder *cavityMillingBuilder = workPart->CAMSetup()->CAMOperationCollection()->CreateCavityMillingBuilder(operation);+ W: Y5 k5 g* Z7 s+ W- R2 a2 A$ {

5 d" ]; ~: j# w- T4 ?+ ?    /*Get the solid body named PART*/; \! M" B2 j' K( }6 c
    tag_t partSolid = NULL_TAG;
! z4 H$ B: q9 a" D2 ?, p    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "PART", UF_solid_type, false, &partSolid);4 c0 z% d$ u' A' C7 s% Q* @* V6 b
    Body *partBody = dynamic_cast<Body *> (NXObjectManager::Get(partSolid));" V0 `: {- J5 u
    std::vector<Body *> partBodies(1);; N' C, |; R8 N5 l+ H  f
    partBodies[0] = partBody;3 p* l  X, S  C

) @: I% B2 `7 U& _4 `, j" [) I    /*Set the part geometry*/6 @3 w) M5 a/ x# i. Z4 l% g
    cavityMillingBuilder->PartGeometry()->InitializeData(false);
/ s: Q  O1 R6 s9 t+ {% h    CAM::GeometrySet *partGeometrySet = cavityMillingBuilder->PartGeometry()->GeometryList()->FindItem(0);
, _& Z; L3 N, I$ {+ l    BodyDumbRule *partBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(partBodies);
0 W" x5 U" @- {: P" M* n6 ?) [- S; |    std::vector<SelectionIntentRule *> partRules(1);9 V! D! M. e: w  E# }; Z
    partRules[0] = partBodyDumbRule;
, q+ e) s  J) f8 m3 A; K    partGeometrySet->ScCollector()->ReplaceRules(partRules, false);
# ~% X4 o. s" k* D8 H( F# A/ D
4 s- k& X1 e8 e- e    /*Get the solid body named BLANK*/; Z8 [. J$ L# z- ?7 `
    tag_t blankSolid = NULL_TAG;* Z- U9 P' F2 e9 Y7 D& h* V& q
    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "BLANK", UF_solid_type, false, &blankSolid);
* C8 [# ^( d6 [+ y$ V$ w1 O! d    Body *blankBody = dynamic_cast<Body *> (NXObjectManager::Get(blankSolid));* B0 l' e% x" f2 X; s$ Z. l- Z
    std::vector<Body *> blankBodies(1);
! ~% {/ }6 p% B    blankBodies[0] = blankBody;
) V; M, z9 c6 Y) F$ R( X# n
& l# x% D/ b) g* b$ W6 c: W. K) N    /*Set the blank geometry*/
9 i2 b6 f% K# H) l. @5 I    cavityMillingBuilder->BlankGeometry()->InitializeData(false);8 {% [- g) C) O! v+ v, t
    CAM::GeometrySet *blankGeometrySet = cavityMillingBuilder->BlankGeometry()->GeometryList()->FindItem(0);& g% a2 ^' ^; M  Z# Q2 Q) K  f% C
    BodyDumbRule *blankBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(blankBodies);1 g! j# |3 w/ i4 e
    std::vector<SelectionIntentRule *> blankRules(1);
7 o! O: H9 [! h. t; S6 |    blankRules[0] = blankBodyDumbRule;
& E5 Q) L: K0 w+ g    blankGeometrySet->ScCollector()->ReplaceRules(blankRules, false);: u# T- [9 a0 y6 @4 r

6 G9 h7 ?/ M) F: s; ?* I    cavityMillingBuilder->Commit();7 w4 p# v) Y2 Y& Z; F$ o
    cavityMillingBuilder->Destroy();$ _$ x0 i2 y* d7 u; Q
! @( d; G) e  w/ g5 x! t
    /*Generate the tool path*/
, j( ^' j/ e& U3 n/ o& ~; a6 c' x1 }    std::vector<CAM::CAMObject *> operations(1);  b! t1 D& V0 E5 N2 d
    operations[0] = operation;
3 s  r) l" G" C6 P) A4 ~    workPart->CAMSetup()->GenerateToolPath(operations);
0 X, Q2 @, ?% ]7 H5 c3 ], M# k
9 x& k/ O! k4 a- @: k. n    /* Terminate the API environment */
# H. Q2 S+ `# s- T! C    UF_CALL(UF_terminate());
, f+ k; L( H& y/ |2 T}1 ?( g4 [- e/ ?4 W

8 i. }2 n" j0 T
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了