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

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

  [复制链接]

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

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

admin 楼主

2018-2-22 13:25:32

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

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

x
有两种方式可以创建草图:" g3 g7 @% O/ E- P) B$ O
1.通过参考平面创建
* K: i. E' g# }//获得参考平面6 F7 @1 h4 [* e. H  U! ]
CATLISTV(CATISpecObject_var) spRefPlanes = spPart->GetReferencePlanes();
7 A/ }0 s. h  i, `6 x: P//初始化草图工厂
; U- u0 h3 C& W% v; a& dCATISkeTChFactory_var spSketchFactory(spContainer);2 X3 H/ S6 f' v7 k- e
//在XY plane 上创建草图/ O; l; @# Y9 `4 W& M
CATISketch_var spSketch = spSketchFactory->CreateSketch(spRefPlanes[1]));
7 ^, _& P6 x* W) J2.通过原点和两个矢量方向
# L' {" {% S- r; D* u6 x3 E# J该方法通过定义一个原点和两个方向 pH、pV 进行创建。- ~- x' ~* e$ @
定义原点和方向:
2 H& L; _' w& ^double pOrigin[3]={0,0,10};
: B- N2 _+ H# Mdouble pH[3]={1,0,0};
- h+ |  e& G! y6 b  qdouble pV[3]={0,1,0};: a) |+ r5 C  e. |: A( c
CATISketchFactory_var spSketchFactory(spContainer);' u# n% l2 z" v; ^) D% z  k
CATISketch_var spSketch = spSketchFactory->CreateSketch(pOrigin, pH, pV);
+ @$ h! W& B- K3 H$ f' f, D: j7 f6 a6 r. I0 o# e. w

% G8 o$ K. Q! N/ z7 u0 l4 H5 z0 {sp2DFactory(spSketch);
1 D- B9 N4 H: M% \  [! b9 G//下面创建点! e- w1 ]% }3 ?, n# P$ x
CATI2DPoint_var spPt_bottom_left, spPt_bottom_right, spPt_top_right, spPt_top_left;$ v; K0 l' O& P6 e
double pt_bottom_left[2] = {10, 10};
- B7 n; L) {  f- r" U1 |0 F# zdouble pt_bottom_right[2] = {50, 10};
& \7 i  k7 @' r% b9 T9 c% O4 Adouble pt_top_right[2] = {50, 50};( k" s7 Y7 K5 n# U- \0 h6 r8 q
double pt_top_left[2] = {10, 50};$ M+ Z7 N- j# `# F# W0 _
spPt_bottom_left = sketch2DFactory->CreatePoint(pt_bottom_left);* U9 K& C% ?6 A
spPt_bottom_right = sketch2DFactory->CreatePoint(pt_bottom_right);
& R, f& I% j' D3 D- i5 X& d% t! I0 }spPt_top_right = sketch2DFactory->CreatePoint(pt_top_right);/ `* w; o! S9 V9 r4 i, A& {: D
spPt_top_left = sketch2DFactory->CreatePoint(pt_top_left);( ?5 l7 I) r0 X' }( S8 y
//开始创建线
+ r- J6 u5 |7 g9 uCATI2DLine_var spLine1, spLine2, spLine3, spLine4;8 J2 @/ z$ B& P: ]7 V/ g3 }
spLine1 = sketch2DFactory->CreateLine(pt_bottom_left,pt_bottom_right);1 E. |  Z  _1 v8 }3 F+ W
spLine2 = sketch2DFactory->CreateLine(pt_bottom_right,pt_top_right);
  B4 G" H* m$ rspLine3 = sketch2DFactory->CreateLine(pt_top_right,pt_top_left);
3 ?. B/ ~# d) z' X- [+ VspLine4 = sketch2DFactory->CreateLine(pt_top_left,pt_bottom_left);
5 R; a: C3 H6 G) c//将线的首尾连接起来3 M( I4 w4 c5 Z8 G3 P/ Q

