PLM之家精品课程培训,联系电话:18301858168 QQ: 939801026

  • NX二次开培训

    NX二次开培训

    适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术对于老鸟也值得借鉴!.

    NX CAM二次开发培训报名 NX二次开发基础培训报名
  • PLM之家Catia CAA二次开发培训

    Catia二次开发培训

    Catia二次开发的市场大,这方面开发人才少,难度大。所以只要你掌握了开发,那么潜力巨大,随着时间的积累,你必将有所用武之地!

  • PLM之Teamcenter最佳学习方案

    Teamcenter培训

    用户应用基础培训,管理员基础培训,管理员高级培训,二次开发培训应有尽有,只要你感兴趣肯学习,专业多年经验大师级打造!

  • PLM之Tecnomatix制造领域培训

    Tecnomatix培训

    想了解制造领域数字化吗?想了解工厂,生产线设计吗?数字化双胞胎,工业4.0吗?我们的课程虚位以待!

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

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

[复制链接]

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

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

admin 楼主

2015-6-5 11:20:12

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

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

x
这段代码可以参考看看哦,显然比ufun的代码长点,但是是新的也是最好的方法
# }6 u" P3 ~0 q9 W0 k
6 ~* |" G% S! G) h- y9 Q4 i* v# g/ `& Y! C: U
{! ]2 K8 J" V$ i6 `) K8 T
    /* Initialize the API environment */  t0 X$ ~' s  Q- U4 p$ W9 V$ q
    if( UF_CALL(UF_initialize()) ) , i+ A; W3 O, a6 {3 Y
    {
) b) H% l+ k. U+ \+ q        /* Failed to initialize */
" \5 i3 x$ x6 T; N! j4 }        return;
& c- v- ~, ?5 m+ v, W    }
. y6 V+ l; J8 l- T6 _
- @2 N8 ]; B( S" k& z$ o( W! D    Session *theSession = Session::GetSession();
2 f( S  ?$ T, [/ D( M    Part *workPart = theSession->Parts()->Work();. ~% X6 G1 q, \0 m: X3 ?5 m
& n( _. u+ u2 [3 L
    /*Get the existing group objects to create the operation under*/
: i' z# H/ N. B9 k$ g# Y    CAM::NCGroup *programGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("PROGRAM");
- U* D" X3 ]6 F* J- {/ d. ?    CAM::NCGroup *methodGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("METHOD");
' R6 j1 b2 Y% @/ O2 K6 c    CAM::NCGroup *toolGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("MILL");
- z5 {  Z0 @( J) E0 m: }    CAM::NCGroup *geometryGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("WORKPIECE");2 ?  H/ y  p" @
4 A' u: E+ n0 k' ]0 w2 D" F
    /*Create the Cavity Mill operation*/" Q) y$ o% T" u3 M2 i, ]5 ]3 \1 a
    CAM::Operation *operation = workPart->CAMSetup()->CAMOperationCollection()->Create(programGroup, methodGroup, toolGroup, geometryGroup, "mill_contour", "CAVITY_MILL", CAM::OperationCollection::UseDefaultNameTrue, "CAVITY_MILL");" R5 s. g- y9 A1 U2 I+ R6 Q, Q
) b! I$ \! M$ G3 m% b1 Q4 r
    /*Create the Cavity Milling builder*/& V6 Q* `5 P, ?% f* W
    CAM::CavityMillingBuilder *cavityMillingBuilder = workPart->CAMSetup()->CAMOperationCollection()->CreateCavityMillingBuilder(operation);  i3 ?/ O$ x' @+ Q% B3 y% u  H
8 B# t% z9 w( \6 d, n
    /*Get the solid body named PART*/
4 q+ M6 p2 B- a    tag_t partSolid = NULL_TAG;
) y' Y& B6 l$ r( c' S  _    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "PART", UF_solid_type, false, &partSolid);. M# C  I) a* t( W
    Body *partBody = dynamic_cast<Body *> (NXObjectManager::Get(partSolid));( L& p- ?- F7 y2 K
    std::vector<Body *> partBodies(1);
: l4 e8 W  v" A    partBodies[0] = partBody;
; [5 f& W9 @! `. _5 t0 m
: H7 D2 F& h9 h  T. u2 ]' O3 v7 i    /*Set the part geometry*/
% B1 y. R& [% w9 R2 t    cavityMillingBuilder->PartGeometry()->InitializeData(false);* z: \+ h9 E- S- |8 t) q! ^: Z: z
    CAM::GeometrySet *partGeometrySet = cavityMillingBuilder->PartGeometry()->GeometryList()->FindItem(0);
! q. J/ N3 x# f: A) C    BodyDumbRule *partBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(partBodies);
6 {4 ^/ M: h( P1 I) J( s    std::vector<SelectionIntentRule *> partRules(1);: Z& c" w) P5 z, x% l
    partRules[0] = partBodyDumbRule;5 z# K* q0 P$ Z% ]8 ]/ h
    partGeometrySet->ScCollector()->ReplaceRules(partRules, false);  H7 T/ H2 l! ~5 _& K# V
  k7 \# h2 x' X! }
    /*Get the solid body named BLANK*/
& ^$ o$ C% K3 K  Z    tag_t blankSolid = NULL_TAG;& c$ e( S# M+ F1 O* x: c& m' ?
    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "BLANK", UF_solid_type, false, &blankSolid);
9 k$ U9 v% k2 q$ S/ P0 u+ h) @% T    Body *blankBody = dynamic_cast<Body *> (NXObjectManager::Get(blankSolid));+ a; d% i% X$ @; f' ~
    std::vector<Body *> blankBodies(1);
3 P& ?# f2 z, r; P1 I    blankBodies[0] = blankBody;) c: k) z5 |9 u# \+ g1 D/ f& T
- J/ j' Z3 C, B1 C
    /*Set the blank geometry*/
+ V) G8 [* u6 G$ f7 A; Y' {    cavityMillingBuilder->BlankGeometry()->InitializeData(false);
( q  h& G& _" t9 X' U    CAM::GeometrySet *blankGeometrySet = cavityMillingBuilder->BlankGeometry()->GeometryList()->FindItem(0);2 \! o7 {' h+ o) R
    BodyDumbRule *blankBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(blankBodies);- O" t1 E7 _6 }( |: j
    std::vector<SelectionIntentRule *> blankRules(1);$ X" X5 u0 [4 b0 m, U4 b; m
    blankRules[0] = blankBodyDumbRule;
: e4 Q  D) w* _    blankGeometrySet->ScCollector()->ReplaceRules(blankRules, false);
* I! L5 E1 A  F; m2 n
$ |8 M( U0 d, j; Q; J. X1 z8 W    cavityMillingBuilder->Commit();( k& G4 f$ H; u$ W+ d
    cavityMillingBuilder->Destroy();& X4 X' G( U7 ?  f
0 E, ]; |5 S; c1 \2 M, x1 V
    /*Generate the tool path*/
$ C# @% A: h; Q7 V( Y+ w    std::vector<CAM::CAMObject *> operations(1);
, @! a7 r. {! g, U    operations[0] = operation;
; u% |; }' S6 O' n+ A& v4 v3 Y    workPart->CAMSetup()->GenerateToolPath(operations);6 s6 S8 I6 E7 Z8 p; y) A, I; J

, ]' w4 H: V6 a9 z! ?$ M    /* Terminate the API environment */
2 Q2 s( ]5 q+ S" h    UF_CALL(UF_terminate());
3 C& ?; A$ K/ u+ Y6 l! W5 F& v, ?# C}# N# q; Y  P  E6 ^: }; b

( v6 X! N+ u( |8 m8 u4 }2 l
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了