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

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

[复制链接]

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

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

admin 楼主

2015-6-5 11:20:12

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

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

x
这段代码可以参考看看哦,显然比ufun的代码长点,但是是新的也是最好的方法1 {2 j/ U8 m, U! i& S! D

$ J! X8 l# p5 r$ _  U: O  h- e7 C4 N9 F
{6 ~1 R! w7 V) R8 ~
    /* Initialize the API environment */2 q+ W, ~7 ~& \# ~) @
    if( UF_CALL(UF_initialize()) ) . T& E" B3 \' i( w0 Y
    {, @% w% {( n) j) F4 n% C- ?6 z
        /* Failed to initialize */
2 C3 Y) h& C$ t1 W, H9 I        return;" o3 `6 o( v2 h
    }" ?; v6 v* D8 E
  l; g9 }  `1 y
    Session *theSession = Session::GetSession();* \4 n- o; f3 E6 G3 {' T' Q* J0 a# W
    Part *workPart = theSession->Parts()->Work();( w3 u! O# k' T& r* |
. C. ?9 X4 O5 w7 P
    /*Get the existing group objects to create the operation under*/# s" m/ U1 K, l& g7 k
    CAM::NCGroup *programGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("PROGRAM");( T  H5 z4 w6 j7 }5 T
    CAM::NCGroup *methodGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("METHOD");2 z8 Q; i8 U& V0 s* v( A" h. u0 {
    CAM::NCGroup *toolGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("MILL");
& m  p7 K5 J2 ^, @" N    CAM::NCGroup *geometryGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("WORKPIECE");' d9 j7 G# z! M# o
7 x4 O4 {2 ]0 d- ~
    /*Create the Cavity Mill operation*/0 j2 D4 W; p  p& V7 ^5 s1 [
    CAM::Operation *operation = workPart->CAMSetup()->CAMOperationCollection()->Create(programGroup, methodGroup, toolGroup, geometryGroup, "mill_contour", "CAVITY_MILL", CAM::OperationCollection::UseDefaultNameTrue, "CAVITY_MILL");1 b* \) }6 P4 {) ]
# C- g2 B1 }% ?( [/ f, A
    /*Create the Cavity Milling builder*/! a- s; ^2 t3 @9 L5 K- _" ]
    CAM::CavityMillingBuilder *cavityMillingBuilder = workPart->CAMSetup()->CAMOperationCollection()->CreateCavityMillingBuilder(operation);
' j/ F2 B: `8 c( I/ y
1 K- v+ y  g6 A) q. D# X    /*Get the solid body named PART*/
  O: d% M5 G6 v. s( u& f8 n5 U    tag_t partSolid = NULL_TAG;
8 L8 A3 Q/ k" W! m! W& P* C    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "PART", UF_solid_type, false, &partSolid);' n! O4 e% c& @) H4 o8 d
    Body *partBody = dynamic_cast<Body *> (NXObjectManager::Get(partSolid));4 b9 }' R; m, d. _
    std::vector<Body *> partBodies(1);* t6 z  A9 l( H6 \1 M7 U, p4 j
    partBodies[0] = partBody;5 m; w* s3 i7 p& n- E; F; g% I
5 C7 V7 ]0 R! f
    /*Set the part geometry*/: o; I* J+ ?8 e6 P# `$ b  r' D
    cavityMillingBuilder->PartGeometry()->InitializeData(false);
; M8 {' _& R0 X    CAM::GeometrySet *partGeometrySet = cavityMillingBuilder->PartGeometry()->GeometryList()->FindItem(0);, p& Q1 @* U8 H, k# j0 @
    BodyDumbRule *partBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(partBodies);
- c' F( R) x! Z6 [4 }9 _    std::vector<SelectionIntentRule *> partRules(1);
" }0 }, H" L3 D: c; U    partRules[0] = partBodyDumbRule;8 e, _4 V* m- Q
    partGeometrySet->ScCollector()->ReplaceRules(partRules, false);' B/ k( C: E9 F* Q/ Q5 O" P
6 Q; w% u/ f% f* S; f* m
    /*Get the solid body named BLANK*/
" B& C, }& j0 T6 m    tag_t blankSolid = NULL_TAG;
6 m: ^& o5 T  S* q& P, l    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "BLANK", UF_solid_type, false, &blankSolid);6 U6 \# H+ `! Y" `; S0 y
    Body *blankBody = dynamic_cast<Body *> (NXObjectManager::Get(blankSolid));7 Y) C0 W: C0 {/ s
    std::vector<Body *> blankBodies(1);! B- {1 _5 H$ w. d
    blankBodies[0] = blankBody;2 v" N! w4 {4 P0 p- }
1 D  |1 L0 i3 m2 @  `% y# O
    /*Set the blank geometry*/- ^2 e) e- H' y4 @' @/ j) C
    cavityMillingBuilder->BlankGeometry()->InitializeData(false);* z9 g+ }' d- d: H7 I5 ]
    CAM::GeometrySet *blankGeometrySet = cavityMillingBuilder->BlankGeometry()->GeometryList()->FindItem(0);, w7 \% z$ w% |. }
    BodyDumbRule *blankBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(blankBodies);# J& o$ Z5 m1 V
    std::vector<SelectionIntentRule *> blankRules(1);
/ W/ n* l& q0 T3 q% |6 d    blankRules[0] = blankBodyDumbRule;: Q% z( Q9 A8 T# I0 x
    blankGeometrySet->ScCollector()->ReplaceRules(blankRules, false);
! e! P( C4 @  ~; a; p
2 x! t/ _. z, }9 P- n2 e7 w    cavityMillingBuilder->Commit();( F; B. {5 i& g" a$ x: d& P: x
    cavityMillingBuilder->Destroy();
; c0 E' s& r( U9 X6 q: X; I
3 h+ P9 Z) Z; }    /*Generate the tool path*/
$ b5 j7 [- L1 L! Y% R4 ~    std::vector<CAM::CAMObject *> operations(1);
* u( _$ h" X3 i1 R    operations[0] = operation;4 i! [. b, r5 ]5 A+ B7 |
    workPart->CAMSetup()->GenerateToolPath(operations);7 T: n$ |* P6 n
3 |$ U& Q9 p6 W& V
    /* Terminate the API environment */3 R, S* y! Z% M9 G
    UF_CALL(UF_terminate());8 W' M& q. [" r% t0 b& L2 h
}8 |: ]) R( C  V6 d& \- V
0 Y( Q8 t( A5 }, B+ M
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了