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

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

[复制链接]

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

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

admin 楼主

2015-6-5 11:20:12

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

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

x
这段代码可以参考看看哦,显然比ufun的代码长点,但是是新的也是最好的方法: i3 B2 y( `" `3 n

& [8 e0 k$ u  U- d) a3 L
; c0 R# j- v7 A% t; a( q: d{
3 g2 m/ x  @3 I: I& }+ n# w    /* Initialize the API environment */
; ^# e, \5 k; N( ]    if( UF_CALL(UF_initialize()) )
6 Z, h( f! U2 @6 G1 ]    {
6 L2 ~9 z( o5 `6 n/ F        /* Failed to initialize */. ~4 ^" Z0 o+ H0 e' T
        return;# h3 f; O9 d; h% `
    }$ g1 n6 r. h: l- m: C; L9 t' `
& \) E  }2 t% g8 W. D" \6 p4 \
    Session *theSession = Session::GetSession();
6 y7 \; j4 `+ F8 m- l6 y8 Z% S    Part *workPart = theSession->Parts()->Work();8 h  [8 p& j( D# L" w- w! F: M

% F, |) [& |! F+ _    /*Get the existing group objects to create the operation under*/
2 j9 @7 x8 M( F9 g) d    CAM::NCGroup *programGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("PROGRAM");
. H# u0 @+ [* X& ?2 e0 Q7 g* l    CAM::NCGroup *methodGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("METHOD");
. V* ?. `$ e) w. n& l    CAM::NCGroup *toolGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("MILL");
" ]0 b3 F: Z  y& B    CAM::NCGroup *geometryGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("WORKPIECE");
$ E* C3 B  _1 h% z
1 B) I" ^& M8 l0 i- m5 A    /*Create the Cavity Mill operation*/
: f$ F7 ~. o* \% k9 |. a- L    CAM::Operation *operation = workPart->CAMSetup()->CAMOperationCollection()->Create(programGroup, methodGroup, toolGroup, geometryGroup, "mill_contour", "CAVITY_MILL", CAM::OperationCollection::UseDefaultNameTrue, "CAVITY_MILL");1 W5 \; D! \2 c/ L. v! l

1 o/ J1 C& T% J3 B7 Z- c4 X) p  I: f4 o    /*Create the Cavity Milling builder*/
' |9 M. @4 o" t& m7 S, j7 U! W    CAM::CavityMillingBuilder *cavityMillingBuilder = workPart->CAMSetup()->CAMOperationCollection()->CreateCavityMillingBuilder(operation);6 J6 r7 H1 \( a2 [" |9 ^$ L  k
+ a$ Q; D5 }1 ]4 E
    /*Get the solid body named PART*/0 z2 l' S7 M' o2 s. P: l4 u
    tag_t partSolid = NULL_TAG;9 m2 X' f7 s+ Q) t* Z
    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "PART", UF_solid_type, false, &partSolid);% \" O& j  r- I! e& P9 e& f2 q' M: ~: F
    Body *partBody = dynamic_cast<Body *> (NXObjectManager::Get(partSolid));9 v/ a4 P2 `: Z& U
    std::vector<Body *> partBodies(1);
4 g$ W& r' _6 T: C* d    partBodies[0] = partBody;
( X. e8 ~2 \# M6 z1 f1 I2 \
( M) Z* Y* K% M: L0 o4 }    /*Set the part geometry*/
8 i/ Q, |  |% o& n/ f7 ]" x    cavityMillingBuilder->PartGeometry()->InitializeData(false);$ K; I% A$ W0 f- O! ~) [% X( B
    CAM::GeometrySet *partGeometrySet = cavityMillingBuilder->PartGeometry()->GeometryList()->FindItem(0);
; E( K* [. o5 b    BodyDumbRule *partBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(partBodies);7 q, ]$ O$ n) F8 v% L5 f1 a" h
    std::vector<SelectionIntentRule *> partRules(1);
7 E+ [2 B) u1 _& f* H9 W+ s5 t( L    partRules[0] = partBodyDumbRule;
: D, ]/ @' r2 p% _    partGeometrySet->ScCollector()->ReplaceRules(partRules, false);. Z( `) o3 M7 h* i( U; M
: ~4 w5 G* P8 w" p' `1 C
    /*Get the solid body named BLANK*/. g- u" T! O% v9 D$ ~3 F% X
    tag_t blankSolid = NULL_TAG;
' a& q. C' r% w! W9 o" F7 D9 v    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "BLANK", UF_solid_type, false, &blankSolid);: x  U1 }" i! G% Z
    Body *blankBody = dynamic_cast<Body *> (NXObjectManager::Get(blankSolid));4 q3 F$ k4 V- X
    std::vector<Body *> blankBodies(1);
8 u' D8 c0 O0 A8 [    blankBodies[0] = blankBody;
1 x6 f" X/ x8 G8 C% D+ [; N+ V
- N2 n$ u$ j7 z" `  S    /*Set the blank geometry*/- I$ T2 e, o+ G4 j/ G+ y
    cavityMillingBuilder->BlankGeometry()->InitializeData(false);
& d# |6 z2 l% V. v1 i    CAM::GeometrySet *blankGeometrySet = cavityMillingBuilder->BlankGeometry()->GeometryList()->FindItem(0);2 o, g3 r- B8 u, _0 s6 Y
    BodyDumbRule *blankBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(blankBodies);, f9 A2 ^& v9 f5 H/ A  O4 P& t
    std::vector<SelectionIntentRule *> blankRules(1);9 l: ]- Y. a0 C4 D+ S9 H& u
    blankRules[0] = blankBodyDumbRule;
: R. g$ ^  i+ \% l) B, s$ @    blankGeometrySet->ScCollector()->ReplaceRules(blankRules, false);  ^# N0 B# z1 }! c- w, x

: n% M- v6 z& k5 Q3 i' J! ]  L0 ?    cavityMillingBuilder->Commit();
0 B  E- p  U- b    cavityMillingBuilder->Destroy();
+ U, h) X- }* ]; X/ @2 @$ q! ~4 s5 X
    /*Generate the tool path*/6 ]! k$ c  {! }+ S) ]' x& W
    std::vector<CAM::CAMObject *> operations(1);$ J7 e* I  a  @
    operations[0] = operation;! u) O( M" N# F  ]
    workPart->CAMSetup()->GenerateToolPath(operations);
* T' |6 D  [* y- R0 J3 y) u4 m9 V4 F% P7 t5 D
    /* Terminate the API environment */$ Y/ H5 f$ v% e/ w9 \9 D7 Y2 @
    UF_CALL(UF_terminate());
% }, w, Q( P9 o0 ^1 j* |: C1 ~$ W}
& g& j: w4 w! t' A3 b+ f; n* ]0 d2 U' ?+ i# k2 Z( ~% l6 s+ Q
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了