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

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

[复制链接]

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

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

admin 楼主

2015-6-5 11:20:12

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

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

x
这段代码可以参考看看哦,显然比ufun的代码长点,但是是新的也是最好的方法$ a  ^/ Y3 f$ v) _  H% o

. r" `) S5 p" c: x. T$ I( O) O" @( H/ f
{
; O# L" B% ^1 G& ^& G& F  S0 s; D    /* Initialize the API environment */
+ |; v5 l5 h' r7 o- Z8 ^    if( UF_CALL(UF_initialize()) ) 7 U$ J) X. }+ v, R
    {
) E6 w& ^& w% v: a# T. T. m        /* Failed to initialize */- C) X  H' v- _: }3 Y
        return;
% v8 G- X# O1 q# j# y    }
" D. O: p) _- `/ e
6 l# Q/ m2 a, K! _2 H( Y7 k    Session *theSession = Session::GetSession();
3 b1 }, G  j, n+ M9 V2 {( R% ^8 a    Part *workPart = theSession->Parts()->Work();4 t- X% f, j, f4 _( \4 R

% @. l* M0 E$ Y    /*Get the existing group objects to create the operation under*/% Q) _6 r3 A" y# B
    CAM::NCGroup *programGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("PROGRAM");: G  x' E, ?4 k# K4 V
    CAM::NCGroup *methodGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("METHOD");( [, j7 d2 w$ z) P/ E0 L8 x# x5 M" R
    CAM::NCGroup *toolGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("MILL");7 Q# U' n  C) O0 F
    CAM::NCGroup *geometryGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("WORKPIECE");
0 Y$ ?* R6 _" B
2 C; _0 F+ `5 f9 ]3 G    /*Create the Cavity Mill operation*/5 T3 e: c3 b9 r" Y5 \
    CAM::Operation *operation = workPart->CAMSetup()->CAMOperationCollection()->Create(programGroup, methodGroup, toolGroup, geometryGroup, "mill_contour", "CAVITY_MILL", CAM::OperationCollection::UseDefaultNameTrue, "CAVITY_MILL");
" y3 {: Y6 p- M% n3 s, B+ ]& z+ Z: G/ w. t
    /*Create the Cavity Milling builder*/* N$ c4 n4 q' Z6 U3 E* |
    CAM::CavityMillingBuilder *cavityMillingBuilder = workPart->CAMSetup()->CAMOperationCollection()->CreateCavityMillingBuilder(operation);
4 m  Z* S7 w3 r1 ~& d. X" I
$ C* Y+ L7 c4 K, H    /*Get the solid body named PART*/
# {0 q: x% B7 I: F( @+ g    tag_t partSolid = NULL_TAG;
" d5 k" a9 i& c$ k: ^    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "PART", UF_solid_type, false, &partSolid);
2 ^! M$ Q- E4 P8 @1 q9 `& g5 V3 R    Body *partBody = dynamic_cast<Body *> (NXObjectManager::Get(partSolid));; ~6 Y1 l7 L2 e2 j! K+ A
    std::vector<Body *> partBodies(1);
' E% o. N: a4 o  U0 f    partBodies[0] = partBody;: p8 c/ I0 W1 A8 H
/ M6 ?& O) X: q5 Y: \
    /*Set the part geometry*/
# P+ R: r& S. p, [    cavityMillingBuilder->PartGeometry()->InitializeData(false);
+ q" j& G6 U( M5 d( D    CAM::GeometrySet *partGeometrySet = cavityMillingBuilder->PartGeometry()->GeometryList()->FindItem(0);
' G2 {) V. w  C, g    BodyDumbRule *partBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(partBodies);
) K7 L4 e5 r9 o    std::vector<SelectionIntentRule *> partRules(1);  w5 P0 h. y7 L* }4 W. {, J
    partRules[0] = partBodyDumbRule;  [, B$ m/ c3 W; A5 M+ k+ v( D
    partGeometrySet->ScCollector()->ReplaceRules(partRules, false);) [% \0 s$ z1 f2 i' [2 [: Z5 ~

; p+ g: `7 v5 u1 f0 q9 N3 p    /*Get the solid body named BLANK*/
$ T; O- o1 t8 o9 k" x8 e9 v    tag_t blankSolid = NULL_TAG;
* J" r' e# V* s" A( w    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "BLANK", UF_solid_type, false, &blankSolid);
! ]* n. f  \, I9 Y8 Y6 t7 G    Body *blankBody = dynamic_cast<Body *> (NXObjectManager::Get(blankSolid));; C/ r, ~  o; _, F3 D4 ?
    std::vector<Body *> blankBodies(1);' S9 ~+ @7 L4 D9 M' q) X
    blankBodies[0] = blankBody;
, a5 S7 i  y- h* m6 C4 L$ Z
1 V( A& \5 v3 f: H  A    /*Set the blank geometry*/
+ l  ]5 u  ?! f$ I1 D    cavityMillingBuilder->BlankGeometry()->InitializeData(false);# S& ], H% C. t1 z! u
    CAM::GeometrySet *blankGeometrySet = cavityMillingBuilder->BlankGeometry()->GeometryList()->FindItem(0);8 d. ]# `/ _  ^. N8 Z
    BodyDumbRule *blankBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(blankBodies);* G- @9 }8 y7 Q# t; K7 U
    std::vector<SelectionIntentRule *> blankRules(1);
2 B3 c4 ]( x6 C9 O  {8 @4 g    blankRules[0] = blankBodyDumbRule;4 X8 H/ l2 p9 @* r. T3 ?
    blankGeometrySet->ScCollector()->ReplaceRules(blankRules, false);  x" m2 I9 E0 d; n7 v! J

  t% L+ ?% F# ^. r    cavityMillingBuilder->Commit();1 n. t8 Y( C4 q# W( U9 G7 R7 V* }1 \% z
    cavityMillingBuilder->Destroy();6 H- |1 Z$ p0 R$ O0 d+ [: I  {
) J& S8 F0 G9 J9 a, O* L
    /*Generate the tool path*/
* }& d- j/ k% [4 f! J    std::vector<CAM::CAMObject *> operations(1);) B6 I1 l0 A- _# @6 y# B
    operations[0] = operation;
5 u  E% M* Q3 u! G    workPart->CAMSetup()->GenerateToolPath(operations);
$ S* @7 x# s! {5 c# }
4 ^* w. {% o+ x! n' G7 ?$ s    /* Terminate the API environment */
2 Y6 G/ W3 ]( V3 ?    UF_CALL(UF_terminate());
* T5 p7 m+ y- A}- s) ~$ E- u5 J5 c, m9 v5 r

0 W% Y  v4 a' s3 I: j( b" n
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了