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

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

[复制链接]

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

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

admin 楼主

2015-6-5 11:20:12

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

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

x
这段代码可以参考看看哦,显然比ufun的代码长点,但是是新的也是最好的方法6 r, j$ i6 W: J& |" Y
2 A6 x/ |6 r3 _
' G) c. a* I: b. R0 s
{0 n9 A1 M5 r$ G: y" }$ L, k2 S7 b
    /* Initialize the API environment */8 o+ t: H& i" l7 z5 W! P
    if( UF_CALL(UF_initialize()) ) - ]( R, }) q$ ?3 j9 P6 z
    {
6 B7 h2 ]: B9 W+ |( l        /* Failed to initialize */; z! b9 W# a4 j/ g- ?
        return;
1 Y% N$ R* \# m    }1 z7 W% j, a/ r- r2 w% Q: h' C

7 S( @" |6 E) @( i2 A+ S1 c, H    Session *theSession = Session::GetSession();& u, i3 r* d; o# Q- V
    Part *workPart = theSession->Parts()->Work();
: J6 ]% a) y+ y" `9 B
  A% A' i# u( @3 [$ M8 G& n' u    /*Get the existing group objects to create the operation under*/( K& C' @8 E6 }  {7 i7 @" B
    CAM::NCGroup *programGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("PROGRAM");
) a/ S, B9 D4 n5 V. u! c/ F    CAM::NCGroup *methodGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("METHOD");6 j0 l' Z4 z5 G, c" H  f
    CAM::NCGroup *toolGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("MILL");
" x0 x( B8 v9 y$ s    CAM::NCGroup *geometryGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("WORKPIECE");
$ T6 d5 j! P- D; [1 B* P6 D7 f  R4 j5 E+ R
    /*Create the Cavity Mill operation*/
5 A  r$ U, F" g( k% Q" `2 K% o    CAM::Operation *operation = workPart->CAMSetup()->CAMOperationCollection()->Create(programGroup, methodGroup, toolGroup, geometryGroup, "mill_contour", "CAVITY_MILL", CAM::OperationCollection::UseDefaultNameTrue, "CAVITY_MILL");
: A; v2 \6 t, v& p8 M+ g0 a. _& Y$ R% k) K  ~" \, Z
    /*Create the Cavity Milling builder*/- s9 Q" q- T7 E5 f
    CAM::CavityMillingBuilder *cavityMillingBuilder = workPart->CAMSetup()->CAMOperationCollection()->CreateCavityMillingBuilder(operation);( V. J- G3 p- b! H9 D/ F6 @
6 ]5 m; P, Q- C) [: D8 x% q' X+ i
    /*Get the solid body named PART*/; E9 b- B! p5 [' c- u5 B; g
    tag_t partSolid = NULL_TAG;7 x2 P: `0 v- |7 ]7 B. L
    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "PART", UF_solid_type, false, &partSolid);
; w, ]2 b( x/ F6 `+ J    Body *partBody = dynamic_cast<Body *> (NXObjectManager::Get(partSolid));
% J( t, H+ ]! w0 }3 B1 c; H    std::vector<Body *> partBodies(1);
, G5 r5 ?* m+ S7 {! f- A    partBodies[0] = partBody;1 q! p6 S; T0 m: h
. R* R9 Q+ Z, z! }9 f
    /*Set the part geometry*/
$ b  L, v/ U" v- u" E) _    cavityMillingBuilder->PartGeometry()->InitializeData(false);
/ E8 }, c' V  R2 ~; ~9 J    CAM::GeometrySet *partGeometrySet = cavityMillingBuilder->PartGeometry()->GeometryList()->FindItem(0);
" K5 F! D2 E1 v/ \9 ^9 S    BodyDumbRule *partBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(partBodies);
8 Z8 L# P' ^/ e) Y    std::vector<SelectionIntentRule *> partRules(1);, v3 [, a; s9 D( |. }! Y2 }
    partRules[0] = partBodyDumbRule;; I7 a% Y2 q8 M, l' M8 ?
    partGeometrySet->ScCollector()->ReplaceRules(partRules, false);
9 S# u( F4 m9 Z5 d, p# p! W! _, _7 c$ Z2 @- i& C4 X
    /*Get the solid body named BLANK*/
; S4 e1 \7 V2 \9 |2 ]7 c5 v8 ^. ~8 c    tag_t blankSolid = NULL_TAG;
' m7 |5 G9 p1 I: ~/ ^* |- g; ]" E    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "BLANK", UF_solid_type, false, &blankSolid);
1 \: M' l8 u. E* ~    Body *blankBody = dynamic_cast<Body *> (NXObjectManager::Get(blankSolid));
  p( C$ ~8 y, I; g/ t  H8 C+ q    std::vector<Body *> blankBodies(1);5 Z) [- A8 h+ S+ k# h* t
    blankBodies[0] = blankBody;4 s6 x3 L' {' `' |6 k" m5 G+ }

8 Y, }) T0 z9 |' @& K, G) t" f    /*Set the blank geometry*/
: t4 ^" A# t! L' T& K  ^0 R) x    cavityMillingBuilder->BlankGeometry()->InitializeData(false);* K3 M& z2 d2 C, u: G. u
    CAM::GeometrySet *blankGeometrySet = cavityMillingBuilder->BlankGeometry()->GeometryList()->FindItem(0);  e) e0 a* I/ o. V, p2 b9 ]
    BodyDumbRule *blankBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(blankBodies);6 m6 t' [. Q) A  H
    std::vector<SelectionIntentRule *> blankRules(1);
* U( A, _: H. J/ J    blankRules[0] = blankBodyDumbRule;. }5 L4 [  S  C1 ^- C9 P
    blankGeometrySet->ScCollector()->ReplaceRules(blankRules, false);
' Q9 Q7 r3 Y1 R
- r" r/ v3 ^, w, G2 f- m: N    cavityMillingBuilder->Commit();8 Z, D" K9 R" o- G
    cavityMillingBuilder->Destroy();# g! y4 ~0 c! V* i% k, B  W, A! X
! ]2 [# d- v0 U
    /*Generate the tool path*/4 |( _7 M. d% A: G. ?" x
    std::vector<CAM::CAMObject *> operations(1);0 e) L' h/ r6 d
    operations[0] = operation;
9 @7 Q$ J# e4 N& \4 i) s    workPart->CAMSetup()->GenerateToolPath(operations);. r3 ~5 V3 ?0 {9 `5 s0 t

, a1 N) Z+ L. e' o4 p% U    /* Terminate the API environment */
6 X+ K' \. r8 I    UF_CALL(UF_terminate());4 [3 `7 b7 ]* F$ b  g
}6 n! G+ H5 V" r0 h$ @. Y
4 _$ ]3 l* R* [% M; }: v
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了