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

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

  [复制链接]

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

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

admin 楼主

2018-2-22 13:25:32

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

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

x
有两种方式可以创建草图:# X& l6 H5 C9 S9 L- _
1.通过参考平面创建/ Y3 o. s1 o1 D5 b+ ~
//获得参考平面
$ A, m7 r6 a+ p; M6 d7 xCATLISTV(CATISpecObject_var) spRefPlanes = spPart->GetReferencePlanes();) X7 p9 r" |9 \% }; j. F" [
//初始化草图工厂6 W8 O+ I4 ?! x, n/ h5 b& B+ [8 ~+ D
CATISkeTChFactory_var spSketchFactory(spContainer);
4 z. R: [" S' Q' Q//在XY plane 上创建草图
) M, x# Y' R0 e) S) fCATISketch_var spSketch = spSketchFactory->CreateSketch(spRefPlanes[1]));
1 A) x' {5 |9 z+ z% G2.通过原点和两个矢量方向* D  _! t$ I) f9 e  o& N) J* |
该方法通过定义一个原点和两个方向 pH、pV 进行创建。
' y/ P  x- H! ]定义原点和方向:( g& K5 X; f6 Q0 b  q
double pOrigin[3]={0,0,10};
. H5 j- p! C5 E+ Q8 y: j, tdouble pH[3]={1,0,0};
5 z6 q: h/ h6 I' L# Ydouble pV[3]={0,1,0};
( x# Q, L3 Q; ]  pCATISketchFactory_var spSketchFactory(spContainer);3 Y* d) d! t8 V: s# S2 Y9 T
CATISketch_var spSketch = spSketchFactory->CreateSketch(pOrigin, pH, pV);3 Q4 H/ R+ }' _8 ^) m% V

) N9 @5 a' b+ ^! [+ p* {
8 D7 s  K! L8 lsp2DFactory(spSketch);7 i# \) U; H' R7 V4 ]5 z
//下面创建点1 I8 ^+ h, [8 e. m# L! W/ v& {
CATI2DPoint_var spPt_bottom_left, spPt_bottom_right, spPt_top_right, spPt_top_left;
9 m4 i+ C) }: bdouble pt_bottom_left[2] = {10, 10};
7 J1 Q3 G: m3 G; Gdouble pt_bottom_right[2] = {50, 10};
9 ?" |' t& e1 [1 c7 |0 A0 @+ v: Qdouble pt_top_right[2] = {50, 50};
5 p+ _0 P, j. O) ?; Adouble pt_top_left[2] = {10, 50};
1 D1 a- E- c0 g; n( lspPt_bottom_left = sketch2DFactory->CreatePoint(pt_bottom_left);
" R5 y2 v) e' ]$ Y- u6 gspPt_bottom_right = sketch2DFactory->CreatePoint(pt_bottom_right);
9 s% z8 |  Z' Z/ |+ N: FspPt_top_right = sketch2DFactory->CreatePoint(pt_top_right);
+ a7 a0 x& m2 D6 x* L' Y: E. J2 o/ hspPt_top_left = sketch2DFactory->CreatePoint(pt_top_left);! z  d, y! n5 Q) F5 Z+ ]! j7 \5 d$ g
//开始创建线
# ~7 Z1 S; O7 {9 j) z5 }* {CATI2DLine_var spLine1, spLine2, spLine3, spLine4;5 C' K4 J+ K; M  D
spLine1 = sketch2DFactory->CreateLine(pt_bottom_left,pt_bottom_right);/ r0 @7 r. k8 x+ z: ]/ g1 _
spLine2 = sketch2DFactory->CreateLine(pt_bottom_right,pt_top_right);
" t& A" U# K9 h5 E* \* ^spLine3 = sketch2DFactory->CreateLine(pt_top_right,pt_top_left);4 E% [) v2 w9 ?
spLine4 = sketch2DFactory->CreateLine(pt_top_left,pt_bottom_left);
) j( ?' \, g" v//将线的首尾连接起来5 X. d' o% ?/ x% p( m2 Y, a
9 `# l, f4 M/ W: J$ T
CATI2DCurve_var spCurve1 (spLine1);
  S4 G( l: i6 P) QCATI2DCurve_var spCurve2 (spLine2);& E% O" O- c$ A2 G2 d  [. ]
CATI2DCurve_var spCurve3 (spLine3);
; N$ P" S& O, M! ]# qCATI2DCurve_var spCurve4 (spLine4);
1 c9 I0 I) m8 b! j8 PspCurve1->SetStartPoint(spPt_bottom_left);
3 V4 x+ H/ M8 p# t+ v! L; _spCurve1->SetEndPoint(spPt_bottom_right);' n% T5 r0 c; @3 T$ c0 [" M% _, O
spCurve2->SetStartPoint(spPt_bottom_right);
( e# r# o1 s! v( h: \spCurve2->SetEndPoint(spPt_top_right);( P5 H: \) u" p! s# M
spCurve3->SetStartPoint(spPt_top_right);! D( W% C: e) R* n  v
spCurve3->SetEndPoint(spPt_top_left);% I* t9 ]9 w  o/ P+ x9 n3 ^
spCurve4->SetStartPoint(spPt_top_left);' {5 k8 W8 t5 B7 L4 x$ _
spCurve4->SetEndPoint(spPt_bottom_left);
  ]/ v1 \( d& F1 u5 R! y  l//然后退出草图:5 j1 M6 M5 I* t5 `: w
spSketch->CloseEdition();4 ]7 v# a  B7 Z5 E# |$ E
, |. ^* B! @& G$ C

+ v" F7 b: B: ?4 `6 G" Z0 M) [3 ]% Q* y% g5 K7 R
创建草图约束
7 c) C2 \: k) L) O8 z) p0 aCATI2DConstraintFactory_var spConstraint2DFactory(spSketch);( j7 I7 t* R2 L2 B, z9 J7 U7 {
//定义spLine1 为水平约束* N2 V% q5 B- n
spConstraint2DFactory->CreateConstraint( spLine1, NULL, NULL, NULL, NULL, NULL,' _- U9 d5 {3 i0 h0 _
NULL, Cst2DType_Horizontal, 0, 0 );
1 t2 T0 e. m+ O' `6 X" e  E* P//定义spLine2 为垂直约束
! n# i8 e' \7 Y# f! Z, ?* QspConstraint2DFactory->CreateConstraint( spLine2, NULL, NULL, NULL, NULL, NULL,
" E; U% E- \; q) B1 j4 KNULL, Cst2DType_Vertical, 0, 0 );
( ~, b5 t- v% |% w, f//定义spLine3 为水平约束
3 a4 t" e" _- r! r" lspConstraint2DFactory->CreateConstraint( spLine3, NULL, NULL, NULL, NULL, NULL,0 i: G) v4 N- a& h) A
NULL, Cst2DType_Horizontal, 0, 0 );
3 |3 ?2 d! B& r/ P& w7 c: W( O$ c; F//定义spLine4 为垂直约束
* U5 N" f" J5 R  A) H) ^. }: _spConstraint2DFactory->CreateConstraint( spLine4, NULL, NULL, NULL, NULL, NULL,) A- ]4 y" o# Y' v2 _
NULL, Cst2DType_Vertical, 0, 0 );
2 C" Z$ g' {- D9 v//定义spLine2 的长度约束
) B/ @. ~( p$ g! u0 N' s9 S% Q% HspConstraint2DFactory->CreateConstraint( spLine2, NULL, NULL, NULL, NULL, NULL,& i* {) n+ _9 N
NULL, Cst2DType_Length, 0, 0 );4 F* y1 T: C7 e5 z

