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

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

[复制链接]

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

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

admin 楼主

2015-6-5 11:20:12

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

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

x
这段代码可以参考看看哦,显然比ufun的代码长点,但是是新的也是最好的方法/ P  I( i. `5 I' h7 V% Q
1 d' I7 m9 m4 n: R5 q$ U% F
8 @8 M) O# i! ?' |2 G# n
{8 f! `: @: l8 t. e; M2 }
    /* Initialize the API environment */
- `9 f/ O" Y3 r    if( UF_CALL(UF_initialize()) )
- D' |( l% q9 L    {0 N5 K  K* f, t* a
        /* Failed to initialize */
+ U- ]6 X, W. U$ L1 Y        return;
5 A' n1 Y! G- H  w( o    }! w9 b( M4 ^$ f0 S/ k+ [$ P% T

' \' e) t3 h1 K' P    Session *theSession = Session::GetSession();! R- \( i% o& l$ Y
    Part *workPart = theSession->Parts()->Work();
6 L9 V: B8 e/ q; n6 g: |, f8 W; l: b) d- v
    /*Get the existing group objects to create the operation under*/. W3 x4 @+ R& c" ^8 Z- w3 ~
    CAM::NCGroup *programGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("PROGRAM");# @4 A% j% k) L" g! \
    CAM::NCGroup *methodGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("METHOD");
4 `8 ]& A7 m! i* ]    CAM::NCGroup *toolGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("MILL");# l$ A( ]6 V) B  v) A
    CAM::NCGroup *geometryGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("WORKPIECE");. H# D+ G0 ?3 m: l) }8 w' f
; f- _7 q9 p1 ^
    /*Create the Cavity Mill operation*/: q; A. v3 t7 e5 k9 L  E
    CAM::Operation *operation = workPart->CAMSetup()->CAMOperationCollection()->Create(programGroup, methodGroup, toolGroup, geometryGroup, "mill_contour", "CAVITY_MILL", CAM::OperationCollection::UseDefaultNameTrue, "CAVITY_MILL");" q! W5 E/ @4 n4 T$ Z

) d6 [9 w8 ?! Z5 [+ X4 f    /*Create the Cavity Milling builder*/- t4 k1 f5 r" w. Y) S
    CAM::CavityMillingBuilder *cavityMillingBuilder = workPart->CAMSetup()->CAMOperationCollection()->CreateCavityMillingBuilder(operation);8 }0 ^4 s3 Z7 l6 b7 D0 L
2 L0 h9 c$ H( C9 y% s  L
    /*Get the solid body named PART*/
6 S( s# V+ p  I" e2 d9 D9 z    tag_t partSolid = NULL_TAG;5 ~5 Y8 c' \) `" R: O
    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "PART", UF_solid_type, false, &partSolid);
, U% s4 o7 m6 K  h    Body *partBody = dynamic_cast<Body *> (NXObjectManager::Get(partSolid));
$ }! d& l+ G. |$ }6 q    std::vector<Body *> partBodies(1);
/ |. E8 `: i2 r    partBodies[0] = partBody;' s5 O( k! T6 E" x5 m4 i

& |0 b% h8 B+ _# h$ O, b* F$ D    /*Set the part geometry*/
& j: \9 |: ~7 _8 R    cavityMillingBuilder->PartGeometry()->InitializeData(false);
1 `) O- S$ ]( A    CAM::GeometrySet *partGeometrySet = cavityMillingBuilder->PartGeometry()->GeometryList()->FindItem(0);
/ U, {/ ?% G5 d2 ^- E3 V" w    BodyDumbRule *partBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(partBodies);5 f+ i; b) M- k7 T5 n. P
    std::vector<SelectionIntentRule *> partRules(1);
& [  R" d& S; j( b8 N    partRules[0] = partBodyDumbRule;
! _1 V; e8 r8 a' y) r4 s    partGeometrySet->ScCollector()->ReplaceRules(partRules, false);
1 g: j6 J( K+ m" i' I" @8 w0 s$ Y: M. G
' S; ^, [. X" U% \; ~    /*Get the solid body named BLANK*/
* r* L9 _$ A* ?, r    tag_t blankSolid = NULL_TAG;
5 B7 p# z' p2 A    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "BLANK", UF_solid_type, false, &blankSolid);. `& _  T0 ?2 F' j" G+ a8 d
    Body *blankBody = dynamic_cast<Body *> (NXObjectManager::Get(blankSolid));' z( ]* k3 k3 u& t$ r- e+ @) v
    std::vector<Body *> blankBodies(1);  V' l! V) i: q% n1 f
    blankBodies[0] = blankBody;
) j& d' x- |, N) h. c+ M
) T* y& ^; I6 L+ Y. d6 m, h    /*Set the blank geometry*/$ ?/ |7 @# B( u$ A* G$ T
    cavityMillingBuilder->BlankGeometry()->InitializeData(false);1 `1 e7 ~. h2 }
    CAM::GeometrySet *blankGeometrySet = cavityMillingBuilder->BlankGeometry()->GeometryList()->FindItem(0);' `* m0 B9 F$ h! {
    BodyDumbRule *blankBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(blankBodies);1 u; `& _* ?1 x# D' _1 s' H9 N
    std::vector<SelectionIntentRule *> blankRules(1);
/ }, a* O0 u$ B9 ?! G# c# @) A    blankRules[0] = blankBodyDumbRule;
' n; n# u0 }) W" P1 F  h    blankGeometrySet->ScCollector()->ReplaceRules(blankRules, false);
! C, p) u2 J2 r0 f# Z$ Q- e
1 _0 q: @+ v/ t% c( U/ z# ?4 B, O    cavityMillingBuilder->Commit();; ]) J! G( W. m3 O. g: S$ k2 _
    cavityMillingBuilder->Destroy();
5 p8 l* w& Z8 y! d; g0 x+ I: F/ U- M
    /*Generate the tool path*/! Q( q% n0 ~  d2 R; b: R8 ^
    std::vector<CAM::CAMObject *> operations(1);  U0 n# B# B. S: \0 u- R. L
    operations[0] = operation;
( Q8 r% X6 `- i4 x6 g+ ^    workPart->CAMSetup()->GenerateToolPath(operations);: r' R4 J, ]! W9 h

# t. m, N& @% g3 C    /* Terminate the API environment */
2 g* a; C. j3 s$ W    UF_CALL(UF_terminate());* t2 T( r" S2 o4 a5 e- l
}7 b, k& ~' I. F! n2 p3 `
1 g2 g! H1 j0 u$ `8 \. R
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了