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

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

  [复制链接]

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

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

admin 楼主

2017-12-22 13:44:56

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

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

x
CATIA二次开发入门教程---20 创建草图
5 Y5 ^) A) V, A1 y
  J! C5 I/ U5 J  ]: j  G  _: V' \
[mw_shl_code=c,true]////////获得Editor、Document、Container、设置GSMFactory
% I1 ]% q( Y6 Z* z        CATFrmEditor* pEditor = CATFrmEditor::GeTCurrentEditor();7 K3 o! ]* c4 K# X% h: Y/ V
        CATDocument *pDoc = pEditor->GetDocument();
7 C+ p1 _/ x! }& a, _        CATIContainerOfDocument_var spConODocs = pDoc;; h+ J/ c) `% _

8 p& v/ u* L' S! m        CATIContainer*            pContainer;                //Container, v5 P7 k8 l# h  R8 ~1 d
        CATIPrtContainer*     pPrtContainer;//PartContainer; Y4 q5 H1 _+ j' {3 h
        CATIGSMFactory_var        spGSMFactory;                //GSM工厂* @+ T8 ~1 _% Q" _2 I2 o' c
  S  l6 p, `- h3 @+ R  p+ }) G& u
        CATIPrtPart_var        spPrt   ;//4 ~, L7 D) W. T% [) h3 \9 T
        HRESULT hr = spConODocs->GetSpecContainer(pContainer);//获取Container
3 q" [( L& {: u
  ^1 D. U/ M" B        hr =pContainer->QueryInterface(IID_CATIPrtContainer,(void **)&pPrtContainer);//获取PrtContainer
. h/ a) z# \, p: D        spPrt = pPrtContainer->GetPart();; S  I- a+ }! c( u
        CATListValCATISpecObject_var spListRefPlanes = spPrt->GetReferencePlanes();//获取3个参考平面
8 o$ y2 v7 F' c% A& x! f' S- u$ i5 @, V$ r
        CATISpecObject_var spSketchPlane = spListRefPlanes[3];//第三个平面
5 J: P5 I+ `- }; F        CATISketchFactory_var spSketchFactOnPrtCont(pPrtContainer);//草图工厂
: q0 G( t6 E( h; i; v( D+ A7 O        CATISketch_var spSketch = spSketchFactOnPrtCont->CreateSketch( spSketchPlane );        //创建草图
7 f6 w) x. c" K& S, F0 S4 U$ o! v        CATI2DWFFactory_var spWF2DFactOnSketch(spSketch);% ^% g! @# y5 R1 E

9 p9 ~+ O( y* S: r; [/ C8 @        spSketch->OpenEdition();        //进入草图开始绘图
+ R* v$ p  n& I% W4 i/ `      
4 T+ J' ~+ |+ }! B5 q. R        spSketch->CloseEdition();//退出草图环境2 `7 j2 E# w# C" d- `- G

* i2 {& J7 q4 R! z6 p8 W5 Z; N      
# m( N8 @) p, N[/mw_shl_code]
* m3 t; S! `5 y- L0 x7 X6 c
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

有两种方式可以创建草图:4 \+ {# p: N* n9 y" ]1 X8 K
1)通过参考平面创建
  Z% ?: C, d$ F  U- c" n首先获取一个CATIPrtPart变量:) J2 E7 j7 \0 [& q' }$ U
CATIPrtPart_var spPart(pIPrtContOnDocument->GetPart());6 ?# B" T# u3 V4 E8 s
pIPrtContOnDocument->Release();
# w1 _" `. c! O! W; o; r2 M有了CATIPrtPart变量就可以利用其方法GetReferencePlanes(),获取参考平面8 D' f: e, j+ P  a2 \
CATLISTV(CATISpecObject_var) spRefPlanes = spPart->GetReferencePlanes();  \) m$ |( ]% Z1 G" u/ P
然后创建XY plane (spRefPlanes[1])
' M, ~7 N7 `4 Z# c% u, B3 UCATISketchFactory_var spSketchFactory(pSpecContainer);. d9 K/ h. o+ o3 Y8 ^
if ( NULL_var == spSketchFactory ) return (CATStatusChangeRCCompleted);
7 ~, Y7 L* I" w! H/ k0 yCATISketch_var spSketch(spSketchFactory->CreateSketch(spRefPlanes[1]));) H# v: P( v+ K! I  t5 z
if ( NULL_var == spSketch ) return (CATStatusChangeRCCompleted);
! c9 T" m+ p) y( L$ A$ Z# r& AspSketch->OpenEdition();) L! Z$ |3 y" G$ \, t4 {
2) 通过原点和两个矢量方向
& d# B3 e1 C6 V# V3 }0 @该方法是通过定义一个原点和两个方向pH、pV  进行创建。0 V  H& H1 v; C
定义原点和方向:1 ^9 P& g% g) @4 y1 N+ ~
double origin[3]={0.0,0.0,10.0};
( i# C9 J$ C2 [double x_dir[3]={1.0,0.0,0.0};
' Y* l! c  \2 o& D% m5 G9 ~4 Bdouble y_dir[3]={0.0,1.0,0.0};3 b% w- t: C$ y1 R* _+ [
CATISketchFactory_var spSketchFactory(pSpecContainer);
, Q: v. y  _6 [! k5 g$ Uif ( NULL_var == spSketchFactory ) return (CATStatusChangeRCCompleted);
1 G* ]* W% c2 J3 Y* PCATISketch_var spSketch(spSketchFactory->CreateSketch(origin,x_dir,y_dir));4 ~/ U' u6 e4 }* o
if ( NULL_var == spSketch ) return (CATStatusChangeRCCompleted);
) g+ ]* l' W' ^3 e$ J" O/ qspSketch->OpenEdition();+ h% k2 O, K/ w% `% K$ A
到这里,你已经创建了一个Sketch,你可以在上面创建任意的草图了。+ W4 y1 J4 n7 J& c0 u, L
创建好记住要将其关闭:
" ~2 C: l1 D  }. CspSketch->CloseEdition();
8 D( O3 C1 ]: k' c4 g% C; }! t5 c) I; f/ V
. ^6 ^" R4 H8 ]
上海点团信息科技有限公司,承接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二次开发如何实现呀# Y6 s* }0 e  V

' W" z( [* o  Q: p( h8 |' g" v* V& H9 i( l* H
我的第一个程序运行成功了,但是显示不正常
回复 支持 反对

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

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

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

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

    我知道了