PLM之家PLMHome-国产软件践行者

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

[复制链接]

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

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

admin 楼主

2015-6-5 11:20:12

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

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

x
这段代码可以参考看看哦,显然比ufun的代码长点,但是是新的也是最好的方法2 \2 ^+ [' d3 i& H$ ]
8 _9 _/ z4 [- E

/ J2 N) d" E6 t9 D! E( k{
7 y6 }& [- [1 m) g$ a) @! R- Q" f) D    /* Initialize the API environment */
' N2 p8 [; e: U7 |    if( UF_CALL(UF_initialize()) ) 7 s4 \; V! ^8 a! y4 O: X
    {
' N! q! z4 U! `  ?8 N" e        /* Failed to initialize */
9 \- F" P5 ]5 e: p        return;1 P" W, \4 M7 @) f3 K
    }
3 w" `7 d: Y+ [, T
1 N4 U4 g* \7 L* v$ v0 w% z    Session *theSession = Session::GetSession();
0 {( n+ }( N# L    Part *workPart = theSession->Parts()->Work();
6 I: @0 w+ {4 l3 A5 g  w1 R! Q
; _' s% J  {" `# N    /*Get the existing group objects to create the operation under*/2 ]! S2 g4 S& W9 r# H
    CAM::NCGroup *programGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("PROGRAM");
/ A6 B$ k6 P1 g% c    CAM::NCGroup *methodGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("METHOD");
2 K" N7 l9 I, V- Z! E    CAM::NCGroup *toolGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("MILL");- \6 s) N7 h( l
    CAM::NCGroup *geometryGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("WORKPIECE");' r8 V( Z3 G+ k, Z4 g/ L8 @

. Z. m( o- Q. Y  C/ J    /*Create the Cavity Mill operation*/" b3 j7 f# m- F5 _2 z. X
    CAM::Operation *operation = workPart->CAMSetup()->CAMOperationCollection()->Create(programGroup, methodGroup, toolGroup, geometryGroup, "mill_contour", "CAVITY_MILL", CAM::OperationCollection::UseDefaultNameTrue, "CAVITY_MILL");* q, ~; g& c, D; ~( W6 m: t& d7 v; Y
: X; Q, i2 ~# W. z+ s7 {( c
    /*Create the Cavity Milling builder*/7 l/ ?4 j+ F7 B
    CAM::CavityMillingBuilder *cavityMillingBuilder = workPart->CAMSetup()->CAMOperationCollection()->CreateCavityMillingBuilder(operation);
0 G9 P2 O. v+ |' `( Q0 m( g% t8 U0 j: h# g( G: |
    /*Get the solid body named PART*/8 w4 S, ~+ s6 _% Z
    tag_t partSolid = NULL_TAG;
; m8 w+ {) y2 K' c8 L2 Y    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "PART", UF_solid_type, false, &partSolid);
- S2 A  V. I0 i3 B( n  R    Body *partBody = dynamic_cast<Body *> (NXObjectManager::Get(partSolid));
3 [8 j& j* X' b8 _6 Q    std::vector<Body *> partBodies(1);
  U" X' g0 C8 N3 ^; R  [    partBodies[0] = partBody;
2 E, m" G( p8 z' l! o( \1 f( z* g3 w
    /*Set the part geometry*// J6 V1 m' @9 I9 J
    cavityMillingBuilder->PartGeometry()->InitializeData(false);
, v5 n  K4 b8 H: }& S8 i    CAM::GeometrySet *partGeometrySet = cavityMillingBuilder->PartGeometry()->GeometryList()->FindItem(0);
+ n. a) q; \. `    BodyDumbRule *partBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(partBodies);5 _' [" k. G; P6 g8 \% b2 P* [$ v% ]
    std::vector<SelectionIntentRule *> partRules(1);' Q1 j4 v5 e% v  {' K- v2 \
    partRules[0] = partBodyDumbRule;
- H' e7 Q) ~4 f( q( c9 M    partGeometrySet->ScCollector()->ReplaceRules(partRules, false);
5 }. T2 U5 y; r; u3 _( v( r! O1 S
. [9 r$ G( ?9 |( a7 }$ W    /*Get the solid body named BLANK*/* y$ F8 F' E- B! g% H$ f& {, E6 M6 E
    tag_t blankSolid = NULL_TAG;  n# W$ z. E- s3 I3 f5 [! V" ^8 _2 q
    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "BLANK", UF_solid_type, false, &blankSolid);
" M9 E9 H3 Y- h8 B' h% W. F2 h( B    Body *blankBody = dynamic_cast<Body *> (NXObjectManager::Get(blankSolid));( ]; A) K" s4 j$ L# Z
    std::vector<Body *> blankBodies(1);
( o: `* S7 J: h. E$ L2 i$ P    blankBodies[0] = blankBody;
5 r2 T% @% j1 r: Z9 m7 [; T& J, _
: e% \  W4 H: X, [- J0 F/ h    /*Set the blank geometry*/3 P, M3 H: J: j3 E: t" b
    cavityMillingBuilder->BlankGeometry()->InitializeData(false);. v6 V/ O5 ^# M8 z
    CAM::GeometrySet *blankGeometrySet = cavityMillingBuilder->BlankGeometry()->GeometryList()->FindItem(0);. q# |" i4 ~  L9 y7 r
    BodyDumbRule *blankBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(blankBodies);
  N2 ?, F) E% E$ u    std::vector<SelectionIntentRule *> blankRules(1);8 K$ O9 T. `7 ^: W, U# u' i
    blankRules[0] = blankBodyDumbRule;
3 l6 @0 w4 w  |9 Q  P* b- v# C    blankGeometrySet->ScCollector()->ReplaceRules(blankRules, false);
& K8 L4 H; \& a8 H, e& U& f$ s: i5 z( D
    cavityMillingBuilder->Commit();
( L+ [/ i2 Q7 A. D2 l7 Z; a9 c  ^    cavityMillingBuilder->Destroy();. K. @6 g2 i+ s: v

8 G* h# t$ d$ \/ ~' }    /*Generate the tool path*/; C$ i  u9 g: N7 m
    std::vector<CAM::CAMObject *> operations(1);" c* i% b7 @2 X
    operations[0] = operation;
0 a$ Q. N: M2 x) [3 f: A" Y2 H    workPart->CAMSetup()->GenerateToolPath(operations);. C9 q4 z5 G1 [; c% l+ x- C2 _
8 i7 f7 ?4 ~' r' J  F
    /* Terminate the API environment */
3 S! F, I9 I# h$ q    UF_CALL(UF_terminate());
0 a2 O  c: p; {( j& z7 m1 w}8 _0 ]/ S1 P- C) p# R/ u8 S4 l1 k

" f! Y0 U% O' ~4 z9 g# A! J6 V% g
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了