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

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

[复制链接]

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

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

admin 楼主

2015-6-5 11:20:12

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

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

x
这段代码可以参考看看哦,显然比ufun的代码长点,但是是新的也是最好的方法
( A( w/ u3 G# Y+ w) T' h
4 S" f/ R/ J  w' d& X% a
8 `# J# ]7 y5 ]& c{
4 m# r1 h/ _; U7 x* C6 G    /* Initialize the API environment */- s8 ~5 H6 Y1 Z" q; a5 D
    if( UF_CALL(UF_initialize()) ) ; m; L! s5 U! \
    {
9 W& x2 m- r1 \% Z4 H& {        /* Failed to initialize */. i- S9 z1 D2 H* x: Z
        return;" }% u; K* m+ a3 |
    }
% R% c4 h; {. W4 R8 {' E3 `: [( U  U0 E, p' P( S
    Session *theSession = Session::GetSession();
- Y2 [; Z  A" ]  Y2 V1 K5 A: M& O    Part *workPart = theSession->Parts()->Work();
3 U+ Q. c8 N* m% z# _; X
, ]# n9 [$ S' k: r6 n6 K    /*Get the existing group objects to create the operation under*/. e9 m8 O7 P' B5 ]+ f+ q1 x
    CAM::NCGroup *programGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("PROGRAM");3 i' `$ T! i7 f0 A/ r/ k" a; z- {
    CAM::NCGroup *methodGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("METHOD");
# Z% R1 |- u3 N. a* k3 E    CAM::NCGroup *toolGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("MILL");0 n/ r3 w9 B7 ^, m' M) Y& N
    CAM::NCGroup *geometryGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("WORKPIECE");
8 ^( t! }& }" M* [
. m! m( G) o0 i4 G/ b; N9 P$ H    /*Create the Cavity Mill operation*/
- z$ Z5 J& U* R& a    CAM::Operation *operation = workPart->CAMSetup()->CAMOperationCollection()->Create(programGroup, methodGroup, toolGroup, geometryGroup, "mill_contour", "CAVITY_MILL", CAM::OperationCollection::UseDefaultNameTrue, "CAVITY_MILL");
" f4 P5 v1 s+ H4 q8 s! r4 y) z0 W
& b& P1 Q5 T* ]' G    /*Create the Cavity Milling builder*/1 E( {$ u9 P" D9 f
    CAM::CavityMillingBuilder *cavityMillingBuilder = workPart->CAMSetup()->CAMOperationCollection()->CreateCavityMillingBuilder(operation);9 [2 B0 Q! G' x5 ^* u: K! \

9 j+ G6 V; H3 N# N9 ^: l% R    /*Get the solid body named PART*/* r. S7 {' j4 z: l4 W
    tag_t partSolid = NULL_TAG;. Y" C# E! f. r0 D7 Y
    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "PART", UF_solid_type, false, &partSolid);, ?2 {4 l8 s' d& a; }4 {
    Body *partBody = dynamic_cast<Body *> (NXObjectManager::Get(partSolid));+ _8 P$ D1 n( b4 ~6 U: @# F; ~/ ]
    std::vector<Body *> partBodies(1);4 G+ f$ b- W  n7 [5 |: X
    partBodies[0] = partBody;8 p& D5 [9 e, q* |. |3 q6 J
8 H' J: z) o# s, k! G$ H
    /*Set the part geometry*/
, e( s+ h2 S+ Y; T    cavityMillingBuilder->PartGeometry()->InitializeData(false);
: c) F8 m! K! f' c9 l    CAM::GeometrySet *partGeometrySet = cavityMillingBuilder->PartGeometry()->GeometryList()->FindItem(0);
7 `( Q. k" r$ a+ j; d6 b9 P: G    BodyDumbRule *partBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(partBodies);; i' ^' x, c; o, I. C! J) l
    std::vector<SelectionIntentRule *> partRules(1);. M- G8 o: v4 p3 |
    partRules[0] = partBodyDumbRule;# ^; r& G# p6 \& U) u
    partGeometrySet->ScCollector()->ReplaceRules(partRules, false);! d' C' w" l: J" `* S. K# L

! E1 W, N2 Z( M' N; s" p* E6 \; {    /*Get the solid body named BLANK*/9 Y! g- l: E! ?" o. P, d" S
    tag_t blankSolid = NULL_TAG;4 T' @3 O& c3 j1 o& ]
    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "BLANK", UF_solid_type, false, &blankSolid);
* P7 Z  J2 c2 b* e    Body *blankBody = dynamic_cast<Body *> (NXObjectManager::Get(blankSolid));
2 a0 i( T0 p2 x  F    std::vector<Body *> blankBodies(1);
! @( O) a* f7 A: w* v3 n1 [) h( s    blankBodies[0] = blankBody;% w( S. L, Q' {. M9 `
( ]) b  \1 x( ?2 r
    /*Set the blank geometry*/
: ^- k! L( i+ L6 z, {6 e8 V    cavityMillingBuilder->BlankGeometry()->InitializeData(false);
# K; U* F$ b# U" |' f1 j. @% s5 H    CAM::GeometrySet *blankGeometrySet = cavityMillingBuilder->BlankGeometry()->GeometryList()->FindItem(0);
& h9 V, P9 n' H! q2 b    BodyDumbRule *blankBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(blankBodies);* [) t  a9 P6 V: ~# c, Y1 k
    std::vector<SelectionIntentRule *> blankRules(1);- n4 h/ [0 Z! q( e
    blankRules[0] = blankBodyDumbRule;3 i- R+ Z. D* b3 G
    blankGeometrySet->ScCollector()->ReplaceRules(blankRules, false);+ {! y: W1 M  ~+ \0 h" E

$ }& d( K5 v5 g/ v$ M1 v& Q    cavityMillingBuilder->Commit();
2 R' y, u: M  P( a$ N) m, p3 U/ J; Y# i0 T    cavityMillingBuilder->Destroy();
5 e- o- G+ M5 w2 c
: [5 A/ h" u! l+ y6 @+ i% J    /*Generate the tool path*/
5 r4 ^) e( ]- i* ~/ {# m    std::vector<CAM::CAMObject *> operations(1);
3 o' T3 ]3 c7 L! G" c/ g, r    operations[0] = operation;
* \) t" V& s! n1 q( t! q) z1 C' g    workPart->CAMSetup()->GenerateToolPath(operations);
* f( A  K9 b" ~+ T, c: Q) M5 V  ]& G3 \, G
    /* Terminate the API environment */
& m6 X4 x7 q( Z: K* i    UF_CALL(UF_terminate());
: M% a$ }' |: k}5 s5 C5 i! y( c$ z: T

6 X) @8 |% H- x- N# B  T: ^
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了