9 _7 D6 _, c' ^8 G& H//定义spLine2 与spLine4 的距离约束# P5 l, d* d- Q6 `7 q3 M
spConstraint2DFactory->CreateConstraint( spLine2, NULL, spLine4, NULL, NULL, NULL,
, u* Q4 A/ E7 S4 n4 S: ]: MNULL, Cst2DType_Distance, 0, 0 );; W+ ~* D6 S0 ]
//定义spPt_bottom_left 与X 轴的距离约束
. }& N+ h! F. S% k8 GCATI2DAxis_var spSupport = NULL_var;
0 p- N( w- s5 g) G! aspSketch->GetAbsolute2DAxis(spSupport);
. x8 G) M* Q6 t( B& }# S0 c9 ]spConstraint2DFactory->CreateConstraint( spPt_bottom_left, NULL,7 j2 X8 ~& q0 l' [/ i/ x
spSupport->GetHDirection(), NULL, NULL, NULL, NULL,Cst2DType_Distance, 0, 0 );( J+ y  P" Y- T/ {+ m0 y( R6 w
//定义spPt_bottom_left 与Y 轴的距离约束
& h& M$ \& G% H/ O2 |" AspConstraint2DFactory->CreateConstraint( spPt_bottom_left, NULL,- }6 X$ _, V; C" k
spSupport->GetVDirection(), NULL, NULL, NULL, NULL,Cst2DType_Distance, 0, 0 );3 e7 r, P8 R+ q7 L
( f8 A3 ~) q0 m' u
1 {9 E* }' n! Q7 A, q! w1 q/ Y
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了