PLM之家PLMHome-工业软件与AI结合践行者

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

[复制链接]

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

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

admin 楼主

2015-6-5 11:20:12

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

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

x
这段代码可以参考看看哦,显然比ufun的代码长点,但是是新的也是最好的方法
2 }4 ]  U0 l6 A+ [7 `
' Y! X: p9 Q6 @3 t4 N4 u3 R
1 \& M# S/ j" Y0 t{# K0 }2 k3 O6 n: \
    /* Initialize the API environment */0 @& V4 B  m# x
    if( UF_CALL(UF_initialize()) ) # ~6 _- g, b: s, P! K
    {
' `" I2 q% w5 j0 J        /* Failed to initialize */% y4 a" ~' b( F  _/ G2 R0 z  S+ j
        return;
/ l) r! }+ H* ^' K/ Y    }
- q' W( P9 _: y" t" G! Q& B6 O: _  [9 u/ L+ B: w: D5 P
    Session *theSession = Session::GetSession();
6 n) V1 J" o: W    Part *workPart = theSession->Parts()->Work();) S$ M; `0 M( G1 k" Q, W; T3 P+ I) B' \
5 U. t& H( ?# p7 i% ^0 r" {' l0 B' {# M
    /*Get the existing group objects to create the operation under*/
: `8 ]- G  N5 c! ~6 d% C; r    CAM::NCGroup *programGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("PROGRAM");
. [& Z% h; w$ w8 r3 o% U+ t    CAM::NCGroup *methodGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("METHOD");
3 ]% `# C9 n$ {$ D% \    CAM::NCGroup *toolGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("MILL");" S- D2 P) g; O
    CAM::NCGroup *geometryGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("WORKPIECE");
/ T* N7 X( g- r: ]5 e. N  t$ R
" w- ^. b3 o8 j+ f' ^! j: y    /*Create the Cavity Mill operation*/
; c9 D( y: J% V8 x  n% ]    CAM::Operation *operation = workPart->CAMSetup()->CAMOperationCollection()->Create(programGroup, methodGroup, toolGroup, geometryGroup, "mill_contour", "CAVITY_MILL", CAM::OperationCollection::UseDefaultNameTrue, "CAVITY_MILL");
1 J* C) f2 ], q/ g  K
$ ^8 D" J: M5 E* j) A    /*Create the Cavity Milling builder*/! ~  z* ^( f! N( {! ^  |4 ]$ K/ {
    CAM::CavityMillingBuilder *cavityMillingBuilder = workPart->CAMSetup()->CAMOperationCollection()->CreateCavityMillingBuilder(operation);, N! G3 Z$ ]( G5 u4 v

6 I' T- P7 N& J! X+ w& H; n% s. L    /*Get the solid body named PART*/
# J8 t/ I5 u" r, z4 s3 P8 I, X* I    tag_t partSolid = NULL_TAG;" r: w' Z( F8 z
    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "PART", UF_solid_type, false, &partSolid);
" A% D) K" I5 C6 e, x, m$ t! z3 S7 E    Body *partBody = dynamic_cast<Body *> (NXObjectManager::Get(partSolid));/ C& I2 }6 j' @1 V
    std::vector<Body *> partBodies(1);2 @# m% }8 c7 U3 _) O0 c" Z
    partBodies[0] = partBody;
( v( v5 f% s- p* V
; _; b5 ]& L, h+ j8 ^# U* x; d    /*Set the part geometry*/8 J) z5 e! V$ v
    cavityMillingBuilder->PartGeometry()->InitializeData(false);
% G% h/ \. F7 }- F6 r    CAM::GeometrySet *partGeometrySet = cavityMillingBuilder->PartGeometry()->GeometryList()->FindItem(0);8 o: \. @# j2 q# k; }
    BodyDumbRule *partBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(partBodies);
/ R" z) ^3 p! M! ^( U+ \7 H+ T; h    std::vector<SelectionIntentRule *> partRules(1);6 c* `# B3 p  T# R  Q% W0 o
    partRules[0] = partBodyDumbRule;
1 y* M: N! m: J* S0 l" A6 u' J' `    partGeometrySet->ScCollector()->ReplaceRules(partRules, false);
% q. o, a  @7 ]: q  z
3 c/ ^( \4 N1 m+ }6 r: l8 ?    /*Get the solid body named BLANK*/
. q3 @/ G1 ^$ P7 [    tag_t blankSolid = NULL_TAG;
5 d* W+ _  `& n1 H+ \    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "BLANK", UF_solid_type, false, &blankSolid);* d1 H7 B0 I( z7 r
    Body *blankBody = dynamic_cast<Body *> (NXObjectManager::Get(blankSolid));; {6 `0 N# V7 Y8 z
    std::vector<Body *> blankBodies(1);; q% W7 U' h, x- B$ E8 M' n% l* E3 K
    blankBodies[0] = blankBody;3 t* g9 X, C$ T( p$ Q, @) u3 ^. ?

( ^, F, ?8 y' q9 h5 I6 M! S8 {    /*Set the blank geometry*/" J  H1 h7 S$ Y- q
    cavityMillingBuilder->BlankGeometry()->InitializeData(false);. [$ s% R4 x2 \4 L, k
    CAM::GeometrySet *blankGeometrySet = cavityMillingBuilder->BlankGeometry()->GeometryList()->FindItem(0);
/ e% P3 h5 H" Q% B9 H( s& D5 g8 n7 g    BodyDumbRule *blankBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(blankBodies);
4 D- D9 ^/ |, V9 ?! ]    std::vector<SelectionIntentRule *> blankRules(1);: f; R% [, F! P1 D3 L' X) f/ ~# z
    blankRules[0] = blankBodyDumbRule;
+ o' _5 E* L/ U- `    blankGeometrySet->ScCollector()->ReplaceRules(blankRules, false);
3 _6 z$ L7 r8 \: C: N- o/ C7 W  e. B, b; \$ s+ I* K& I
    cavityMillingBuilder->Commit();" U& F1 Q. R; y, |; v$ B/ P3 A9 i) K- c
    cavityMillingBuilder->Destroy();1 b  f2 d' R0 P/ m- V7 n1 A* e" F

. [% y: O5 H) t' }" P3 u    /*Generate the tool path*/' g3 H( X) X' n, r* y. Q- D- u
    std::vector<CAM::CAMObject *> operations(1);
& u# |) i; C2 N, R1 g# d- M    operations[0] = operation;
" U- l7 \% u+ p" u7 d: Z+ s    workPart->CAMSetup()->GenerateToolPath(operations);
! O+ K+ \2 J2 e# C( [$ ~' @2 m* J8 P1 L3 P
    /* Terminate the API environment */" |- L& w) f3 \4 R; {) T
    UF_CALL(UF_terminate());
$ W8 z. C9 W" J8 @$ N0 ~/ I* m# H}
; v. ~! A) p7 j2 Q9 ~& {" i
% ~0 a) T( K& k) J# `8 |' r
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了