PLM之家PLMHome-工业软件践行者

Catia二次开发源码分享:创建草图 Sketch,约束,曲线等

  [复制链接]

2018-2-22 13:25:32 3301 0

admin 发表于 2018-2-22 13:25:32 |阅读模式

admin 楼主

2018-2-22 13:25:32

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

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

x
有两种方式可以创建草图:5 I* D) c4 c3 l( ~
1.通过参考平面创建3 F+ i5 Q$ X- x. w" @; m
//获得参考平面/ d! j; Y- w6 o) y. x5 N
CATLISTV(CATISpecObject_var) spRefPlanes = spPart->GetReferencePlanes();
) }: A6 \) y# F//初始化草图工厂
0 Q7 D  D4 f4 t. x) S4 n) h8 VCATISkeTChFactory_var spSketchFactory(spContainer);5 j- e7 I$ J# V% p
//在XY plane 上创建草图! q0 ]8 R- }7 h1 {& r/ _- E2 G
CATISketch_var spSketch = spSketchFactory->CreateSketch(spRefPlanes[1]));$ _( u- `8 Z/ g9 }) C
2.通过原点和两个矢量方向
' ^+ L5 P$ S0 r该方法通过定义一个原点和两个方向 pH、pV 进行创建。& X$ g6 n# h; e& d
定义原点和方向:
% G3 i  D; D# c' {! ?$ v, f6 b3 }double pOrigin[3]={0,0,10};5 t$ N% J' I6 g+ ~! q9 b: j
double pH[3]={1,0,0};  l& B6 b$ ~" I: y/ `
double pV[3]={0,1,0};. z7 Z3 D1 m2 }9 I: Q0 {! }& j7 s! q
CATISketchFactory_var spSketchFactory(spContainer);
, {7 W/ k( E# L, o' ]CATISketch_var spSketch = spSketchFactory->CreateSketch(pOrigin, pH, pV);" [) Z! W0 {( h2 f: }* i

; U, T/ \( C0 k6 @2 B- s% @
$ G& h# l1 `4 I; ~; n; ksp2DFactory(spSketch);
# X/ [6 P3 b; R. J4 i. T//下面创建点% L1 O7 z- p6 m" z& u
CATI2DPoint_var spPt_bottom_left, spPt_bottom_right, spPt_top_right, spPt_top_left;. G/ c+ G) B) t% A+ a& [8 U+ s
double pt_bottom_left[2] = {10, 10};& M8 X* m9 a: Y: u  Y" f
double pt_bottom_right[2] = {50, 10};
) W- \; @% e* C0 `: H: R1 {double pt_top_right[2] = {50, 50};# J3 x) |$ t1 G7 t8 m6 G( D
double pt_top_left[2] = {10, 50};
3 ^# T7 ^" Y6 qspPt_bottom_left = sketch2DFactory->CreatePoint(pt_bottom_left);2 a% n; f' k& q: s1 ^$ j8 N
spPt_bottom_right = sketch2DFactory->CreatePoint(pt_bottom_right);
! A! W/ V( H* S0 FspPt_top_right = sketch2DFactory->CreatePoint(pt_top_right);
" b2 |" m) [4 }0 |. Q# a  m' t& v6 mspPt_top_left = sketch2DFactory->CreatePoint(pt_top_left);
& ?& Y3 o. m1 x//开始创建线
/ L/ \' q& P; \4 m9 {. j- r7 xCATI2DLine_var spLine1, spLine2, spLine3, spLine4;
* y  a  o9 r! t  Z6 ?0 a1 p/ CspLine1 = sketch2DFactory->CreateLine(pt_bottom_left,pt_bottom_right);2 s; ~# p+ R& X2 D
spLine2 = sketch2DFactory->CreateLine(pt_bottom_right,pt_top_right);. Q( P) O% j* |2 d
spLine3 = sketch2DFactory->CreateLine(pt_top_right,pt_top_left);+ ]$ p$ c1 e' x1 Z
spLine4 = sketch2DFactory->CreateLine(pt_top_left,pt_bottom_left);
/ I( e0 h  y6 p' @+ b0 @! [$ X//将线的首尾连接起来3 g, G% w3 K& ?) ?5 m  b$ F$ |& X6 ^

- F0 w& J! O) L( mCATI2DCurve_var spCurve1 (spLine1);/ G! n% ]* s9 F3 f* ]
CATI2DCurve_var spCurve2 (spLine2);* E& H2 M7 s2 x. ^
CATI2DCurve_var spCurve3 (spLine3);+ z% k; ^6 _, R4 }  A0 |# b
CATI2DCurve_var spCurve4 (spLine4);
6 ]5 H* j& W1 `: q8 YspCurve1->SetStartPoint(spPt_bottom_left);# i$ Q4 \+ |6 \" R1 c
spCurve1->SetEndPoint(spPt_bottom_right);0 g) E! v/ X+ W4 V- `
spCurve2->SetStartPoint(spPt_bottom_right);- U3 C, |  u: p4 I
spCurve2->SetEndPoint(spPt_top_right);
1 [& i- j) t) \1 p2 zspCurve3->SetStartPoint(spPt_top_right);$ b* v/ c! o* e$ L
spCurve3->SetEndPoint(spPt_top_left);
( p0 A+ w; a$ o( l9 CspCurve4->SetStartPoint(spPt_top_left);
$ T$ X8 Q- A" N, @# J3 ]spCurve4->SetEndPoint(spPt_bottom_left);. K2 ^7 @; o4 r# T0 N6 H* n
//然后退出草图:2 g+ R( h2 U* x: ?" }
spSketch->CloseEdition();
' S7 P. H* p/ `2 V
9 I' U% o# b( W# m8 {. h7 n! D
3 A) {# D% X6 g) `* @6 G
. c1 k& k3 F, f/ X创建草图约束1 J; Y3 {6 [6 m0 ?9 ?/ ]$ Z% p* A6 F
CATI2DConstraintFactory_var spConstraint2DFactory(spSketch);
; u9 F; r& ~6 @//定义spLine1 为水平约束
, S% D6 \0 e- e1 y+ lspConstraint2DFactory->CreateConstraint( spLine1, NULL, NULL, NULL, NULL, NULL,3 ?* ~# N* ?( R: d8 h) A7 n2 N
NULL, Cst2DType_Horizontal, 0, 0 );
- G( v" y" x. r9 l6 t//定义spLine2 为垂直约束
  J. a; U- D2 K- r$ h: zspConstraint2DFactory->CreateConstraint( spLine2, NULL, NULL, NULL, NULL, NULL,
( c' Q8 F8 V$ p4 ZNULL, Cst2DType_Vertical, 0, 0 );
& F" i" c9 m/ C0 |. z2 N* O//定义spLine3 为水平约束# ^( v+ F6 B7 A5 {
spConstraint2DFactory->CreateConstraint( spLine3, NULL, NULL, NULL, NULL, NULL,
: k$ K& ?! ]' _) cNULL, Cst2DType_Horizontal, 0, 0 );
+ a0 w8 h+ K& h//定义spLine4 为垂直约束1 L; O1 |0 F: X' g3 i( q- h9 F( x# \
spConstraint2DFactory->CreateConstraint( spLine4, NULL, NULL, NULL, NULL, NULL,
* Y3 @2 M+ q5 b8 V1 [* W/ hNULL, Cst2DType_Vertical, 0, 0 );
  y) _- }1 L( G/ O% Y//定义spLine2 的长度约束: V7 }& ?6 W% r
spConstraint2DFactory->CreateConstraint( spLine2, NULL, NULL, NULL, NULL, NULL,
) z1 h$ y) l" O! G& u  D4 R  {NULL, Cst2DType_Length, 0, 0 );# D& ^) w- U$ W7 O
9 k- ]: ?/ {8 M( @; @/ u' k4 r
//定义spLine2 与spLine4 的距离约束2 j, {2 n6 W4 m( A0 M
spConstraint2DFactory->CreateConstraint( spLine2, NULL, spLine4, NULL, NULL, NULL,
2 z9 g8 k: G' J; L9 b3 qNULL, Cst2DType_Distance, 0, 0 );8 w8 \8 p9 D/ g( f2 J7 i% V
//定义spPt_bottom_left 与X 轴的距离约束
7 r: E7 ]- x* x, C( fCATI2DAxis_var spSupport = NULL_var;
$ D7 r' E& q  j) p, jspSketch->GetAbsolute2DAxis(spSupport);5 \' f/ e* d5 p
spConstraint2DFactory->CreateConstraint( spPt_bottom_left, NULL,
# w* H1 C3 v9 \1 m  H1 q4 [2 AspSupport->GetHDirection(), NULL, NULL, NULL, NULL,Cst2DType_Distance, 0, 0 );
; i2 N5 S. {0 {1 y+ y//定义spPt_bottom_left 与Y 轴的距离约束% _4 v  E" F7 X2 l/ e0 B+ y
spConstraint2DFactory->CreateConstraint( spPt_bottom_left, NULL,! h: V% W- _1 S( Z5 L1 t- a
spSupport->GetVDirection(), NULL, NULL, NULL, NULL,Cst2DType_Distance, 0, 0 );$ |+ l' q( p/ r0 L6 Q$ R+ K! }

/ t# K8 q9 b2 ?* |
! H7 v6 O9 ?! \- E
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了