PLM之家PLMHome-国产软件践行者

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

[复制链接]

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

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

admin 楼主

2015-6-5 11:20:12

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

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

x
这段代码可以参考看看哦,显然比ufun的代码长点,但是是新的也是最好的方法" R$ Q( U- X1 s* i8 y; S; Q
5 i. D0 ?, i8 p# x9 _) C; s; L! n- J# E
5 p. R7 F/ _# D: x/ M' J
{
+ {& ~0 p/ d; N9 v+ I- R# u    /* Initialize the API environment */' k. j5 x! K* P- C$ N7 B
    if( UF_CALL(UF_initialize()) ) # z: Q# s( z1 j( Q
    {
7 K- w- w2 Z  F( |; v        /* Failed to initialize */9 d6 G) |+ G- E, v! @8 A$ u
        return;% a6 G7 ]  U2 ]" {: f& }: O
    }
9 [# i9 `7 {. Z$ r& {# }2 c
# \9 C# J3 Q* r+ }0 Y4 x. \    Session *theSession = Session::GetSession();
( f+ C% O% }/ P6 [8 c' |    Part *workPart = theSession->Parts()->Work();! |  d* X! a" V) }$ P3 n( {, J& d9 {
- S3 U5 R: n' m% n  y2 |
    /*Get the existing group objects to create the operation under*/3 k" q' r3 h, T- T* {% v# D
    CAM::NCGroup *programGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("PROGRAM");
5 C$ L: u8 L) x+ E# ]    CAM::NCGroup *methodGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("METHOD");5 {, X1 j4 [+ l+ ]# i6 n$ A4 k
    CAM::NCGroup *toolGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("MILL");
) |# q4 ]: b: s    CAM::NCGroup *geometryGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("WORKPIECE");
% Y6 I& {5 p* I; `  G" \' @
. b' D5 O5 U5 z% K7 R8 O    /*Create the Cavity Mill operation*/6 {; `) y5 c# T; [' x
    CAM::Operation *operation = workPart->CAMSetup()->CAMOperationCollection()->Create(programGroup, methodGroup, toolGroup, geometryGroup, "mill_contour", "CAVITY_MILL", CAM::OperationCollection::UseDefaultNameTrue, "CAVITY_MILL");8 \- ?8 a3 g7 E( Y! Z* V

2 ^: W" X! D  r3 x5 F, h    /*Create the Cavity Milling builder*/: w, }& h) G8 \1 o. V3 d# E- V
    CAM::CavityMillingBuilder *cavityMillingBuilder = workPart->CAMSetup()->CAMOperationCollection()->CreateCavityMillingBuilder(operation);
- j( @- H) L8 Y  }% W
% o# b. C% _1 ]2 S: G: v    /*Get the solid body named PART*/: V0 u& z- z6 Q8 h, C  Q7 Q4 Y
    tag_t partSolid = NULL_TAG;
5 Q3 E3 ~) R2 m5 @+ v    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "PART", UF_solid_type, false, &partSolid);8 `, ]0 f9 i  s( z% ]% ^; A
    Body *partBody = dynamic_cast<Body *> (NXObjectManager::Get(partSolid));
. b: X" u: V/ ^! f+ H' t( ^    std::vector<Body *> partBodies(1);9 l; s2 x7 j% |$ t% @
    partBodies[0] = partBody;
6 [( q& O  _+ ?) V& P4 ]% N% O
0 U0 M6 c! |: g, b/ a! U2 `0 Q9 V    /*Set the part geometry*/
5 T, T0 j1 z- u; r: F) v    cavityMillingBuilder->PartGeometry()->InitializeData(false);2 ?/ y8 t  o3 h, Q" K2 O
    CAM::GeometrySet *partGeometrySet = cavityMillingBuilder->PartGeometry()->GeometryList()->FindItem(0);; x! j% S6 a9 q* p5 F
    BodyDumbRule *partBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(partBodies);
2 C9 i0 p- n1 `) ?( w    std::vector<SelectionIntentRule *> partRules(1);
$ P% N+ w( ~7 S5 @" i) I: U    partRules[0] = partBodyDumbRule;) a" i/ N( [4 s% J8 P! c; U' j: R
    partGeometrySet->ScCollector()->ReplaceRules(partRules, false);$ d+ B% F' z9 j
1 A7 f- H2 H9 j, `2 {/ [
    /*Get the solid body named BLANK*/* w5 D: M0 n) T" B4 F! z
    tag_t blankSolid = NULL_TAG;
; T6 Z) ?) \- J1 ]    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "BLANK", UF_solid_type, false, &blankSolid);# b# P6 ^5 c) I/ y% g' N( p
    Body *blankBody = dynamic_cast<Body *> (NXObjectManager::Get(blankSolid));; Y3 v  G7 b! u" E: T; h
    std::vector<Body *> blankBodies(1);
, u) y4 W7 v- F) o; B) T) V: L, z+ L( B    blankBodies[0] = blankBody;
$ }  I) y* ?6 z+ d4 w0 D; S3 A
( n0 l7 S0 A5 P) U6 `! L+ z    /*Set the blank geometry*/
3 ]% x& ^) e' t, @    cavityMillingBuilder->BlankGeometry()->InitializeData(false);8 S- g& _' ?. \) N9 b: A% Q
    CAM::GeometrySet *blankGeometrySet = cavityMillingBuilder->BlankGeometry()->GeometryList()->FindItem(0);5 w/ q0 X* ]# f, S) U) f
    BodyDumbRule *blankBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(blankBodies);7 ]1 r& _; \* U3 y$ f
    std::vector<SelectionIntentRule *> blankRules(1);2 x  \2 B- p9 P  o+ q& h
    blankRules[0] = blankBodyDumbRule;7 A% G* ~9 y4 |! u1 a/ x% n! D* _
    blankGeometrySet->ScCollector()->ReplaceRules(blankRules, false);: }" Z; R5 M* R
% {% Q& ~) \9 _# K4 {* M0 B5 }* H
    cavityMillingBuilder->Commit();
3 K8 W9 Q( j( i4 [* z    cavityMillingBuilder->Destroy();% Z9 S, Q: p  L# r

1 X& m( I2 l) `0 Y    /*Generate the tool path*/
* M5 v7 J7 [4 a    std::vector<CAM::CAMObject *> operations(1);* Z! z) ^! }' t1 o! r
    operations[0] = operation;1 N8 a& _, h7 E8 k
    workPart->CAMSetup()->GenerateToolPath(operations);2 j" v' e# s# ?& n6 T1 p
$ q8 \  z. @1 B$ j% `5 ?
    /* Terminate the API environment */% r0 `% l6 \2 [, m0 l3 n
    UF_CALL(UF_terminate());/ Q" _4 \3 a5 q! I+ F8 w
}
. ~$ Y1 u% T) H3 k7 u& Y7 t5 X. O6 ]7 L6 |$ c3 a
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了