PLM之家精品课程培训,联系电话:18301858168 QQ: 939801026

  • NX二次开培训

    NX二次开培训

    适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术对于老鸟也值得借鉴!.

    NX CAM二次开发培训报名 NX二次开发基础培训报名
  • PLM之家Catia CAA二次开发培训

    Catia二次开发培训

    Catia二次开发的市场大,这方面开发人才少,难度大。所以只要你掌握了开发,那么潜力巨大,随着时间的积累,你必将有所用武之地!

  • PLM之Teamcenter最佳学习方案

    Teamcenter培训

    用户应用基础培训,管理员基础培训,管理员高级培训,二次开发培训应有尽有,只要你感兴趣肯学习,专业多年经验大师级打造!

  • PLM之Tecnomatix制造领域培训

    Tecnomatix培训

    想了解制造领域数字化吗?想了解工厂,生产线设计吗?数字化双胞胎,工业4.0吗?我们的课程虚位以待!

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

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

[复制链接]

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

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

admin 楼主

2015-6-5 11:20:12

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

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

x
这段代码可以参考看看哦,显然比ufun的代码长点,但是是新的也是最好的方法
) L7 ]$ h6 ?' R6 r
- h/ ~: Y9 E( E% P! {3 x7 b
7 u6 n+ j( U) x! C7 v2 \{# L+ S: x- e: K! q. }8 q
    /* Initialize the API environment */- I& O$ Y' G* q) ~1 a
    if( UF_CALL(UF_initialize()) )
1 {6 K) }) j# N  ~$ r& K: A    {1 W* W- T& ?- I0 F4 s/ r+ e
        /* Failed to initialize */
$ R. ?1 O$ W# x6 K! A" X2 q, p        return;* G' l( X* H  |" W% u5 c8 Q+ D
    }
0 S, R: R; g4 N% B! @2 m6 f2 @. x  Q& T  N- F3 v
    Session *theSession = Session::GetSession();. r3 h; p" k6 E: |  h% m
    Part *workPart = theSession->Parts()->Work();8 P; C3 ~2 i) H# g2 U2 O
  P& L0 n' ~( @, M/ f+ U$ k
    /*Get the existing group objects to create the operation under*/) H5 r) o: o5 w' [& E" U
    CAM::NCGroup *programGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("PROGRAM");
" J, u: w/ D  A  J' t8 C    CAM::NCGroup *methodGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("METHOD");
- U& y/ W1 f% g) M6 p- N4 w    CAM::NCGroup *toolGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("MILL");& B! c, w  S5 j0 W. h) d' c
    CAM::NCGroup *geometryGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject("WORKPIECE");) }6 h" D, P2 [: ?( q- s
$ ]% N' j5 ^" F: B1 a
    /*Create the Cavity Mill operation*/- |. K$ d! a. f+ I3 C
    CAM::Operation *operation = workPart->CAMSetup()->CAMOperationCollection()->Create(programGroup, methodGroup, toolGroup, geometryGroup, "mill_contour", "CAVITY_MILL", CAM::OperationCollection::UseDefaultNameTrue, "CAVITY_MILL");- O' l) y/ n5 R0 @( v

7 n4 r6 ~7 [" \- q' V5 D7 |2 o. Y    /*Create the Cavity Milling builder*/
  j2 I1 H7 J- F    CAM::CavityMillingBuilder *cavityMillingBuilder = workPart->CAMSetup()->CAMOperationCollection()->CreateCavityMillingBuilder(operation);# w. a4 v* P; t! `& }, s' z

4 b! d" `  y9 `4 A& ?    /*Get the solid body named PART*/
+ Q9 {( P  c0 B3 k8 ~    tag_t partSolid = NULL_TAG;
9 i  S9 K) y* p7 ]: Z    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "PART", UF_solid_type, false, &partSolid);, l* b5 d' O% ?/ T1 `/ v1 j
    Body *partBody = dynamic_cast<Body *> (NXObjectManager::Get(partSolid));
