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

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

  [复制链接]

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

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

admin 楼主

2017-12-22 13:44:56

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

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

x
CATIA二次开发入门教程---20 创建草图5 e# d! I6 V+ H& o- H' T

+ z# r9 h" B7 N) j: ~& ]% T4 S. }+ u
: u. h6 a: V: c& h# }8 V9 |7 r6 ~[mw_shl_code=c,true]////////获得Editor、Document、Container、设置GSMFactory+ O' `, w$ }5 d: r& U) v- m
        CATFrmEditor* pEditor = CATFrmEditor::GeTCurrentEditor();
# U& L, m; z+ ?. E' t( O* {        CATDocument *pDoc = pEditor->GetDocument();
9 t6 v* v" }4 _+ o1 r  a5 q) J, _        CATIContainerOfDocument_var spConODocs = pDoc;
* |* h' N9 V+ F3 g0 B  ?; n; ~. S; `) }9 E. v2 y
        CATIContainer*            pContainer;                //Container
' w$ P! I& I  a6 }8 M. r        CATIPrtContainer*     pPrtContainer;//PartContainer6 b' f" g% \' G- u8 P9 h9 E, {; W
        CATIGSMFactory_var        spGSMFactory;                //GSM工厂; ?/ a- M" A) W! D. I* b/ V3 g$ ~
: J0 w( D7 F2 d& V& ]3 ]
        CATIPrtPart_var        spPrt   ;//* d+ {3 P+ Y0 M; }
        HRESULT hr = spConODocs->GetSpecContainer(pContainer);//获取Container/ U8 i# L$ J" T: b

8 u" D0 M% N7 B0 C) v        hr =pContainer->QueryInterface(IID_CATIPrtContainer,(void **)&pPrtContainer);//获取PrtContainer! |2 \9 \4 Z6 W: T8 N$ k' L* H
        spPrt = pPrtContainer->GetPart();
6 m3 K! Y- o" J2 N        CATListValCATISpecObject_var spListRefPlanes = spPrt->GetReferencePlanes();//获取3个参考平面2 m% }0 F4 l4 K. |! z6 r0 z

. a6 b; n/ i' q9 w( L' X        CATISpecObject_var spSketchPlane = spListRefPlanes[3];//第三个平面, M% j  s* n% L  @" C# S
        CATISketchFactory_var spSketchFactOnPrtCont(pPrtContainer);//草图工厂
. S! j/ j0 K2 J        CATISketch_var spSketch = spSketchFactOnPrtCont->CreateSketch( spSketchPlane );        //创建草图
6 X. Q& Q8 b" n# x+ L% ?0 E        CATI2DWFFactory_var spWF2DFactOnSketch(spSketch);- D/ A* n5 c2 M2 V4 y
* _- E0 a" {% y. \! C
        spSketch->OpenEdition();        //进入草图开始绘图$ z/ p0 Y1 N7 y/ j9 }- `
      
8 q4 y( `7 N" r( e9 X        spSketch->CloseEdition();//退出草图环境, d# j+ k  e% b3 A, o2 Z

8 _& a# d' u$ E# x! `$ Y' }      " W* Q* p0 B1 ]$ y4 m) ?
[/mw_shl_code]: T2 B" A+ Q. x5 ^. `7 V
QQ截图20171224112147.png
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复

使用道具 举报

全部回复2

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

admin 沙发

2017-12-22 13:45:19

有两种方式可以创建草图:6 \+ w+ n" n, X1 r& h1 c7 v' U4 v
1)通过参考平面创建4 d% H3 L- E( t) p' |. G
首先获取一个CATIPrtPart变量:( H0 B! j4 R3 Q6 o: N
CATIPrtPart_var spPart(pIPrtContOnDocument->GetPart());
: y2 ]( i( B: h2 |/ Z  JpIPrtContOnDocument->Release();
+ F' q# z$ z- G有了CATIPrtPart变量就可以利用其方法GetReferencePlanes(),获取参考平面
# B2 m4 U/ C  s* S' ZCATLISTV(CATISpecObject_var) spRefPlanes = spPart->GetReferencePlanes();
8 b; }/ J' J1 U+ S( A0 D) T然后创建XY plane (spRefPlanes[1])& q3 s4 P8 A) K" w
CATISketchFactory_var spSketchFactory(pSpecContainer);6 m2 D4 O1 f+ i) W0 \
if ( NULL_var == spSketchFactory ) return (CATStatusChangeRCCompleted);
* j3 M# v6 W6 l  i2 m3 zCATISketch_var spSketch(spSketchFactory->CreateSketch(spRefPlanes[1]));3 c9 n: l  N7 Q: j: b- u+ X/ Y
if ( NULL_var == spSketch ) return (CATStatusChangeRCCompleted);
2 z% R8 ~; g; y6 yspSketch->OpenEdition();7 F8 W4 ]) e* f! I
2) 通过原点和两个矢量方向
* \) @2 G& v$ M7 r3 G该方法是通过定义一个原点和两个方向pH、pV  进行创建。. ^7 {" b: V4 x: M& m7 N
定义原点和方向:
8 p1 N5 O3 z. V5 Q& p7 ~9 x% Edouble origin[3]={0.0,0.0,10.0};
* h! H2 E! P6 K7 [double x_dir[3]={1.0,0.0,0.0};  [% S! ?5 H! o/ B, \
double y_dir[3]={0.0,1.0,0.0};8 w1 Q! h: l1 ^5 |; b
CATISketchFactory_var spSketchFactory(pSpecContainer);/ q; k7 O- v: u0 g4 I0 v
if ( NULL_var == spSketchFactory ) return (CATStatusChangeRCCompleted);
+ k* Y: |/ c7 J' T& JCATISketch_var spSketch(spSketchFactory->CreateSketch(origin,x_dir,y_dir));
9 r! x% Y! u7 W) v; x& a$ N6 dif ( NULL_var == spSketch ) return (CATStatusChangeRCCompleted);
% U& u% a( ^- @2 y4 @% NspSketch->OpenEdition();
( v2 s' \+ W$ p  Q' V到这里,你已经创建了一个Sketch,你可以在上面创建任意的草图了。
, @, n. Y! k3 _$ g# X创建好记住要将其关闭:$ s+ @6 y* d9 a. I1 E
spSketch->CloseEdition();
. W8 t" q" [" s) i  V% E* c8 X, Z- `) x5 P; D# F8 @% v' U% X3 |1 T
3 }8 M1 x$ D& C- B8 O
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复 支持 反对

使用道具 举报

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

cwp86 板凳

2018-3-25 10:10:36

在设计产品是不可能只选择XY,XZ,YZ这三个参九参考面,哪么问题就来了,例如用户选择实体上某个平面特征为参考面,进行下步的设计,这个在产品设计过程中经常使用,CAA二次开发如何实现呀6 n7 Q8 ]) l, Q5 l1 n$ `' {

3 u$ x# ~) ~% v9 a6 n$ v/ ]6 H0 @0 x, E& f1 M, @3 W1 `% y# k
我的第一个程序运行成功了,但是显示不正常
回复 支持 反对

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

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

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

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

    我知道了