PLM之家PLMHome-工业软件与AI结合践行者

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

  [复制链接]

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

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

admin 楼主

2018-2-22 13:25:32

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

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

x
有两种方式可以创建草图:- o9 l  F7 j# ~, H' Y# A$ N1 F
1.通过参考平面创建2 Y& f* S$ C% f2 j
//获得参考平面; L9 L% ]  h: v: v2 K4 f
CATLISTV(CATISpecObject_var) spRefPlanes = spPart->GetReferencePlanes();
0 o- d. l5 M1 C- g' h//初始化草图工厂% d, A+ @# s4 |, E8 j6 _6 l: s
CATISkeTChFactory_var spSketchFactory(spContainer);
; X0 [' j& h% t2 b  J3 \//在XY plane 上创建草图
% V+ `( w% }; @( }* ^, F6 D" k; UCATISketch_var spSketch = spSketchFactory->CreateSketch(spRefPlanes[1]));  a5 b1 ]) x" ?# a6 J+ h! ^
2.通过原点和两个矢量方向* `! Y4 _; u+ \
该方法通过定义一个原点和两个方向 pH、pV 进行创建。+ v- \6 n& D7 `) d2 A
定义原点和方向:
7 r0 x. v+ U5 K9 tdouble pOrigin[3]={0,0,10};9 h' @' D; |6 Y+ m
double pH[3]={1,0,0};
# ?* N* X' i. J* z* j4 b& bdouble pV[3]={0,1,0};4 L1 O. n- _0 R
CATISketchFactory_var spSketchFactory(spContainer);  _) [7 n. ?, Q" j
CATISketch_var spSketch = spSketchFactory->CreateSketch(pOrigin, pH, pV);4 c* z& f" {( K( u# z+ i2 V6 `
+ `; o# f8 ]: j) s# J1 o5 ~$ W

- x" y/ @$ j# W0 Asp2DFactory(spSketch);
+ R- X: P$ v6 b, ^//下面创建点
+ g& A% ~% c$ N( m+ zCATI2DPoint_var spPt_bottom_left, spPt_bottom_right, spPt_top_right, spPt_top_left;
7 ?" ~" R! ]7 S! e& _8 Mdouble pt_bottom_left[2] = {10, 10};- h% T9 a3 y9 }! O+ @& T
double pt_bottom_right[2] = {50, 10};
4 O; |8 b" M5 m0 Kdouble pt_top_right[2] = {50, 50};( ?6 F3 d5 ~3 T8 H5 K# W
double pt_top_left[2] = {10, 50};* ^% ]5 e$ O1 _/ W
spPt_bottom_left = sketch2DFactory->CreatePoint(pt_bottom_left);
9 h1 S  }* ^% A* y1 N3 TspPt_bottom_right = sketch2DFactory->CreatePoint(pt_bottom_right);; G  i4 H& A6 Z4 s  n! u- _
spPt_top_right = sketch2DFactory->CreatePoint(pt_top_right);5 }& b1 {: R$ {& |& ~2 N: q
spPt_top_left = sketch2DFactory->CreatePoint(pt_top_left);6 `4 ~+ C" e/ h/ u7 v8 Q
//开始创建线! n7 [. y1 h+ Z9 C
CATI2DLine_var spLine1, spLine2, spLine3, spLine4;
* x5 K& H9 ~' P% G6 s9 m' jspLine1 = sketch2DFactory->CreateLine(pt_bottom_left,pt_bottom_right);0 G0 r6 I7 f" ~  j. @  o
spLine2 = sketch2DFactory->CreateLine(pt_bottom_right,pt_top_right);
$ {& P: E7 X% e" L4 X' }; nspLine3 = sketch2DFactory->CreateLine(pt_top_right,pt_top_left);
. m# K$ h8 ?5 n% k# d2 G( wspLine4 = sketch2DFactory->CreateLine(pt_top_left,pt_bottom_left);2 H( A$ ], ?( T- g/ N0 T
//将线的首尾连接起来
0 Y3 z8 \) [' E  ]* j. @# p
! T* U% e& z! c$ Q1 `CATI2DCurve_var spCurve1 (spLine1);8 d+ c, w/ @! a* K1 d8 u3 T* d
CATI2DCurve_var spCurve2 (spLine2);1 I& O+ ?. R# x- t  a
CATI2DCurve_var spCurve3 (spLine3);
: _# m2 r0 I8 O1 l% z  ]4 T4 MCATI2DCurve_var spCurve4 (spLine4);7 K, X+ x( X1 t7 R% N/ \- `, i
spCurve1->SetStartPoint(spPt_bottom_left);% o- l; K) a% ~+ S- c
spCurve1->SetEndPoint(spPt_bottom_right);
  a! b5 B: @, R+ [' bspCurve2->SetStartPoint(spPt_bottom_right);
5 w4 t$ Q3 `/ M. s0 J; x" L6 GspCurve2->SetEndPoint(spPt_top_right);  M( t. r  E2 o" U8 {) H$ X
spCurve3->SetStartPoint(spPt_top_right);
) m% J+ z# e8 n; y0 V% O& U* Y2 ospCurve3->SetEndPoint(spPt_top_left);
2 X* D9 [6 l% S& g& w1 tspCurve4->SetStartPoint(spPt_top_left);
7 j7 w4 t8 ?7 nspCurve4->SetEndPoint(spPt_bottom_left);: J/ }1 A4 W2 A/ S1 w5 q/ \! B- A
//然后退出草图:
* S- ~/ G0 Q3 m( _( W# d/ bspSketch->CloseEdition();
6 r: }; H. U0 `, T/ ]3 y. D( A' p, K1 ~3 f
- A4 H! }& R& ^: r1 X

* Y$ {) J1 c4 y, k+ ~& t! R创建草图约束
( _9 n, P0 H9 kCATI2DConstraintFactory_var spConstraint2DFactory(spSketch);
3 Y. L9 b, M8 j" y# g" U//定义spLine1 为水平约束
& W. W! x4 Q" s# c1 CspConstraint2DFactory->CreateConstraint( spLine1, NULL, NULL, NULL, NULL, NULL,
" G9 T/ L8 C1 S# pNULL, Cst2DType_Horizontal, 0, 0 );* E2 D1 t8 x5 p% Z- o
//定义spLine2 为垂直约束- y) z3 H4 j" k# S
spConstraint2DFactory->CreateConstraint( spLine2, NULL, NULL, NULL, NULL, NULL,
( w3 R" b8 `8 ^% B4 e' ]NULL, Cst2DType_Vertical, 0, 0 );
2 p3 r0 j6 V8 M" F* i//定义spLine3 为水平约束
' f8 l5 P4 T* ^& }5 `' mspConstraint2DFactory->CreateConstraint( spLine3, NULL, NULL, NULL, NULL, NULL,
4 _0 \0 Y5 _% f. H: |7 pNULL, Cst2DType_Horizontal, 0, 0 );
5 G1 T% o( q: L8 U8 `+ a  \+ J//定义spLine4 为垂直约束
$ T" R1 {+ N  a% h% QspConstraint2DFactory->CreateConstraint( spLine4, NULL, NULL, NULL, NULL, NULL,
) ?( B7 V$ e' l3 y% y, pNULL, Cst2DType_Vertical, 0, 0 );" p0 y# l8 Z0 b% B$ }( |
//定义spLine2 的长度约束
# ~. n& k0 g6 D5 tspConstraint2DFactory->CreateConstraint( spLine2, NULL, NULL, NULL, NULL, NULL,# f, R8 A) K6 L2 q8 Y
NULL, Cst2DType_Length, 0, 0 );
! x0 o5 |) w  @. D# n' l. r; {8 z
//定义spLine2 与spLine4 的距离约束0 `& v. B7 O/ k) H& E
spConstraint2DFactory->CreateConstraint( spLine2, NULL, spLine4, NULL, NULL, NULL,
- V' U9 i( O  [- l+ RNULL, Cst2DType_Distance, 0, 0 );6 g! @( [& c* a# V! r
//定义spPt_bottom_left 与X 轴的距离约束6 o7 K9 z& ]) `. ]; _$ Z  p/ J
CATI2DAxis_var spSupport = NULL_var;
4 o; ^( N! Q3 `6 rspSketch->GetAbsolute2DAxis(spSupport);
' M( q- Z4 S6 _+ lspConstraint2DFactory->CreateConstraint( spPt_bottom_left, NULL,  f2 E' T2 p  m! n
spSupport->GetHDirection(), NULL, NULL, NULL, NULL,Cst2DType_Distance, 0, 0 );
/ ~8 t2 w2 j# E6 `2 A( P+ b//定义spPt_bottom_left 与Y 轴的距离约束2 H7 w0 |  o1 o- H7 p
spConstraint2DFactory->CreateConstraint( spPt_bottom_left, NULL,
6 \. R. }4 b2 m! YspSupport->GetVDirection(), NULL, NULL, NULL, NULL,Cst2DType_Distance, 0, 0 );
$ e# X4 w0 ]% G9 m$ a
; W% R- }% r: k5 g7 o/ Q8 ?. @# ^6 v& A  M6 ^3 |
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了