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

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

admin 楼主

2018-2-22 13:28:03

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

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

x
获得零件指针
2 T9 R2 H  a) u+ i" k// 获得文件指针
$ }; P) c. U- bCATDocument * pDoc= NULL;2 q& A: T2 |1 R8 s) ?
CATFrmEditor * _pEditor = CATFrmEditor::GeTCurrentEditor();. B) v4 T" t! K6 d% z
pDoc = _pEditor->GetDocument();//这里得到了PART 环境下的文档指针
5 i9 A6 J3 m9 S0 T! aCATInit_var spInitOnDoc(pDoc);
. `7 l# ], Z2 f" F3 ]// 得到零件根容器" O4 j3 [8 g! e

& p% F" n  ~* \& s* GCATIPrtContainer * piPrtCont =
8 S. d  P. n% g) K$ m3 w1 @(CATIPrtContainer*) spInitOnDoc->GetRootContainer("CATIPrtContainer");6 r; @# K: K4 p% p/ |  ^9 f
// 得到零件指针) u0 c! O# B: t# [
CATIPrtPart_var spPart = piPrtCont->GetPart();8 r( G, p* k' w& Q% I
* d( W# J$ s0 [0 b7 ^3 ], v
创建草图
' p2 a9 I; G: }- H+ ?" E7 ?//初始化草图工厂
& `- P; \6 K: V" F# L0 h0 sCATISketchFactory_var spSketchFactory(piPrtCont);; W0 x# s3 L, h7 B! t. r6 b+ r
//在XY plane 上创建草图
3 X; e9 d; F, Z4 @6 Q3 V6 X5 ECATISketch_var spSketch = spSketchFactory->CreateSketch(spRefPlanes[1]));# N5 j! p* @" v1 d3 ^# \% v

1 J+ ^. k+ p3 G3 R: f% p创建草图几何- h' x- e4 ]- W& |! u% y
//首先声明编辑草图: W& r  w4 L$ Z; i  |4 Q
spSketch->OpenEdition();5 ^8 u; U! Q+ v. u& g/ u1 R5 b
CATI2DWFFactory_var sp2DFactory(spSketch);
% @2 P1 f9 W3 s8 Q2 Z5 ?, L9 f$ `//这里表示圆心点9 R1 e1 S& A  Y& }8 [+ w
double iPoint[2] = {0.,0.};7 q+ ]* r; [  i9 t
//下面创建圆圈
! H$ q$ v1 x" ^3 D/ \CATISpecObject_var spLine = spSketch ->CreateCircle(iPoint,_Editor003->GetFloatValue());. Y" G" Q2 e& l
CATI2DCurve_var spCurveOnLine(spLine);& `. u0 C8 T& @; t( o4 }
spCurveOnLine->GetStartPoint();
8 ^" k: W, S9 Q1 \5 s" r* @spCurveOnLine->GetEndPoint();) c1 k; `4 w  H
//然后退出草图:. o% n; m- K7 E7 Y& x
spSketch->CloseEdition();3 z, @" s( I; e( X
& o8 W& {$ T& N1 e" V# d0 |; ]

+ p8 Y. G0 a0 s8 @创建约束
' @( d6 |/ @) @$ I+ N8 i0 cCATI2DConstraintFactory_var spConstraint2DFactory(spSketch);
' R: A: N- |2 P# l$ g! y$ T, l& N//定义spLine1 的半径约束
3 C+ o! i5 B2 H/ p. T/ ]spConstraint2DFactory->CreateConstraint(spLine, NULL, NULL, NULL, NULL, NULL,+ Z; S+ G3 L# @- O# x
NULL, Cst2DType_Radius, 0, 0 );
* m+ B. A' B; ?+ b& ^; \+ n: K//定义spLine1 与坐标原点的同心约束% @1 L0 \/ }2 D. k! j
CATI2DAxis_var spSupport = NULL_var;
4 B& D+ @4 t$ r+ o. yspSketch->GetAbsolute2DAxis(spSupport);0 F) {; M+ Y# F0 q$ `/ J5 Z$ N7 v
/ C  ]  \0 ?. ~% P* x  d
spConstraint2DFactory->CreateConstraint(spLine, NULL, spSupport->GetOriginPoint(),
  _, o! w# M% a; XNULL, NULL, NULL, NULL, Cst2DType_Concentric, 0, 0 );# Z$ S; }6 R2 E  k  J' [
) E+ n3 M% H* U9 T

; D* e' U/ H7 ^; O/ B( x' |& d: d创建凸台
5 q4 f2 V6 w: C0 J3 Q5 j2 _" w// 从编辑框中获得援助的高度
+ |; \. y' l4 Z) L( v, cdouble firstLimit = _Editor004->GetFloatValue();, R5 ?% e- J- ^+ W4 L
double secondLimit = 0.;( P& S2 J7 [' b* U6 {4 l
//圆柱的轴向方向为Z 轴方向
+ Q0 B. S7 s/ [5 ?0 r& `4 U, Z3 i3 \CATMathDirection dirZ(0., 0., 1.);
( k# ]! L) F( l! F; f//初始化零件工厂
3 t/ o. e+ q' q9 o4 _* j9 xCATIPrtFactory_var spPrtFactOnPrtCont(piPrtCont);( H& Q: Y% t( G) r" g- c1 d) F: |8 f
//创建凸台
" V, x" R- K& m# _  E* RCATISpecObject_var spSpecObj = spPrtFactOnPrtCont->CreatePad(spSketch);4 \3 R9 n* o$ m
CATIPad_var spPadOnSpecObj(spSpecObj);
7 _% x# t6 x, M//设置拉伸方向0 r1 h; x& C8 E8 \
spPadOnSpecObj->ModifyDirection(dirZ);! k5 |9 S9 w- s
//设置凸台第一限制类型
( J! K* a5 e! r6 s) g1 o/ [) RspPadOnSpecObj->ModifyEndType(catOffsetLimit);9 N* \( m- A% u8 p: z4 a
//设置凸台的高度8 d) m5 M' y! [8 ?/ ]) H* {7 M
spPadOnSpecObj->ModifyEndOffset(firstLimit);3 b8 y' {+ E7 D( A4 b
//设置凸台第二限制类型
6 `$ d# q8 Y' f! u- f0 A" J, NspPadOnSpecObj->ModifyStartType(catOffsetLimit);
6 T9 m- ^& m" B# g' M/ ]spPadOnSpecObj->ModifyStartOffset(secondLimit);
8 g5 m" }5 \8 k* o' _# H9 f( g//将凸台添加在结构树中3 j; }; o  y) y/ X) C5 |
spSpecObj->Update();# [4 N1 }9 Q* _' w4 I
CATIGSMProceduralView_var ispProcView = spSpecObj;' R* U# Z& N% e
if (NULL_var != ispProcView ) {HResult rc = ispProcView ->InsertInProceduralView();}& Q6 r4 d( _& v5 m. t: V
7 Z. M* W' W$ e% @) b6 U; [
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了