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

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

[复制链接]

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

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

admin 楼主

2015-6-5 11:20:12

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

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

x
这段代码可以参考看看哦,显然比ufun的代码长点,但是是新的也是最好的方法
! T9 s+ e2 ^9 [1 A! T+ ?& v
/ g  }% Q5 y2 w# {0 M2 c( Z' |  ^9 K, E+ H
{  R& f& \8 H2 W' |4 s7 S3 r  P8 p
    /* Initialize the API environment */
) p- ~: L' l% s6 j& F" ]; K1 H    if( UF_CALL(UF_initialize()) ) 5 c" }- S9 @4 W$ }+ t9 `7 G- T
    {
$ b' X: ?7 q, \2 x* z3 v. w        /* Failed to initialize */
( j+ }4 J; Z( A- A        return;
: }* s4 k1 J9 ~- n5 P1 ]" H+ w2 o    }
; l1 X0 ^! |4 J- z  ]0 ?
! F; \0 j+ ?& r1 x5 ]    Session *theSession = Session::GetSession();
& U7 z" a3 a) l5 y) K% t  o" D* w% n    Part *workPart = theSession->Parts()->Work();
7 P* ~: m# e0 @7 H: q3 q
* f8 @% H0 h: n" F7 `1 a2 g3 P( Z    /*Get the existing group objects to create the operation under*/) H% {5 S' P" ~. s! \1 ]" S
    CAM::NCGroup *programGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("PROGRAM");5 E# Z/ T/ V( b0 v0 P' c. ^
    CAM::NCGroup *methodGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("METHOD");) a' W( f$ ^; a0 b3 V
    CAM::NCGroup *toolGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("MILL");
$ p+ u  O. u4 f- I; _  |- \* L    CAM::NCGroup *geometryGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("WORKPIECE");* I4 {9 _5 Y$ G) `( ?6 x
% D) n. g" R0 a6 S
    /*Create the Cavity Mill operation*/( _5 v9 h8 `" z/ d* L) f8 f
    CAM::Operation *operation = workPart->CAMSetup()->CAMOperationCollection()->Create(programGroup, methodGroup, toolGroup, geometryGroup, "mill_contour", "CAVITY_MILL", CAM::OperationCollection::UseDefaultNameTrue, "CAVITY_MILL");. i9 ]7 w& _" A+ l, }" H

4 e9 Q  t4 e" K3 v    /*Create the Cavity Milling builder*/* _5 C* ^" }, Y# _5 [! E
    CAM::CavityMillingBuilder *cavityMillingBuilder = workPart->CAMSetup()->CAMOperationCollection()->CreateCavityMillingBuilder(operation);
! {/ m5 R" {! S& }0 M; X  c1 S* c" |' z5 K5 n3 c0 v3 `7 T
    /*Get the solid body named PART*/: r# b+ J; b  I* m% k2 n* R9 s- h# ?
    tag_t partSolid = NULL_TAG;& Y, ^. }9 H  j0 a1 Y3 z1 @& f
    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "PART", UF_solid_type, false, &partSolid);
* W% p6 v6 S% Y8 n. |5 R: d# H9 b    Body *partBody = dynamic_cast<Body *> (NXObjectManager::Get(partSolid));
, d- S2 P3 B! g    std::vector<Body *> partBodies(1);
; [3 x9 w' q! [' O    partBodies[0] = partBody;9 i1 g/ V) E" ~" J' v% N* Y* _

# {0 h  H- e8 @8 x    /*Set the part geometry*/! Z! p, `, _$ Z+ x
    cavityMillingBuilder->PartGeometry()->InitializeData(false);. H' @3 C% M. B0 z' U* v" {
    CAM::GeometrySet *partGeometrySet = cavityMillingBuilder->PartGeometry()->GeometryList()->FindItem(0);
& p8 ^! j) b: A/ d    BodyDumbRule *partBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(partBodies);' f9 l( M  s0 k: C+ k+ `- s' z
    std::vector<SelectionIntentRule *> partRules(1);2 k) [% x6 X2 q% v; O' O
    partRules[0] = partBodyDumbRule;# h8 {$ q4 A7 j1 P4 `8 {
    partGeometrySet->ScCollector()->ReplaceRules(partRules, false);- Q% P/ x/ \7 P
5 [4 ]7 }: K: H6 |1 y3 F
    /*Get the solid body named BLANK*/, U/ i) A( @: ?* G( ?$ f4 v1 q
    tag_t blankSolid = NULL_TAG;0 {2 d" @* @4 c5 s
    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "BLANK", UF_solid_type, false, &blankSolid);$ ~% ]) l1 ]5 Z! R9 ?+ P; L
    Body *blankBody = dynamic_cast<Body *> (NXObjectManager::Get(blankSolid));
! j2 h* A  t5 L: T  D$ m( {    std::vector<Body *> blankBodies(1);
) B0 ]7 p. w# N8 m    blankBodies[0] = blankBody;8 {0 y/ I2 P& A; ~; {% ?6 v0 _

8 }& y* S4 p- F    /*Set the blank geometry*/
  ?, Z# s1 R3 e2 S$ D; {- [6 B    cavityMillingBuilder->BlankGeometry()->InitializeData(false);
! \; `9 [& C" N* J    CAM::GeometrySet *blankGeometrySet = cavityMillingBuilder->BlankGeometry()->GeometryList()->FindItem(0);0 Z3 N# w9 z9 p( L7 y2 ?6 u% p+ t
    BodyDumbRule *blankBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(blankBodies);
( W0 f4 \; @/ a    std::vector<SelectionIntentRule *> blankRules(1);
7 ?& `4 L6 c$ n    blankRules[0] = blankBodyDumbRule;# z. C6 s) m9 A1 O" k0 Z; E6 R$ ?
    blankGeometrySet->ScCollector()->ReplaceRules(blankRules, false);3 l7 G- I) z1 Q, L

& G" a% b% G+ n    cavityMillingBuilder->Commit();- |" i3 Z. C) A
    cavityMillingBuilder->Destroy();( [; p5 L+ b5 [$ ?2 G

- u/ l5 V; u& D! y    /*Generate the tool path*/
3 b0 l. n# B; K3 w) Q4 M    std::vector<CAM::CAMObject *> operations(1);2 s5 @# V  Y& E0 K% M7 F7 L6 c
    operations[0] = operation;
" A' \" C& R: d( t' g    workPart->CAMSetup()->GenerateToolPath(operations);
0 J: {1 S# y7 Q8 z0 Z1 k" r. S, k% V$ h' p
    /* Terminate the API environment */5 e; V9 ]& e" G) _# V! O& A$ _: G" D
    UF_CALL(UF_terminate());. k2 \* y7 }' H- x! i: q: v
}/ m1 s. O- F' r; @8 J0 z
9 V! `( X" L& W8 ]" n
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了