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

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

admin 楼主

2015-6-5 11:20:12

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

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

x
这段代码可以参考看看哦,显然比ufun的代码长点,但是是新的也是最好的方法
& c# H( n' S  O4 D+ H9 v8 ?% |1 o: V% G  q0 `
6 F' ]. }8 c) P6 _+ Y1 V
{% }0 y9 a5 v2 h3 F
    /* Initialize the API environment */
8 s7 O, w# K- y3 C. \& E    if( UF_CALL(UF_initialize()) )
" F& j1 E: k  J, q4 Z2 ^9 q    {6 r5 b' K) `1 o+ h  Z6 Q
        /* Failed to initialize */& f4 |0 R7 f2 w& n) @, r+ u
        return;
: s; A( R3 g8 g    }( w. ]& N9 I! l: M. E; s( h' C5 P' p

% |4 A, i1 ?& f    Session *theSession = Session::GetSession();
. [  |" u! q7 a# ^& n4 s& U    Part *workPart = theSession->Parts()->Work();
2 X( \. P0 A9 F! f9 ?+ P2 o5 L& _/ Y5 ~2 i( q3 G# \0 C1 s3 y
    /*Get the existing group objects to create the operation under*/
4 `& a1 D9 Z$ h7 h7 S0 x' f    CAM::NCGroup *programGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("PROGRAM");
1 i  O  ?7 h- Y/ s3 x    CAM::NCGroup *methodGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("METHOD");
# U  x# p' X3 s' i+ ], G4 a. Y    CAM::NCGroup *toolGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("MILL");
7 H/ U, k) t# G7 ^  Y    CAM::NCGroup *geometryGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("WORKPIECE");) A# c9 ~) h& [$ `+ E3 c- ?

9 {4 J+ G$ @# S: s" o4 E    /*Create the Cavity Mill operation*/
! y/ w5 o; w! e    CAM::Operation *operation = workPart->CAMSetup()->CAMOperationCollection()->Create(programGroup, methodGroup, toolGroup, geometryGroup, "mill_contour", "CAVITY_MILL", CAM::OperationCollection::UseDefaultNameTrue, "CAVITY_MILL");
* Y  U* f" ~# K5 n  c
: T& x' L# J3 g. t* v& e9 {: t    /*Create the Cavity Milling builder*/
% j; X, ?2 g) {6 Z$ W5 ~+ K8 L    CAM::CavityMillingBuilder *cavityMillingBuilder = workPart->CAMSetup()->CAMOperationCollection()->CreateCavityMillingBuilder(operation);3 Y3 ^5 F/ |: w" l2 H
6 L7 b- I8 E5 J, O% Z
    /*Get the solid body named PART*/
7 D8 y- d3 }4 D9 R' Y    tag_t partSolid = NULL_TAG;$ d4 H( I: _3 C3 t+ t
    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "PART", UF_solid_type, false, &partSolid);3 b8 A2 @8 i3 o0 F+ r/ U0 E
    Body *partBody = dynamic_cast<Body *> (NXObjectManager::Get(partSolid));
) d. j  M, F0 U    std::vector<Body *> partBodies(1);
" @4 ~4 Z  n$ m8 M! i    partBodies[0] = partBody;- R+ B6 E8 p$ h0 e% p

/ X" {. v$ V/ R( \    /*Set the part geometry*/
& y( O+ g/ o/ k3 \& U    cavityMillingBuilder->PartGeometry()->InitializeData(false);
4 b4 n: ~6 j* _( @' Z    CAM::GeometrySet *partGeometrySet = cavityMillingBuilder->PartGeometry()->GeometryList()->FindItem(0);
" r; F* E+ E% h5 l) l( o    BodyDumbRule *partBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(partBodies);; r. Z& W) u0 a" U# e5 `, Y
    std::vector<SelectionIntentRule *> partRules(1);4 y6 y9 D8 ?5 w$ |$ `
    partRules[0] = partBodyDumbRule;( J( Q3 c* ?+ l; @6 ^7 ]! o  b
    partGeometrySet->ScCollector()->ReplaceRules(partRules, false);' ~; Q3 F: y- J7 k2 Z% ^9 M, R# H
+ M4 ^# F: b+ w
    /*Get the solid body named BLANK*/
* [8 J$ y' g2 C7 f    tag_t blankSolid = NULL_TAG;
4 q1 k( S" D; l$ r  E" Z; T    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "BLANK", UF_solid_type, false, &blankSolid);. A' U, K) {$ v, v8 t) g6 s
    Body *blankBody = dynamic_cast<Body *> (NXObjectManager::Get(blankSolid));
% C* E; G* O* _" _: g( x% o! s6 L    std::vector<Body *> blankBodies(1);
/ ]0 {8 V8 x9 n2 [" a( W/ J    blankBodies[0] = blankBody;
5 v$ G+ Y) N# F# u, B8 ]: \- }+ i. v) R+ C- s$ e" g' G+ v" C
    /*Set the blank geometry*/
" b& l' ]' q2 C% A; \    cavityMillingBuilder->BlankGeometry()->InitializeData(false);
: x8 J: {, J+ `. a: C% y    CAM::GeometrySet *blankGeometrySet = cavityMillingBuilder->BlankGeometry()->GeometryList()->FindItem(0);9 x9 N* ]4 y9 t3 h& O4 C; j) Z8 d& I
    BodyDumbRule *blankBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(blankBodies);0 X2 E+ Q1 w  E3 R4 G7 v) V; j
    std::vector<SelectionIntentRule *> blankRules(1);
1 \$ Y: e; H' C. Q7 {& W    blankRules[0] = blankBodyDumbRule;
, A  f0 ?# O' [2 w+ r    blankGeometrySet->ScCollector()->ReplaceRules(blankRules, false);
% S$ B/ a3 p! M& R
/ R1 }6 V" Y& O1 u    cavityMillingBuilder->Commit();
0 W+ a  d7 n- D  W    cavityMillingBuilder->Destroy();& N: z: F; [; X! U- ~2 f
; Q, \5 P" C5 y/ s6 A6 Y
    /*Generate the tool path*/. V6 ]2 C) e9 j2 Z, ~3 y
    std::vector<CAM::CAMObject *> operations(1);
( O/ u$ m' J/ y5 e6 \    operations[0] = operation;& Q/ |5 B9 o) ?; |+ h
    workPart->CAMSetup()->GenerateToolPath(operations);& F$ x0 s' w9 y1 I
0 E: l2 S: ]$ o! X
    /* Terminate the API environment */
0 U; q: X$ ]( t2 H: {    UF_CALL(UF_terminate());) z1 V- o7 s; _
}
5 Q, w6 Q* z8 Y% m
5 h- `( T) l9 x. w( A
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了