PLM之家PLMHome-国产软件践行者

[原创] CATIA二次开发入门教程---20 创建草图

  [复制链接]

2018-3-25 10:10:36 4265 2

admin 发表于 2017-12-22 13:44:56 |阅读模式

admin 楼主

2017-12-22 13:44:56

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

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

x
CATIA二次开发入门教程---20 创建草图1 S2 r, v* {3 r. n2 I* B& ~/ R& k

, ?) B0 D0 z/ F$ B9 O7 g# h" h
, t3 S: E; _+ E& [/ e. \7 b[mw_shl_code=c,true]////////获得Editor、Document、Container、设置GSMFactory
- l3 e# p; k- o        CATFrmEditor* pEditor = CATFrmEditor::GeTCurrentEditor();% C% B& D; K# ~) N9 J; g
        CATDocument *pDoc = pEditor->GetDocument();; n3 `+ g3 p5 G3 e  W/ B  F
        CATIContainerOfDocument_var spConODocs = pDoc;
& |# a: E) }, {& M* o2 |
8 g) Z9 t: v) B7 _3 B3 y        CATIContainer*            pContainer;                //Container5 z  r6 X3 R1 I% \
        CATIPrtContainer*     pPrtContainer;//PartContainer
% E; K1 S, ]- \* v1 K8 R: g        CATIGSMFactory_var        spGSMFactory;                //GSM工厂
* y- l: z% O( m; e) q) U4 h/ |( j
        CATIPrtPart_var        spPrt   ;//
. c' N% D1 D! P" C4 b7 R6 w        HRESULT hr = spConODocs->GetSpecContainer(pContainer);//获取Container
$ m1 T% H0 i2 v5 m0 _
2 }3 Q. W6 H1 U        hr =pContainer->QueryInterface(IID_CATIPrtContainer,(void **)&pPrtContainer);//获取PrtContainer0 h$ ^! l7 ^, Z, V2 X
        spPrt = pPrtContainer->GetPart();
! t- C( p3 T( X        CATListValCATISpecObject_var spListRefPlanes = spPrt->GetReferencePlanes();//获取3个参考平面6 J. }- J* K  i! @5 T4 A1 a
" C  _* Z2 \+ o6 i# g% C. k% y
        CATISpecObject_var spSketchPlane = spListRefPlanes[3];//第三个平面
4 R0 [7 P  a7 [+ H$ C* X        CATISketchFactory_var spSketchFactOnPrtCont(pPrtContainer);//草图工厂
* S. C7 u  w  @$ l  O        CATISketch_var spSketch = spSketchFactOnPrtCont->CreateSketch( spSketchPlane );        //创建草图
0 V) f& c. }6 p5 a' Z        CATI2DWFFactory_var spWF2DFactOnSketch(spSketch);; x" b% q/ t7 x) F5 F' i- Q4 ^8 N9 d

( M2 [2 ?8 F7 J0 a2 j6 I7 e! ]        spSketch->OpenEdition();        //进入草图开始绘图$ e+ v: A. ?. a- c8 }, {7 {
      
- h- n/ X( b" R3 O: L        spSketch->CloseEdition();//退出草图环境3 j0 I- d: ~- L+ I1 P/ o8 u1 X
# F+ w1 {9 O% c' Z/ g! k) v
      2 ?6 ?4 X- T' U8 K% B4 ~/ l
[/mw_shl_code]
3 U8 s1 F9 F2 H' O0 {& Q
QQ截图20171224112147.png
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

全部回复2

admin 发表于 2017-12-22 13:45:19

admin 沙发

2017-12-22 13:45:19

有两种方式可以创建草图:
+ O: B2 a$ L8 S" [& `8 N0 w  m1)通过参考平面创建
3 ], N2 B5 y/ ]- U6 |8 V  {+ Y, t: z首先获取一个CATIPrtPart变量:
6 \# z/ ]7 ^8 hCATIPrtPart_var spPart(pIPrtContOnDocument->GetPart());
: S; E, k* c% E. MpIPrtContOnDocument->Release();+ v1 p. ?3 t. J* Z
有了CATIPrtPart变量就可以利用其方法GetReferencePlanes(),获取参考平面) w* V8 S& G  d8 l( \
CATLISTV(CATISpecObject_var) spRefPlanes = spPart->GetReferencePlanes();( H- z# Y) M* r0 [
然后创建XY plane (spRefPlanes[1])$ M+ ~' d1 [3 D
CATISketchFactory_var spSketchFactory(pSpecContainer);/ h* }2 d" l1 s6 U
if ( NULL_var == spSketchFactory ) return (CATStatusChangeRCCompleted);
# J# ~$ l. H) k8 y% hCATISketch_var spSketch(spSketchFactory->CreateSketch(spRefPlanes[1]));! J3 u# m# J& D2 C5 A$ N
if ( NULL_var == spSketch ) return (CATStatusChangeRCCompleted);3 f. z- _1 I" E5 S" _  x- K% s$ {
spSketch->OpenEdition();5 z: j2 w$ z/ k( k
2) 通过原点和两个矢量方向
4 S/ ]5 W: k. R该方法是通过定义一个原点和两个方向pH、pV  进行创建。9 k! W1 ]$ ~# _8 o6 u
定义原点和方向:
$ X+ S" L& j. i7 u" H& Jdouble origin[3]={0.0,0.0,10.0};6 F# H6 M6 C9 g0 a; t( C7 o8 L
double x_dir[3]={1.0,0.0,0.0};
7 ?  c% Z: ?5 C/ t7 I3 jdouble y_dir[3]={0.0,1.0,0.0};
3 p5 s) F; I. {4 g" o# ^+ N! c7 nCATISketchFactory_var spSketchFactory(pSpecContainer);
( P$ o& `0 ~% \! c5 m# l$ gif ( NULL_var == spSketchFactory ) return (CATStatusChangeRCCompleted);7 J# c: F0 {6 N- r
CATISketch_var spSketch(spSketchFactory->CreateSketch(origin,x_dir,y_dir));
' C; v6 e% U& s  M# Cif ( NULL_var == spSketch ) return (CATStatusChangeRCCompleted);4 V5 u) E2 Q* X& {4 U& |! [# \
spSketch->OpenEdition();! }2 X6 c& W( s, b, L
到这里,你已经创建了一个Sketch,你可以在上面创建任意的草图了。
& B1 \) T( t  Z7 |) J, |- p; h+ t创建好记住要将其关闭:
' V* [; d% S1 G, K9 L) kspSketch->CloseEdition();5 E9 @# X- e4 i* ^
* L9 g+ A: K2 @  J$ N

/ x: D5 D9 k9 |" P% G4 }
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

cwp86 发表于 2018-3-25 10:10:36

cwp86 板凳

2018-3-25 10:10:36

在设计产品是不可能只选择XY,XZ,YZ这三个参九参考面,哪么问题就来了,例如用户选择实体上某个平面特征为参考面,进行下步的设计,这个在产品设计过程中经常使用,CAA二次开发如何实现呀
! `9 s" a5 q! d+ v: E
- |! g- ?6 G6 ^2 S  G8 x4 `6 O4 Z2 q3 N. h0 p1 G# N3 J
我的第一个程序运行成功了,但是显示不正常
回复 支持 反对

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了