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

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

[复制链接]

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

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

admin 楼主

2015-6-5 11:20:12

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

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

x
这段代码可以参考看看哦,显然比ufun的代码长点,但是是新的也是最好的方法( r# k' V  f; a. ]/ D# y
4 s/ m1 P8 S- X; D5 W# b1 J

, m  V( e5 w) H& t( q{$ z, f5 F3 a$ _4 Z. a7 I
    /* Initialize the API environment */
5 b3 u# i- A9 x0 Q2 a( S/ V    if( UF_CALL(UF_initialize()) ) 8 Z" [0 J( E* \6 C! v3 S+ {
    {
1 O5 D2 S2 N/ X9 x' R        /* Failed to initialize */
) ?; S, [4 g+ d9 v2 w7 g, `& A/ Z  q        return;
2 l( \) f) e( K2 w    }
0 \2 f- H) R, P0 C+ }$ ^3 H: W, v  T6 ]  ?" B; K, `
    Session *theSession = Session::GetSession();
/ M. r6 K) o$ F1 M    Part *workPart = theSession->Parts()->Work();
$ b+ J1 F; ~+ B# `: ~: a+ d. k9 O, L0 X0 q2 I
    /*Get the existing group objects to create the operation under*/
& F# f5 V5 O# h1 }    CAM::NCGroup *programGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("PROGRAM");
: {6 j7 a1 L* z$ B; f. g# U2 s    CAM::NCGroup *methodGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("METHOD");
; A- F  O9 c: [8 X    CAM::NCGroup *toolGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("MILL");
; }# u( a9 S* Q  V. P! Y    CAM::NCGroup *geometryGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("WORKPIECE");. B5 q: N8 P5 n+ j: q5 g9 Z
! Z% b3 {, p* l
    /*Create the Cavity Mill operation*/! }) Y6 J5 L  |8 d$ c
    CAM::Operation *operation = workPart->CAMSetup()->CAMOperationCollection()->Create(programGroup, methodGroup, toolGroup, geometryGroup, "mill_contour", "CAVITY_MILL", CAM::OperationCollection::UseDefaultNameTrue, "CAVITY_MILL");, X9 O: Q4 D' `8 m! H& I  D% u

* h2 E8 u) g# [    /*Create the Cavity Milling builder*/
/ B& l) o- z( U    CAM::CavityMillingBuilder *cavityMillingBuilder = workPart->CAMSetup()->CAMOperationCollection()->CreateCavityMillingBuilder(operation);% U& h1 O% s. g1 O" l

, Z& e, ~& I( R- x- s4 i    /*Get the solid body named PART*/
6 W& Z  A* `2 q' U* n    tag_t partSolid = NULL_TAG;
% ?" {) n4 F2 i( r( i# y    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "PART", UF_solid_type, false, &partSolid);
! j( B$ q: c" d0 E+ r    Body *partBody = dynamic_cast<Body *> (NXObjectManager::Get(partSolid));
, U1 a: [; k$ w8 Z' x. D$ d1 A; ?    std::vector<Body *> partBodies(1);
* ^2 h! a0 t" j9 l7 D- Z    partBodies[0] = partBody;
/ O0 m# {( T* F4 ]. h
" q" d! f8 C/ v    /*Set the part geometry*/
9 T; o: h# P& s4 m6 n" F    cavityMillingBuilder->PartGeometry()->InitializeData(false);; C0 {3 s% z+ n6 s  J/ z2 [
    CAM::GeometrySet *partGeometrySet = cavityMillingBuilder->PartGeometry()->GeometryList()->FindItem(0);5 y4 e5 ^+ C  H; w% V
    BodyDumbRule *partBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(partBodies);3 l5 n( A$ C3 G3 Y, S  `' z$ M
    std::vector<SelectionIntentRule *> partRules(1);$ S3 h* l3 Q+ a* c" ^
    partRules[0] = partBodyDumbRule;
. R' K, v2 |0 Q8 z    partGeometrySet->ScCollector()->ReplaceRules(partRules, false);9 N& i% S) [: v. S( x( {
& k* c4 x8 n5 M1 l" Q! S
    /*Get the solid body named BLANK*/* V7 A/ F: \: D
    tag_t blankSolid = NULL_TAG;6 J. y5 x- r! y2 o) m) U8 t* v! J
    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "BLANK", UF_solid_type, false, &blankSolid);
. A8 C0 a& {8 _    Body *blankBody = dynamic_cast<Body *> (NXObjectManager::Get(blankSolid));
: l1 S# F6 D2 t* W    std::vector<Body *> blankBodies(1);$ W  P' c+ L+ f" X
    blankBodies[0] = blankBody;4 O9 J; i9 }" n$ E" m! V
0 {/ P% v, I; o; J) W+ C
    /*Set the blank geometry*/
" u: J  [. h. u    cavityMillingBuilder->BlankGeometry()->InitializeData(false);8 k( i+ Q5 Q% i$ p' N
    CAM::GeometrySet *blankGeometrySet = cavityMillingBuilder->BlankGeometry()->GeometryList()->FindItem(0);4 v4 g$ t) w! R: P  ~- p9 F1 Z
    BodyDumbRule *blankBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(blankBodies);
: T. P  W2 ^/ J# k: D8 r: }/ d% e6 X    std::vector<SelectionIntentRule *> blankRules(1);/ h( {# B' I# f! C& N( ?& y
    blankRules[0] = blankBodyDumbRule;, j( |1 n8 N: W% W4 x9 Y
    blankGeometrySet->ScCollector()->ReplaceRules(blankRules, false);6 F5 w1 }7 y8 U" b2 b* B; Z7 {

/ ]# x2 H6 |4 q    cavityMillingBuilder->Commit();
& _# T7 n  s0 s$ l/ c& z    cavityMillingBuilder->Destroy();
" x  i- E" F9 O; H$ ]) \7 [( M$ N' q7 j7 j2 s8 D
    /*Generate the tool path*/
( P' p2 M# R' x- {/ v0 U! l- n+ `! \    std::vector<CAM::CAMObject *> operations(1);
' a! u5 x! A! a5 @2 J* Z# y    operations[0] = operation;
* P  Y! P5 A- Q+ V5 ]4 J    workPart->CAMSetup()->GenerateToolPath(operations);4 {, z* _. ?9 ~6 [9 z% Z
1 _' J% N9 O9 x5 D  H
    /* Terminate the API environment */3 R( D1 z/ I/ q5 w9 A: K
    UF_CALL(UF_terminate());
/ M0 T0 i/ o+ Z+ z8 D, L0 E}
% \! o8 p2 h7 O7 ^; W1 y" \8 u" k  t! v3 G+ b2 A* s
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了