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

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

[复制链接]

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

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

admin 楼主

2015-6-5 11:20:12

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

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

x
这段代码可以参考看看哦,显然比ufun的代码长点,但是是新的也是最好的方法9 J4 F' C& ^+ z6 t  T
+ \2 U% m* `) Z& ]9 r

. u  \7 L# C, O3 |, F{
% C. E2 X/ `, v( v; F" U1 V    /* Initialize the API environment */
  v3 h% y% ^  R2 G0 n2 k5 j    if( UF_CALL(UF_initialize()) )
; S' c) q( n, n3 r) j    {9 g+ U, N7 o9 l. k6 L3 B1 S/ }: j7 @- Y
        /* Failed to initialize */
8 ?2 X4 }- G  X, ^        return;
3 [9 e1 [! z6 v- M! {& P/ t: f    }
1 k' Q: x) p( P4 {9 i9 ]! K+ y! ]9 @* N2 a4 [. |) }
    Session *theSession = Session::GetSession();
" b6 o3 t0 y3 l    Part *workPart = theSession->Parts()->Work();
# T: K: u! [- k. N2 A3 S4 q
8 h! H/ X9 m" q; j9 @    /*Get the existing group objects to create the operation under*/
8 Q; I( i& H8 u, r2 ~    CAM::NCGroup *programGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("PROGRAM");0 ?' Z/ Z5 g; m- g* ?5 p
    CAM::NCGroup *methodGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("METHOD");
% B1 r; s1 z) l" f5 v% x, j    CAM::NCGroup *toolGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("MILL");
' _6 Y5 B; y" W# [    CAM::NCGroup *geometryGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("WORKPIECE");
/ ^5 E: N7 K* m3 G% n; v: J* p
. ]  K. Z, m' {# y$ w7 Z) Q    /*Create the Cavity Mill operation*/% F) i' t  j1 K
    CAM::Operation *operation = workPart->CAMSetup()->CAMOperationCollection()->Create(programGroup, methodGroup, toolGroup, geometryGroup, "mill_contour", "CAVITY_MILL", CAM::OperationCollection::UseDefaultNameTrue, "CAVITY_MILL");
+ P" w3 f! A5 H% t' q, G  Q9 W  _) F
  }) J& S% }9 P" Z& m    /*Create the Cavity Milling builder*/
* E9 Z0 J  Q7 b" k! W" Z; g6 e    CAM::CavityMillingBuilder *cavityMillingBuilder = workPart->CAMSetup()->CAMOperationCollection()->CreateCavityMillingBuilder(operation);7 x$ \& {7 L. g

0 J3 m+ z3 z: l8 U. c+ i! B4 F    /*Get the solid body named PART*/
+ h: ^+ ^- T+ U' |' v: o    tag_t partSolid = NULL_TAG;, P7 z! f! s; Z
    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "PART", UF_solid_type, false, &partSolid);
& }3 ]# V% [: q9 s    Body *partBody = dynamic_cast<Body *> (NXObjectManager::Get(partSolid));* G4 F0 b6 m/ z
    std::vector<Body *> partBodies(1);
% t: w* E, v2 W1 y    partBodies[0] = partBody;
2 f8 [+ l$ {! S; ]! I; B+ K# X- G: e- M
    /*Set the part geometry*/
( \+ C2 d5 v1 R) X8 g8 ?1 n( l    cavityMillingBuilder->PartGeometry()->InitializeData(false);/ Y: R% n4 N( Q; K5 e! [
    CAM::GeometrySet *partGeometrySet = cavityMillingBuilder->PartGeometry()->GeometryList()->FindItem(0);( W& K% d8 i7 f! E: F* ?
    BodyDumbRule *partBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(partBodies);
: t: j$ b& I, W( i    std::vector<SelectionIntentRule *> partRules(1);
. I5 C2 ~. `" r5 }! D    partRules[0] = partBodyDumbRule;8 ]; C1 S% _6 K! ]2 b" x& F/ B# u
    partGeometrySet->ScCollector()->ReplaceRules(partRules, false);% ?* G8 W  D9 w& \
  |3 S7 c) X5 w
    /*Get the solid body named BLANK*/
0 S8 O9 k0 e# o7 [, w    tag_t blankSolid = NULL_TAG;
# u; u5 a5 J0 m3 [9 K" e    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "BLANK", UF_solid_type, false, &blankSolid);
- i$ a9 E; [0 R7 G9 s# b% [/ U    Body *blankBody = dynamic_cast<Body *> (NXObjectManager::Get(blankSolid));
' p& f/ [! K9 G$ B/ Q/ d    std::vector<Body *> blankBodies(1);
5 I" O# d2 s( o" p    blankBodies[0] = blankBody;$ ^6 Y" d5 l# G2 S. c  X
4 \$ J; Y6 @1 A4 ?" t
    /*Set the blank geometry*/
" [2 R) z, ~9 D: l, \$ X8 ~    cavityMillingBuilder->BlankGeometry()->InitializeData(false);3 Y; k, E# S* A* T0 _. D8 f
    CAM::GeometrySet *blankGeometrySet = cavityMillingBuilder->BlankGeometry()->GeometryList()->FindItem(0);3 Y: }. e, K: Z
    BodyDumbRule *blankBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(blankBodies);
9 s; q: K2 o' ~0 [4 ^    std::vector<SelectionIntentRule *> blankRules(1);  M+ F% Z2 ?  i
    blankRules[0] = blankBodyDumbRule;% L" j' ~) ~5 R" b, t
    blankGeometrySet->ScCollector()->ReplaceRules(blankRules, false);
! @( [( ]) T5 Q8 g6 }4 l. C
$ D. c8 u3 L) k7 V    cavityMillingBuilder->Commit();; V- Q% [$ ]' o  v1 M, Z4 b! L8 m) ~
    cavityMillingBuilder->Destroy();
. o. _+ {% x4 c+ c- t
) n0 y5 v9 N  U" ?) E* m    /*Generate the tool path*/8 k2 A' }' u. m1 T( |
    std::vector<CAM::CAMObject *> operations(1);% i0 Y3 \) y2 x' ]
    operations[0] = operation;6 O; \3 J/ D4 x7 _
    workPart->CAMSetup()->GenerateToolPath(operations);1 i2 \3 H3 O2 s) e7 X  r2 o
+ S/ {1 ?3 K" v/ V- o# N3 y$ r6 K
    /* Terminate the API environment */
# K. {8 G; L- ?/ L; p) F. B    UF_CALL(UF_terminate());+ t7 C, Q: R8 E
}- H& M, y. Y: m; S8 J

) D* Y4 U9 S* p7 h. o4 i
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了