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

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

[复制链接]

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

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

admin 楼主

2015-6-5 11:20:12

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

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

x
这段代码可以参考看看哦,显然比ufun的代码长点,但是是新的也是最好的方法
0 R' l. X& E" y7 ~" h- Z9 Q/ Y! J9 w! Y8 g6 F2 |
* t) q6 L9 u4 t6 R& S" f% o
{2 U% |; F+ E+ s4 d5 p* a2 d. [
    /* Initialize the API environment */
/ a' M+ K$ i, k" d4 n' N    if( UF_CALL(UF_initialize()) )
; [+ D! V* J! v, Y" J8 G    {
; [* K6 k: Z3 L& O+ o& k' }6 `2 @        /* Failed to initialize */: ^9 Z$ K! r/ P, C( w# c' J
        return;
9 E4 s+ g- m/ I. ]/ u    }3 w; k8 K3 G3 Y  p9 d
$ m# }1 O- X: G& `; Z: `
    Session *theSession = Session::GetSession();' o5 R9 T4 t- m
    Part *workPart = theSession->Parts()->Work();2 Z) x' H% G: m! y% K

8 w) `7 [5 m+ c( z- R( n- V    /*Get the existing group objects to create the operation under*/
5 g3 {$ G' D- Y: R, q# s/ t    CAM::NCGroup *programGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("PROGRAM");
2 l. L9 o) f% }    CAM::NCGroup *methodGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("METHOD");
( p0 @1 p" ^7 M$ M    CAM::NCGroup *toolGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("MILL");  W; m6 Q3 M5 X# X
    CAM::NCGroup *geometryGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("WORKPIECE");7 {! j$ u4 S/ n) W

7 y5 j# n1 K; N; _; R& n& K) u    /*Create the Cavity Mill operation*/
/ a* \# L+ }  x% I- w    CAM::Operation *operation = workPart->CAMSetup()->CAMOperationCollection()->Create(programGroup, methodGroup, toolGroup, geometryGroup, "mill_contour", "CAVITY_MILL", CAM::OperationCollection::UseDefaultNameTrue, "CAVITY_MILL");
! t4 _0 G8 y( L/ f3 R  F1 v! x$ l1 D: h5 V, o$ W. z# {
    /*Create the Cavity Milling builder*/$ }5 }9 g8 T3 N" x! L
    CAM::CavityMillingBuilder *cavityMillingBuilder = workPart->CAMSetup()->CAMOperationCollection()->CreateCavityMillingBuilder(operation);
+ r; W5 n: K/ F4 ^2 }7 l; k0 h0 C; r0 i  }. g
    /*Get the solid body named PART*/
: u# O7 \+ B# g' F' K7 h    tag_t partSolid = NULL_TAG;
! x- c" C( m$ v    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "PART", UF_solid_type, false, &partSolid);6 X3 N. g: @- k( b& s  X/ Z& s" D
    Body *partBody = dynamic_cast<Body *> (NXObjectManager::Get(partSolid));
7 ]( @2 p- o" J$ e) C    std::vector<Body *> partBodies(1);3 u! h$ b& @. Z/ o; F3 b* I
    partBodies[0] = partBody;5 n! J) v% ]  O& _

2 N9 n# x8 |1 I: K3 o, h% f6 Y    /*Set the part geometry*/% ^# m1 R' ^& {8 O9 ~$ \
    cavityMillingBuilder->PartGeometry()->InitializeData(false);
1 `, R0 R2 `# `' Y    CAM::GeometrySet *partGeometrySet = cavityMillingBuilder->PartGeometry()->GeometryList()->FindItem(0);3 @5 T( E- i5 {6 Q; [' k
    BodyDumbRule *partBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(partBodies);8 [6 z! P# Y; }; n' t' P9 z: C. z
    std::vector<SelectionIntentRule *> partRules(1);  A0 L- J. c5 |  ?1 j+ Q# D
    partRules[0] = partBodyDumbRule;) I' k. R% J; o; K0 K! e6 S  A
    partGeometrySet->ScCollector()->ReplaceRules(partRules, false);: ?4 `' S* f2 w. D3 `  z2 U  c: l3 k
& v7 i# {  r) q4 u
    /*Get the solid body named BLANK*/! R9 z7 Z, @6 d  o- f5 K3 T
    tag_t blankSolid = NULL_TAG;5 s; z% N5 l. x6 ?, O
    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "BLANK", UF_solid_type, false, &blankSolid);
# o4 S: L/ O* I. ?+ m6 p    Body *blankBody = dynamic_cast<Body *> (NXObjectManager::Get(blankSolid));/ z8 P; K4 L: t6 {& \
    std::vector<Body *> blankBodies(1);
# N3 R0 U" ^3 w& e. i4 C$ }2 ]    blankBodies[0] = blankBody;
1 |$ t: J4 r7 d' `* v2 p' X! @( h& O0 ?: z- f8 V9 |
    /*Set the blank geometry*/
1 k$ l. _; g: ^6 R. N    cavityMillingBuilder->BlankGeometry()->InitializeData(false);9 s9 W( D% ^3 A0 o/ ?1 T" k
    CAM::GeometrySet *blankGeometrySet = cavityMillingBuilder->BlankGeometry()->GeometryList()->FindItem(0);
! R; T, m) m' {4 i3 P0 Y    BodyDumbRule *blankBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(blankBodies);  E4 z* D! L8 B- p  p
    std::vector<SelectionIntentRule *> blankRules(1);
) {) r7 F# K, x  R    blankRules[0] = blankBodyDumbRule;
0 Q0 I" T. R0 P4 W9 [3 u9 o    blankGeometrySet->ScCollector()->ReplaceRules(blankRules, false);
) z* D& A7 i7 P8 e2 o/ h# V' U7 m
- d' D( I3 @, {2 M2 X3 V    cavityMillingBuilder->Commit();9 n# Q: |1 s1 n
    cavityMillingBuilder->Destroy();1 N2 o4 ?( z7 l( `! X! z! c

5 v! z. Y  e( F) g  _    /*Generate the tool path*/
8 q0 \0 V) m. l- {3 x* t" m; ?% B    std::vector<CAM::CAMObject *> operations(1);
6 y- |$ z: y* X5 u  u    operations[0] = operation;
9 N6 I! q1 \3 `    workPart->CAMSetup()->GenerateToolPath(operations);3 g' o# I/ ~; t6 @

: X, h! ~% C" t5 A    /* Terminate the API environment */& E3 c2 ?( B6 K7 T. h9 f1 [0 t5 r
    UF_CALL(UF_terminate());
  e8 D: G, |( [% N9 W  @* b}
7 c' q* [* A# o! a/ P( w  E
% L0 C3 i* B0 N. Y% ?7 j3 c
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了