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

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

[复制链接]

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

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

admin 楼主

2015-6-5 11:20:12

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

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

x
这段代码可以参考看看哦,显然比ufun的代码长点,但是是新的也是最好的方法
: s6 e' N- G! G8 _( Y
/ P8 E6 E8 U3 S+ P2 R5 Z5 B  J5 _! \$ Y# {& L1 m; T3 s
{0 o0 g( h* E% ~3 C/ W+ L
    /* Initialize the API environment */  u; D8 k: C* n7 w
    if( UF_CALL(UF_initialize()) )
; }: z$ W- F  W% Y    {" G6 Z) f% E7 P3 D; m* A
        /* Failed to initialize */8 P$ r, Y$ S% e" c
        return;
( ~4 w- Y% G7 _  U    }" U" X) q* m+ {/ d" p9 z

* D8 i% q  Z0 b2 r6 Q5 P    Session *theSession = Session::GetSession();
, b0 _0 y5 f/ q* s    Part *workPart = theSession->Parts()->Work();
/ F) `7 ?& D) Y9 @5 I' e7 M0 G! n) |6 X0 U. J2 ^) n8 B9 n
    /*Get the existing group objects to create the operation under*/8 }$ H, F$ p+ b) [/ i, P" G  @% \- {
    CAM::NCGroup *programGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("PROGRAM");
( y6 W- p% \- G# I3 A    CAM::NCGroup *methodGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("METHOD");
7 F* |4 d1 o2 }4 x8 n$ l    CAM::NCGroup *toolGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("MILL");
: C6 @9 O7 f" I0 @7 J, C$ i    CAM::NCGroup *geometryGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("WORKPIECE");+ _+ k, Y. a0 ^9 Z7 D

" ?) ?6 ~7 g( v    /*Create the Cavity Mill operation*/5 ?' G( }$ K) n3 h
    CAM::Operation *operation = workPart->CAMSetup()->CAMOperationCollection()->Create(programGroup, methodGroup, toolGroup, geometryGroup, "mill_contour", "CAVITY_MILL", CAM::OperationCollection::UseDefaultNameTrue, "CAVITY_MILL");( Y# Y8 M# ~8 k9 R; `! v* D8 U

  V, R0 h. \' a& b  s    /*Create the Cavity Milling builder*/' Q# v6 J9 O3 E+ r, t. |/ \
    CAM::CavityMillingBuilder *cavityMillingBuilder = workPart->CAMSetup()->CAMOperationCollection()->CreateCavityMillingBuilder(operation);
$ e5 V) g  ]2 k3 Z
5 A8 c' n. H, C2 ]9 _    /*Get the solid body named PART*/8 j/ [1 q8 H. A; E2 e7 f
    tag_t partSolid = NULL_TAG;1 ^/ S2 T: `0 k* v4 t! f
    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "PART", UF_solid_type, false, &partSolid);
  n1 R* g8 S1 M; _# i    Body *partBody = dynamic_cast<Body *> (NXObjectManager::Get(partSolid));  P+ V( t4 l) f9 R; w' c& }
    std::vector<Body *> partBodies(1);
' _; m+ ^+ s% p1 f- [    partBodies[0] = partBody;6 R2 M. L- V& t& b
3 e& S3 v3 ?6 Q& n! q
    /*Set the part geometry*/
! u" E5 b9 \; `    cavityMillingBuilder->PartGeometry()->InitializeData(false);
& A, d4 b: C4 j8 a    CAM::GeometrySet *partGeometrySet = cavityMillingBuilder->PartGeometry()->GeometryList()->FindItem(0);
4 v' X' Y5 q( v. v% }    BodyDumbRule *partBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(partBodies);( k* D- X1 @3 }3 y! a
    std::vector<SelectionIntentRule *> partRules(1);
7 x* b- d9 S, x4 ]3 K; R8 P2 A# Z    partRules[0] = partBodyDumbRule;
# d7 W# |) b- K7 b    partGeometrySet->ScCollector()->ReplaceRules(partRules, false);# U" Q) K5 @0 Z' L+ m' X
% U9 i! R+ V  A5 g
    /*Get the solid body named BLANK*/7 ?+ C3 _* W' f7 R
    tag_t blankSolid = NULL_TAG;/ t) p# y2 }# l3 g& z
    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "BLANK", UF_solid_type, false, &blankSolid);: j. ^, B9 y; e  r- V
    Body *blankBody = dynamic_cast<Body *> (NXObjectManager::Get(blankSolid));
8 `" |0 B4 D0 M9 d    std::vector<Body *> blankBodies(1);. Z; r+ S( j9 E7 H
    blankBodies[0] = blankBody;
% b; `8 U5 _: `: \5 j4 b
$ |1 L, m  h: C! o# B8 \( K    /*Set the blank geometry*/
; ?$ Y7 F) j7 |% a! j0 _5 Y" i& ]    cavityMillingBuilder->BlankGeometry()->InitializeData(false);0 e( `4 f8 c; i9 k  H
    CAM::GeometrySet *blankGeometrySet = cavityMillingBuilder->BlankGeometry()->GeometryList()->FindItem(0);
2 p7 v. T0 h& k3 C  O$ z7 x    BodyDumbRule *blankBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(blankBodies);
' P7 ^1 Y+ K5 E% O    std::vector<SelectionIntentRule *> blankRules(1);  n; c4 P) Q& ~  L( |5 r3 d
    blankRules[0] = blankBodyDumbRule;
# T' ?5 t; I% {1 ?) Z/ P0 T    blankGeometrySet->ScCollector()->ReplaceRules(blankRules, false);
% p1 p: _8 A% O; h$ L3 O" c' p9 ]. T; T. P+ h0 R" G# o
    cavityMillingBuilder->Commit();
. {' k$ u% n" k    cavityMillingBuilder->Destroy();
0 v9 D  P" A7 m; J+ W1 v' ]6 ]6 p$ h
2 c* G- b; t' y2 U    /*Generate the tool path*/* U2 I  ^2 h3 y6 h5 ]
    std::vector<CAM::CAMObject *> operations(1);# |& ~, {( e+ L6 `3 v' e
    operations[0] = operation;1 E+ G- P* b* V6 l2 C, L
    workPart->CAMSetup()->GenerateToolPath(operations);1 J, R5 Q1 u0 i$ K

# [$ i: x- L- f6 W1 k    /* Terminate the API environment */' z! L) S2 Y9 D9 \$ R( B0 N# {
    UF_CALL(UF_terminate());
" ]$ `& b/ x/ L' G! Z; I}: O7 m; B  J3 B  Q( f4 j6 B' a
8 r6 O, ^: M, }
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了