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

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

[复制链接]

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

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

admin 楼主

2015-6-5 11:20:12

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

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

x
这段代码可以参考看看哦,显然比ufun的代码长点,但是是新的也是最好的方法
3 v* `+ a* L4 ^7 ~; n$ D, F: {7 j" v6 q6 O, c  P6 z

: a% P7 o: K, e% S0 c{2 ?! ?0 F# h9 E6 A" C
    /* Initialize the API environment */7 R( U2 a0 }" d1 X; K# Y! U: Z6 h
    if( UF_CALL(UF_initialize()) ) / j: I; s9 i+ b
    {  ~. @& O! \. r
        /* Failed to initialize */
5 g2 @( l. V5 Q0 ~* V        return;
' h; v1 W) v- |6 j' g* T    }' F( q; k$ [( l  J1 A5 O
  z" D% t8 O$ u
    Session *theSession = Session::GetSession();' J/ u) _( f1 t" t7 }/ ~" \
    Part *workPart = theSession->Parts()->Work();& s. {* R  F( @7 f, M! W

8 l: A5 b4 m2 T; n    /*Get the existing group objects to create the operation under*// v  A  f2 t9 D# J& F
    CAM::NCGroup *programGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("PROGRAM");% A7 C% A6 c* r
    CAM::NCGroup *methodGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("METHOD");0 ]$ i* I' e, p' V6 B6 s
    CAM::NCGroup *toolGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("MILL");
& \" m5 Y  i3 {; G# M    CAM::NCGroup *geometryGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("WORKPIECE");
" |# b( i) D- B4 l" l0 p
* X# `5 s" y3 N8 ^    /*Create the Cavity Mill operation*/
) e& v! v8 W, E2 B: T4 ^    CAM::Operation *operation = workPart->CAMSetup()->CAMOperationCollection()->Create(programGroup, methodGroup, toolGroup, geometryGroup, "mill_contour", "CAVITY_MILL", CAM::OperationCollection::UseDefaultNameTrue, "CAVITY_MILL");
& k8 c0 `! E3 K& |! G2 P/ c" G" E$ h( K
    /*Create the Cavity Milling builder*/
# R. l8 ~$ i" C+ J6 [* V$ ~$ ]    CAM::CavityMillingBuilder *cavityMillingBuilder = workPart->CAMSetup()->CAMOperationCollection()->CreateCavityMillingBuilder(operation);
& B* P% z# D& K& i6 @+ F3 O( [) L5 ]. Q
    /*Get the solid body named PART*/# N8 q. n. N* S, s
    tag_t partSolid = NULL_TAG;2 \' R$ M, @4 {
    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "PART", UF_solid_type, false, &partSolid);5 G+ ]) s* c# y* W4 s$ g( M4 N
    Body *partBody = dynamic_cast<Body *> (NXObjectManager::Get(partSolid));
$ x7 T( j8 g5 {$ `. m" ]( j    std::vector<Body *> partBodies(1);, Y4 _' [4 N; a
    partBodies[0] = partBody;
- J, g( l% `/ B  g' O9 \  U8 Z4 A$ _7 D# \- `" K8 @
    /*Set the part geometry*/
8 @3 b1 p# N0 j& {+ X    cavityMillingBuilder->PartGeometry()->InitializeData(false);
, G8 D) e  r3 d    CAM::GeometrySet *partGeometrySet = cavityMillingBuilder->PartGeometry()->GeometryList()->FindItem(0);
! p, s9 D$ `! ~$ Y& ^+ n, \1 j    BodyDumbRule *partBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(partBodies);3 l8 D1 N0 i- M+ O3 D: ]1 h
    std::vector<SelectionIntentRule *> partRules(1);
' X: ~/ \1 [4 n# f  p: W/ K    partRules[0] = partBodyDumbRule;
- G, l, Y; z' J5 y6 Y2 |    partGeometrySet->ScCollector()->ReplaceRules(partRules, false);8 E+ `' H6 b* j3 b( h7 K( q" J& t/ }
3 |; p/ y3 m5 d5 {( f- z& t
    /*Get the solid body named BLANK*/
' Q2 ]' c4 f$ o* q3 q    tag_t blankSolid = NULL_TAG;
' Z  c0 x5 N& i' M# `3 `    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "BLANK", UF_solid_type, false, &blankSolid);
# B* I  M1 T0 U    Body *blankBody = dynamic_cast<Body *> (NXObjectManager::Get(blankSolid));
7 Y  f! J: g- f9 m5 P    std::vector<Body *> blankBodies(1);
7 P2 Z$ T7 t. m' @, L2 G    blankBodies[0] = blankBody;  j5 l4 U0 n2 v) B4 I# Z' J& H

. s$ i# M. q" G4 g; V! A, w    /*Set the blank geometry*/
( @+ w3 r$ K) K! t& `+ P. I! S3 Q    cavityMillingBuilder->BlankGeometry()->InitializeData(false);
5 K2 c! a: a9 ?# v: |1 B    CAM::GeometrySet *blankGeometrySet = cavityMillingBuilder->BlankGeometry()->GeometryList()->FindItem(0);
) d5 [; g1 M9 X/ m3 q1 e4 {    BodyDumbRule *blankBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(blankBodies);1 e4 |+ l9 t9 ~9 ]5 C7 \0 h7 }& G
    std::vector<SelectionIntentRule *> blankRules(1);
0 w4 r& ?: C; w' t    blankRules[0] = blankBodyDumbRule;
3 [* \6 M. X8 m5 n' M5 @2 i; k    blankGeometrySet->ScCollector()->ReplaceRules(blankRules, false);
3 \8 g5 G, g. K6 ^4 C3 e4 F! m- _6 V: i% d- \: @+ b# f
    cavityMillingBuilder->Commit();
+ G; s/ U2 u/ j* l( D  P7 G' d    cavityMillingBuilder->Destroy();. b. s8 H6 Y- t- w- l
! d$ c+ j  U& e1 \
    /*Generate the tool path*/6 L* x% I2 n( j
    std::vector<CAM::CAMObject *> operations(1);; |1 P( x9 n6 D) X) ]2 @0 W
    operations[0] = operation;
1 Y  N3 d/ y2 P    workPart->CAMSetup()->GenerateToolPath(operations);
, a# o$ T: a) Z9 ]; T+ I  ~, N* m$ ~& ^4 c' W
    /* Terminate the API environment */
0 X( h  b3 _8 q( H& o, L8 o9 o: H. \    UF_CALL(UF_terminate());
! {* ], X' x4 [3 f4 O6 X}
( c6 I, u, r; S2 K) V
3 k: m  o7 z5 v( 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二次开发专题模块培训报名开始啦

    我知道了