PLM之家精品课程培训

PLM之家精品课程培训

联系电话:18301858168   |   QQ咨询:939801026
NX二次开发培训

NX二次开发培训

UFUN/NXOpen C++和实战案例

适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术。
公众号二维码

关注公众号

点击扫描二维码免费在线高清教程

课程详情
Catia二次开发培训

Catia二次开发培训

市场需求大,掌握核心技术前景广阔

Catia二次开发的市场需求大,人才稀缺。掌握开发技能潜力巨大,随着经验积累将在汽车、航空等领域有所作为。
B站二维码

在线原创B站视频

点击关注工业软件传道士主页

课程详情
Teamcenter培训

Teamcenter培训

全方位培训,从基础应用到高级开发全覆盖

涵盖用户应用基础培训、管理员基础培训、管理员高级培训及二次开发培训等全方位内容,由多年经验讲师打造。
QQ群二维码

加入同行交流

点击扫描二维码加入QQ群

课程详情
×

PLM之家plmhome公众号

课程涵盖: PLM之家所有原创视频

×

关注B站视频

所有高清视频一览无余,全部在线播放学习

×

加入PLM之家QQ群

同行交流,疑问解答,更多互助

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

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

[复制链接]

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

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

admin 楼主

2015-6-5 11:20:12

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

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

x
这段代码可以参考看看哦,显然比ufun的代码长点,但是是新的也是最好的方法
0 O5 {: i2 z+ G! v4 D: i' n$ z( Y# \6 X

8 `' c1 M1 K  C( h{( q& X6 g& G) z: T( R  {2 ]
    /* Initialize the API environment */
9 B6 {. O& ~5 N+ {/ X- z    if( UF_CALL(UF_initialize()) ) * s; z% R8 e. q$ a) w
    {
9 Y! h( E, f- N2 S        /* Failed to initialize */7 }% Y& V+ _8 @
        return;
5 l8 u& F( @6 r9 p4 ~% q    }9 P8 U4 `5 ]7 p3 X5 e; w

' p0 {. Z. E$ i    Session *theSession = Session::GetSession();) p8 e2 q: R# ~' x* O+ ^
    Part *workPart = theSession->Parts()->Work();
# N( {7 ]2 V+ K% d- Z
6 B. b7 Z- d. F+ X4 ~. h    /*Get the existing group objects to create the operation under*/
$ P0 g. }, g- Q& O6 _$ b3 j7 t8 n! B    CAM::NCGroup *programGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("PROGRAM");1 E1 _0 b6 g/ e% s" w' v
    CAM::NCGroup *methodGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("METHOD");
) X7 n: F' s- q2 U/ j1 L4 J    CAM::NCGroup *toolGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("MILL");
4 a$ k* l0 a% k/ q# j5 t$ K    CAM::NCGroup *geometryGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("WORKPIECE");5 X; @1 r; I" q

2 y2 p  }. L$ V& p, z: `* J    /*Create the Cavity Mill operation*/
0 n) `* Y, W% \" F    CAM::Operation *operation = workPart->CAMSetup()->CAMOperationCollection()->Create(programGroup, methodGroup, toolGroup, geometryGroup, "mill_contour", "CAVITY_MILL", CAM::OperationCollection::UseDefaultNameTrue, "CAVITY_MILL");
5 }8 s0 N/ |0 X, n' P5 i: V" }( p8 t0 \
    /*Create the Cavity Milling builder*/1 [' A8 ?" V  \5 W& y& K0 w
    CAM::CavityMillingBuilder *cavityMillingBuilder = workPart->CAMSetup()->CAMOperationCollection()->CreateCavityMillingBuilder(operation);
