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

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

[复制链接]

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

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

admin 楼主

2015-6-5 11:20:12

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

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

x
这段代码可以参考看看哦,显然比ufun的代码长点,但是是新的也是最好的方法/ |4 W$ k$ k' H+ B
3 ]5 U4 X- K1 j2 c& W& a
/ `$ D  y  z  h, z
{
8 o- x8 X! d% q7 g5 u    /* Initialize the API environment */9 W+ n' f. N4 s0 T* u" a
    if( UF_CALL(UF_initialize()) ) 1 z6 A. c8 A% Y3 e2 W) w. u' G  W' {
    {
$ G" z" M, i$ S" W" B1 p; U        /* Failed to initialize */
* h' F9 z9 i% O9 [        return;
! R* ^/ E  b! S- y. A2 B- D    }
2 d6 j6 s) ^  v4 F+ Z4 }% B/ ^9 ~' u, ]6 y7 \9 a
    Session *theSession = Session::GetSession();
) e* f5 w1 e* ~( \1 M; j) z4 I) d    Part *workPart = theSession->Parts()->Work();
0 ^: e, m9 a' Z7 c
; o1 f; h3 H! H, P2 W    /*Get the existing group objects to create the operation under*/
5 f) M1 [$ {* n    CAM::NCGroup *programGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("PROGRAM");5 a$ @7 x' D! S# i1 I
    CAM::NCGroup *methodGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("METHOD");. P' r! t% Y1 M7 M5 g
    CAM::NCGroup *toolGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("MILL");
& ~' C! C- k: u+ H: |6 _. f& Z. Y    CAM::NCGroup *geometryGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("WORKPIECE");
0 I. ^. `$ ?7 D
; R9 k' K: {% h    /*Create the Cavity Mill operation*/
" i% b2 O% b  b! U- R9 j    CAM::Operation *operation = workPart->CAMSetup()->CAMOperationCollection()->Create(programGroup, methodGroup, toolGroup, geometryGroup, "mill_contour", "CAVITY_MILL", CAM::OperationCollection::UseDefaultNameTrue, "CAVITY_MILL");
( ]  A9 I! @1 l! w' k1 r' S- E1 C" [8 _. L% D: J8 j
    /*Create the Cavity Milling builder*/' g! m. Z: H- j$ J- ^9 w
    CAM::CavityMillingBuilder *cavityMillingBuilder = workPart->CAMSetup()->CAMOperationCollection()->CreateCavityMillingBuilder(operation);
( [8 q3 z6 n" b5 _, v, l$ B& O" R" O# }% t9 S
    /*Get the solid body named PART*/
6 L, U9 \; d( E( }# C1 n% s5 s    tag_t partSolid = NULL_TAG;- i8 a: e5 z* C* X" s
    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "PART", UF_solid_type, false, &partSolid);* p. h7 t9 N9 I+ [: ~6 a& _2 p
    Body *partBody = dynamic_cast<Body *> (NXObjectManager::Get(partSolid));
2 m$ Q' u. S+ b" q' y    std::vector<Body *> partBodies(1);0 Z# S; o* y% h* F1 [. S
    partBodies[0] = partBody;* B) ?( R! S. P. E+ i  n
- _! N! o: L% v4 b
    /*Set the part geometry*/
% V. `( p+ e' H; E6 J" ~5 x6 |    cavityMillingBuilder->PartGeometry()->InitializeData(false);
& G# I: X2 [& o8 ]1 V9 r; [    CAM::GeometrySet *partGeometrySet = cavityMillingBuilder->PartGeometry()->GeometryList()->FindItem(0);
' s" q' M+ O, @    BodyDumbRule *partBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(partBodies);
$ s5 C9 }. `/ K- F' a    std::vector<SelectionIntentRule *> partRules(1);
! X- O$ p: Z( {0 V" [    partRules[0] = partBodyDumbRule;( V( p8 m9 @5 W" _
    partGeometrySet->ScCollector()->ReplaceRules(partRules, false);1 e) }' f, l* Y* H

/ _5 G; @; m( d    /*Get the solid body named BLANK*/1 y/ C* O- [5 B- V. G
    tag_t blankSolid = NULL_TAG;+ Y% l9 Y, ]2 R! y7 ~9 P
    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "BLANK", UF_solid_type, false, &blankSolid);  F1 W( y: y! h$ u1 U* |; F
    Body *blankBody = dynamic_cast<Body *> (NXObjectManager::Get(blankSolid));
2 }3 n0 a8 P6 M' d0 a    std::vector<Body *> blankBodies(1);
* B. T9 o# J- E# w7 F, o$ g    blankBodies[0] = blankBody;
% q3 {8 j' B1 a; q  B% K) I! }' b- ?' n, ]& c3 b
    /*Set the blank geometry*/
9 y( R6 k/ b: v& e6 z) z6 _    cavityMillingBuilder->BlankGeometry()->InitializeData(false);0 C  h% m( O5 N$ J7 g
    CAM::GeometrySet *blankGeometrySet = cavityMillingBuilder->BlankGeometry()->GeometryList()->FindItem(0);( W) N) C6 I& \/ W
    BodyDumbRule *blankBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(blankBodies);
, F! {7 Z' E1 A# e6 t7 ~    std::vector<SelectionIntentRule *> blankRules(1);' p3 o, R1 z# D# y7 Q0 @" P
    blankRules[0] = blankBodyDumbRule;; U2 U5 F2 [1 Y$ C) x) ]
    blankGeometrySet->ScCollector()->ReplaceRules(blankRules, false);
% \  x; W3 D3 E& @* y: N6 a7 z
8 x: J) B3 B" F) d+ i3 X+ m    cavityMillingBuilder->Commit();
" B8 c, s) k, _    cavityMillingBuilder->Destroy();& h+ G7 v. N9 j: G3 {% {

5 m9 Y' j# _1 B9 X3 p# C    /*Generate the tool path*/( G, d: M8 u$ N) }6 X+ F5 i
    std::vector<CAM::CAMObject *> operations(1);
) ?' V7 i: |) L% E    operations[0] = operation;
4 i  S; F' F! {! p    workPart->CAMSetup()->GenerateToolPath(operations);
: l0 x4 A! g. j, e* o% m2 {
* O" j) N1 h6 ~+ K1 j" X, z! [( x    /* Terminate the API environment */
9 s/ }0 k4 k) J& e3 I    UF_CALL(UF_terminate());
. V% L. `. O; D0 G8 q9 K}
: L- r  `2 L# N) F7 ~: x
9 n, x; R# U" y+ F5 E: d
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了