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 4250 0

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

admin 楼主

2015-6-5 11:20:12

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

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

x
这段代码可以参考看看哦,显然比ufun的代码长点,但是是新的也是最好的方法, `& s6 }: L$ o
! a) }# ?! ~' y1 p8 z

& A* A- M; a0 @0 Y, K{
: D: `5 A+ G$ J- C! F1 c* ?    /* Initialize the API environment */7 ~- g/ S: `: _3 P/ a
    if( UF_CALL(UF_initialize()) ) + m: n( Y* A7 z8 a
    {
/ L4 b+ |) Y! i+ e8 b        /* Failed to initialize */& ?/ K0 F1 }4 b1 a) `. r! ]& K
        return;
/ h* k) j' E  c4 x& [/ i    }
5 }0 T* h6 q4 s' q; S0 s8 r, K
# r% M6 N8 i& C8 K    Session *theSession = Session::GetSession();) c) \. s* \2 k9 J+ ?
    Part *workPart = theSession->Parts()->Work();' H, K# |* f9 n3 x9 t

0 M8 x9 N9 C/ A! l    /*Get the existing group objects to create the operation under*/
4 x1 L" j( |  B    CAM::NCGroup *programGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("PROGRAM");
8 h/ o3 T4 y9 ~( c- s2 G, u    CAM::NCGroup *methodGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("METHOD");7 M0 ~! m/ R9 _
    CAM::NCGroup *toolGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("MILL");' r5 B/ d+ R2 ?' A1 a; P4 {
    CAM::NCGroup *geometryGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("WORKPIECE");2 N+ g- {& k3 Q2 v. j
. q3 C# k( N, K; |7 j, f
    /*Create the Cavity Mill operation*/
0 X* L  F0 z! F5 G4 I, r; q    CAM::Operation *operation = workPart->CAMSetup()->CAMOperationCollection()->Create(programGroup, methodGroup, toolGroup, geometryGroup, "mill_contour", "CAVITY_MILL", CAM::OperationCollection::UseDefaultNameTrue, "CAVITY_MILL");
: y5 e  s4 q5 Q4 V9 f( \) [  j5 j! h. E" M' A' y: l7 R
    /*Create the Cavity Milling builder*/
( v' v& X  ]8 T6 v! O! A% b6 z# S    CAM::CavityMillingBuilder *cavityMillingBuilder = workPart->CAMSetup()->CAMOperationCollection()->CreateCavityMillingBuilder(operation);
& ~* [5 p3 Q. }3 |2 s* g1 a8 i5 m
: P, A$ R1 s9 Y6 m; P4 V0 A    /*Get the solid body named PART*/
% I6 I1 x; \- V' |    tag_t partSolid = NULL_TAG;
0 E) W7 x! I! p1 J% z! g' {    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "PART", UF_solid_type, false, &partSolid);
2 H+ ^  K" ?# t3 D/ W- o( t  [    Body *partBody = dynamic_cast<Body *> (NXObjectManager::Get(partSolid));1 ]. d5 z( g1 B8 y2 P( ~. |1 g
    std::vector<Body *> partBodies(1);, I4 b5 g- F. c3 M; R& u
    partBodies[0] = partBody;
; i( Z# J% @) R% H7 w5 {8 U% s  B8 y" o" j# v& k# |
    /*Set the part geometry*/
9 C# ^& {6 n0 X' z    cavityMillingBuilder->PartGeometry()->InitializeData(false);
: j9 X+ M( g( i8 R/ E7 Y    CAM::GeometrySet *partGeometrySet = cavityMillingBuilder->PartGeometry()->GeometryList()->FindItem(0);
% O2 b7 @4 ^6 _: \0 L    BodyDumbRule *partBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(partBodies);
/ K1 J" i0 s$ i4 q    std::vector<SelectionIntentRule *> partRules(1);) v9 r( J6 U, J4 S! u
    partRules[0] = partBodyDumbRule;  f9 {8 C1 N7 a* Q
    partGeometrySet->ScCollector()->ReplaceRules(partRules, false);& f9 Y. U8 S7 p: k# a  I8 x
. G0 D! O' t, y# `
    /*Get the solid body named BLANK*// Q/ R0 M# B& J1 Q
    tag_t blankSolid = NULL_TAG;
) l7 ~" ]2 [) [; K$ y8 B$ F    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "BLANK", UF_solid_type, false, &blankSolid);( H6 \; o7 Y' \- b' U
    Body *blankBody = dynamic_cast<Body *> (NXObjectManager::Get(blankSolid));
. E9 H4 G5 [2 b- {3 m) Q    std::vector<Body *> blankBodies(1);
; r  V& R% P( L8 |& b* z    blankBodies[0] = blankBody;: d* g3 W7 F* M, J3 I9 \

( U# b. q$ ~' o& c3 ^    /*Set the blank geometry*/
. K" w; P# L+ D' `; [; \4 p# S    cavityMillingBuilder->BlankGeometry()->InitializeData(false);
( G+ V* T, c2 a' z0 S    CAM::GeometrySet *blankGeometrySet = cavityMillingBuilder->BlankGeometry()->GeometryList()->FindItem(0);& X; Q. }6 X" _7 j" R, ?
    BodyDumbRule *blankBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(blankBodies);
1 z' b. [4 {0 n, h7 t6 F) D    std::vector<SelectionIntentRule *> blankRules(1);! B" g+ ]3 f* e2 B
    blankRules[0] = blankBodyDumbRule;5 N2 U$ u! C6 {% a: \/ p5 ~
    blankGeometrySet->ScCollector()->ReplaceRules(blankRules, false);
/ U  v4 ^9 V4 n5 y, k* x7 [4 @. t, M5 {" ^) Q
    cavityMillingBuilder->Commit();, R) s2 H# Q# ~6 |1 h: K; o
    cavityMillingBuilder->Destroy();
7 Z& C9 e% O: z) l/ M/ m# C) i% p
' m4 y* b6 Y, c! k5 ?    /*Generate the tool path*/
/ m8 P0 Q% V8 z  ?    std::vector<CAM::CAMObject *> operations(1);
) S5 r9 w9 v% j% R: {: \. Q1 Q    operations[0] = operation;
% \# S  K2 A5 T2 ?) X, P2 k* b# E    workPart->CAMSetup()->GenerateToolPath(operations);
0 t/ p2 }" z7 c/ n& U5 c; Q/ A1 L% @2 G3 y
    /* Terminate the API environment */
5 Z0 {. o* j+ ?    UF_CALL(UF_terminate());; J% L4 s! S/ H  N' p: r( {6 K
}( c) s9 J: w& y: H& ]. z
7 m+ ]* _4 K+ H+ o$ z
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了