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

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

admin 楼主

2018-2-22 13:28:03

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

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

x
获得零件指针3 w  m5 r1 L! ~. j2 ]) J, {  Q
// 获得文件指针
5 d8 S& Q1 m6 y! \: b# ^) ACATDocument * pDoc= NULL;
4 |6 |7 w9 B; `4 y0 ~CATFrmEditor * _pEditor = CATFrmEditor::GeTCurrentEditor();2 f( _2 ]' N" m4 u
pDoc = _pEditor->GetDocument();//这里得到了PART 环境下的文档指针( {; ]. R8 v. ]$ g
CATInit_var spInitOnDoc(pDoc);
! ~: L/ s6 O& F) B9 u. ?  R// 得到零件根容器; I: N# x! o6 M  b/ W% X
& R* ^6 b0 P0 o0 J8 A+ e
CATIPrtContainer * piPrtCont =
0 K# ?  B/ F/ h" X" [(CATIPrtContainer*) spInitOnDoc->GetRootContainer("CATIPrtContainer");8 n' ?1 \( h( f( L/ ~: J
// 得到零件指针
& l6 x, p- O6 y" Q/ K$ mCATIPrtPart_var spPart = piPrtCont->GetPart();
( i; p: j: U4 T! O9 ^; \+ M  `
2 F& b9 Z- R4 N3 I; \创建草图
6 e! N/ |1 R6 ^6 d& k5 p//初始化草图工厂7 w( e/ z( r6 f# H, A! H
CATISketchFactory_var spSketchFactory(piPrtCont);
6 W; l" W" k- i0 Z//在XY plane 上创建草图+ v& {) Y# _9 J% d1 b! ?+ G. }: Q
CATISketch_var spSketch = spSketchFactory->CreateSketch(spRefPlanes[1]));
" B4 m& s  a+ [: S& J2 [# g  ]2 H; U* B. ~
创建草图几何4 A7 z7 l$ P+ ~' @) [# O3 l) W0 z
//首先声明编辑草图: ?6 q3 C0 }( F7 W5 v  j
spSketch->OpenEdition();
7 O7 a; j: ^& D3 u: v, E% }: [3 q+ rCATI2DWFFactory_var sp2DFactory(spSketch);. O4 A4 r1 \2 M4 |3 F6 G
//这里表示圆心点
& T" _- c7 ^+ E# B9 A( Rdouble iPoint[2] = {0.,0.};
9 b: f5 {3 r3 I5 B) `/ O//下面创建圆圈
* ~  K# V, s& z3 v- U! u* LCATISpecObject_var spLine = spSketch ->CreateCircle(iPoint,_Editor003->GetFloatValue());, p3 O7 q  [5 ]& ?
CATI2DCurve_var spCurveOnLine(spLine);: k+ ]- x+ A3 @% h5 u  i3 @5 F1 Y( @; H
spCurveOnLine->GetStartPoint();3 O* I' N5 l/ b9 E8 ?, M% p
spCurveOnLine->GetEndPoint();
) `% }1 |  F! J+ W# S$ N+ ~//然后退出草图:
% S$ K) Q: u' E1 n9 h, Y- ospSketch->CloseEdition();! l" ^% m) W3 s) f  Y" l

0 y$ w; W: i& c6 e8 b/ O' f6 h
) e7 I- K. ?8 ~. _; p8 `+ s创建约束
& s  e5 T* h/ O$ i4 TCATI2DConstraintFactory_var spConstraint2DFactory(spSketch);
* p( |+ `4 V3 t1 @//定义spLine1 的半径约束
# a1 l" E; f+ R# o; nspConstraint2DFactory->CreateConstraint(spLine, NULL, NULL, NULL, NULL, NULL,
+ V. n- [2 M6 W+ Q$ p) e  C, ~: ^NULL, Cst2DType_Radius, 0, 0 );
0 h2 b- q5 B  O' {//定义spLine1 与坐标原点的同心约束
# a4 G$ F7 s. a1 N' r6 i$ @CATI2DAxis_var spSupport = NULL_var;
6 s! D: h" U8 I# ~2 OspSketch->GetAbsolute2DAxis(spSupport);. v) j' q8 w; U3 u& t
# M' Y! ]6 K6 G. _( T
spConstraint2DFactory->CreateConstraint(spLine, NULL, spSupport->GetOriginPoint(),1 ^+ ~( q6 S& y. B8 x
NULL, NULL, NULL, NULL, Cst2DType_Concentric, 0, 0 );
2 H3 R* U+ A8 K" D0 M5 u! q
/ D. o9 D0 j, |8 c( `9 `$ H8 m) B9 E& M& t1 M
创建凸台
* E. u; ], f' j3 u8 C( @5 O3 E: k# y// 从编辑框中获得援助的高度+ k3 j1 Z! t( ~8 c
double firstLimit = _Editor004->GetFloatValue();  @% @: p$ e) a" t' t* S  f! M# K) }
double secondLimit = 0.;
9 e4 ~# I  C9 G4 q2 p5 D" V//圆柱的轴向方向为Z 轴方向0 m# ]* `/ t. {) l0 Y/ N3 U
CATMathDirection dirZ(0., 0., 1.);% |9 E. p1 T5 Y" E8 ~
//初始化零件工厂
* r! f! L4 n' k; J; D; O1 L1 NCATIPrtFactory_var spPrtFactOnPrtCont(piPrtCont);0 g& B3 b% @3 a( ?
//创建凸台
8 b/ Y, V, V$ JCATISpecObject_var spSpecObj = spPrtFactOnPrtCont->CreatePad(spSketch);
4 U5 W4 n; _8 F7 u) u" tCATIPad_var spPadOnSpecObj(spSpecObj);: Z" s5 Z' `& l6 E  R/ F2 L/ L
//设置拉伸方向
* {' b2 \2 E. V0 A* Y$ O0 jspPadOnSpecObj->ModifyDirection(dirZ);. q; z: O0 p+ p5 K. B! h
//设置凸台第一限制类型
) A& x; G  i8 t  u* KspPadOnSpecObj->ModifyEndType(catOffsetLimit);# X' o9 a* g# C2 n( R
//设置凸台的高度  d. v2 u& `/ P; ^
spPadOnSpecObj->ModifyEndOffset(firstLimit);
' W+ [3 `" b3 P- q7 _4 V* C//设置凸台第二限制类型
% _. |) _' N! T4 A7 L3 LspPadOnSpecObj->ModifyStartType(catOffsetLimit);
7 b2 c# f% T. c) ^' rspPadOnSpecObj->ModifyStartOffset(secondLimit);
/ m/ f2 f$ I' J& n9 x//将凸台添加在结构树中
- ~. s% @/ w! b# n5 b  |spSpecObj->Update();
# X  m" F' g$ R' ~- NCATIGSMProceduralView_var ispProcView = spSpecObj;
6 c! H! M; q# J( x0 J5 `1 T9 uif (NULL_var != ispProcView ) {HResult rc = ispProcView ->InsertInProceduralView();}
; i/ j* Z) a5 \/ `: w1 T! S2 n) d; ?# l5 u7 J4 m
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了