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

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

[复制链接]

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

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

admin 楼主

2015-6-5 11:20:12

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

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

x
这段代码可以参考看看哦,显然比ufun的代码长点,但是是新的也是最好的方法2 J( G+ ?; n6 X  P' M
5 |* I3 I  |: m) c1 B
) q3 [/ J5 B! }6 D
{
2 \- ^: G! e4 z8 a( r; |2 W    /* Initialize the API environment */; f3 E  G: T: u" u2 W+ y
    if( UF_CALL(UF_initialize()) ) 1 t1 ?  \5 d* e. V$ Y2 e" A. I
    {  l$ q7 X. c2 B5 M3 w
        /* Failed to initialize */
+ O1 F" P% Q# L$ J! C8 ~        return;
& q( R! `. W  t8 Z9 ^6 H    }  M) H! D+ H, c+ @5 m+ d: F
9 y6 B& s0 _/ k* A2 N* ]
    Session *theSession = Session::GetSession();
1 V5 ~6 G# p& v) w8 l' J4 ?& G    Part *workPart = theSession->Parts()->Work();
/ e. r! K( [2 F
7 g' w( C2 s2 U    /*Get the existing group objects to create the operation under*/
# P% p, ~+ \) x+ Q. \+ d    CAM::NCGroup *programGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("PROGRAM");5 E8 s; t( ]' h) T9 E" P+ K
    CAM::NCGroup *methodGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("METHOD");, R: x+ E9 R! q9 n
    CAM::NCGroup *toolGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("MILL");
, M7 s- P* f, p6 j* K    CAM::NCGroup *geometryGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("WORKPIECE");
; u+ b9 h3 v. u0 }! z
8 w( t# X9 C. K2 ]9 _8 X6 l8 C    /*Create the Cavity Mill operation*/
# Q4 W! s- q8 [$ ?, y    CAM::Operation *operation = workPart->CAMSetup()->CAMOperationCollection()->Create(programGroup, methodGroup, toolGroup, geometryGroup, "mill_contour", "CAVITY_MILL", CAM::OperationCollection::UseDefaultNameTrue, "CAVITY_MILL");
/ e# v1 O* c, ?" k* s2 Z' N; x9 B) f
  ~& n% h* K- o; {7 p# d" {    /*Create the Cavity Milling builder*/
; M7 {7 r2 u* N  i& i    CAM::CavityMillingBuilder *cavityMillingBuilder = workPart->CAMSetup()->CAMOperationCollection()->CreateCavityMillingBuilder(operation);' ^& B' h3 C/ n; @

* b) @( z) D; g: @5 e) k6 H    /*Get the solid body named PART*/, L3 d$ M  V# B& O3 `0 B" V' h
    tag_t partSolid = NULL_TAG;
5 `' ]8 ~. K: e" D: I    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "PART", UF_solid_type, false, &partSolid);
; H7 y* j; {. g    Body *partBody = dynamic_cast<Body *> (NXObjectManager::Get(partSolid));
% {% C4 U* M7 L7 u  L% E* U  f    std::vector<Body *> partBodies(1);
) S$ t1 I" ^" Y2 l7 f    partBodies[0] = partBody;
$ a4 N) I# g( e
" O; W1 P* X, |3 F    /*Set the part geometry*/
8 T6 ~- T& _& ^' q5 X    cavityMillingBuilder->PartGeometry()->InitializeData(false);
+ w  U0 J7 r9 Y; X    CAM::GeometrySet *partGeometrySet = cavityMillingBuilder->PartGeometry()->GeometryList()->FindItem(0);5 e5 u7 N  e$ y4 C
    BodyDumbRule *partBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(partBodies);
  O5 |. A2 X& C: h/ k    std::vector<SelectionIntentRule *> partRules(1);5 k  j' y# f2 A9 T6 z1 q$ \
    partRules[0] = partBodyDumbRule;
  E$ C; ^: B! e- G. z1 g    partGeometrySet->ScCollector()->ReplaceRules(partRules, false);
6 L$ t- h4 l8 a, e- B& t$ ~
+ X5 Q/ J  @1 g$ Z& J    /*Get the solid body named BLANK*/
7 T* ~  D  Y" ?- U* E* I' f    tag_t blankSolid = NULL_TAG;) V& o6 q  i9 ^: b+ L9 z, m
    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "BLANK", UF_solid_type, false, &blankSolid);
) M3 _5 m4 I% C4 I. A* N7 b6 f! c    Body *blankBody = dynamic_cast<Body *> (NXObjectManager::Get(blankSolid));+ p" k4 p  X* R. v, b7 |8 e# J
    std::vector<Body *> blankBodies(1);  E1 T1 D" t2 V9 g8 v& E6 k
    blankBodies[0] = blankBody;
# U* q" Z3 d4 H) {$ j9 V
, a( ?* M& h: |# I# z' u    /*Set the blank geometry*// t9 E7 K' V1 X( k$ M, F" I2 f
    cavityMillingBuilder->BlankGeometry()->InitializeData(false);5 W4 [, i" A2 Y& n$ n; h5 i# d. z
    CAM::GeometrySet *blankGeometrySet = cavityMillingBuilder->BlankGeometry()->GeometryList()->FindItem(0);0 U. \1 i$ j7 v( o: @" q9 P6 \
    BodyDumbRule *blankBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(blankBodies);0 d, b; }  }* w4 c# P8 O  u
    std::vector<SelectionIntentRule *> blankRules(1);8 S, v( w( j0 k# e$ F$ ~! V7 t  k
    blankRules[0] = blankBodyDumbRule;
& H$ Z; i/ o% h    blankGeometrySet->ScCollector()->ReplaceRules(blankRules, false);: J/ a- a) ^6 T4 L9 P( x/ P

1 Y# Y7 G. y/ b6 Y& q    cavityMillingBuilder->Commit();+ r1 {& ~% ^+ Z% u8 W" H  N8 b3 b
    cavityMillingBuilder->Destroy();
+ r7 s5 J+ D# x, ^* A9 E& d" y& m7 w  N/ ]
    /*Generate the tool path*/
, {8 w5 a; a6 y, J    std::vector<CAM::CAMObject *> operations(1);
. ^! B5 T! A& |0 h5 O    operations[0] = operation;% p  e& _8 \  Y5 g4 E
    workPart->CAMSetup()->GenerateToolPath(operations);
! D$ e+ p3 C8 m. z; e& q, b: w
3 W2 @4 [+ j9 h7 `    /* Terminate the API environment */3 B) J# L. H  C- x, [
    UF_CALL(UF_terminate());7 w' X' W, n' @, k& S, @$ b
}
/ W! z, {9 J& J' P" G1 e, T% S0 g  b2 Y3 g% j- P
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了