* M0 r: v4 X3 qCATI2DCurve_var spCurve1 (spLine1);
! e9 O  _3 J4 H1 vCATI2DCurve_var spCurve2 (spLine2);
* A! C1 h. U  k1 [# k/ R$ T! t; K! {$ xCATI2DCurve_var spCurve3 (spLine3);* J( q3 ^& S! U# x8 o# C' Q
CATI2DCurve_var spCurve4 (spLine4);, k" Q% q: B- X/ B
spCurve1->SetStartPoint(spPt_bottom_left);3 U4 _2 i( [8 A' q! p* J8 w
spCurve1->SetEndPoint(spPt_bottom_right);
, d0 }. c* Z, B; jspCurve2->SetStartPoint(spPt_bottom_right);
2 K. h9 e' y8 f1 m. }  qspCurve2->SetEndPoint(spPt_top_right);
4 i, X# N+ X) z, ?; c6 ?spCurve3->SetStartPoint(spPt_top_right);# e7 `/ S  U+ A. C# s
spCurve3->SetEndPoint(spPt_top_left);" h" z: |7 w5 G7 J7 i
spCurve4->SetStartPoint(spPt_top_left);4 h+ z3 l3 {1 l
spCurve4->SetEndPoint(spPt_bottom_left);; p7 W" F! L% ^' `
//然后退出草图:
6 W) }  c+ x5 I) M- @spSketch->CloseEdition();. P* b) J* R& M0 g8 y( E- V  y

; @, R. r2 }  _7 t
2 R; ]: u% @8 q: D$ q9 e8 ^
* u5 L5 M0 v- ~5 ]5 T* U* t创建草图约束% Y( y4 Y8 g2 S+ [/ S
CATI2DConstraintFactory_var spConstraint2DFactory(spSketch);
6 j. F6 f& t# h5 H//定义spLine1 为水平约束
, k( y$ v8 K1 Q2 d0 {( PspConstraint2DFactory->CreateConstraint( spLine1, NULL, NULL, NULL, NULL, NULL,
* H& ]) p7 X; u4 Q1 DNULL, Cst2DType_Horizontal, 0, 0 );% J" l* e/ H( ]4 |& O# W+ D
//定义spLine2 为垂直约束
& {0 l: r' x8 n" J; h1 u* TspConstraint2DFactory->CreateConstraint( spLine2, NULL, NULL, NULL, NULL, NULL,
4 k7 ?6 x& H8 T$ ~) V1 ENULL, Cst2DType_Vertical, 0, 0 );
  f* S  U3 @: t( N( J6 _//定义spLine3 为水平约束
; w" [- D7 O3 ~. i' pspConstraint2DFactory->CreateConstraint( spLine3, NULL, NULL, NULL, NULL, NULL,: [+ |2 `# ]  ~- ~! _
NULL, Cst2DType_Horizontal, 0, 0 );3 d& Y. z2 c% o9 n
//定义spLine4 为垂直约束
7 ?  Y1 D- y' H8 X- g, }spConstraint2DFactory->CreateConstraint( spLine4, NULL, NULL, NULL, NULL, NULL,( \1 R3 ]+ W# y' F- A
NULL, Cst2DType_Vertical, 0, 0 );
+ \) }- K8 _2 B, _8 z$ Y  [//定义spLine2 的长度约束# }$ w5 b6 a) C4 s# r3 v
spConstraint2DFactory->CreateConstraint( spLine2, NULL, NULL, NULL, NULL, NULL,) V2 T$ l+ b. s! c& _
NULL, Cst2DType_Length, 0, 0 );
0 f  x+ v7 K1 n- h' p; |/ N; \9 |" r4 V( O# g: ^- {5 W
//定义spLine2 与spLine4 的距离约束
) D. p0 E7 d+ T% LspConstraint2DFactory->CreateConstraint( spLine2, NULL, spLine4, NULL, NULL, NULL,: a. t& a/ ]6 d1 W
NULL, Cst2DType_Distance, 0, 0 );+ }4 L: ^: q6 ?# Y6 {' d! C3 o
//定义spPt_bottom_left 与X 轴的距离约束
: v7 r5 y$ t% MCATI2DAxis_var spSupport = NULL_var;8 ~- i  r. p  ?3 `
spSketch->GetAbsolute2DAxis(spSupport);
' O) y" g/ a7 x( l; I9 }: }& dspConstraint2DFactory->CreateConstraint( spPt_bottom_left, NULL,
1 O& f4 W' ^& }4 e& ^spSupport->GetHDirection(), NULL, NULL, NULL, NULL,Cst2DType_Distance, 0, 0 );
3 F" v! P+ ]! S4 ]: O//定义spPt_bottom_left 与Y 轴的距离约束
$ z& j1 H" ]- r9 ]* r. N8 [spConstraint2DFactory->CreateConstraint( spPt_bottom_left, NULL,
4 Q& i8 U9 Z  ?+ y' d: LspSupport->GetVDirection(), NULL, NULL, NULL, NULL,Cst2DType_Distance, 0, 0 );
5 c8 A: x9 T' Z: n1 G. U2 q6 D  ?* c
8 C- Z; T& x0 d" `3 n( K2 a5 S! T
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了