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

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

[复制链接]

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

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

admin 楼主

2015-6-5 11:20:12

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

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

x
这段代码可以参考看看哦,显然比ufun的代码长点,但是是新的也是最好的方法- Z; ?  Q/ `; I
6 Y' I# o$ G) o

  C0 t$ K. P; r3 }{
/ m, f( {' A7 o$ D* s9 f    /* Initialize the API environment *// Z  a8 w3 V$ D+ G/ T) ~
    if( UF_CALL(UF_initialize()) )
$ U9 c2 s/ u; s    {! |9 X; Z- b1 n% ?. V' C
        /* Failed to initialize */. H' x2 ~7 ]4 h( d" H0 Z8 P
        return;
* x% W4 Y* T9 \& ~/ n! ^    }6 M* _6 {/ y+ p

% X0 {  ?* P2 U5 p    Session *theSession = Session::GetSession();
5 n* M' z4 Z8 c' h8 g& \" n5 c    Part *workPart = theSession->Parts()->Work();
$ z5 C1 w* @; s* y4 M/ U7 w; {5 c5 R9 k: W7 L! w+ F6 @4 ^9 j
    /*Get the existing group objects to create the operation under*/
% N9 h1 M9 _6 Z    CAM::NCGroup *programGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("PROGRAM");
# V8 q' B$ L7 `8 r9 ^8 G    CAM::NCGroup *methodGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("METHOD");/ A9 y' I4 F: D6 E# Z) v
    CAM::NCGroup *toolGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("MILL");  K+ Y" T2 D$ x% d5 [+ P7 u
    CAM::NCGroup *geometryGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("WORKPIECE");
9 L1 d9 ]+ U, P' e' k2 @+ T* c7 K1 H* R0 \/ f" j5 n% Y- z, K; U8 v2 Q
    /*Create the Cavity Mill operation*/
: f; g/ }# w2 M; P( e    CAM::Operation *operation = workPart->CAMSetup()->CAMOperationCollection()->Create(programGroup, methodGroup, toolGroup, geometryGroup, "mill_contour", "CAVITY_MILL", CAM::OperationCollection::UseDefaultNameTrue, "CAVITY_MILL");
, j. `/ n! l& G" x% t1 T/ @: w- r/ F* ^/ z7 K
    /*Create the Cavity Milling builder*/) J2 i' f3 w1 ?- I$ b7 @) d
    CAM::CavityMillingBuilder *cavityMillingBuilder = workPart->CAMSetup()->CAMOperationCollection()->CreateCavityMillingBuilder(operation);
% f* W2 h5 X5 J. e2 d' ]& i5 I# O. A$ m
    /*Get the solid body named PART*/! @/ U. L" t; w# u1 G6 l
    tag_t partSolid = NULL_TAG;
4 W' e# M+ R& ]) e7 q    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "PART", UF_solid_type, false, &partSolid);! Z( G" A- G8 O6 ~2 s
    Body *partBody = dynamic_cast<Body *> (NXObjectManager::Get(partSolid));$ `, y3 m& s: U) O9 X
    std::vector<Body *> partBodies(1);
5 {# F9 Z+ z  R$ F" c& B    partBodies[0] = partBody;
( ]4 t0 V. N, u0 v7 j( ^5 m- D
( S2 x  |" y$ ^$ b% H0 a; q* ^    /*Set the part geometry*/* p3 z$ ]( M  P$ `9 ~$ q
    cavityMillingBuilder->PartGeometry()->InitializeData(false);7 V" m8 c/ U0 `) }; ]2 b5 `) w
    CAM::GeometrySet *partGeometrySet = cavityMillingBuilder->PartGeometry()->GeometryList()->FindItem(0);$ ?& ?& d3 L( @" l6 i
    BodyDumbRule *partBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(partBodies);) @" H- g$ e3 F& i7 y
    std::vector<SelectionIntentRule *> partRules(1);
- ?: \8 G* {% Q    partRules[0] = partBodyDumbRule;
  V8 d' a) {6 \6 ?/ x    partGeometrySet->ScCollector()->ReplaceRules(partRules, false);
9 m+ b4 S0 E# C& z9 h5 u7 L6 K0 D- H! I
    /*Get the solid body named BLANK*/
$ `  A1 x; h8 {- q' ~4 b    tag_t blankSolid = NULL_TAG;
6 D+ H5 Q) K" ]3 n$ r1 c2 t3 ~    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "BLANK", UF_solid_type, false, &blankSolid);5 p1 F, y9 t6 a( k: f7 U% e- ~
    Body *blankBody = dynamic_cast<Body *> (NXObjectManager::Get(blankSolid));* c4 i& Z0 [' i7 ~4 [+ Z
    std::vector<Body *> blankBodies(1);
( O* ~  k9 O5 z: p% d# q1 y    blankBodies[0] = blankBody;
/ v8 x3 s' N0 }3 Y% c/ R" [0 u* w8 Y0 y! C0 @$ o' k) J/ q4 j: m
    /*Set the blank geometry*/% B; M* G% w& Z5 `0 Q' z6 o( b# C
    cavityMillingBuilder->BlankGeometry()->InitializeData(false);
  s9 [, c0 ~: V    CAM::GeometrySet *blankGeometrySet = cavityMillingBuilder->BlankGeometry()->GeometryList()->FindItem(0);
8 W7 O" u4 ^$ X    BodyDumbRule *blankBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(blankBodies);
" ~) F* B; Y3 ]    std::vector<SelectionIntentRule *> blankRules(1);
* J2 f- a, f$ Y2 I) _    blankRules[0] = blankBodyDumbRule;
/ e+ \5 h2 ?$ ?. M+ q    blankGeometrySet->ScCollector()->ReplaceRules(blankRules, false);7 e4 B% h8 ~0 Y
, X- q: X" ?5 {+ d  E
    cavityMillingBuilder->Commit();
+ t, q; |9 `! R2 k: I2 X; K8 M    cavityMillingBuilder->Destroy();* W% I9 r- Y( e; c
5 g$ e& U% D' q$ p- [+ h
    /*Generate the tool path*/' d% n) k/ z% Z. O1 ]7 w/ t8 z
    std::vector<CAM::CAMObject *> operations(1);) Y" z' J6 L( Z0 Z  \6 t: {
    operations[0] = operation;1 ^& C( r; i3 o9 b! }4 o
    workPart->CAMSetup()->GenerateToolPath(operations);
0 |& n/ `* E$ q6 n
+ S0 S% f3 ?; T, S+ V    /* Terminate the API environment */$ t1 ]1 i7 f; B. x, P# o" \1 g& A
    UF_CALL(UF_terminate());+ @. B8 }  X$ S) h! N6 f
}5 A' V% }+ Y  U
4 C, c7 A: K0 u
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了