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

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

[复制链接]

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

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

admin 楼主

2015-6-5 11:20:12

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

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

x
这段代码可以参考看看哦,显然比ufun的代码长点,但是是新的也是最好的方法) F- C% \( b/ U  j% u2 d8 t

( q2 l& B2 Q; O
1 ~* _2 X: d8 b1 L) r6 f% n{5 b% A! t3 \9 f$ s
    /* Initialize the API environment */
4 P, T; }6 M: F    if( UF_CALL(UF_initialize()) )
+ a' D& S& e/ {& X2 d    {$ V5 d, v' _, A0 ]
        /* Failed to initialize */
% m: W1 c) Y( ?5 f        return;
# Z4 P# w  S- s' q4 @5 y9 h# n  A    }
$ L: [8 d. q% ~- j# {2 y6 C* n$ J' e  t. k& @
    Session *theSession = Session::GetSession();/ U# J# N3 u$ {1 G  m: C" ]1 T* w
    Part *workPart = theSession->Parts()->Work();+ u4 j3 u7 a  \) V. b9 b+ g

2 Z; W# @- S* k9 O# C    /*Get the existing group objects to create the operation under*/
: `: e) _/ x. q0 y    CAM::NCGroup *programGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("PROGRAM");
7 ^) N  I1 j5 i/ _" ]    CAM::NCGroup *methodGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("METHOD");- U+ ~, p6 \) Z' R+ ?, ^, h
    CAM::NCGroup *toolGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("MILL");0 Y& W% }2 s  A
    CAM::NCGroup *geometryGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("WORKPIECE");
# U: P$ A5 O* N, n  z# k( F6 }6 v8 c8 E5 ~" ^
    /*Create the Cavity Mill operation*/
) [7 s0 B# J/ B, @7 x% u6 m4 i    CAM::Operation *operation = workPart->CAMSetup()->CAMOperationCollection()->Create(programGroup, methodGroup, toolGroup, geometryGroup, "mill_contour", "CAVITY_MILL", CAM::OperationCollection::UseDefaultNameTrue, "CAVITY_MILL");4 G; U9 @2 p$ L/ Y
# J5 b) `) ]2 V
    /*Create the Cavity Milling builder*/
  N) R5 O! _9 j+ T! G, I    CAM::CavityMillingBuilder *cavityMillingBuilder = workPart->CAMSetup()->CAMOperationCollection()->CreateCavityMillingBuilder(operation);: V2 O0 b% w6 T# G3 v6 n$ n( O

9 S' F; a* n( n9 a( x: _/ ~% M    /*Get the solid body named PART*/" g- z9 z9 m* [
    tag_t partSolid = NULL_TAG;
9 n! N; n. Q# M0 f3 X    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "PART", UF_solid_type, false, &partSolid);5 I. x* x7 I! Y5 g
    Body *partBody = dynamic_cast<Body *> (NXObjectManager::Get(partSolid));' A' n$ P. U1 X' W3 j( x- M% R
    std::vector<Body *> partBodies(1);
( K, X: D* p9 R6 r! T2 B% w$ M: c    partBodies[0] = partBody;
5 m7 i" _4 e1 X5 \2 [) m
1 g4 o, u9 X, S2 W6 D1 X: @# M    /*Set the part geometry*/9 e% [, ^$ U6 Z# L: C
    cavityMillingBuilder->PartGeometry()->InitializeData(false);
: A: m0 Y9 l) ?( S* ?5 a7 Q    CAM::GeometrySet *partGeometrySet = cavityMillingBuilder->PartGeometry()->GeometryList()->FindItem(0);7 ~, e- O- T' z' Q. l' s2 {4 L* j
    BodyDumbRule *partBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(partBodies);' _& A5 m3 D& P1 q
    std::vector<SelectionIntentRule *> partRules(1);% H0 w7 B; F/ V$ y* F, N5 P8 _+ J; i
    partRules[0] = partBodyDumbRule;' F' @% z6 w) q: i
    partGeometrySet->ScCollector()->ReplaceRules(partRules, false);
- X6 u1 R! r* {9 g) D7 e7 a& b5 k$ k) W
    /*Get the solid body named BLANK*/
- b, z3 }  x- s- V, U$ ^1 k    tag_t blankSolid = NULL_TAG;
8 Y( E% i* @! Y. P. h    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "BLANK", UF_solid_type, false, &blankSolid);5 {6 }0 v3 c# o* C5 X
    Body *blankBody = dynamic_cast<Body *> (NXObjectManager::Get(blankSolid));
1 z3 Q0 W; e% h2 ~' {( L% O0 |! {1 o5 q    std::vector<Body *> blankBodies(1);
7 b. z/ [: u+ s/ i" K    blankBodies[0] = blankBody;# _" }4 |! ^- x

4 \; I# G4 t, T, d$ U) e) g    /*Set the blank geometry*/
/ L3 ~) D8 q! n# ]+ g# b8 ^    cavityMillingBuilder->BlankGeometry()->InitializeData(false);
: T; T- @" y$ k" N" j+ L    CAM::GeometrySet *blankGeometrySet = cavityMillingBuilder->BlankGeometry()->GeometryList()->FindItem(0);5 p/ H$ M- x/ h
    BodyDumbRule *blankBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(blankBodies);" w% j; L: _3 E
    std::vector<SelectionIntentRule *> blankRules(1);
/ ^  g$ S8 @; e! g$ Y    blankRules[0] = blankBodyDumbRule;
' c! f: j5 y0 m7 [; g, p+ P) f* [    blankGeometrySet->ScCollector()->ReplaceRules(blankRules, false);9 p3 h' z" b# Z4 @. y5 S

( P9 n2 t0 F0 D9 ?    cavityMillingBuilder->Commit();
* [/ b* r! Z+ w  [8 g& I8 x    cavityMillingBuilder->Destroy();
% r5 l4 h2 p; y6 a4 X" J3 P5 K5 {- e! {2 w. P4 U
    /*Generate the tool path*/) k3 d  a, e! P) i( R
    std::vector<CAM::CAMObject *> operations(1);% [, n! i$ ?9 o( m
    operations[0] = operation;+ J5 I, E. m$ i, V
    workPart->CAMSetup()->GenerateToolPath(operations);
& O8 G% i; m0 w8 G, n1 b7 M0 S6 _1 B  D. {
    /* Terminate the API environment */) h1 x) {% U) N6 z+ ]: X+ `4 d
    UF_CALL(UF_terminate());
6 z4 @# h8 p! O+ G  Z% i}- ^- ]4 e' ^/ ]+ r2 T

7 O: E0 j5 Q; H1 q* g3 _7 e' X
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了