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

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

[复制链接]

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

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

admin 楼主

2015-6-5 11:20:12

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

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

x
这段代码可以参考看看哦,显然比ufun的代码长点,但是是新的也是最好的方法2 ^: D6 _2 O8 s% D

9 _/ g' V% ~. d4 ^3 S2 w# r  C4 ~6 ~2 L* K
{- W! `  z2 _$ l7 K0 `7 ~6 i
    /* Initialize the API environment */
, V3 t  Q6 s; b# d7 }6 k" ^$ n    if( UF_CALL(UF_initialize()) ) # f$ o5 v. @$ s( f% T2 _
    {
: V& d2 n4 }5 l+ j3 l        /* Failed to initialize */1 A% x$ W! X# Y& m: W
        return;( {. {- m: c! S4 }; ^5 \
    }" m1 u! x4 c0 Z  p) y8 c

9 v$ I1 f$ o, ~2 |    Session *theSession = Session::GetSession();! ?* K: Z  S5 p" ?
    Part *workPart = theSession->Parts()->Work();; a* P  z* r* c5 @; E0 q

2 C/ C; H: m) [6 ]  k$ |    /*Get the existing group objects to create the operation under*/7 h  g; ^! r( v( q" O! n) M
    CAM::NCGroup *programGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("PROGRAM");; ~  h! c) P% ^, b1 z; v# ?
    CAM::NCGroup *methodGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("METHOD");
5 l6 u$ O/ W; I- |, |    CAM::NCGroup *toolGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("MILL");
* L, Y8 h6 ]5 {. f) q    CAM::NCGroup *geometryGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("WORKPIECE");7 s6 D0 r  K( o! V6 V( ]/ q
8 f; F2 ?1 Z. \
    /*Create the Cavity Mill operation*/1 X5 I$ r6 N' k0 L0 Q
    CAM::Operation *operation = workPart->CAMSetup()->CAMOperationCollection()->Create(programGroup, methodGroup, toolGroup, geometryGroup, "mill_contour", "CAVITY_MILL", CAM::OperationCollection::UseDefaultNameTrue, "CAVITY_MILL");3 J( x% X& L6 g( Q* i9 b
! n: P* g' f* b' C9 h% m# }
    /*Create the Cavity Milling builder*/
& y5 @; v$ @* K- ]0 |$ N- |    CAM::CavityMillingBuilder *cavityMillingBuilder = workPart->CAMSetup()->CAMOperationCollection()->CreateCavityMillingBuilder(operation);
5 F: M$ p3 ~3 b/ K& W4 A
9 S. ?1 Y/ P. h' _5 c    /*Get the solid body named PART*/
* z" u; H' S! z0 o7 r    tag_t partSolid = NULL_TAG;/ Q1 G9 k3 N- |0 \: s  ?- I! ^
    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "PART", UF_solid_type, false, &partSolid);/ a# j9 z8 |( c
    Body *partBody = dynamic_cast<Body *> (NXObjectManager::Get(partSolid));
% ?1 g  ~4 ~2 l+ G* c/ R/ t    std::vector<Body *> partBodies(1);
) b& j/ j: B8 H# p7 o% S. T    partBodies[0] = partBody;  E) |% Q2 ]) Q) \( b: j

" B) n* F2 ?2 G) Z- d    /*Set the part geometry*/
- k# L# b$ K! W5 p    cavityMillingBuilder->PartGeometry()->InitializeData(false);
3 A; ?+ r3 O. q# c9 R" P    CAM::GeometrySet *partGeometrySet = cavityMillingBuilder->PartGeometry()->GeometryList()->FindItem(0);
! v# u. [& o( q) a3 z" _    BodyDumbRule *partBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(partBodies);
8 f5 u+ d/ q5 h8 N8 m' }) f9 p    std::vector<SelectionIntentRule *> partRules(1);+ e' w0 c) K2 Z
    partRules[0] = partBodyDumbRule;
7 W) o% E9 h& H/ i2 I    partGeometrySet->ScCollector()->ReplaceRules(partRules, false);2 Z. w/ D. V: w! ]7 u
9 Q$ ^4 N- s1 G( _
    /*Get the solid body named BLANK*/- ^& U# P) @" t/ [
    tag_t blankSolid = NULL_TAG;
7 p1 f" p2 `* B2 x    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "BLANK", UF_solid_type, false, &blankSolid);" S3 M- j. _+ X
    Body *blankBody = dynamic_cast<Body *> (NXObjectManager::Get(blankSolid));6 W: q$ j5 J: t  \, \
    std::vector<Body *> blankBodies(1);
+ v/ C* d4 w2 r$ o    blankBodies[0] = blankBody;
' R: d3 Z7 j$ }; Q' o1 S) J- K8 I  [2 s
    /*Set the blank geometry*/
, x& H* b3 E- z5 j8 z    cavityMillingBuilder->BlankGeometry()->InitializeData(false);
& r/ n* L" Z% Z. q    CAM::GeometrySet *blankGeometrySet = cavityMillingBuilder->BlankGeometry()->GeometryList()->FindItem(0);; n: D! t) L8 \) L+ w. f7 n; {3 D& U
    BodyDumbRule *blankBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(blankBodies);
/ m- l! ?2 d' M# T- n3 Z    std::vector<SelectionIntentRule *> blankRules(1);4 O& f0 C4 {" M& d# ?
    blankRules[0] = blankBodyDumbRule;
) A) a, Q. k8 f5 a. x9 @2 I: p    blankGeometrySet->ScCollector()->ReplaceRules(blankRules, false);( S, m4 n+ f# I2 Q2 y. [

" T: d8 m, {4 e/ a# y    cavityMillingBuilder->Commit();- v: W' I* `4 o* H0 W7 U0 {1 c
    cavityMillingBuilder->Destroy();
8 a" w+ e' l8 t2 P0 c6 l9 Q
1 v6 y/ j8 O* b# f: \$ u( i    /*Generate the tool path*/
% r0 _$ q# _/ R1 d    std::vector<CAM::CAMObject *> operations(1);
7 z2 c- `8 g3 e# B    operations[0] = operation;/ S' N' y+ ], i, x7 I* h' l% K
    workPart->CAMSetup()->GenerateToolPath(operations);
0 ~; X" r' T, Q& @& D
' H7 L9 N) E6 @* t3 k% ]: f! P2 U    /* Terminate the API environment */
6 C7 z% w2 ^' n5 t    UF_CALL(UF_terminate());
; A4 C+ o' L1 L! F6 X) X5 x}5 \* Z6 _$ L3 c& a. R5 z' l/ n

! y4 ~6 [: k; V
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了