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

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

[复制链接]

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

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

admin 楼主

2015-6-5 11:20:12

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

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

x
这段代码可以参考看看哦,显然比ufun的代码长点,但是是新的也是最好的方法9 P  j) w0 W5 c, c1 t- d+ H

; g) v* n( V* N  P' W& [
0 I& \* ]8 L/ P4 R: z* K{
7 u) |6 W6 K% N+ Q( e& C    /* Initialize the API environment */
- J: q% Q8 p' p    if( UF_CALL(UF_initialize()) )
% S7 b1 E4 [6 H/ ?6 O/ n' L, q1 I    {
" z  q" I. A, X  P3 b. w! _* {, Y7 [0 X        /* Failed to initialize */
+ A# v% x8 w4 X: Z5 _' V3 g7 V        return;" w/ Y) k! |  Y' N
    }
( b. L) k: x7 ]5 N+ ^
  H: R# G. J8 ^$ d# e    Session *theSession = Session::GetSession();8 V9 I/ R: C; y, B* n' K3 T
    Part *workPart = theSession->Parts()->Work();
* G* J- o4 u# Y$ |" ]- R
  @7 M2 Q/ H# a  T) Q- I    /*Get the existing group objects to create the operation under*/# z" O% h: b2 a4 d$ R% y1 N
    CAM::NCGroup *programGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("PROGRAM");- g9 C* E! v  a
    CAM::NCGroup *methodGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("METHOD");: |* J, d$ r6 ~; F* n3 Z
    CAM::NCGroup *toolGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("MILL");3 U* a7 [+ E) F
    CAM::NCGroup *geometryGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("WORKPIECE");' t4 T9 |5 W# b
5 K2 w" e5 {3 h6 Z
    /*Create the Cavity Mill operation*/
1 ~  d1 {3 \# Q  f% h( U    CAM::Operation *operation = workPart->CAMSetup()->CAMOperationCollection()->Create(programGroup, methodGroup, toolGroup, geometryGroup, "mill_contour", "CAVITY_MILL", CAM::OperationCollection::UseDefaultNameTrue, "CAVITY_MILL");
+ w: H6 I, X; U8 t# ^5 i) K  I
' O1 e, \" W5 f    /*Create the Cavity Milling builder*/0 {: u% i9 K0 t3 |& }* [1 U  K
    CAM::CavityMillingBuilder *cavityMillingBuilder = workPart->CAMSetup()->CAMOperationCollection()->CreateCavityMillingBuilder(operation);
1 j3 b1 K7 S8 |, Z8 `: q. g% g7 q2 y% b, D+ n' i' O7 e
    /*Get the solid body named PART*/6 w, s$ }3 D- e
    tag_t partSolid = NULL_TAG;4 m$ I4 [, ]8 A" r* m8 m
    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "PART", UF_solid_type, false, &partSolid);3 Y, h  n* ~  ]( {
    Body *partBody = dynamic_cast<Body *> (NXObjectManager::Get(partSolid));. t/ W, q5 \5 U' V- q
    std::vector<Body *> partBodies(1);
" `/ B" l% r3 {1 n+ u3 p7 N. ?    partBodies[0] = partBody;6 Z0 r* n  s# q

+ `: W9 b- T# @" d    /*Set the part geometry*/
# ]; D# F8 G0 X5 r0 x    cavityMillingBuilder->PartGeometry()->InitializeData(false);
9 |0 p  D) X& \$ ^8 y    CAM::GeometrySet *partGeometrySet = cavityMillingBuilder->PartGeometry()->GeometryList()->FindItem(0);
" A( x; U* l, h# ]    BodyDumbRule *partBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(partBodies);8 U' Q5 y* E  A3 W  N
    std::vector<SelectionIntentRule *> partRules(1);7 C, N2 p: b8 {. i, J) K
    partRules[0] = partBodyDumbRule;8 t' a+ [  O% S& ~9 J! E
    partGeometrySet->ScCollector()->ReplaceRules(partRules, false);' P0 o9 L9 ^' }4 {; F0 y( d, n

6 B! g6 d) \1 o% d7 c    /*Get the solid body named BLANK*/
# E' \5 B# ~3 ^9 p4 z/ a    tag_t blankSolid = NULL_TAG;
% u' r, Q$ ^- G" w5 b2 M. E$ N/ L    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "BLANK", UF_solid_type, false, &blankSolid);8 q3 R9 l3 f( B9 y4 A9 P' \
    Body *blankBody = dynamic_cast<Body *> (NXObjectManager::Get(blankSolid));
" W  |) O+ o7 b! w    std::vector<Body *> blankBodies(1);
) W- J4 Q( L/ T9 z& Y    blankBodies[0] = blankBody;* s8 R' A9 x7 m' q* p
' j/ }, Z8 i2 ^/ J* j
    /*Set the blank geometry*/1 I# Q. J$ j; V4 w; ^8 I$ `
    cavityMillingBuilder->BlankGeometry()->InitializeData(false);' u  W' g0 d; Q6 |
    CAM::GeometrySet *blankGeometrySet = cavityMillingBuilder->BlankGeometry()->GeometryList()->FindItem(0);
  D# u0 u+ [7 A" E0 L8 m) {' V( o7 d$ u    BodyDumbRule *blankBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(blankBodies);
8 q* a- D* e8 X* @" c/ B    std::vector<SelectionIntentRule *> blankRules(1);, m! F2 W% y! l% Z& N  \& X
    blankRules[0] = blankBodyDumbRule;- j5 [( b1 ?7 _5 i5 i
    blankGeometrySet->ScCollector()->ReplaceRules(blankRules, false);
1 p  H2 b$ o; I; X
) C( @4 X2 Z& ?$ a/ ~    cavityMillingBuilder->Commit();
7 ?" j+ H7 Z- F  E2 r    cavityMillingBuilder->Destroy();
. X) y2 s" [' D9 ^! f7 q5 Z: t8 P, Z* J! k
    /*Generate the tool path*/
% E4 @0 [# f) ^    std::vector<CAM::CAMObject *> operations(1);
' j  i8 M" W  F" ?& N% g' `. l    operations[0] = operation;
7 H5 E# P4 o% U3 H" M" J( H; n/ Z: X    workPart->CAMSetup()->GenerateToolPath(operations);" x" F8 q5 \7 I# c+ b* `2 {

# ?% v$ ^0 ~+ B    /* Terminate the API environment */
, l1 \; o: b- n" t* y    UF_CALL(UF_terminate());
. j1 H+ y  L, h6 J2 c. T5 H. j}
5 h2 b9 L: z- Z+ t  j6 g3 ?' p' a. o  G$ ?9 }
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了