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

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

[复制链接]

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

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

admin 楼主

2015-6-5 11:20:12

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

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

x
这段代码可以参考看看哦,显然比ufun的代码长点,但是是新的也是最好的方法
$ {! H- u  z; |6 c/ c
7 |  K0 t4 \. o. C4 q1 b7 Q+ {: ?* V/ V) d/ ^% ^. H( b
{
2 v. f# K7 \& a5 L8 E    /* Initialize the API environment */8 R( x! ~. B5 }# j. m
    if( UF_CALL(UF_initialize()) )
8 M: k9 p' M- T, o5 B) J; q    {* T7 a5 {2 v( n/ M3 Q1 @( j
        /* Failed to initialize */. f* j$ Z" ^$ A5 m: C
        return;! R0 h' h1 C* ?6 {# H7 w! P
    }- j5 A3 M; ?7 p* [+ u5 a0 m, d% @

/ Z5 I+ U: P4 ]3 p* j# l$ u- W    Session *theSession = Session::GetSession();
/ i& ^$ r  Z: E6 k% z    Part *workPart = theSession->Parts()->Work();5 D2 u5 z/ J# s! x! T

  ]; W  M- W7 J; m5 Y, {. i9 N' P: c    /*Get the existing group objects to create the operation under*/
1 g* a1 m& g$ ]    CAM::NCGroup *programGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("PROGRAM");
5 Z3 u' T$ i# J! x! w' O    CAM::NCGroup *methodGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("METHOD");. z! l& M; t0 g* }; U
    CAM::NCGroup *toolGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("MILL");/ l( a$ s( t$ g. ?
    CAM::NCGroup *geometryGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("WORKPIECE");/ y  a% C( L  \1 f4 M1 [
. d5 S0 S* Z: \( R; L* r8 E
    /*Create the Cavity Mill operation*/
) @1 p8 a3 Y6 M3 q: G, w/ \+ c8 w$ M    CAM::Operation *operation = workPart->CAMSetup()->CAMOperationCollection()->Create(programGroup, methodGroup, toolGroup, geometryGroup, "mill_contour", "CAVITY_MILL", CAM::OperationCollection::UseDefaultNameTrue, "CAVITY_MILL");
: Q% @, O3 c: u" U# V: I5 X3 V3 w- I+ H8 N$ b5 d9 t7 L0 n
    /*Create the Cavity Milling builder*/
" |6 l6 T& }2 M, }8 O, n. ~    CAM::CavityMillingBuilder *cavityMillingBuilder = workPart->CAMSetup()->CAMOperationCollection()->CreateCavityMillingBuilder(operation);& Q/ B5 T$ `7 u- o4 \1 M6 ~

8 d# [6 G8 K2 @) i0 R    /*Get the solid body named PART*/" _# L2 y& E. N
    tag_t partSolid = NULL_TAG;$ n2 `! ?" K# Q* V+ i5 a
    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "PART", UF_solid_type, false, &partSolid);/ f3 z/ B8 Z6 {% w& a
    Body *partBody = dynamic_cast<Body *> (NXObjectManager::Get(partSolid));$ l: m1 c  s& `( O$ K; B
    std::vector<Body *> partBodies(1);
1 A" V* }) a7 h  }5 W: A    partBodies[0] = partBody;* u. l  b# v& z1 T* p/ _

8 o% u$ O! ?$ x    /*Set the part geometry*/
4 C3 |8 `3 s6 E9 _( k9 g1 o8 t    cavityMillingBuilder->PartGeometry()->InitializeData(false);1 [; Q( {4 H% H6 r: E
    CAM::GeometrySet *partGeometrySet = cavityMillingBuilder->PartGeometry()->GeometryList()->FindItem(0);
9 O1 U3 C( Z* x5 u8 x8 k. N" v! v    BodyDumbRule *partBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(partBodies);( h& O5 g8 n6 h, {4 |
    std::vector<SelectionIntentRule *> partRules(1);; ^# S; M( a/ I/ N8 E2 x! I
    partRules[0] = partBodyDumbRule;+ W8 ]1 U, e& m4 b/ a, p$ ]. m
    partGeometrySet->ScCollector()->ReplaceRules(partRules, false);
6 o- h+ V: n% |! k) J' O1 s
; O0 v6 {* `  X$ t  M    /*Get the solid body named BLANK*/) |' r# w+ I! y: x
    tag_t blankSolid = NULL_TAG;3 ?. z- w; \9 _3 g) x: t
    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "BLANK", UF_solid_type, false, &blankSolid);- C& T- f( S) k; ?
    Body *blankBody = dynamic_cast<Body *> (NXObjectManager::Get(blankSolid));1 \! F$ i% U! H/ {, `, {4 D5 E
    std::vector<Body *> blankBodies(1);* g* C3 Y( }0 ?  N. x
    blankBodies[0] = blankBody;3 b5 m( O4 ]4 d/ ?) k/ w

: o) G: u; k* X1 X" [0 Z0 D8 m    /*Set the blank geometry*/8 L$ a' y6 V* X1 F# q: k& d* x) Y" w
    cavityMillingBuilder->BlankGeometry()->InitializeData(false);
- S" v& u+ [6 [# t9 V! x" N: y+ r    CAM::GeometrySet *blankGeometrySet = cavityMillingBuilder->BlankGeometry()->GeometryList()->FindItem(0);
3 [% \; e% @# Z* a, j    BodyDumbRule *blankBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(blankBodies);* O  [; r6 z- t% i% N( O
    std::vector<SelectionIntentRule *> blankRules(1);( w1 j) v: ~: o, ~- S
    blankRules[0] = blankBodyDumbRule;6 }" g( K3 i* q
    blankGeometrySet->ScCollector()->ReplaceRules(blankRules, false);3 G; E3 E% P5 d/ C# s3 J
6 R3 I  F/ s/ _. A6 ~
    cavityMillingBuilder->Commit();
* w+ m* y; x- g- ]* {, ]    cavityMillingBuilder->Destroy();
$ S3 q7 D& e9 d/ _- X6 F+ {* O- R, z8 q5 t! O6 l) K
    /*Generate the tool path*/
: A) E) Y! d. h9 \    std::vector<CAM::CAMObject *> operations(1);
( Z  ]5 e7 _  X, T$ |    operations[0] = operation;
1 @! k1 o6 R' r/ @$ b3 Z    workPart->CAMSetup()->GenerateToolPath(operations);
  e% @# x9 Y+ }) S1 z# z
! f/ f& N0 ]- W1 _1 S    /* Terminate the API environment */
  }' p; H. ?4 s! T# t8 z. J$ M. B    UF_CALL(UF_terminate());  b4 w) m7 t0 S9 |
}
6 n' P  Z& L% N  f- e6 U+ v& Z6 l7 |/ h8 Q* H* M) }$ r  [
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了