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 4292 0

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

admin 楼主

2015-6-5 11:20:12

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

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

x
这段代码可以参考看看哦,显然比ufun的代码长点,但是是新的也是最好的方法+ I) ^7 [; X# l/ C
& f+ E8 `- T/ B  m1 e' X. K) S, N
0 O; g  U: N3 F5 _  N& e
{
. G0 y  D$ C4 m3 E6 q    /* Initialize the API environment */3 |+ E# v) G% W$ l8 I
    if( UF_CALL(UF_initialize()) ) 4 H5 g1 z' r; [. n
    {0 L* y; ?# k  ~$ R) O( ~" }
        /* Failed to initialize */0 A; V$ R# X( `, N/ t+ z
        return;
2 j( ^4 \  ~& x& z    }
% z4 c; j5 R% m+ l5 y8 I# j5 F: ^" [; w) B* g. K* d; y' n
    Session *theSession = Session::GetSession();1 Q. C6 @; g3 d+ o0 o/ F: F
    Part *workPart = theSession->Parts()->Work();/ ~: h# o4 p( L% |0 f) O; \
# \& W# b. A$ M% b+ S* E9 R
    /*Get the existing group objects to create the operation under*/
- Q5 g4 m! w/ i% H7 V    CAM::NCGroup *programGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("PROGRAM");6 r, ?7 U$ }5 \
    CAM::NCGroup *methodGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("METHOD");
% E+ w- G6 o; F9 e6 t* s% R6 Z    CAM::NCGroup *toolGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("MILL");
2 ~% l% n( L, b% {    CAM::NCGroup *geometryGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("WORKPIECE");+ U4 Y& k/ Z" h8 x& q
/ _3 _  t$ l& }3 I. U& D- Q
    /*Create the Cavity Mill operation*/
8 a: \! Z: [+ J3 ~% z    CAM::Operation *operation = workPart->CAMSetup()->CAMOperationCollection()->Create(programGroup, methodGroup, toolGroup, geometryGroup, "mill_contour", "CAVITY_MILL", CAM::OperationCollection::UseDefaultNameTrue, "CAVITY_MILL");
* C" f1 w; ~7 B; o9 I/ n
8 }4 `& ?/ o1 ~2 F4 F    /*Create the Cavity Milling builder*/
% R. }0 E, F) e( A    CAM::CavityMillingBuilder *cavityMillingBuilder = workPart->CAMSetup()->CAMOperationCollection()->CreateCavityMillingBuilder(operation);
" J' P$ [7 z) n/ Q3 ?" J7 P6 K4 E7 K) d# P& y- \
    /*Get the solid body named PART*/# t3 B# V2 e0 c# {0 H
    tag_t partSolid = NULL_TAG;
7 ~: d; `% }% T4 v- h    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "PART", UF_solid_type, false, &partSolid);
7 D1 s/ ?' H$ ^. p3 s. O& |    Body *partBody = dynamic_cast<Body *> (NXObjectManager::Get(partSolid));
5 k" z# v9 p5 R) g; E    std::vector<Body *> partBodies(1);' B% E2 E) a) r+ l0 e+ ^
    partBodies[0] = partBody;3 }2 S7 ^6 \& g& O
/ S, {" a& y  g. r( t
    /*Set the part geometry*/
7 x) }5 b* m/ ^# S$ j) g    cavityMillingBuilder->PartGeometry()->InitializeData(false);
' ]/ u+ n  A: l- |, a" a2 c    CAM::GeometrySet *partGeometrySet = cavityMillingBuilder->PartGeometry()->GeometryList()->FindItem(0);
% ^5 L) ]# }# S! d" k    BodyDumbRule *partBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(partBodies);
' m& c/ E: w/ i4 V& v    std::vector<SelectionIntentRule *> partRules(1);
' a" c4 L- m: g    partRules[0] = partBodyDumbRule;% w/ b1 [" _  K/ C2 C; n
    partGeometrySet->ScCollector()->ReplaceRules(partRules, false);
7 ~3 E0 L- q( B; K0 S+ G$ @3 y* K9 R
    /*Get the solid body named BLANK*/( a# S! G, C: ?! c/ ^& j+ D
    tag_t blankSolid = NULL_TAG;
/ }5 b+ h: q- b$ R; a6 J9 \    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "BLANK", UF_solid_type, false, &blankSolid);6 v) I% f7 s  G. R2 E; @
    Body *blankBody = dynamic_cast<Body *> (NXObjectManager::Get(blankSolid));
) l3 e6 }7 t9 W" e    std::vector<Body *> blankBodies(1);- a" y( c( w1 A" C' k; A
    blankBodies[0] = blankBody;! b& u* `! ~# l) L7 T" G) I0 f
3 y  s7 x3 T0 u7 x
    /*Set the blank geometry*/
* ]* ]8 f$ @/ s9 P" i* K8 u# D    cavityMillingBuilder->BlankGeometry()->InitializeData(false);' r2 }/ |% X# I9 c/ o
    CAM::GeometrySet *blankGeometrySet = cavityMillingBuilder->BlankGeometry()->GeometryList()->FindItem(0);
! W( z- Z  K' U3 I    BodyDumbRule *blankBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(blankBodies);0 y# C2 d5 Z2 m5 G5 N- a
    std::vector<SelectionIntentRule *> blankRules(1);; }+ A/ L) V" G& B  h
    blankRules[0] = blankBodyDumbRule;
( v4 ~( @2 b  `    blankGeometrySet->ScCollector()->ReplaceRules(blankRules, false);( h0 |3 q! Y2 F' p
' N7 t  q: \; q  n
    cavityMillingBuilder->Commit();3 _% d% `2 w+ [
    cavityMillingBuilder->Destroy();/ {; o1 e, s& p: x! g- i. x

( |& A! N9 @( S& g2 b8 h" n5 E8 J    /*Generate the tool path*/; f! n8 I  W# q8 s. A9 ~3 z
    std::vector<CAM::CAMObject *> operations(1);
6 ~1 j3 u6 z$ N$ T2 Q    operations[0] = operation;0 v; \$ V' Q% t
    workPart->CAMSetup()->GenerateToolPath(operations);
; G- G  ]  r+ Z* s. r4 H: d5 V7 o" O
    /* Terminate the API environment */
+ I4 a7 U) y0 J+ L8 T) h    UF_CALL(UF_terminate());1 i  O$ x! J4 z8 I' u- @
}
$ f$ B" Q2 |* {
/ @4 S; h* k) @/ r
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了