2 `4 l4 D. w$ B7 a9 B7 O9 b% l6 f. v9 N
    /*Get the solid body named PART*/
( o& N% g; l, ]; P$ l    tag_t partSolid = NULL_TAG;
- ]- j& u+ [+ s9 n+ T! s' ]    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "PART", UF_solid_type, false, &partSolid);
7 ]4 v" F/ q, H3 e    Body *partBody = dynamic_cast<Body *> (NXObjectManager::Get(partSolid));
# v% O/ j) _3 l8 c6 s    std::vector<Body *> partBodies(1);/ Q. K5 O8 {9 e" s9 g
    partBodies[0] = partBody;" L) F; V" y* u

! B. P- I. K4 h    /*Set the part geometry*/* z5 }1 A+ l; V* I; C
    cavityMillingBuilder->PartGeometry()->InitializeData(false);1 T, M9 D0 O$ ?- y% j$ Y2 Q
    CAM::GeometrySet *partGeometrySet = cavityMillingBuilder->PartGeometry()->GeometryList()->FindItem(0);2 y! V. U% |, R4 G# g5 B  y
    BodyDumbRule *partBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(partBodies);
  }; Y& g5 ^% a$ ?7 z0 Y( _    std::vector<SelectionIntentRule *> partRules(1);, R5 X5 a! \! \
    partRules[0] = partBodyDumbRule;
3 |% Z4 g4 }8 F0 {. o9 s! Z    partGeometrySet->ScCollector()->ReplaceRules(partRules, false);& A2 L( K# s& b5 b7 l/ f: {- K

1 Z8 y, c+ B+ \  O8 ?' N    /*Get the solid body named BLANK*/
9 t  Q' {$ z! ^" n    tag_t blankSolid = NULL_TAG;
; j( N# V& _3 J, |% Z, _+ x    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "BLANK", UF_solid_type, false, &blankSolid);
' `7 t1 K# G8 G" J6 s  y    Body *blankBody = dynamic_cast<Body *> (NXObjectManager::Get(blankSolid));
$ v  n* Z# X+ f, f4 j. G% i    std::vector<Body *> blankBodies(1);
5 X; a' ~1 v7 X3 h  Z    blankBodies[0] = blankBody;4 Y+ s! Q1 N& E6 |3 X1 G- v# Z' ^

# |, M- W0 v. V0 E+ e    /*Set the blank geometry*/: J% j3 G$ e9 i1 M
    cavityMillingBuilder->BlankGeometry()->InitializeData(false);1 h: z2 }- J1 l
    CAM::GeometrySet *blankGeometrySet = cavityMillingBuilder->BlankGeometry()->GeometryList()->FindItem(0);* E1 W. u! `7 u
    BodyDumbRule *blankBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(blankBodies);
5 g9 L0 N# ]3 ~& Y    std::vector<SelectionIntentRule *> blankRules(1);
; p) E& e' N+ A' v    blankRules[0] = blankBodyDumbRule;: o7 p. `# i# a) q) b
    blankGeometrySet->ScCollector()->ReplaceRules(blankRules, false);2 M) u) e3 L5 l0 V
* ^0 C2 j! t# M* r3 O( h
    cavityMillingBuilder->Commit();
, z/ g0 V+ M) P  R    cavityMillingBuilder->Destroy();
, v0 F9 ^; a- [* {( P! g" B# ~; I) n6 a% \' r7 ~+ o
    /*Generate the tool path*/
1 ]/ ?+ T. m5 f  s& F# ?; j    std::vector<CAM::CAMObject *> operations(1);- T* [, v3 }- |; o5 H
    operations[0] = operation;
" \4 t) ~% p+ p7 |$ A; {$ c    workPart->CAMSetup()->GenerateToolPath(operations);. c" d. g: q5 W1 T2 p9 D

/ h# L9 l' k. V% I' k    /* Terminate the API environment */
4 h$ K3 k6 E! O  X- R    UF_CALL(UF_terminate());
+ Z0 {. G) Q3 f5 d3 W8 c}
* ~5 p  U6 M) g8 R: T
( h, }- Z' v. z" ~+ m
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了