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

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

[复制链接]

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

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

admin 楼主

2015-6-5 11:20:12

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

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

x
这段代码可以参考看看哦,显然比ufun的代码长点,但是是新的也是最好的方法* S# y9 H8 {( _& _* F) h+ _: [# U+ g
. z8 K: c* j2 ]

, }" ]5 T& y' i# |& n{: F9 P, @# Y. i6 r" p- c: U3 H7 k# ?
    /* Initialize the API environment */# W$ P& N) J& K3 {; x
    if( UF_CALL(UF_initialize()) ) # b7 w: p# @0 p1 n! `/ B
    {
6 e' T" w  R6 u* W9 i        /* Failed to initialize */! g9 |7 n# B' ?' ]& t+ Y
        return;
  \; v% [% ?6 n2 l( C& j7 K    }
1 p. ^, J. a1 ^) _6 t3 o
9 s8 i2 \( p. m3 w, A3 B    Session *theSession = Session::GetSession();
4 g- k+ q. E0 |/ g* j    Part *workPart = theSession->Parts()->Work();/ }* H! @. n, d% y7 |

% U  z$ w( d# n0 K    /*Get the existing group objects to create the operation under*/
8 F$ E. V: U! r# H    CAM::NCGroup *programGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("PROGRAM");6 W- q, p& \( N& y( z
    CAM::NCGroup *methodGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("METHOD");
+ Q2 o( I- r$ J+ ]    CAM::NCGroup *toolGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("MILL");4 ]7 X% C1 b$ T7 `1 X
    CAM::NCGroup *geometryGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("WORKPIECE");( ~, x9 l  v( _1 b( l' H$ h
* K( c0 v0 K+ v1 R. ]+ i0 Q' l
    /*Create the Cavity Mill operation*/
) `4 {* H# G' P8 V    CAM::Operation *operation = workPart->CAMSetup()->CAMOperationCollection()->Create(programGroup, methodGroup, toolGroup, geometryGroup, "mill_contour", "CAVITY_MILL", CAM::OperationCollection::UseDefaultNameTrue, "CAVITY_MILL");* z9 K+ l- z$ B7 t+ n4 D" d

9 E$ ^) c6 t% N$ |    /*Create the Cavity Milling builder*/( U/ S/ W5 [  }% @; e* L
    CAM::CavityMillingBuilder *cavityMillingBuilder = workPart->CAMSetup()->CAMOperationCollection()->CreateCavityMillingBuilder(operation);
8 O' A) H* w5 |' `' `7 s+ Y) a
& W4 k9 e: g6 n' I6 o! v- q- k    /*Get the solid body named PART*/0 G7 c/ |  p3 ]5 W" s5 k
    tag_t partSolid = NULL_TAG;
1 ^2 I/ V& k) k: {, y. [    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "PART", UF_solid_type, false, &partSolid);
; ^7 ^4 `* [. a# d% O& f    Body *partBody = dynamic_cast<Body *> (NXObjectManager::Get(partSolid));
5 Z  O: s- O, ^( F! L    std::vector<Body *> partBodies(1);4 R3 S, v: c# y1 i1 j  ^
    partBodies[0] = partBody;3 @3 N3 U; k8 d. ~1 o
8 U, M& z7 ^: ]8 m1 H, |3 }
    /*Set the part geometry*/  F3 [4 b9 m/ v
    cavityMillingBuilder->PartGeometry()->InitializeData(false);
9 s6 w& x4 {. R" Z9 u1 g4 n6 o    CAM::GeometrySet *partGeometrySet = cavityMillingBuilder->PartGeometry()->GeometryList()->FindItem(0);
: N2 |6 \  Y+ S' u, J% {    BodyDumbRule *partBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(partBodies);. B8 }/ J9 ^: d3 d1 u
    std::vector<SelectionIntentRule *> partRules(1);
- `" U4 z; T5 j* `4 n$ O" _$ A    partRules[0] = partBodyDumbRule;
2 B' R9 G. H- `; K8 K! X    partGeometrySet->ScCollector()->ReplaceRules(partRules, false);/ y# [. j% T* k9 [
9 q2 h4 y" h" {9 c* F
    /*Get the solid body named BLANK*// D) Q3 b6 I: Q" B
    tag_t blankSolid = NULL_TAG;
3 ~2 Y' g( w2 X0 ]  a    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "BLANK", UF_solid_type, false, &blankSolid);& P: W/ s% t' g+ s: z1 f
    Body *blankBody = dynamic_cast<Body *> (NXObjectManager::Get(blankSolid));5 d* s5 ]7 b+ E* r7 g, M; O: @
    std::vector<Body *> blankBodies(1);
" ~3 N7 W4 l+ m: a  R    blankBodies[0] = blankBody;
/ [8 N6 e* H" S1 k4 c' J( U4 ^2 I
# P' r1 g" N+ y/ m    /*Set the blank geometry*/
. z/ ~# x/ h* x1 T    cavityMillingBuilder->BlankGeometry()->InitializeData(false);  W! b4 n' W$ b" Y  z$ E) `1 N
    CAM::GeometrySet *blankGeometrySet = cavityMillingBuilder->BlankGeometry()->GeometryList()->FindItem(0);
2 N( i+ g" |* _' I    BodyDumbRule *blankBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(blankBodies);
, X1 X: n  Y' j+ }/ I4 i    std::vector<SelectionIntentRule *> blankRules(1);
' {( C# z2 N9 R1 h8 R$ g( A3 a. C* _4 A    blankRules[0] = blankBodyDumbRule;
9 u/ N3 ?" p1 l3 W% n1 I+ x4 g( a    blankGeometrySet->ScCollector()->ReplaceRules(blankRules, false);% |+ ?0 e( s: _. N8 |# [' p- C
4 L0 n) w( r, X/ [
    cavityMillingBuilder->Commit();
: C/ C; J1 x$ H" ^    cavityMillingBuilder->Destroy();1 k& B/ \! s" Q) k: w3 m4 J

( z* a- ^, a; ^' H/ B    /*Generate the tool path*/# g4 E# W" l7 b4 G6 [
    std::vector<CAM::CAMObject *> operations(1);
7 t1 S  O# F* H  H    operations[0] = operation;
; G, G* ~3 a; @+ C    workPart->CAMSetup()->GenerateToolPath(operations);
2 F; A7 H' W! w, f  p2 g/ D& ~% [4 S1 L( |) W
    /* Terminate the API environment */* Z% _6 }4 B* ?0 a* U; X
    UF_CALL(UF_terminate());2 J" o1 K5 x# |3 @/ Z
}+ z  T/ c$ a! n) ^' c
; C& d% X0 |9 S
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了