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

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

[复制链接]

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

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

admin 楼主

2015-6-5 11:20:12

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

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

x
这段代码可以参考看看哦,显然比ufun的代码长点,但是是新的也是最好的方法
, C5 Z% b9 l- Z+ V1 I7 h7 P5 k" f& W6 C' [( J1 o5 I/ s" M
; g' ?. p' B1 q" q. Q  C/ F$ X' ?
{
+ h) M6 N  y8 V  |/ w9 c( b    /* Initialize the API environment */+ V, E+ R! u( g( ~" E
    if( UF_CALL(UF_initialize()) )
; }; M! G( }- h6 N2 F4 C/ R7 M/ r    {0 W) H0 ~. _$ p3 C( C
        /* Failed to initialize */
6 T) T8 _# j8 {5 e9 V6 p& l4 {( m        return;7 {0 ~: R5 N1 Z5 n& v  `* }
    }
- e7 I9 h# P3 E; z' n, u" X. g1 H9 Q' K* T, e9 G& h- M
    Session *theSession = Session::GetSession();
, Y8 r( h- A4 |$ q& c. t4 \( D1 Q    Part *workPart = theSession->Parts()->Work();
( o5 ]) _+ p1 }8 X4 F& b' g5 E' d! p% b7 ?  c0 I" Z5 R5 g7 y
    /*Get the existing group objects to create the operation under*/
% A0 O* F! z  {1 o$ J! R    CAM::NCGroup *programGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("PROGRAM");
& C& [1 j$ j; a    CAM::NCGroup *methodGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("METHOD");/ ?5 F' `1 T* o) }
    CAM::NCGroup *toolGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("MILL");
4 C% E( k# b% M  g: B; @- c, Z    CAM::NCGroup *geometryGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("WORKPIECE");* H1 _+ o0 Q. r* j1 H+ E* @

# I; A( k5 K& J- K: D. ?0 x- t    /*Create the Cavity Mill operation*/
# W# ^( W! z" g/ l" D% |    CAM::Operation *operation = workPart->CAMSetup()->CAMOperationCollection()->Create(programGroup, methodGroup, toolGroup, geometryGroup, "mill_contour", "CAVITY_MILL", CAM::OperationCollection::UseDefaultNameTrue, "CAVITY_MILL");; l# s& p, [" A4 c: N

: C  G' R0 E( c# q    /*Create the Cavity Milling builder*/- j% D$ P5 c  p- ~0 @( l; w6 Z
    CAM::CavityMillingBuilder *cavityMillingBuilder = workPart->CAMSetup()->CAMOperationCollection()->CreateCavityMillingBuilder(operation);
) A! l; q1 h  {( m6 P5 ^- u1 d
* j! R! y( E4 g    /*Get the solid body named PART*// z' @4 j' h- H5 L* {1 _1 v& }
    tag_t partSolid = NULL_TAG;
) F; _" f! W' `# y' @) b    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "PART", UF_solid_type, false, &partSolid);) w# ~2 G$ `. ?3 t9 @
    Body *partBody = dynamic_cast<Body *> (NXObjectManager::Get(partSolid));
* {4 v  `( ~- {9 x* B    std::vector<Body *> partBodies(1);2 N6 H: O, B/ C9 R1 R9 X3 W1 ^
    partBodies[0] = partBody;
/ f" @  [' d2 X' [6 }' W8 q
5 G" q# |) Z& U! N* i    /*Set the part geometry*/
) b& G# D! f8 d' P' K: f! ^9 M    cavityMillingBuilder->PartGeometry()->InitializeData(false);
' H5 X4 M' Y# N# J: G% m    CAM::GeometrySet *partGeometrySet = cavityMillingBuilder->PartGeometry()->GeometryList()->FindItem(0);+ p& l( R' R: _5 S
    BodyDumbRule *partBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(partBodies);
4 J3 K8 E) u$ O! s% n7 U    std::vector<SelectionIntentRule *> partRules(1);) q; U) c1 f$ Q2 m" m# N
    partRules[0] = partBodyDumbRule;
; l7 w* w  ]  O    partGeometrySet->ScCollector()->ReplaceRules(partRules, false);. e& Y& o- ^9 D; t6 I" `/ A
+ C* r- s( B4 z( ~
    /*Get the solid body named BLANK*/
. o. F4 |+ u3 e    tag_t blankSolid = NULL_TAG;! x5 F3 T$ H1 B6 Y4 |
    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "BLANK", UF_solid_type, false, &blankSolid);
- b* u7 p- E, C0 X( C    Body *blankBody = dynamic_cast<Body *> (NXObjectManager::Get(blankSolid));
  a- v; L5 ]$ g+ |: s    std::vector<Body *> blankBodies(1);* c/ X6 \0 W, {) D
    blankBodies[0] = blankBody;
, r7 ~0 f% o( B" s- O  h2 K: H/ b) M* B  U) [+ U
    /*Set the blank geometry*/0 g0 h/ M" ~7 x1 n  V7 H: i
    cavityMillingBuilder->BlankGeometry()->InitializeData(false);$ j8 |; W# P* _; A) x7 u+ m
    CAM::GeometrySet *blankGeometrySet = cavityMillingBuilder->BlankGeometry()->GeometryList()->FindItem(0);. }- {$ p4 ^* w1 H/ m+ c
    BodyDumbRule *blankBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(blankBodies);
5 I9 Z- F$ v% i! x3 }7 K3 U    std::vector<SelectionIntentRule *> blankRules(1);0 V% n0 `) Z9 A0 [" H1 M" d) ]
    blankRules[0] = blankBodyDumbRule;4 ~) s' ?. @# |* |* m6 p3 t
    blankGeometrySet->ScCollector()->ReplaceRules(blankRules, false);
; I+ f- G' b( ^) o8 X% B. L+ M( e7 d! W: T5 c
    cavityMillingBuilder->Commit();
+ a' O1 e. {3 @$ m8 F0 y    cavityMillingBuilder->Destroy();
5 C/ ?+ i: z$ D/ F0 i0 f9 w# M" X( p
    /*Generate the tool path*/
% v4 b; P# D8 S) ^, c- |! I8 Z    std::vector<CAM::CAMObject *> operations(1);% }- j. k& R' `
    operations[0] = operation;
, x$ D2 I" E# O8 M) [7 z" [    workPart->CAMSetup()->GenerateToolPath(operations);' O2 \: B* Q" L& K! d( J

1 E* v$ i  M- k' w6 L" M" {    /* Terminate the API environment */
+ z6 j+ o; u; W2 @$ k  C, d% O    UF_CALL(UF_terminate());
' x, y: h( z% B9 S& K0 X}
; N) n2 e5 _2 G' I  w% p: L  O, x2 C/ T7 S+ E: m2 c
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了