. v: `! S9 N  R) Z& ]! \    std::vector<Body *> partBodies(1);
% b; n6 Y. O2 e, \    partBodies[0] = partBody;
5 m1 }3 @& `1 y  {- z9 V/ J0 O9 }% Y9 p* a3 m8 S6 Y
    /*Set the part geometry*/! X  N+ `% _0 y1 m% g# \8 \$ J& k
    cavityMillingBuilder->PartGeometry()->InitializeData(false);: H8 j$ i0 p1 g$ ~/ n; `
    CAM::GeometrySet *partGeometrySet = cavityMillingBuilder->PartGeometry()->GeometryList()->FindItem(0);
" ?* |, r/ C2 ?4 Q    BodyDumbRule *partBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(partBodies);
$ X  a) [; W1 i! ?2 g/ {- J    std::vector<SelectionIntentRule *> partRules(1);
' |. o( v/ e, B& R4 P    partRules[0] = partBodyDumbRule;
6 j/ \5 q8 n1 x1 `) J% l+ R    partGeometrySet->ScCollector()->ReplaceRules(partRules, false);
/ {& j9 N0 l: z1 |8 a% ~. d+ ?2 r( f
    /*Get the solid body named BLANK*/) q: W* t/ d+ t8 X- ?% i5 K
    tag_t blankSolid = NULL_TAG;7 ?4 k6 |) N& v! x, C& E- p
    UF_OBJ_cycle_by_name_and_type(workPart->Tag(), "BLANK", UF_solid_type, false, &blankSolid);
, p! E1 e: u6 _$ d) _    Body *blankBody = dynamic_cast<Body *> (NXObjectManager::Get(blankSolid));
5 Q2 E8 i4 @* Z4 w    std::vector<Body *> blankBodies(1);; o9 \+ T, G+ I5 \+ \
    blankBodies[0] = blankBody;
9 D6 @- A) n4 E# t& E( b7 \4 T& o# F. Y) S
    /*Set the blank geometry*/
8 K7 a0 |8 k" {5 p! _  `- T    cavityMillingBuilder->BlankGeometry()->InitializeData(false);
: S4 b$ V/ W- h    CAM::GeometrySet *blankGeometrySet = cavityMillingBuilder->BlankGeometry()->GeometryList()->FindItem(0);; y9 u6 @* N1 [) ~
    BodyDumbRule *blankBodyDumbRule = workPart->ScRuleFactory()->CreateRuleBodyDumb(blankBodies);
& v* Y1 W% X. y" r, U    std::vector<SelectionIntentRule *> blankRules(1);9 v/ `( y: G5 o' C
    blankRules[0] = blankBodyDumbRule;
% l4 a- [5 S! V    blankGeometrySet->ScCollector()->ReplaceRules(blankRules, false);
4 s  C; @9 _" n7 u1 F! Y. Q% i
+ `' B# M; b. q3 L& ?& ?# j* O    cavityMillingBuilder->Commit();
6 p0 ?3 \  [" K2 Q8 u7 t    cavityMillingBuilder->Destroy();  _* b$ R0 O) ^- X. g: `
/ X, e0 l5 ^1 U: v, U
    /*Generate the tool path*/; [4 X/ k7 B6 E# O" G
    std::vector<CAM::CAMObject *> operations(1);
8 u' k, @) D( A. M7 l    operations[0] = operation;4 {$ ^  J! U* w8 q
    workPart->CAMSetup()->GenerateToolPath(operations);$ D8 j: N; a) K! F

# v1 S& ]! _! N+ @, v7 K1 `/ z  \    /* Terminate the API environment */; _* u/ d8 i5 [2 x3 D* T& q
    UF_CALL(UF_terminate());! @+ T) g8 |, j# [9 c- e
}4 c  d1 c/ ?% m- p- `( G5 `5 b. D

. O+ _% P* @6 }) [0 o; t  h
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了