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

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

[复制链接]

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

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

admin 楼主

2015-6-5 11:20:12

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

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

x
这段代码可以参考看看哦,显然比ufun的代码长点,但是是新的也是最好的方法
1 [3 q4 X7 k. N8 n" O! e: t: u; C8 G  V7 p' Y' C3 K5 b

3 Y( x7 C' w9 `{
- r$ m3 {" i2 H# `    /* Initialize the API environment */
8 `' J3 s# O1 }9 c7 p    if( UF_CALL(UF_initialize()) ) 0 i6 S0 d2 A; A, R" g- w
    {
/ ~0 m& E" _. x# \        /* Failed to initialize */
5 X. y" z2 O$ k; `4 i' V        return;
7 l- z8 C" B0 C9 P- K! p9 D0 s    }
; o: R2 V; Y5 N9 f
& |, S3 W1 P$ _' q% X    Session *theSession = Session::GetSession();
  Z# `1 x2 j0 z! q' d4 W& C$ [    Part *workPart = theSession->Parts()->Work();: k' m: I4 w" ~8 X

6 s- J# j% h4 |# A  \4 _3 k    /*Get the existing group objects to create the operation under*/
5 V5 H1 u( Y! L) p* U    CAM::NCGroup *programGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("PROGRAM");* S& _3 e3 j+ j
    CAM::NCGroup *methodGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("METHOD");
6 O# L2 i2 V, i    CAM::NCGroup *toolGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("MILL");/ N' ~, @( u! @" o: G1 P4 Z
    CAM::NCGroup *geometryGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("WORKPIECE");
/ N& T& I" H* o; p6 ?- o  t! ~: D4 ?; l; C$ y( ^' t( B
    /*Create the Cavity Mill operation*/
8 Z; K$ P& ]& W6 B1 b4 e    CAM::Operation *operation = workPart->CAMSetup()->CAMOperationCollection()->Create(programGroup, methodGroup, toolGroup, geometryGroup, "mill_contour", "CAVITY_MILL", CAM::OperationCollection::UseDefaultNameTrue, "CAVITY_MILL");$ i2 r* K. v0 B

; E5 `1 F& o& b9 n7 u# R    /*Create the Cavity Milling builder*/8 v6 n) K  s4 b3 |1 e" T1 g3 l
    CAM::CavityMillingBuilder *cavityMillingBuilder = workPart->CAMSetup()->CAMOperationCollection()->CreateCavityMillingBuilder(operation);$ b: w3 \) W, q
# L9 F7 F- `" }: Y
    /*Get the solid body named PART*/
# z1 W* k8 j; D. Y& g$ G. g    tag_t partSolid = NULL_TAG;
; L9 }  |( ~+ U' @    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "PART", UF_solid_type, false, &partSolid);6 T1 {# ~8 o- b( o% n% A5 ~
    Body *partBody = dynamic_cast<Body *> (NXObjectManager::Get(partSolid));/ U8 n2 e1 G" n% P+ g1 m
    std::vector<Body *> partBodies(1);# Z0 H- i  x; y/ {6 r
    partBodies[0] = partBody;
5 h+ m* z; E5 Q3 A* j" W0 a0 E2 ?! C5 h# D  ^
    /*Set the part geometry*/+ ~3 I- _+ b$ t
    cavityMillingBuilder->PartGeometry()->InitializeData(false);8 S8 U5 W. s* {+ }4 R8 x) T, W
    CAM::GeometrySet *partGeometrySet = cavityMillingBuilder->PartGeometry()->GeometryList()->FindItem(0);7 Z* H, [9 o. K$ R  H0 V
    BodyDumbRule *partBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(partBodies);( z) D( B4 y; e7 y' Q6 w: b
    std::vector<SelectionIntentRule *> partRules(1);
+ [4 ]9 |+ W) c+ a( L    partRules[0] = partBodyDumbRule;
/ h7 @3 d: a% J1 @- ~    partGeometrySet->ScCollector()->ReplaceRules(partRules, false);9 @# Y- L3 J& f/ P0 c5 _3 }# L9 s8 n

: B# _/ d# ^; V. J    /*Get the solid body named BLANK*/( C6 U4 i+ r0 I' C  Q' J; X
    tag_t blankSolid = NULL_TAG;" q6 E% x. j# a& Z, d4 N
    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "BLANK", UF_solid_type, false, &blankSolid);3 D; w7 `+ p! P& T8 |% B& j# L
    Body *blankBody = dynamic_cast<Body *> (NXObjectManager::Get(blankSolid));3 Y( b7 T- i! D3 u  V$ E
    std::vector<Body *> blankBodies(1);
! X6 c) _0 a- \) x+ I. x    blankBodies[0] = blankBody;
5 t. P& e" V& N0 C( N0 T( A  o' F- Y0 e2 t( z
    /*Set the blank geometry*/
% t0 O# j" ?$ _9 `7 N  n    cavityMillingBuilder->BlankGeometry()->InitializeData(false);
" c  {1 _+ F! l, c9 W    CAM::GeometrySet *blankGeometrySet = cavityMillingBuilder->BlankGeometry()->GeometryList()->FindItem(0);) Z5 o' @* J1 U- C6 h' O4 U
    BodyDumbRule *blankBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(blankBodies);4 l9 H+ W; C5 Y* k0 u
    std::vector<SelectionIntentRule *> blankRules(1);: m$ t* A3 h  X* T  n8 n
    blankRules[0] = blankBodyDumbRule;
+ e( K' R2 |5 V    blankGeometrySet->ScCollector()->ReplaceRules(blankRules, false);
  X3 @% h8 l( f8 b
. A- N, ]$ T& D, z. ^# Z6 Y    cavityMillingBuilder->Commit();
1 S: W0 P6 n. n6 b$ f  l    cavityMillingBuilder->Destroy();) ~6 Z% P* `8 U) ^" C' g* X2 E& J  T

3 X% V5 q: S6 S6 P! U    /*Generate the tool path*/
: [/ ^* k$ l- C+ }! ^, E    std::vector<CAM::CAMObject *> operations(1);
9 i- V6 Z; O* q1 @) P4 K. U    operations[0] = operation;
3 e9 p; }! ^1 ~# f# q* p* t    workPart->CAMSetup()->GenerateToolPath(operations);
7 i6 r+ s0 j9 J0 F. }4 p) I+ x  H3 y; `& H. Y0 i
    /* Terminate the API environment */
& S1 ^6 U" j+ W0 N$ u. v    UF_CALL(UF_terminate());% }. f" V, X& _( [
}- @8 P2 x: U) F# q7 ]; O

2 m! |8 m$ n  r$ 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二次开发专题模块培训报名开始啦

    我知道了