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 2801 0

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

admin 楼主

2018-2-22 13:28:03

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

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

x
获得零件指针) r; ?3 s# P+ T6 O6 M
// 获得文件指针
1 _+ `8 P& ^. ~  \8 sCATDocument * pDoc= NULL;
( D. ~* G' ^! {- a# e: CCATFrmEditor * _pEditor = CATFrmEditor::GeTCurrentEditor();
/ i+ W% b8 l* Q" ~2 i) bpDoc = _pEditor->GetDocument();//这里得到了PART 环境下的文档指针
- L2 }9 b1 p9 ?( }0 w/ \& b1 U+ dCATInit_var spInitOnDoc(pDoc);
$ T& l6 P+ V$ o// 得到零件根容器  i8 N6 J1 e( {: c5 u, d; D: p
' ~8 M# G  s* E& M  f
CATIPrtContainer * piPrtCont =. B+ F% a0 A/ Z3 u1 A
(CATIPrtContainer*) spInitOnDoc->GetRootContainer("CATIPrtContainer");4 B$ a- t- G$ p. m; d- P6 s
// 得到零件指针. Q; M2 \0 ~, ?  y& D" L9 |9 r- L
CATIPrtPart_var spPart = piPrtCont->GetPart();
6 r/ S0 f( J% }7 b, ~7 U% [; m0 ^+ z. L6 h6 [/ F$ d# A2 v# ^2 u9 _
创建草图
* G" {' R  n: }( ?  K; ], M8 Y# K//初始化草图工厂
  c5 S! L3 b7 Z2 VCATISketchFactory_var spSketchFactory(piPrtCont);
: c& j1 S& I. f//在XY plane 上创建草图2 x5 e9 Z  s8 i  l% D( F' ~0 H
CATISketch_var spSketch = spSketchFactory->CreateSketch(spRefPlanes[1]));
3 J. P: ?0 {  |+ z* Z  h+ E. z4 B  i/ c1 x, u. ^
创建草图几何
, t3 f3 S7 m  _. a) {//首先声明编辑草图
4 f. F2 r( p0 w" |& A) kspSketch->OpenEdition();) c5 f# K0 M2 v. o) C
CATI2DWFFactory_var sp2DFactory(spSketch);! Q- O# M6 Z  o  q9 s3 b
//这里表示圆心点) t  C, n/ v+ Q( p8 P6 T6 J* W
double iPoint[2] = {0.,0.};/ p( V# q5 P; ~5 ?  l: j3 K
//下面创建圆圈
3 T' a  l, g% jCATISpecObject_var spLine = spSketch ->CreateCircle(iPoint,_Editor003->GetFloatValue());5 e7 P6 F+ l) L' N* h* g. U1 x
CATI2DCurve_var spCurveOnLine(spLine);4 k3 y4 p% W0 g: d) P5 X3 b
spCurveOnLine->GetStartPoint();
5 f! I8 |4 V8 Q% s" NspCurveOnLine->GetEndPoint();
1 p" n* t) ^/ L3 O, M//然后退出草图:& Z: h4 A  q) ?: o$ U; \
spSketch->CloseEdition();
( i1 J. n+ x' {% {6 c3 U" W/ {, \; ~

" l- l( }- _9 b3 N3 o2 D  x创建约束) l# j5 ]' ?; F1 n, C) |: [
CATI2DConstraintFactory_var spConstraint2DFactory(spSketch);
) t* p0 [& V5 q; F& n( }* g  m//定义spLine1 的半径约束
) @( C& ^" u& R* s0 KspConstraint2DFactory->CreateConstraint(spLine, NULL, NULL, NULL, NULL, NULL,
5 |  B+ X) w* Q8 N* WNULL, Cst2DType_Radius, 0, 0 );& h% D: _/ R) m; C
//定义spLine1 与坐标原点的同心约束
+ Q  ~2 P( v! QCATI2DAxis_var spSupport = NULL_var;3 ]3 U+ m0 R; p( Z+ S, B
spSketch->GetAbsolute2DAxis(spSupport);. |0 `/ S1 |6 N
9 \; r2 M. A7 q  U
spConstraint2DFactory->CreateConstraint(spLine, NULL, spSupport->GetOriginPoint(),6 O5 U6 h& y. F4 O) d( S
NULL, NULL, NULL, NULL, Cst2DType_Concentric, 0, 0 );( M( O4 @0 P. W2 E7 D8 D( v3 p

' ^/ ]6 y4 j( \
" A; j. t% P4 W+ ^创建凸台7 h( M) p, V8 A- l
// 从编辑框中获得援助的高度/ p. `$ k0 X# A, \+ K% W  }
double firstLimit = _Editor004->GetFloatValue();/ X+ k( y/ Q3 g% }- |$ M# s7 {
double secondLimit = 0.;) [) e4 i; H0 ~5 Q, ?, O
//圆柱的轴向方向为Z 轴方向
; o! s1 h  r+ c9 D' ACATMathDirection dirZ(0., 0., 1.);' P7 o& X9 l  a% M8 `) O9 m/ T$ v
//初始化零件工厂- j9 j% z: W7 h0 M+ O3 c9 P( U, w
CATIPrtFactory_var spPrtFactOnPrtCont(piPrtCont);
  v& R& c2 }) h8 R- P* P  ?//创建凸台
7 k4 f, A! U! f, W; A/ VCATISpecObject_var spSpecObj = spPrtFactOnPrtCont->CreatePad(spSketch);. C  V& _$ H1 X, z! k
CATIPad_var spPadOnSpecObj(spSpecObj);4 j0 j6 V# @; m! i2 y5 [: N7 A, g
//设置拉伸方向
1 u! S0 b. G+ X# J6 p0 E  \0 ~) ~6 lspPadOnSpecObj->ModifyDirection(dirZ);
9 W. {, h9 @$ K% K+ k//设置凸台第一限制类型
3 c0 N  G0 X1 W0 ~' c% J7 RspPadOnSpecObj->ModifyEndType(catOffsetLimit);
; `1 S* }. Q$ [//设置凸台的高度2 B/ _; x/ ]2 h+ M1 e7 K
spPadOnSpecObj->ModifyEndOffset(firstLimit);7 P( h# \' c7 J, b3 j
//设置凸台第二限制类型
7 W% u2 r- Y5 o' ~# lspPadOnSpecObj->ModifyStartType(catOffsetLimit);/ P7 P. P% b; e* j- K' V; j& O1 b
spPadOnSpecObj->ModifyStartOffset(secondLimit);1 a' y7 a# \- m. A, v
//将凸台添加在结构树中) Q& J, m2 X; {; z( ^$ i% b$ l: O
spSpecObj->Update();
- E+ j& u  I/ U/ H1 ICATIGSMProceduralView_var ispProcView = spSpecObj;, V% v: _1 a/ p3 U" n" I  x9 j: d
if (NULL_var != ispProcView ) {HResult rc = ispProcView ->InsertInProceduralView();}  ^* Q2 ^# H) S
. f- f0 s1 t! Y$ w4 [
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了