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

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

[复制链接]

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

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

admin 楼主

2015-6-5 11:20:12

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

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

x
这段代码可以参考看看哦,显然比ufun的代码长点,但是是新的也是最好的方法- s* A0 J$ v- \3 i& [
) j; d. {* v) [9 G; Y# [

# n! A) _  n! n{
: H! d  T: r$ }) d  n) o2 ]    /* Initialize the API environment */
  F, D5 _! I9 H7 H( F2 \1 \    if( UF_CALL(UF_initialize()) )
5 @  i7 Q" O, l  Q) Z" N; b- A    {
4 I5 y( k1 F' _3 e& ~& `        /* Failed to initialize */
* k7 U( s9 v9 f7 o* ^        return;
0 t2 M0 n7 c" F. y" n$ A# l- m    }
  R6 A" Z" g  ~' m( ^. {% K  _& L, z7 s; I5 U7 U1 V
    Session *theSession = Session::GetSession();' m3 \' ^, I8 X8 B$ l. y% ^
    Part *workPart = theSession->Parts()->Work();
; M$ w: D3 \8 B5 `) j
' U: t% M" Z, i; V    /*Get the existing group objects to create the operation under*/
8 q4 X  D/ t8 N. w2 C! @    CAM::NCGroup *programGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("PROGRAM");5 b* l5 X0 E- t( p
    CAM::NCGroup *methodGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("METHOD");5 ~: z' w) I3 J. D" P" X) w
    CAM::NCGroup *toolGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("MILL");
8 F+ `( X7 u" l# G( X    CAM::NCGroup *geometryGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("WORKPIECE");5 r  j- n! X; H
6 y3 ?  Z$ d6 p2 H& B0 a! P% E
    /*Create the Cavity Mill operation*/
# e- g9 @8 G1 y# ~/ Z' w& x    CAM::Operation *operation = workPart->CAMSetup()->CAMOperationCollection()->Create(programGroup, methodGroup, toolGroup, geometryGroup, "mill_contour", "CAVITY_MILL", CAM::OperationCollection::UseDefaultNameTrue, "CAVITY_MILL");/ C4 p7 P  A0 u8 i1 P% |

% j  l1 o: W/ z' Z$ `# a, |    /*Create the Cavity Milling builder*/! w. p8 k' w. ]' M
    CAM::CavityMillingBuilder *cavityMillingBuilder = workPart->CAMSetup()->CAMOperationCollection()->CreateCavityMillingBuilder(operation);* O5 d8 ]' a+ J5 s8 m7 l5 t

0 d, N3 A) \" @5 X9 P  c- M" K+ K    /*Get the solid body named PART*/( q; U2 N0 X$ E) ]3 S5 W; h
    tag_t partSolid = NULL_TAG;  i) h& l. @: n, O, ]/ m) V
    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "PART", UF_solid_type, false, &partSolid);
3 _6 l0 t; p, x4 z    Body *partBody = dynamic_cast<Body *> (NXObjectManager::Get(partSolid));
* T2 ~4 V* X. g. q    std::vector<Body *> partBodies(1);$ j, ~- r/ W2 h3 t2 U5 y
    partBodies[0] = partBody;. |( Z8 E9 W) S. e2 t) P9 |: H
( {+ E. c* g! V9 |
    /*Set the part geometry*/
- L' V$ X6 w. h/ d5 y( h# E    cavityMillingBuilder->PartGeometry()->InitializeData(false);
2 O5 l0 q% O* z3 E    CAM::GeometrySet *partGeometrySet = cavityMillingBuilder->PartGeometry()->GeometryList()->FindItem(0);7 M7 E$ D1 \9 ?
    BodyDumbRule *partBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(partBodies);
. c) ]' g5 H2 \$ }, S    std::vector<SelectionIntentRule *> partRules(1);
$ f6 s# ]: u$ d% V    partRules[0] = partBodyDumbRule;
" X) Q5 ^1 \5 y/ V    partGeometrySet->ScCollector()->ReplaceRules(partRules, false);; b* ]6 g1 i& n! `0 s) \
: p7 A6 {9 H9 f* K* B: j; x9 E
    /*Get the solid body named BLANK*/( V: a/ q) m, f/ G0 j1 u1 L
    tag_t blankSolid = NULL_TAG;5 H* X/ K: E" [
    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "BLANK", UF_solid_type, false, &blankSolid);
' v2 s! w: t5 @6 g' [    Body *blankBody = dynamic_cast<Body *> (NXObjectManager::Get(blankSolid));
9 ?3 o" N" m( t3 o+ x! A. u    std::vector<Body *> blankBodies(1);
7 m& M: ~" q# p8 D" M    blankBodies[0] = blankBody;$ P3 ?$ C. p: b( b

2 ~- E' i# o7 h# `1 g3 S    /*Set the blank geometry*/
: s2 x/ G  m) W! U% Z: k  _    cavityMillingBuilder->BlankGeometry()->InitializeData(false);
% I. _: u2 y- Q6 q! J5 ]2 y    CAM::GeometrySet *blankGeometrySet = cavityMillingBuilder->BlankGeometry()->GeometryList()->FindItem(0);8 A6 ^+ t8 F. e& O* r
    BodyDumbRule *blankBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(blankBodies);
; \0 @( x! F& T; z    std::vector<SelectionIntentRule *> blankRules(1);
; Z9 U7 I! F8 j' J9 y    blankRules[0] = blankBodyDumbRule;- ~, K, t8 o" T" [3 n+ D
    blankGeometrySet->ScCollector()->ReplaceRules(blankRules, false);
7 K2 z' c3 A  H. k/ j9 q0 x- u+ n6 p$ k( a
    cavityMillingBuilder->Commit();1 \6 p3 w2 ~. @" T' v
    cavityMillingBuilder->Destroy();
5 W& ]7 N) l" ^" V' w0 i5 E4 _# C6 l, q& l+ @4 u
    /*Generate the tool path*/* X8 I- R) Q( u# Q, j( Q. C2 @$ q
    std::vector<CAM::CAMObject *> operations(1);
* a6 Z: ?% k$ f& g+ r% p6 d* c4 N    operations[0] = operation;; d; A7 V( W5 V3 ~& I
    workPart->CAMSetup()->GenerateToolPath(operations);7 P) e" x7 g. a! u

. _- t* m' r! t5 d/ f    /* Terminate the API environment */# E+ ~: R8 ~$ ~# q# E3 r3 K
    UF_CALL(UF_terminate());
  E0 C, S; l5 C+ B}$ ?6 g) L+ x. s
' X7 g7 t- o8 j) t6 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二次开发专题模块培训报名开始啦

    我知道了