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

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

admin 楼主

2015-6-5 11:20:12

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

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

x
这段代码可以参考看看哦,显然比ufun的代码长点,但是是新的也是最好的方法6 e6 f: s; g2 w( X
: r% n# y+ u$ a- A0 a( n9 W

! _8 G. @, a  x{
# l2 ?6 v. j, _5 x) _    /* Initialize the API environment */
' j, b1 S! a; E# t" d/ y' N    if( UF_CALL(UF_initialize()) )
( p" R0 `( x, x6 E3 N    {8 p2 g1 q0 z4 [5 y% J
        /* Failed to initialize */" \- L$ v& m7 f% r! i
        return;
) i' l( W2 f5 ~; \0 L4 ]    }3 h; a/ G! u7 z* a3 ^# j

& o* W5 o9 [: v8 g6 I4 P    Session *theSession = Session::GetSession();* k) B+ T, u5 `+ H' J' u. O$ f
    Part *workPart = theSession->Parts()->Work();
$ H: K% m8 q/ M+ z
. q; |! I0 Q% E3 E  H& u6 U    /*Get the existing group objects to create the operation under*/% W, ?/ g( b3 \" N% P  t
    CAM::NCGroup *programGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("PROGRAM");5 Z8 D; s0 _. X" f6 v
    CAM::NCGroup *methodGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("METHOD");8 M  w  y; `* I; K" {! I
    CAM::NCGroup *toolGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("MILL");4 o4 T( e  @/ ]+ {2 p( q" k
    CAM::NCGroup *geometryGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("WORKPIECE");
! E8 o  h5 U9 o/ D' O% b5 c. o
$ t8 N$ s5 M  Y" {( z    /*Create the Cavity Mill operation*/
2 m6 H6 U9 Y# Y/ O* c* z    CAM::Operation *operation = workPart->CAMSetup()->CAMOperationCollection()->Create(programGroup, methodGroup, toolGroup, geometryGroup, "mill_contour", "CAVITY_MILL", CAM::OperationCollection::UseDefaultNameTrue, "CAVITY_MILL");
4 g2 k/ j& t: g& j5 K% s. r2 r3 E, I+ E
    /*Create the Cavity Milling builder*/' c- ~- D6 w: y% _: v' U
    CAM::CavityMillingBuilder *cavityMillingBuilder = workPart->CAMSetup()->CAMOperationCollection()->CreateCavityMillingBuilder(operation);4 `+ f$ ^% w* _* c# `

9 U2 ^5 [# _+ U- V    /*Get the solid body named PART*/
. R1 A8 J& I* u* X7 T    tag_t partSolid = NULL_TAG;( P2 D! [8 ^6 s
    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "PART", UF_solid_type, false, &partSolid);
) i3 n4 ?* w& U: h. {7 F    Body *partBody = dynamic_cast<Body *> (NXObjectManager::Get(partSolid));' n- m( i: J- `" x6 c; m
    std::vector<Body *> partBodies(1);
8 b! y# Y" l9 j/ E  |; R    partBodies[0] = partBody;' q& d8 y- r( P% G9 k9 ~
% B7 l% b3 X6 R, @
    /*Set the part geometry*/
1 Y: @& X: H- \8 W, b    cavityMillingBuilder->PartGeometry()->InitializeData(false);3 g& ^3 |& ?+ E: |/ f
    CAM::GeometrySet *partGeometrySet = cavityMillingBuilder->PartGeometry()->GeometryList()->FindItem(0);
( N  r  f4 T0 u8 T    BodyDumbRule *partBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(partBodies);  G& g( J0 ^/ G
    std::vector<SelectionIntentRule *> partRules(1);1 p, ]" `4 W3 K5 O
    partRules[0] = partBodyDumbRule;' r: H! P4 K' r3 F& _! b: W' Z
    partGeometrySet->ScCollector()->ReplaceRules(partRules, false);
: ?3 K2 K, ?. T' y5 e  F5 C
8 r4 g# n+ P/ w6 @. n0 k, _    /*Get the solid body named BLANK*/
6 p1 A  k* C; j4 [" Y) d% D. V1 a( G    tag_t blankSolid = NULL_TAG;9 O3 o% w0 H, L
    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "BLANK", UF_solid_type, false, &blankSolid);! r2 G! `$ Q! l* B5 Q; q
    Body *blankBody = dynamic_cast<Body *> (NXObjectManager::Get(blankSolid));1 D6 q' R8 o$ O  S) t
    std::vector<Body *> blankBodies(1);
7 _4 _. O( k2 V3 N    blankBodies[0] = blankBody;
% w$ e# b: T2 P  a* m* Y3 Z# t- c- v4 o  C2 e" a/ Q  X  N5 E  F3 j' i
    /*Set the blank geometry*/
: T3 O2 c  y* ?% e6 T: Y    cavityMillingBuilder->BlankGeometry()->InitializeData(false);. Y& {; ]- m9 y6 ^% Z# _' }
    CAM::GeometrySet *blankGeometrySet = cavityMillingBuilder->BlankGeometry()->GeometryList()->FindItem(0);9 x( L: d' o. s+ w# r
    BodyDumbRule *blankBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(blankBodies);
2 j& }- V1 U/ s    std::vector<SelectionIntentRule *> blankRules(1);
6 n) k7 o& D, ?5 V: t. p1 @    blankRules[0] = blankBodyDumbRule;
4 ~- [' t* p4 e    blankGeometrySet->ScCollector()->ReplaceRules(blankRules, false);
0 Z3 z/ n2 }7 H9 y! n# ?* m' P3 Q
- n. B5 B/ v/ P- _    cavityMillingBuilder->Commit();) J( H; N* a& n2 f, U
    cavityMillingBuilder->Destroy();1 v' n4 I4 O- g" f# e0 h
* i; e1 N2 t5 g) O, |
    /*Generate the tool path*/1 j8 P6 u$ E8 W1 y. J6 I% z1 M) E
    std::vector<CAM::CAMObject *> operations(1);  d! j7 H5 J" [, w0 P  ?
    operations[0] = operation;* ]! k9 Q. d! }4 q" B: \4 \
    workPart->CAMSetup()->GenerateToolPath(operations);6 w: l+ Z; f- H( G- v4 V

& [4 Q8 C  P$ e3 z0 A    /* Terminate the API environment */
* Y  U6 O9 V5 [6 c& K7 U4 f8 J7 c    UF_CALL(UF_terminate());$ I) p: V2 |- m1 ~- V
}
9 f3 b* k' Y/ t* F" q1 d8 J8 a# [" [- ]& J
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了