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

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

[复制链接]

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

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

admin 楼主

2015-6-5 11:20:12

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

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

x
这段代码可以参考看看哦,显然比ufun的代码长点,但是是新的也是最好的方法+ ~! f7 m0 f7 C, T. D) _

' m/ U0 k$ h* Z1 E; Y  I) T) h- e/ g5 j+ R6 c
{( J8 x2 R) R+ ]& |7 V
    /* Initialize the API environment */  h6 Y2 p( Q3 ]" M
    if( UF_CALL(UF_initialize()) )
* D! J- u% L+ a' Y$ H    {
6 l4 b  S0 W( _/ B2 n. I8 Q: |/ Z  I        /* Failed to initialize */
" q/ K, @. E/ @' a        return;
1 K+ ]8 n6 |) g" G8 b    }
2 r8 w0 S9 V( `/ ^$ [9 T5 A+ @. Q# F$ `" S( n* ^
    Session *theSession = Session::GetSession();
+ \/ e0 l' x8 R5 w9 d$ V. u3 o    Part *workPart = theSession->Parts()->Work();; w# q4 x0 x+ {

' @! f1 ^4 ?5 T0 h( k1 L  _    /*Get the existing group objects to create the operation under*/  R5 p* H3 \6 r7 _/ V% ^1 ^
    CAM::NCGroup *programGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("PROGRAM");1 M5 C+ Y8 j3 ?' M
    CAM::NCGroup *methodGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("METHOD");$ H0 d1 Y- m0 ~8 M7 W2 t9 u" ^' K
    CAM::NCGroup *toolGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("MILL");
. s* V# O- k* v6 b    CAM::NCGroup *geometryGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("WORKPIECE");" Z6 V4 R$ s/ s2 F5 ]
5 z" \* b9 n. d3 b
    /*Create the Cavity Mill operation*/
, ?8 h$ ?/ N/ \% r* P    CAM::Operation *operation = workPart->CAMSetup()->CAMOperationCollection()->Create(programGroup, methodGroup, toolGroup, geometryGroup, "mill_contour", "CAVITY_MILL", CAM::OperationCollection::UseDefaultNameTrue, "CAVITY_MILL");: w1 w; z' [  W5 B" s3 e

! v: y+ |; x- o* r( z    /*Create the Cavity Milling builder*/
: n" A7 O4 p. ?- \    CAM::CavityMillingBuilder *cavityMillingBuilder = workPart->CAMSetup()->CAMOperationCollection()->CreateCavityMillingBuilder(operation);2 k5 ?( }! n  ^. v& @5 o6 q! b# m

$ A# C4 T& ^' f4 d5 D0 E1 Z3 ]    /*Get the solid body named PART*/. E" [. w, o' |7 |
    tag_t partSolid = NULL_TAG;
6 P3 |3 }) ~) j9 `5 g: u7 \" q+ Y: I    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "PART", UF_solid_type, false, &partSolid);
, C% w# Y- d' H0 F3 a    Body *partBody = dynamic_cast<Body *> (NXObjectManager::Get(partSolid));1 ?/ |6 h; s' A6 q4 ^
    std::vector<Body *> partBodies(1);! q  K/ c; J9 O5 L
    partBodies[0] = partBody;0 n8 E/ J# C" L' C: D# Y
1 `& \8 t; _$ u
    /*Set the part geometry*/$ F+ T0 V0 r  i  Q
    cavityMillingBuilder->PartGeometry()->InitializeData(false);
6 f5 l. b1 Y) C1 |! |9 S- H( k" K    CAM::GeometrySet *partGeometrySet = cavityMillingBuilder->PartGeometry()->GeometryList()->FindItem(0);0 w4 L/ Y* u! N. H1 _4 Y4 T* I5 v
    BodyDumbRule *partBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(partBodies);4 x# }" q! O( l3 Z$ _9 u
    std::vector<SelectionIntentRule *> partRules(1);
; Q  q8 ^4 Z2 ]9 b/ i* |" e    partRules[0] = partBodyDumbRule;
: Z  d/ V8 R" ]. v) S: C    partGeometrySet->ScCollector()->ReplaceRules(partRules, false);
  q% k5 O8 m8 B/ Q" M+ T& E; a& R# a- y0 L$ m6 s
    /*Get the solid body named BLANK*/+ r6 v$ v. x8 d) l8 m1 P
    tag_t blankSolid = NULL_TAG;# W! H2 i& f# X# w3 S
    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "BLANK", UF_solid_type, false, &blankSolid);
6 [' Q% H" N( m1 W, f" \+ k    Body *blankBody = dynamic_cast<Body *> (NXObjectManager::Get(blankSolid));2 l2 I. \/ r* j( |
    std::vector<Body *> blankBodies(1);, z1 O& y8 Z3 t9 D% D" B9 h
    blankBodies[0] = blankBody;& Z# K, G9 b( C* \: ~

9 v4 J+ E0 A- a+ y* g3 R/ P    /*Set the blank geometry*/
  C3 c; O( @" h/ r    cavityMillingBuilder->BlankGeometry()->InitializeData(false);
$ [8 e. g$ q* B% p8 D: S/ h    CAM::GeometrySet *blankGeometrySet = cavityMillingBuilder->BlankGeometry()->GeometryList()->FindItem(0);$ B9 F5 g8 T. v
    BodyDumbRule *blankBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(blankBodies);) S9 \, \" T) n  D3 \7 r
    std::vector<SelectionIntentRule *> blankRules(1);
. f0 m3 Y7 f2 c3 J7 a    blankRules[0] = blankBodyDumbRule;% A  W1 `7 l4 j4 Z/ \5 C
    blankGeometrySet->ScCollector()->ReplaceRules(blankRules, false);
: m# _9 i, a# i' c% ^. @1 T% P
* x" P9 k  a. N- ^    cavityMillingBuilder->Commit();7 U4 R- j6 L. J3 t  P
    cavityMillingBuilder->Destroy();3 ?: y) V6 {$ i* B' y7 z, @( R

3 U  s# f" E$ J  a3 w: z    /*Generate the tool path*/
, |) x( {, |+ m5 q. U    std::vector<CAM::CAMObject *> operations(1);
  e' T* t. y5 T5 _$ g- S( ^" ?    operations[0] = operation;5 N6 ]8 z2 x! k: V
    workPart->CAMSetup()->GenerateToolPath(operations);, B* q% x1 ]: ]. l2 p4 y! f
; K: _4 U3 g$ q5 Y, P4 Z
    /* Terminate the API environment */
4 g- P, ]) E3 z! p    UF_CALL(UF_terminate());& O0 W: D, h) ?- d
}
7 V& x6 K6 x4 B; y/ }
) S, V) ]* Q) e4 i3 @+ l4 R
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了