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

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

admin 楼主

2018-2-22 13:28:03

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

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

x
获得零件指针" s* r' f  w- u  S0 S9 p& i% H
// 获得文件指针
7 A$ ^; Q5 r" Z) vCATDocument * pDoc= NULL;0 g2 {4 C- y. a5 d
CATFrmEditor * _pEditor = CATFrmEditor::GeTCurrentEditor();
) o2 d  H1 o* H+ O, l, KpDoc = _pEditor->GetDocument();//这里得到了PART 环境下的文档指针
4 o5 s, L; a1 P; i" O2 ACATInit_var spInitOnDoc(pDoc);
1 S5 o, {5 n% S; G! s3 Q, c5 m// 得到零件根容器
. ?! B/ R1 R/ m5 u3 c( E8 I
+ m9 y1 a2 O6 c: p2 JCATIPrtContainer * piPrtCont =0 g' k' X  _+ f7 r* u& s/ M+ p
(CATIPrtContainer*) spInitOnDoc->GetRootContainer("CATIPrtContainer");0 j( X& H* X& H7 H" d4 ^# J( [. Z9 J
// 得到零件指针: d& Y. U! L1 M% e* ]0 b8 R
CATIPrtPart_var spPart = piPrtCont->GetPart();
+ g+ R$ g" K) O* U+ @. P- b( E  f  N/ c
创建草图; L- P( P! s; p) G: H# D9 \
//初始化草图工厂
1 `% {3 r5 {* M4 F% x) k0 tCATISketchFactory_var spSketchFactory(piPrtCont);
( E  |: G- m) b# V4 C8 C( }//在XY plane 上创建草图3 ~9 w# E) R$ Y! ]
CATISketch_var spSketch = spSketchFactory->CreateSketch(spRefPlanes[1]));
. M9 {! t  i5 [
" ~* e: q" |  \2 c8 k创建草图几何
5 N( t3 x* d3 a+ q* P% H//首先声明编辑草图7 ]* g$ W; l! s. G
spSketch->OpenEdition();7 v/ P6 p% ?: F/ U
CATI2DWFFactory_var sp2DFactory(spSketch);
( ]9 O% ]5 T* A; H9 ]( b8 M: @! V: n//这里表示圆心点
" }: P. O# ~- I+ A1 I* cdouble iPoint[2] = {0.,0.};5 i- [8 R2 m+ S* F/ }( e
//下面创建圆圈
- \% n8 d7 V8 b$ BCATISpecObject_var spLine = spSketch ->CreateCircle(iPoint,_Editor003->GetFloatValue());$ Z, w% K. l% n1 V
CATI2DCurve_var spCurveOnLine(spLine);
% l; ^- w# H5 |; K; y) k# S% jspCurveOnLine->GetStartPoint();
9 [3 T& {. W6 ^" G8 |9 C5 Q* f, z, C2 S8 wspCurveOnLine->GetEndPoint();
5 o" i7 U, A: b& z4 s; J; @//然后退出草图:- E8 U2 H  V7 I  g# J
spSketch->CloseEdition();
( K; f0 l# z4 t) {9 q; v, a+ b* r5 z5 h
* l9 m' S3 U6 G& f- H
创建约束
7 X" C1 V. ^$ @! e0 y4 [CATI2DConstraintFactory_var spConstraint2DFactory(spSketch);5 N. P3 V" V2 V2 k2 B
//定义spLine1 的半径约束* a8 g5 @& J) m2 D: v9 o9 z1 N  l
spConstraint2DFactory->CreateConstraint(spLine, NULL, NULL, NULL, NULL, NULL,
' I+ T9 |! q# I+ T, E9 o9 V* x' mNULL, Cst2DType_Radius, 0, 0 );% }" J) r$ h- |: U  [1 U5 a
//定义spLine1 与坐标原点的同心约束% V2 P! }. S3 a9 n
CATI2DAxis_var spSupport = NULL_var;
: K, r8 C5 d: G6 d9 m: ZspSketch->GetAbsolute2DAxis(spSupport);0 D" z* R3 y# N

) T+ ^+ X1 x+ n* @, p) QspConstraint2DFactory->CreateConstraint(spLine, NULL, spSupport->GetOriginPoint(),
/ i5 N7 |4 U& X% r3 {) D, \NULL, NULL, NULL, NULL, Cst2DType_Concentric, 0, 0 );
8 f* Y. X3 V2 v/ s0 n) ?
: R4 K! }* D7 U# I+ ]2 h5 C* m( d" G/ ?3 m; G; H, |
创建凸台% [5 E& l/ ?3 L8 W* @" L  e
// 从编辑框中获得援助的高度
3 z8 I' C: F3 E& J6 U2 J. B: _, ddouble firstLimit = _Editor004->GetFloatValue();5 d6 [5 K, b9 I1 E' T3 ?* q, u/ V
double secondLimit = 0.;
, p. R9 I* l( C( g9 x  ~+ Z//圆柱的轴向方向为Z 轴方向
' [/ W9 B; q! j5 p8 KCATMathDirection dirZ(0., 0., 1.);+ M( D& t& v7 @' L
//初始化零件工厂
# V5 r- |$ K. I3 K" a1 q" q6 mCATIPrtFactory_var spPrtFactOnPrtCont(piPrtCont);4 j0 i' Z, i" |7 {9 A9 L- U  f
//创建凸台: e! b; E1 ~; @: Q! g) v
CATISpecObject_var spSpecObj = spPrtFactOnPrtCont->CreatePad(spSketch);
* p2 Y! I' a2 w9 \! A- gCATIPad_var spPadOnSpecObj(spSpecObj);. a* F3 \% n  L7 E0 J* G, Y
//设置拉伸方向
! m; j$ u7 x* B1 E9 }0 W4 r' [spPadOnSpecObj->ModifyDirection(dirZ);
& M/ Z/ t# C) ?; }% [//设置凸台第一限制类型
! s- ^3 w& x% z% Q$ _- N8 Z8 IspPadOnSpecObj->ModifyEndType(catOffsetLimit);& G) W" Z: ^! p/ T4 z: b* Q
//设置凸台的高度
5 P# O/ E3 z% L0 |2 X7 cspPadOnSpecObj->ModifyEndOffset(firstLimit);5 M7 R+ [0 T& E; {) V, X0 T# Z2 R" g
//设置凸台第二限制类型
8 z  ~8 u7 u  J# W+ CspPadOnSpecObj->ModifyStartType(catOffsetLimit);0 a/ ?; `; M! \+ z' J
spPadOnSpecObj->ModifyStartOffset(secondLimit);
8 N, b) z# G* L# c9 S//将凸台添加在结构树中
3 k' C+ V" O# _. ]$ NspSpecObj->Update();: ~+ B) {1 D$ [9 O
CATIGSMProceduralView_var ispProcView = spSpecObj;
, z1 P7 [3 g: {  U+ R2 cif (NULL_var != ispProcView ) {HResult rc = ispProcView ->InsertInProceduralView();}
$ R0 R& z6 L% z* N8 q5 [, d0 z2 h: X0 X
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了