PLM之家精品课程培训,联系电话:18301858168 QQ: 939801026

  • NX二次开培训

    NX二次开培训

    适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术对于老鸟也值得借鉴!.

    NX CAM二次开发培训报名 NX二次开发基础培训报名
  • PLM之家Catia CAA二次开发培训

    Catia二次开发培训

    Catia二次开发的市场大,这方面开发人才少,难度大。所以只要你掌握了开发,那么潜力巨大,随着时间的积累,你必将有所用武之地!

  • PLM之Teamcenter最佳学习方案

    Teamcenter培训

    用户应用基础培训,管理员基础培训,管理员高级培训,二次开发培训应有尽有,只要你感兴趣肯学习,专业多年经验大师级打造!

  • PLM之Tecnomatix制造领域培训

    Tecnomatix培训

    想了解制造领域数字化吗?想了解工厂,生产线设计吗?数字化双胞胎,工业4.0吗?我们的课程虚位以待!

PLM之家PLMHome-国产软件践行者

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

[复制链接]

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

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

admin 楼主

2015-6-5 11:20:12

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

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

x
这段代码可以参考看看哦,显然比ufun的代码长点,但是是新的也是最好的方法  g2 v" `& f4 ?' L0 H; Q) f

' k: Y" D2 g6 p8 e! J# C' u* k, Y1 p. ]1 G- Y* G8 |: r: ^; U. j8 |
{0 L! C# B0 k" v# U* p8 u" i8 G
    /* Initialize the API environment */
" A: P, j4 I( e, i+ l& r2 ?    if( UF_CALL(UF_initialize()) ) . j0 U, ]" o) j  U% S! U2 u
    {
$ c8 \. v1 t4 L7 h        /* Failed to initialize */
0 c4 l, g  u2 q$ d% k: ?3 K, ^        return;
" Y. u) z# g; e2 V; m+ a# A" M    }
; M4 y  F: x/ i7 O" j
! t& Z! _* Y# b& S" x* O; L. w& C$ l$ o    Session *theSession = Session::GetSession();
) V. ]7 V8 y4 O$ \- v( U  ~" q! E    Part *workPart = theSession->Parts()->Work();' H2 s- e% J) G) Y* x
: k7 h8 L8 C: n  g- ?3 p" g* Y
    /*Get the existing group objects to create the operation under*/
! a, h& d# K( A) h8 @& N2 I# ~; H+ x- u    CAM::NCGroup *programGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("PROGRAM");
/ K* t+ Q/ t: A! F) `    CAM::NCGroup *methodGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("METHOD");1 B! W1 K" U3 D7 D" t- g. h8 W+ L+ ?
    CAM::NCGroup *toolGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("MILL");
, A8 z; y9 v0 [  ^! j4 p' d9 x! W6 Z    CAM::NCGroup *geometryGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("WORKPIECE");) F. P& W" Q: X9 \

! i' i; I! c" c    /*Create the Cavity Mill operation*/
7 ]; h& W+ J! _0 T& I0 }    CAM::Operation *operation = workPart->CAMSetup()->CAMOperationCollection()->Create(programGroup, methodGroup, toolGroup, geometryGroup, "mill_contour", "CAVITY_MILL", CAM::OperationCollection::UseDefaultNameTrue, "CAVITY_MILL");( {2 H" N1 o4 G8 k' O2 i

$ B6 c; I# m5 b: T/ P$ X- J, _    /*Create the Cavity Milling builder*/
% O  @0 {: P$ N: ?" R    CAM::CavityMillingBuilder *cavityMillingBuilder = workPart->CAMSetup()->CAMOperationCollection()->CreateCavityMillingBuilder(operation);; X$ G9 U9 Q5 q9 p1 x) u1 y! F

/ n2 p: a/ k2 j& T    /*Get the solid body named PART*/9 a/ ?8 A5 U; o. Q0 U3 t
    tag_t partSolid = NULL_TAG;6 C/ M* m, O1 P/ f
    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "PART", UF_solid_type, false, &partSolid);; ~. D5 a* v( t6 o* S( {7 x
    Body *partBody = dynamic_cast<Body *> (NXObjectManager::Get(partSolid));
! l. m; N. L( Q' @8 }+ ]- V    std::vector<Body *> partBodies(1);
3 W: ?8 E0 \# w" u% j6 U0 v0 t    partBodies[0] = partBody;
- \, Y- l: t0 d$ h, R& l. a
9 Z1 N) m/ s5 |4 p, O    /*Set the part geometry*/6 P8 W$ ]$ x1 C8 S( {" J
    cavityMillingBuilder->PartGeometry()->InitializeData(false);
0 m6 G0 x* o4 C' n! J4 H    CAM::GeometrySet *partGeometrySet = cavityMillingBuilder->PartGeometry()->GeometryList()->FindItem(0);- a% L7 f: Z# S+ @; u
    BodyDumbRule *partBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(partBodies);" p: Z1 Y4 O1 U7 w  a% v
    std::vector<SelectionIntentRule *> partRules(1);+ t( ]) c- N8 ]. e2 ^9 r
    partRules[0] = partBodyDumbRule;, H  s( b4 o/ j5 Q0 p. p
    partGeometrySet->ScCollector()->ReplaceRules(partRules, false);
# s- A, g6 }& F& q& p& c2 P7 L7 \5 a4 b  x4 {7 M
    /*Get the solid body named BLANK*/
' }- y' q/ a% }, i$ }7 j1 H" L" @    tag_t blankSolid = NULL_TAG;
+ o# [! g8 e* P# N    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "BLANK", UF_solid_type, false, &blankSolid);# m1 |1 j1 ~9 ?2 m+ ~* s
    Body *blankBody = dynamic_cast<Body *> (NXObjectManager::Get(blankSolid));
: F: ^- |+ Y3 l3 Z& S* A4 ], k    std::vector<Body *> blankBodies(1);
$ h+ @$ j! a3 }6 y. a' L    blankBodies[0] = blankBody;+ X: [) a1 x/ I# F" _. }8 Q$ h
  o! c+ O9 e  o, Y9 e
    /*Set the blank geometry*/( C. c8 o9 [4 Q' D) [
    cavityMillingBuilder->BlankGeometry()->InitializeData(false);0 |) f5 n4 G" F. b
    CAM::GeometrySet *blankGeometrySet = cavityMillingBuilder->BlankGeometry()->GeometryList()->FindItem(0);) ]" l# h& r: {& V; k% R
    BodyDumbRule *blankBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(blankBodies);
. O4 K. D' L( a9 K9 w$ o. _    std::vector<SelectionIntentRule *> blankRules(1);
, G8 [: R+ k& `( G  p3 H    blankRules[0] = blankBodyDumbRule;
% @2 B8 m+ }  b* I7 M7 z; U( N    blankGeometrySet->ScCollector()->ReplaceRules(blankRules, false);
. f+ g/ @5 G: x7 V" ?: w, e" W% I  p, t1 T9 N; i$ q- N
    cavityMillingBuilder->Commit();
9 w4 _6 d, W6 N* ~9 e; e    cavityMillingBuilder->Destroy();; B* r8 G3 L1 Y, W" |9 l
; a; o" v( v  \% Y# ?4 A1 k: R1 r
    /*Generate the tool path*/
4 S& B; F6 }/ J* k    std::vector<CAM::CAMObject *> operations(1);
, M! r% S: C$ f/ n! ~) r2 b  C/ h. m    operations[0] = operation;
! \% _! K' p$ m0 P+ q    workPart->CAMSetup()->GenerateToolPath(operations);. m8 _" @4 ]. p

8 f/ c4 ]8 W' u  l" ?  Q# b$ f    /* Terminate the API environment */
1 L7 N( Q" g0 m7 O- |$ C/ n    UF_CALL(UF_terminate());
* g7 b0 k3 K  W" Y. V}) e6 G  R" @: @% W# P0 V

+ D' Z, W, h' O
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了