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

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

[复制链接]

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

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

admin 楼主

2015-6-5 11:20:12

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

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

x
这段代码可以参考看看哦,显然比ufun的代码长点,但是是新的也是最好的方法: [% Q" x3 `# u! f
% s# f. {% T! T6 h. t

! Y8 `" [8 ^+ u1 Y{
+ z- S' o3 M1 _    /* Initialize the API environment */3 w1 }1 j+ \6 C5 ?0 m3 N
    if( UF_CALL(UF_initialize()) )
0 J  j$ f9 n) E' W( H    {4 v2 h* y5 Y0 F* C7 R0 ?/ i
        /* Failed to initialize */
4 R& ~0 U0 C( V6 t8 ^' g3 e8 d        return;" U9 i& Z0 {( A, X4 \
    }+ W  \/ I: h( r
  \+ K3 X# H  C' u# i; T1 X6 t" |
    Session *theSession = Session::GetSession();
0 \  t: Z/ J$ b) g$ M! k    Part *workPart = theSession->Parts()->Work();/ y/ N. u$ n& [

6 `5 @# H' T9 l8 W5 m    /*Get the existing group objects to create the operation under*/
  E4 `+ _6 {: v# X    CAM::NCGroup *programGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("PROGRAM");( s& H3 [: k* y. s2 w
    CAM::NCGroup *methodGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("METHOD");# A5 X$ [' z" {( D$ x, d
    CAM::NCGroup *toolGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("MILL");
5 H4 N! S+ G9 U    CAM::NCGroup *geometryGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("WORKPIECE");
% F- F3 o5 g% l" h" _) B! g+ R
  Z1 K; y' C7 k/ V5 X/ O    /*Create the Cavity Mill operation*/
; @2 k6 ?4 X( s# w. }    CAM::Operation *operation = workPart->CAMSetup()->CAMOperationCollection()->Create(programGroup, methodGroup, toolGroup, geometryGroup, "mill_contour", "CAVITY_MILL", CAM::OperationCollection::UseDefaultNameTrue, "CAVITY_MILL");" J7 b' s* g1 h' e0 i
6 n5 S# O8 ~1 q, T" P
    /*Create the Cavity Milling builder*/' S: N5 P+ ?% M
    CAM::CavityMillingBuilder *cavityMillingBuilder = workPart->CAMSetup()->CAMOperationCollection()->CreateCavityMillingBuilder(operation);
  a7 R( E2 R' q$ A5 A4 d& K3 i- Z
: G6 ]2 w! r: a    /*Get the solid body named PART*/: }2 K& @  N3 b+ u, O% s$ \8 _8 a
    tag_t partSolid = NULL_TAG;% P. k  h5 t) ?# f
    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "PART", UF_solid_type, false, &partSolid);
- W* ~# A1 W# g    Body *partBody = dynamic_cast<Body *> (NXObjectManager::Get(partSolid));. q* t% R& Q/ ^. b: f2 v
    std::vector<Body *> partBodies(1);
1 R3 J- _4 ^; A/ @! ^    partBodies[0] = partBody;
) P# A$ E: E% n! G9 n, b+ C+ ?+ e! O% l
    /*Set the part geometry*/
& T2 c5 v9 k5 s+ [; ^6 X% n    cavityMillingBuilder->PartGeometry()->InitializeData(false);
* P* O) s' B, {0 Y$ X) u    CAM::GeometrySet *partGeometrySet = cavityMillingBuilder->PartGeometry()->GeometryList()->FindItem(0);
1 x, q0 ?  y+ e) E% r& U1 {* M    BodyDumbRule *partBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(partBodies);; w; y4 f! H3 h$ A. \8 i& z. W
    std::vector<SelectionIntentRule *> partRules(1);
; o8 f: q8 h! X, \) r; Y    partRules[0] = partBodyDumbRule;
# E2 g6 l' o; g. t  l% P    partGeometrySet->ScCollector()->ReplaceRules(partRules, false);
; F# |2 `6 ^# T+ \# E- j5 h5 [, `( I4 W7 R3 o
    /*Get the solid body named BLANK*/
! o. p, n% x1 r! [# h- k    tag_t blankSolid = NULL_TAG;$ W0 }' c& z9 w0 h2 W
    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "BLANK", UF_solid_type, false, &blankSolid);
' B8 B- g* C& ?% H: n    Body *blankBody = dynamic_cast<Body *> (NXObjectManager::Get(blankSolid));
3 ]$ c4 r* a8 j4 W+ E2 L' s    std::vector<Body *> blankBodies(1);) V4 c1 {) M/ x* e* H, Q* a4 t
    blankBodies[0] = blankBody;: F. B; K0 c# v  V$ p5 D5 q( h

  E8 C  h) d  C. @1 F5 k    /*Set the blank geometry*/
: @: Z. v! L/ v4 {5 P! E    cavityMillingBuilder->BlankGeometry()->InitializeData(false);! V" I& r2 _; M5 x( w
    CAM::GeometrySet *blankGeometrySet = cavityMillingBuilder->BlankGeometry()->GeometryList()->FindItem(0);
- O0 p+ K3 r  B& N, Z* {( U    BodyDumbRule *blankBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(blankBodies);
, A* j4 G# a% ]7 B( l    std::vector<SelectionIntentRule *> blankRules(1);$ j$ {- z" u* ^
    blankRules[0] = blankBodyDumbRule;
% H+ Y5 ~& z+ o, a* t    blankGeometrySet->ScCollector()->ReplaceRules(blankRules, false);
  b: T( K0 C% f" d) x& }9 Y/ O% X# |1 u! a6 d. I1 I: A
    cavityMillingBuilder->Commit();
$ W7 v5 e  l: c! G0 H) l2 U8 v    cavityMillingBuilder->Destroy();
2 v8 c( j1 Q! u9 G* T5 T8 l, \& d5 Z, t& Y
    /*Generate the tool path*/) V' Z3 ~# j# y1 V
    std::vector<CAM::CAMObject *> operations(1);4 G, Q* {$ {; C
    operations[0] = operation;4 n0 P( S3 Y" A# ?7 f1 h* r
    workPart->CAMSetup()->GenerateToolPath(operations);
: E, c8 O; U+ z% p1 V# K  |. \8 ?7 X: D8 h) ^, G
    /* Terminate the API environment */
: N8 h( n3 ], f* K: c! m    UF_CALL(UF_terminate());
( Q3 q) D' T$ l& F6 P0 p( x}
8 C# k/ S+ D% y# S. g: s! |2 ?! Z9 v* |+ F' i% v' L
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了