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

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

admin 楼主

2015-6-5 11:20:12

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

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

x
这段代码可以参考看看哦,显然比ufun的代码长点,但是是新的也是最好的方法
4 A/ m- L2 U4 a7 ]( V) q
# m, F/ B2 i5 d  u9 l; b. s; e3 g  H% `; ^
{
  ^$ ^  z6 y/ X4 W4 f    /* Initialize the API environment */
; `1 p$ {3 h5 P2 ?4 z; p# ?. ^    if( UF_CALL(UF_initialize()) )
9 V3 j8 \8 u) }    {( N+ k$ t; o: l5 y7 f6 H
        /* Failed to initialize */8 D3 X2 e  A& v, l
        return;
' [7 g0 T3 Q7 H+ v    }/ A: G) t/ E, h! Y! V4 r; m/ i

: {2 n! q+ j: c% ^, s8 d# Y    Session *theSession = Session::GetSession();
9 j6 z0 d6 x' ?7 I    Part *workPart = theSession->Parts()->Work();( S$ {# m# u5 e# ?: s& {; S* i
/ W3 ~0 C" o" t6 B7 d
    /*Get the existing group objects to create the operation under*/* p$ ]3 e$ s$ v- P
    CAM::NCGroup *programGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("PROGRAM");
, Y$ r! S2 ^, A% Q6 L# E    CAM::NCGroup *methodGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("METHOD");7 B" ?1 E3 H. y% ?$ G- J# ^
    CAM::NCGroup *toolGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("MILL");6 Y, z9 K2 Q  p+ N
    CAM::NCGroup *geometryGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("WORKPIECE");# }+ C$ Y' H' h# H5 c

- L4 h3 `/ Q- {" {: Q    /*Create the Cavity Mill operation*/
6 H/ n/ F2 }% V8 l9 ?; c    CAM::Operation *operation = workPart->CAMSetup()->CAMOperationCollection()->Create(programGroup, methodGroup, toolGroup, geometryGroup, "mill_contour", "CAVITY_MILL", CAM::OperationCollection::UseDefaultNameTrue, "CAVITY_MILL");
9 l7 e$ p' a) |4 y
" R% V: k- m* F- M% T; h$ c    /*Create the Cavity Milling builder*/4 D) T  M" e8 v0 H4 k; a1 F
    CAM::CavityMillingBuilder *cavityMillingBuilder = workPart->CAMSetup()->CAMOperationCollection()->CreateCavityMillingBuilder(operation);  u2 E9 X( _' Z( `7 u0 c! L

' M) s: g: ]: f% f9 A  K    /*Get the solid body named PART*/  ~- ?; C& @" O* N( w  E
    tag_t partSolid = NULL_TAG;
0 t5 @% Y/ W+ b: w! k    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "PART", UF_solid_type, false, &partSolid);7 [' k7 s; @& W! r5 P
    Body *partBody = dynamic_cast<Body *> (NXObjectManager::Get(partSolid));- l& }/ O) B# T) R+ K
    std::vector<Body *> partBodies(1);# o) e, g9 p  C& b9 s& z) s% r7 N
    partBodies[0] = partBody;, g! m/ z2 [* D- ^; E7 T4 N* Z2 I

9 l  ]4 i% D0 O) G, J    /*Set the part geometry*/. G0 r: u2 v6 a- A- Q
    cavityMillingBuilder->PartGeometry()->InitializeData(false);1 |! Z" V0 `* c& i3 w9 f
    CAM::GeometrySet *partGeometrySet = cavityMillingBuilder->PartGeometry()->GeometryList()->FindItem(0);  b$ f+ E- {% x. K# S
    BodyDumbRule *partBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(partBodies);
/ Y) K& x$ F$ h; v    std::vector<SelectionIntentRule *> partRules(1);
, _" j; a! H# d# r- I$ {: ?" E1 ]    partRules[0] = partBodyDumbRule;; z, U: i4 r5 F& i- W
    partGeometrySet->ScCollector()->ReplaceRules(partRules, false);
( V" I6 d- A+ @8 w1 A/ e' k- l9 b$ A; w; N
    /*Get the solid body named BLANK*/2 F8 S$ }4 ]  N) P! M( W
    tag_t blankSolid = NULL_TAG;
  ]1 {! r5 [) I) S6 _! B/ P6 s  @    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "BLANK", UF_solid_type, false, &blankSolid);/ D4 u, w5 D+ T) T8 D
    Body *blankBody = dynamic_cast<Body *> (NXObjectManager::Get(blankSolid));
  T& |) ]" D6 s( `( O" T    std::vector<Body *> blankBodies(1);
- ]; A: G# w9 }; `- g  c8 d    blankBodies[0] = blankBody;  i0 A9 s5 m" a& T  V

# Y* Q) Q: t. `1 {    /*Set the blank geometry*/) n  s/ y. M! o& i2 l! a! Z3 c. A; e
    cavityMillingBuilder->BlankGeometry()->InitializeData(false);
) Z' {# L+ M- v! |& a3 o7 W    CAM::GeometrySet *blankGeometrySet = cavityMillingBuilder->BlankGeometry()->GeometryList()->FindItem(0);
4 W7 i5 E: T$ {1 c/ X% w$ Y- _    BodyDumbRule *blankBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(blankBodies);
6 S0 X4 M, R5 [0 x6 Y6 I6 s, Q    std::vector<SelectionIntentRule *> blankRules(1);" k3 @3 C# p8 R6 [$ I
    blankRules[0] = blankBodyDumbRule;5 y9 F) B5 f1 t4 K5 P+ U. D- X
    blankGeometrySet->ScCollector()->ReplaceRules(blankRules, false);
+ z* Q/ C3 Y% s* _4 S3 Z/ U/ J% g  n) n) E9 O; D! N0 p4 n4 [5 y
    cavityMillingBuilder->Commit();
- l2 i- P/ ?) }) O: Q0 w. Z    cavityMillingBuilder->Destroy();- y* o- c* _$ D9 n
/ p+ L% E# s1 [3 l9 x3 l
    /*Generate the tool path*/
6 i8 h& b; [. v$ U% H/ c    std::vector<CAM::CAMObject *> operations(1);, @/ @3 D0 Y. |
    operations[0] = operation;
+ N- k9 }  g) C% |$ n/ g    workPart->CAMSetup()->GenerateToolPath(operations);
! [* F" m1 q- C* R" h
$ J: x4 p& _% p    /* Terminate the API environment */
# |: c0 D( W# B/ Q6 j: x) ~    UF_CALL(UF_terminate());7 K% n$ V% w4 ~9 V, @( T
}2 f; [! Z! k% L2 i- S, l
/ z; Z+ x1 g/ k, U. E; \
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了