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-国产软件践行者

Catia二次开发源码分享:创建圆柱体实例

[复制链接]

2018-2-22 13:28:03 2864 0

admin 发表于 2018-2-22 13:28:03 |阅读模式

admin 楼主

2018-2-22 13:28:03

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

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

x
获得零件指针: P4 |7 k/ K0 f, _. h
// 获得文件指针
* M" N. [- G$ }CATDocument * pDoc= NULL;
; s4 w3 J* o: A/ [8 C! vCATFrmEditor * _pEditor = CATFrmEditor::GeTCurrentEditor();
/ l3 L4 }' E* a0 E. w) F! G1 |pDoc = _pEditor->GetDocument();//这里得到了PART 环境下的文档指针
& x4 d- o! d$ N2 LCATInit_var spInitOnDoc(pDoc);9 I7 p9 s: o( Q  i4 D
// 得到零件根容器) n4 W* r6 ~; M4 H4 N
, j. a* Y1 `# O
CATIPrtContainer * piPrtCont =/ c1 z! A, \; F# Q! H+ H
(CATIPrtContainer*) spInitOnDoc->GetRootContainer("CATIPrtContainer");
$ a+ H5 T8 q5 \, V$ o& \// 得到零件指针4 ]* i% E" N" a# h; W1 O1 Z
CATIPrtPart_var spPart = piPrtCont->GetPart();
$ y' w; {; P( Z7 d2 L
) e+ G# {3 G; {$ K7 o( k1 _创建草图
. @# h+ j6 b) R/ O2 e//初始化草图工厂
! L: r, V, O7 a5 K1 a# ^CATISketchFactory_var spSketchFactory(piPrtCont);
. n+ D# R9 T" i3 o' ?$ C: R+ @//在XY plane 上创建草图
' x) x$ [) R# ~5 H3 y9 m% wCATISketch_var spSketch = spSketchFactory->CreateSketch(spRefPlanes[1]));
% y9 e, F7 ]+ C( r% \$ q' ^4 @- W7 K
创建草图几何+ `2 m" j+ y: Z$ Z9 a$ l! x, v
//首先声明编辑草图
( I$ R! g0 \& q2 O$ uspSketch->OpenEdition();
0 z4 W' t0 j0 W2 {8 GCATI2DWFFactory_var sp2DFactory(spSketch);
8 g  b) Z! d3 `* J9 H//这里表示圆心点  T0 L5 ~1 Q+ j
double iPoint[2] = {0.,0.};! j( X& f8 b7 H1 i8 c6 y
//下面创建圆圈. V, g/ u4 C1 R! N7 b: e: G
CATISpecObject_var spLine = spSketch ->CreateCircle(iPoint,_Editor003->GetFloatValue());
, W$ M$ k- U: S! cCATI2DCurve_var spCurveOnLine(spLine);& t' ~; f0 Q0 V! F
spCurveOnLine->GetStartPoint();
4 e9 y  }+ p! J* VspCurveOnLine->GetEndPoint();% m: i: @5 @7 `/ d
//然后退出草图:
8 v8 k5 m! i/ gspSketch->CloseEdition();) b1 s- c; u7 p' e- M

4 m3 p  O7 d: c5 p' s" c
0 G" f, |& Z( L# y- D创建约束
1 D. ^7 b; ?- O5 s( J% s2 L# ICATI2DConstraintFactory_var spConstraint2DFactory(spSketch);
9 m( }# j  Q+ c& K9 ^0 ~//定义spLine1 的半径约束
7 `0 q9 I8 {7 K  hspConstraint2DFactory->CreateConstraint(spLine, NULL, NULL, NULL, NULL, NULL,8 }% D( X& k6 I. m5 U
NULL, Cst2DType_Radius, 0, 0 );
7 o( T: D( F: ?9 q" A) o; F7 |//定义spLine1 与坐标原点的同心约束
# [6 w  S! V3 w' ^CATI2DAxis_var spSupport = NULL_var;3 z5 y- s% O  d  w  B& c
spSketch->GetAbsolute2DAxis(spSupport);
: B$ ^+ }, t+ Q/ P* e; t9 L4 M; F# D6 _3 I* ~
spConstraint2DFactory->CreateConstraint(spLine, NULL, spSupport->GetOriginPoint(),
4 p9 \$ u$ C( M8 dNULL, NULL, NULL, NULL, Cst2DType_Concentric, 0, 0 );
2 D* o8 x% p3 [, x5 x* J& \% z' Z2 {- g$ k% e! |4 K

+ I* {" d, s2 g- S创建凸台" T3 K0 g+ M: f  E( w7 K$ `  e% u& f
// 从编辑框中获得援助的高度
! b- C6 p+ F! b- Gdouble firstLimit = _Editor004->GetFloatValue();4 V- K3 F% `! J; r) F
double secondLimit = 0.;$ S, _, K* a' ^/ T  ^
//圆柱的轴向方向为Z 轴方向
* v$ a8 D" [' N4 NCATMathDirection dirZ(0., 0., 1.);3 R; `1 y" G# [
//初始化零件工厂  `" H" d$ F0 h4 e
CATIPrtFactory_var spPrtFactOnPrtCont(piPrtCont);) h! {, ?/ H9 A' I, S
//创建凸台
4 T! S) g' {; B5 {/ P; XCATISpecObject_var spSpecObj = spPrtFactOnPrtCont->CreatePad(spSketch);
+ d* h/ E* P0 zCATIPad_var spPadOnSpecObj(spSpecObj);
# s1 w1 b2 B8 x//设置拉伸方向
7 j6 @0 o7 n; q1 T( W* ospPadOnSpecObj->ModifyDirection(dirZ);
& T, ]  P( H' }) _$ u# y//设置凸台第一限制类型' }# f0 p0 ^" N
spPadOnSpecObj->ModifyEndType(catOffsetLimit);
* C! |* c) [3 P) z) Y/ k//设置凸台的高度( e' N/ t( n% j+ d5 z( l3 i% I' B
spPadOnSpecObj->ModifyEndOffset(firstLimit);. H2 Y2 u$ N. h5 o/ P: i! [+ w
//设置凸台第二限制类型0 N5 v- u9 G9 r
spPadOnSpecObj->ModifyStartType(catOffsetLimit);
, t5 K" Y! B6 S5 V  cspPadOnSpecObj->ModifyStartOffset(secondLimit);( F) N9 A  m3 t# a, `& |3 I
//将凸台添加在结构树中4 K8 U" [3 D: Y7 O3 \
spSpecObj->Update();- A" T1 }" ~$ E# r) h3 T
CATIGSMProceduralView_var ispProcView = spSpecObj;/ C1 N% ~* w. M. [
if (NULL_var != ispProcView ) {HResult rc = ispProcView ->InsertInProceduralView();}
. t6 E  ~  X7 P0 l0 i. P/ p* k4 h3 h8 r7 W, k
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了