PLM之家PLMHome

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

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

  [复制链接]
admin 发表于 2018-2-22 13:25:32 |阅读模式

admin 楼主

2018-2-22 13:25:32

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

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

x
有两种方式可以创建草图:' q' O5 e4 u/ ~; L9 r7 d
1.通过参考平面创建
; ^/ ^& i1 {! E' f//获得参考平面  A; ]  I6 Q% D
CATLISTV(CATISpecObject_var) spRefPlanes = spPart->GetReferencePlanes();# H0 w9 f2 O$ _
//初始化草图工厂4 a- z% g! k* }9 u# Q
CATISkeTChFactory_var spSketchFactory(spContainer);, r6 D9 S* i& F# `& q6 \
//在XY plane 上创建草图
' z: M  r/ \9 {1 G$ N' FCATISketch_var spSketch = spSketchFactory->CreateSketch(spRefPlanes[1]));0 c& [6 j8 B+ \7 a& n
2.通过原点和两个矢量方向
( m3 Y; p4 ^" A- f- O. m该方法通过定义一个原点和两个方向 pH、pV 进行创建。6 H1 Z: k4 I- \4 b, j
定义原点和方向:; u4 h& i! W3 o2 w- `+ L9 Y7 y
double pOrigin[3]={0,0,10};" d( U7 s* Q- W. e) R& @- {5 s. i
double pH[3]={1,0,0};. `5 q" `  |" u: J! D+ }
double pV[3]={0,1,0};: c1 {7 v& d( \8 K& W5 P
CATISketchFactory_var spSketchFactory(spContainer);
% d5 [$ _; k% ^: g  K$ D8 MCATISketch_var spSketch = spSketchFactory->CreateSketch(pOrigin, pH, pV);
6 O% Z0 p; b) x$ Q
: q- l3 t0 h" ^
& u( [  ?* T8 C, n$ Esp2DFactory(spSketch);
# u# C7 ?# _  K0 |/ v  ?8 n//下面创建点
: h+ i( J+ i' g4 O" K' [CATI2DPoint_var spPt_bottom_left, spPt_bottom_right, spPt_top_right, spPt_top_left;( H8 L: G, Q! ~8 Y8 y; D
double pt_bottom_left[2] = {10, 10};2 k2 n2 t# Z! W! k0 d+ r6 E# o
double pt_bottom_right[2] = {50, 10};' V8 |; R" x, j
double pt_top_right[2] = {50, 50};
: M6 O4 q& L- c' h* P1 S4 j! ~double pt_top_left[2] = {10, 50};! m. n& Q3 j; H/ O' @1 ]/ y
spPt_bottom_left = sketch2DFactory->CreatePoint(pt_bottom_left);. T& z  M. ^5 x2 i1 |
spPt_bottom_right = sketch2DFactory->CreatePoint(pt_bottom_right);
* `0 `' o3 h0 V  CspPt_top_right = sketch2DFactory->CreatePoint(pt_top_right);4 m" _) B" _, x$ k+ m+ @' V
spPt_top_left = sketch2DFactory->CreatePoint(pt_top_left);/ O; h; `* m, Z3 ^" G( |5 O
//开始创建线* w" o/ ~: _. S  Q6 a" J% L; t
CATI2DLine_var spLine1, spLine2, spLine3, spLine4;, `3 l2 a% o! \/ i7 j6 K
spLine1 = sketch2DFactory->CreateLine(pt_bottom_left,pt_bottom_right);5 r) u; `" a. h! `* X
spLine2 = sketch2DFactory->CreateLine(pt_bottom_right,pt_top_right);
6 d3 u& ?% d: LspLine3 = sketch2DFactory->CreateLine(pt_top_right,pt_top_left);7 }2 B* h$ _; {  I; F( S  S
spLine4 = sketch2DFactory->CreateLine(pt_top_left,pt_bottom_left);0 y& q7 S" _/ l/ S
//将线的首尾连接起来0 ^5 Y0 X; W( w+ `8 W

, U' d; _$ _( J' f6 [CATI2DCurve_var spCurve1 (spLine1);2 M4 u8 N$ \: `6 C, T, H
CATI2DCurve_var spCurve2 (spLine2);
- N' Z3 a) n# o( }# v# v. ICATI2DCurve_var spCurve3 (spLine3);" k2 k* o" v3 ~2 {% y$ I
CATI2DCurve_var spCurve4 (spLine4);
* s1 l/ q0 \  g1 C( Q1 q2 }$ hspCurve1->SetStartPoint(spPt_bottom_left);( D5 U4 H% P, p
spCurve1->SetEndPoint(spPt_bottom_right);' e  D  n9 z$ F
spCurve2->SetStartPoint(spPt_bottom_right);& m8 A2 K) ]; s6 J  L# F
spCurve2->SetEndPoint(spPt_top_right);
4 J7 k: Z9 A: p# {, q4 i; H9 I) _) gspCurve3->SetStartPoint(spPt_top_right);8 T8 @' T4 M2 m3 N" X" t( x
spCurve3->SetEndPoint(spPt_top_left);
4 Y) w( T3 F5 n& U6 NspCurve4->SetStartPoint(spPt_top_left);
6 ]5 {/ h+ Z( o: u$ i6 lspCurve4->SetEndPoint(spPt_bottom_left);
2 `( f  f( Z+ q! L: S* [. {//然后退出草图:
  B' Z4 [2 t) x, S! Y! J3 X0 FspSketch->CloseEdition();
7 R( e% G0 z: D' L" G
. e( y. {# `' X7 ]8 n2 m( j$ ^8 T4 [: b
  y6 S$ r5 L( l. l6 H
创建草图约束
# [' P. n! a7 }% E( z% G4 W4 n/ [CATI2DConstraintFactory_var spConstraint2DFactory(spSketch);: ]: b5 n! m# m9 c) `2 g" W; T% Y  M
//定义spLine1 为水平约束, f, m- X3 ~" g( }% ~, l0 f# N
spConstraint2DFactory->CreateConstraint( spLine1, NULL, NULL, NULL, NULL, NULL,
  w0 `6 J- z/ B- F/ M( MNULL, Cst2DType_Horizontal, 0, 0 );/ ^  F5 u+ l2 q0 L' R2 n1 w  R
//定义spLine2 为垂直约束
$ o' k7 F6 H, c. z: ?2 espConstraint2DFactory->CreateConstraint( spLine2, NULL, NULL, NULL, NULL, NULL,
* `& `9 s/ M# `0 C8 O: c4 H5 GNULL, Cst2DType_Vertical, 0, 0 );
/ {, u+ M5 c0 o//定义spLine3 为水平约束
" G5 H( W" H9 g6 GspConstraint2DFactory->CreateConstraint( spLine3, NULL, NULL, NULL, NULL, NULL,5 M! H5 ?/ S6 ]8 e8 H1 w. H  G
NULL, Cst2DType_Horizontal, 0, 0 );4 O( |  L# `* S& c1 \$ M- q
//定义spLine4 为垂直约束
% ~% q& S" O( NspConstraint2DFactory->CreateConstraint( spLine4, NULL, NULL, NULL, NULL, NULL,
  o: x: J, n. J+ Z* S3 }NULL, Cst2DType_Vertical, 0, 0 );
$ O3 k, t5 j" \! U//定义spLine2 的长度约束
1 ]3 I! |0 ^  Q  fspConstraint2DFactory->CreateConstraint( spLine2, NULL, NULL, NULL, NULL, NULL,
2 A; e& ^& L5 {5 `' C7 [NULL, Cst2DType_Length, 0, 0 );
: m5 k9 c5 {6 R- L4 ?' r* d2 F( f; t) j. W/ o
//定义spLine2 与spLine4 的距离约束
# a  ]+ R' b! i& E' i3 ~* rspConstraint2DFactory->CreateConstraint( spLine2, NULL, spLine4, NULL, NULL, NULL,( X9 G6 ^/ y% }& Y7 x# ?, l8 Q) p! d
NULL, Cst2DType_Distance, 0, 0 );
# V* l6 z2 }( h1 M, j//定义spPt_bottom_left 与X 轴的距离约束
/ o3 I) Y. i* K. s' I7 S9 V4 f1 s( rCATI2DAxis_var spSupport = NULL_var;% e. \& l0 E' [6 P4 t2 n% x
spSketch->GetAbsolute2DAxis(spSupport);9 T  H9 w6 e5 r  S1 ]
spConstraint2DFactory->CreateConstraint( spPt_bottom_left, NULL,3 `/ @8 K* [% X8 C5 `; I! l3 E
spSupport->GetHDirection(), NULL, NULL, NULL, NULL,Cst2DType_Distance, 0, 0 );
6 b; \' l% ?$ |3 ^& @//定义spPt_bottom_left 与Y 轴的距离约束
  ~8 m3 T  g, c% M) W) y& \3 w7 b6 }: KspConstraint2DFactory->CreateConstraint( spPt_bottom_left, NULL,
! A& j, Z' D& \* `3 l/ u8 w( JspSupport->GetVDirection(), NULL, NULL, NULL, NULL,Cst2DType_Distance, 0, 0 );
# R( e7 q' V# S+ G9 i0 O, v, }; x/ Z( x& G! a
- m3 D, C$ x2 _* i# h" }5 a3 v9 l( M
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

:
管理员
:
xduniverse@qq.com
:
点击这里给我发消息
:
http://www.plmhome.com
:
原西门子NX高级教务员,10多年NX培训,开发咨询,Teamcenter培训实施等

主题2396

帖子3646

积分68697

图文推荐

  • Tecnomatix 二次开发入门教程 6 实现打开PL

    Tecnomatix 二次开发入门教程 6 实现打开PLM之家

  • Tecnomatix 二次开发入门教程 3 第一个hell

    Tecnomatix 二次开发入门教程 3 第一个hello plm

  • PLM之家NX插件V8.0.0.0发布,支持NX1847版

    PLM之家NX插件 ============================

  • NX1847 新功能,可视化辅助工具,更形象的

    NX1847 新功能,可视化辅助工具,更形象的帮助

  • nxopen UI导入NX失败,希望大神指导

    新手上路,希望站长以及各路大神指导! NX12 二次

  • 关闭

    站长推荐上一条 /1 下一条

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    PLM之家经典培训教程--强烈推荐

    PLM之家(plmhome.com)提供专业的实施开发培训

    NX二次开发基础培训 | 已 80 学员 参加

    CAA二次开发 | 值的一试

    Teamcenter用户基础入门 | 虚拟机赠送

    限时优惠,原价3000,现价888

    UG 二次开发CAM加工开发培训火热报名

    哥已知晓