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

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

[复制链接]

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

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

admin 楼主

2018-2-22 13:28:03

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

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

x
获得零件指针0 y7 Z$ r; @+ {# m$ N" J7 V; N
// 获得文件指针
8 O' F) N6 r" r! \: ?# g& mCATDocument * pDoc= NULL;: j/ H9 p5 j% j5 N
CATFrmEditor * _pEditor = CATFrmEditor::GeTCurrentEditor();
  K, t% R2 k' X/ f( o- ^9 h  xpDoc = _pEditor->GetDocument();//这里得到了PART 环境下的文档指针
1 [& a! J) p7 `$ j: P9 C- G2 u) BCATInit_var spInitOnDoc(pDoc);
8 C7 H6 |- w& M( q0 V6 C, i4 i// 得到零件根容器/ t; Z8 X# m& n. \! e& Q& G

% L5 q& A+ x! Z% `1 qCATIPrtContainer * piPrtCont =. A& i8 U) ~  c' F" Q+ {/ _; `
(CATIPrtContainer*) spInitOnDoc->GetRootContainer("CATIPrtContainer");4 R6 E3 B. C: V7 k9 [3 ?7 j
// 得到零件指针
+ t; [2 |* d8 @CATIPrtPart_var spPart = piPrtCont->GetPart();
+ b* x4 `$ v( P  l+ f1 ~# N, l
( m7 S; ?. \7 E( J3 n8 G+ Y创建草图* @, v; V) E' X" {( _; _. s. S& F5 \
//初始化草图工厂3 k& `0 |: C& O6 L* j
CATISketchFactory_var spSketchFactory(piPrtCont);: ?+ U+ p# v$ M$ t; L
//在XY plane 上创建草图
$ [9 V3 M5 q3 O& mCATISketch_var spSketch = spSketchFactory->CreateSketch(spRefPlanes[1]));
; t* v" Z- |' `3 W/ t' y6 B. P9 V- U* H* n/ T
创建草图几何$ ?" O2 ?& P1 e2 e
//首先声明编辑草图
. A+ R0 b6 y: Y+ h2 {spSketch->OpenEdition();
& q7 j# E5 K' W/ f0 g0 q& JCATI2DWFFactory_var sp2DFactory(spSketch);: I% k: v5 b! z( \, Q
//这里表示圆心点
! ]; O. H* u  U$ o) ~& ~4 bdouble iPoint[2] = {0.,0.};
  {- y% U3 i# ~8 w* D3 O* Z9 C//下面创建圆圈  x+ Z. z- k5 a& w" j; [; |
CATISpecObject_var spLine = spSketch ->CreateCircle(iPoint,_Editor003->GetFloatValue());8 J* s6 n6 M/ v6 G3 O, L
CATI2DCurve_var spCurveOnLine(spLine);* a( l8 X' P" N
spCurveOnLine->GetStartPoint();) T8 l$ m$ {9 T7 @
spCurveOnLine->GetEndPoint();
& ~5 V& U+ y& |% q+ G: {//然后退出草图:
/ C6 H1 ^& I7 E  `spSketch->CloseEdition();
5 x5 V5 R7 W! n# E9 j; ?% j/ ?, N9 V4 b: X  h8 Q8 _) p* H
1 ?" N4 {6 g: D5 }* f; w
创建约束
  x$ c: t( h* TCATI2DConstraintFactory_var spConstraint2DFactory(spSketch);
4 ~( Z  K  r! ?- r$ b- W//定义spLine1 的半径约束
3 Q! I8 [) q8 d0 mspConstraint2DFactory->CreateConstraint(spLine, NULL, NULL, NULL, NULL, NULL,2 ~8 J: t1 |# U$ P. Y1 X/ |
NULL, Cst2DType_Radius, 0, 0 );4 Z7 E4 V7 }9 h' I* T8 }/ P
//定义spLine1 与坐标原点的同心约束
8 D6 L3 \4 _2 U- Z: T0 Y1 b4 XCATI2DAxis_var spSupport = NULL_var;9 T# Q: ^4 A2 f0 |
spSketch->GetAbsolute2DAxis(spSupport);
9 ^8 y" p5 @# Q6 p) x
* [" l) u: [1 w: DspConstraint2DFactory->CreateConstraint(spLine, NULL, spSupport->GetOriginPoint(),
' Q( u) s& N$ _0 o& A2 sNULL, NULL, NULL, NULL, Cst2DType_Concentric, 0, 0 );
: ?$ a9 B- q! [
! V! ^# A8 ^- b# ]# Y: @4 T* |( w" S
创建凸台, Z4 \9 z/ q1 l2 j/ s
// 从编辑框中获得援助的高度+ `  Z: E0 |2 t" |+ r# Q: V
double firstLimit = _Editor004->GetFloatValue();
& O$ p% T/ }) C; e2 G: G% g5 ?double secondLimit = 0.;5 p4 L& `, L% c4 I' H, I8 B
//圆柱的轴向方向为Z 轴方向
3 L. u% V+ k6 f+ S- N5 q+ ]CATMathDirection dirZ(0., 0., 1.);
" @& P( y( B; o  w3 z& a  K) f5 Z6 T//初始化零件工厂
  b8 m0 v6 b" ^/ k/ w, B/ X6 ECATIPrtFactory_var spPrtFactOnPrtCont(piPrtCont);
' \' r) P% H2 m, u. q//创建凸台
1 h7 L) i( K, F1 r" n- MCATISpecObject_var spSpecObj = spPrtFactOnPrtCont->CreatePad(spSketch);
# W; S8 I! T& J% o1 rCATIPad_var spPadOnSpecObj(spSpecObj);8 W& y2 s  S9 J% p7 j, ~
//设置拉伸方向
  _, n2 _) e  F$ J( dspPadOnSpecObj->ModifyDirection(dirZ);' O. j2 `# W5 r7 x# f
//设置凸台第一限制类型% i+ z4 c! z" f
spPadOnSpecObj->ModifyEndType(catOffsetLimit);2 _' @  f) i" `9 a
//设置凸台的高度
( P4 W' C: n5 H3 O: ]1 lspPadOnSpecObj->ModifyEndOffset(firstLimit);  I1 c! E/ `1 }- V: U5 W
//设置凸台第二限制类型
' y3 @  {9 t- U) V6 KspPadOnSpecObj->ModifyStartType(catOffsetLimit);
" W% Y6 I+ X- @: s* s& cspPadOnSpecObj->ModifyStartOffset(secondLimit);
' y9 P: s4 t& x+ H: ^* G//将凸台添加在结构树中
2 v: L' N9 \. i7 u. t5 k9 MspSpecObj->Update();7 S) P; Z  A  S3 E6 x3 q. ^7 X1 G
CATIGSMProceduralView_var ispProcView = spSpecObj;
6 l& G% w( [% D$ gif (NULL_var != ispProcView ) {HResult rc = ispProcView ->InsertInProceduralView();}& M+ ]7 ?. C% T  v  k
% f1 |9 r! t7 c
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了