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

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

[复制链接]

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

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

admin 楼主

2015-6-5 11:20:12

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

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

x
这段代码可以参考看看哦,显然比ufun的代码长点,但是是新的也是最好的方法- k- Q9 k0 y5 O. [# L( i1 l& k6 W/ Z
& c- `1 A! g& q* q

( o! |7 V( v$ r2 g+ h! Z{( D, B! z5 o, f1 _1 J$ s' `' t
    /* Initialize the API environment */
( m, L3 N; ]6 b0 I& ?    if( UF_CALL(UF_initialize()) )
; g6 S1 y) a: M# A: x% j* K    {
- v" P* a( Y) J1 a        /* Failed to initialize */
  P2 t2 T& v; ]7 W& z4 \1 `- i! O# ]        return;
: u2 }& a  j/ X    }
' Z% _4 N% v3 K9 C. n
6 n. }+ l7 a# o    Session *theSession = Session::GetSession();+ O4 d' M+ B. T
    Part *workPart = theSession->Parts()->Work();
2 B, h. P2 X1 |( I5 L
1 v6 n# B; K, ~; y: V    /*Get the existing group objects to create the operation under*/3 S) |+ M! H/ I% I
    CAM::NCGroup *programGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("PROGRAM");
  |, ^9 w1 l0 Z! L1 H    CAM::NCGroup *methodGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("METHOD");( j4 t% P, V$ f4 W+ g. Y
    CAM::NCGroup *toolGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("MILL");
9 ^2 n2 _/ B- b/ A4 S! [- h( \    CAM::NCGroup *geometryGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("WORKPIECE");
) C$ X, l$ v% i
3 L+ g  i. I$ `- z! o$ K& Y3 @    /*Create the Cavity Mill operation*/4 }  [7 I5 `. r+ P3 b5 T% B
    CAM::Operation *operation = workPart->CAMSetup()->CAMOperationCollection()->Create(programGroup, methodGroup, toolGroup, geometryGroup, "mill_contour", "CAVITY_MILL", CAM::OperationCollection::UseDefaultNameTrue, "CAVITY_MILL");! t1 v) H4 J; j- X& X, f

, @' q- a5 a* r; i    /*Create the Cavity Milling builder*/& B; F' \  R, o# n5 b7 y
    CAM::CavityMillingBuilder *cavityMillingBuilder = workPart->CAMSetup()->CAMOperationCollection()->CreateCavityMillingBuilder(operation);" Y9 y. H! U; L" F

  N# m# S9 W6 ^5 u) v* N1 z3 o    /*Get the solid body named PART*/
- H* W8 h: z& r& M! J0 S    tag_t partSolid = NULL_TAG;1 X# y$ k$ W  _4 z. y( Q
    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "PART", UF_solid_type, false, &partSolid);* j) F, v9 p4 U& r( T- V
    Body *partBody = dynamic_cast<Body *> (NXObjectManager::Get(partSolid));
4 w" ]8 ]; l# B6 Q3 r4 F# x0 E    std::vector<Body *> partBodies(1);  V( Z. `; Y; ]2 c4 ]. N
    partBodies[0] = partBody;: _% ]3 W4 |% W: S

+ D$ ^8 R$ y3 R( ^    /*Set the part geometry*/6 V5 b$ i+ V/ p+ R
    cavityMillingBuilder->PartGeometry()->InitializeData(false);' ~& H$ T2 r/ B
    CAM::GeometrySet *partGeometrySet = cavityMillingBuilder->PartGeometry()->GeometryList()->FindItem(0);, d! |' U: ?0 [* P/ R
    BodyDumbRule *partBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(partBodies);
0 D- @) Y( r8 [3 M    std::vector<SelectionIntentRule *> partRules(1);
$ j) I) c$ R. X4 G9 }$ ?; ^5 p    partRules[0] = partBodyDumbRule;
8 }* n7 I( ~8 _    partGeometrySet->ScCollector()->ReplaceRules(partRules, false);
7 U8 C/ ?; L' h( X, E4 S/ H' h7 {3 m9 ]! e. q- @9 J! |
    /*Get the solid body named BLANK*/
/ n$ p: R3 Q' |7 p    tag_t blankSolid = NULL_TAG;! u- a$ E, h' f+ e* D  p& d0 {; F
    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "BLANK", UF_solid_type, false, &blankSolid);* F/ |' x2 g5 T% ?3 l; r3 x2 ]; v
    Body *blankBody = dynamic_cast<Body *> (NXObjectManager::Get(blankSolid));
) |8 L' [* Q% v, K  N    std::vector<Body *> blankBodies(1);
3 {0 E) @* {0 M% X    blankBodies[0] = blankBody;
, K! j: f" q) r; _% I+ k& V; q& j, `
    /*Set the blank geometry*/. F: f$ z! p2 \8 P4 V: t
    cavityMillingBuilder->BlankGeometry()->InitializeData(false);) d' W; g4 v3 c  ]* r4 p9 J
    CAM::GeometrySet *blankGeometrySet = cavityMillingBuilder->BlankGeometry()->GeometryList()->FindItem(0);7 {; T. p4 B3 S' P' _' K; _
    BodyDumbRule *blankBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(blankBodies);
* }9 F& P/ J9 |4 g$ O    std::vector<SelectionIntentRule *> blankRules(1);
/ ]9 N: Z8 D3 T( Y6 N9 b    blankRules[0] = blankBodyDumbRule;5 U+ i9 g. S, W% Q+ a
    blankGeometrySet->ScCollector()->ReplaceRules(blankRules, false);
6 B2 Z' R1 C% s
$ G/ B+ Z% _' C5 y- w: W! w$ B3 X0 M    cavityMillingBuilder->Commit();
8 A' e2 r# A' v( u* v% F5 z    cavityMillingBuilder->Destroy();% l% h' _/ D' h  W+ A
3 ?# ^" Q+ z. v; Y
    /*Generate the tool path*/9 R8 z$ G; l: z$ f2 M* I* \
    std::vector<CAM::CAMObject *> operations(1);
; e5 v( c) E# g" T+ E    operations[0] = operation;
( j2 b8 D( ?' P0 W$ e    workPart->CAMSetup()->GenerateToolPath(operations);
9 g5 \. G9 h# N/ N% w: ]; H
7 f7 B, D, e: G4 c6 ]& s2 N    /* Terminate the API environment */
" u5 }' ?% I' Y/ W7 {4 N    UF_CALL(UF_terminate());
2 Z; t+ y/ t! m& y* u9 C# V}& G( ~% r  N* t- x( `
! D0 d: d0 q+ X& b9 \0 o
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了