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

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

[复制链接]

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

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

admin 楼主

2015-6-5 11:20:12

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

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

x
这段代码可以参考看看哦,显然比ufun的代码长点,但是是新的也是最好的方法# {: t* C, g( p
" D0 P9 l5 G! ~( z2 X! U" _. T
4 X3 m! c( a- c9 W9 d; P  j
{
' M3 ]7 {9 W0 d- K/ W$ ~0 B    /* Initialize the API environment */: o! n6 E+ F9 {
    if( UF_CALL(UF_initialize()) )
( F8 h3 X+ a# Z4 A3 c    {
5 X. x$ M4 S0 ^, e/ k: f1 |        /* Failed to initialize */
2 B/ C, I, c3 ^4 _/ g* W  G0 }        return;$ `$ {% G' J+ \& E
    }
; N  l/ P( R8 G, U, Z+ a$ A+ [9 M, ?0 S: V, B& V7 s
    Session *theSession = Session::GetSession();
$ f+ ]6 J1 ?. q7 M/ i    Part *workPart = theSession->Parts()->Work();
; n# v4 l6 h" K( y0 `/ A0 e* f3 a  `7 p1 K; H0 p  H# ^- [
    /*Get the existing group objects to create the operation under*/  L) I8 {* A7 x! {7 @/ M3 x6 |
    CAM::NCGroup *programGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("PROGRAM");
! E7 b( Q! g* j4 i    CAM::NCGroup *methodGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("METHOD");
- ?" l: g# l4 H" H0 P    CAM::NCGroup *toolGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("MILL");
3 p( H+ a* d& m    CAM::NCGroup *geometryGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("WORKPIECE");) @  O+ c9 f2 Y4 p( T( ~

) v# m3 ^/ W6 R& O( ~    /*Create the Cavity Mill operation*/
+ x( ^9 {$ ?* J) O, ?$ N; |    CAM::Operation *operation = workPart->CAMSetup()->CAMOperationCollection()->Create(programGroup, methodGroup, toolGroup, geometryGroup, "mill_contour", "CAVITY_MILL", CAM::OperationCollection::UseDefaultNameTrue, "CAVITY_MILL");. o5 M; v. K0 J" k, h, n% k* L

" l6 }7 j' P: F6 }, z9 }    /*Create the Cavity Milling builder*/
7 Q1 ]% B4 f+ }; |9 B! T    CAM::CavityMillingBuilder *cavityMillingBuilder = workPart->CAMSetup()->CAMOperationCollection()->CreateCavityMillingBuilder(operation);' o- c3 R7 n0 P6 X4 }& p" a1 F
+ ?) l# T. r) f+ f+ k2 j
    /*Get the solid body named PART*/5 {) }& ]8 w) c0 N! o% X8 P% A
    tag_t partSolid = NULL_TAG;! w! u0 @# f* E( v+ e4 p
    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "PART", UF_solid_type, false, &partSolid);/ |, X, @. N1 R) h  Q
    Body *partBody = dynamic_cast<Body *> (NXObjectManager::Get(partSolid));
4 d0 Q% k3 K- [. V    std::vector<Body *> partBodies(1);
- D* t1 g, ~$ e# ]: p; p7 z    partBodies[0] = partBody;- y. n# j( N* n  f
8 @0 G( h6 M' E0 L# U: ^0 T9 o2 O
    /*Set the part geometry*/* `+ ?9 X% b$ c
    cavityMillingBuilder->PartGeometry()->InitializeData(false);
3 g1 Q1 o$ `( x( K4 K! M& W8 s    CAM::GeometrySet *partGeometrySet = cavityMillingBuilder->PartGeometry()->GeometryList()->FindItem(0);. \. j& j7 w1 Z
    BodyDumbRule *partBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(partBodies);1 j$ }2 |* v" N' ?$ g: w1 S& F; @
    std::vector<SelectionIntentRule *> partRules(1);9 \; f7 j) I+ d" U2 ]
    partRules[0] = partBodyDumbRule;) ?5 b5 B! T( p! B8 u
    partGeometrySet->ScCollector()->ReplaceRules(partRules, false);( k) T9 A( V' ]. A' V7 r6 e1 s

$ _: Z. P: d2 q0 G1 p5 s4 ^6 |    /*Get the solid body named BLANK*/
% C: |( t+ p: a- G/ ~% }" A    tag_t blankSolid = NULL_TAG;
( b: @( F6 E3 y+ M# u6 }5 z( r    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "BLANK", UF_solid_type, false, &blankSolid);
5 A8 p8 O5 ]" f: r# y5 s    Body *blankBody = dynamic_cast<Body *> (NXObjectManager::Get(blankSolid));
0 U. T$ c/ E$ f- z5 M7 L. L# l+ s    std::vector<Body *> blankBodies(1);- \* j, T* j5 _! D
    blankBodies[0] = blankBody;. W* Q$ V/ g  G* K9 o

4 }6 e3 C! i! [. V/ K    /*Set the blank geometry*/
* W* S, O7 R1 N  c) J    cavityMillingBuilder->BlankGeometry()->InitializeData(false);/ G2 i# G! a, s/ O3 g
    CAM::GeometrySet *blankGeometrySet = cavityMillingBuilder->BlankGeometry()->GeometryList()->FindItem(0);. `) N9 ]! g( m& C; G2 E
    BodyDumbRule *blankBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(blankBodies);
- b& q9 E5 K2 i5 C/ _# s8 p$ }, J. t    std::vector<SelectionIntentRule *> blankRules(1);
7 l2 p2 @! `- f" l7 R8 s7 y( C    blankRules[0] = blankBodyDumbRule;) G- p8 J: E. g. w# r
    blankGeometrySet->ScCollector()->ReplaceRules(blankRules, false);
% r! ?; j5 n! Z. V* [! R7 g/ g
+ N  H" [% \$ m# Y    cavityMillingBuilder->Commit();1 A* ^- T) s2 i  N0 }: X
    cavityMillingBuilder->Destroy();
7 r( x) a9 A* D0 E) `
' ^& ~6 y9 O" V$ N  N9 G: \0 j    /*Generate the tool path*/
, z% Q' m1 j$ _9 A( N9 @/ `' V    std::vector<CAM::CAMObject *> operations(1);
/ W1 u* _9 I9 G0 ?6 \    operations[0] = operation;9 V) x* j- K$ I$ t7 A2 r) B: X" s7 r, X
    workPart->CAMSetup()->GenerateToolPath(operations);
$ `: J8 k8 l6 F3 z
+ U2 \9 E: m9 i- ]    /* Terminate the API environment */
0 N2 v$ u- N" W+ m+ l    UF_CALL(UF_terminate());! t6 D: f% o3 h% \
}; B/ n0 D8 x; [& P5 _* J

4 a5 i% o& I. u  t
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了