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

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

  [复制链接]

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

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

admin 楼主

2017-12-22 13:44:56

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

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

x
CATIA二次开发入门教程---20 创建草图
1 L! O9 @" e: B1 q2 {5 y7 q$ K4 b5 F1 Y' e- ?7 E+ p
! D0 C( E7 x+ V
[mw_shl_code=c,true]////////获得Editor、Document、Container、设置GSMFactory
6 e; Y2 \) K3 U/ X; I        CATFrmEditor* pEditor = CATFrmEditor::GeTCurrentEditor();
1 \* J# v7 ?; W        CATDocument *pDoc = pEditor->GetDocument();8 F9 {) G& \) `- R- D
        CATIContainerOfDocument_var spConODocs = pDoc;
1 |9 Y' S9 y. r2 c0 k6 p. Q2 b& V7 h7 i# b/ D
        CATIContainer*            pContainer;                //Container
" R3 v; w2 ]1 M& x9 h        CATIPrtContainer*     pPrtContainer;//PartContainer
3 v5 H7 C" l3 O8 `: u8 Q. `) y        CATIGSMFactory_var        spGSMFactory;                //GSM工厂
  a6 x+ c, v3 }2 z
4 n5 _" F; Q7 w. U! x8 C9 Y0 B        CATIPrtPart_var        spPrt   ;//3 P5 `; b3 ]; [$ M, T+ W1 n
        HRESULT hr = spConODocs->GetSpecContainer(pContainer);//获取Container
: [& Z6 @0 f* N) v, _
* O$ ^. `! y5 }        hr =pContainer->QueryInterface(IID_CATIPrtContainer,(void **)&pPrtContainer);//获取PrtContainer
: s/ x" _8 `+ |+ D        spPrt = pPrtContainer->GetPart();2 I# h% l) ]4 P% v
        CATListValCATISpecObject_var spListRefPlanes = spPrt->GetReferencePlanes();//获取3个参考平面
( l: e' g; t! Z" O  U! s
& g  B, b" p% x( C        CATISpecObject_var spSketchPlane = spListRefPlanes[3];//第三个平面8 ]7 x% u, j: Z0 q5 b5 |
        CATISketchFactory_var spSketchFactOnPrtCont(pPrtContainer);//草图工厂+ P6 j* y1 Q9 {6 Z9 N+ A- U2 \
        CATISketch_var spSketch = spSketchFactOnPrtCont->CreateSketch( spSketchPlane );        //创建草图5 r) H: Z" Q9 f" H
        CATI2DWFFactory_var spWF2DFactOnSketch(spSketch);
( \6 f+ y/ k) X! ^  k8 F5 y8 r- M9 z( _& X$ Y1 U* O" A5 Y
        spSketch->OpenEdition();        //进入草图开始绘图
2 {1 v: C  [  X0 ?; j& X      
' `" L( l' |* w3 e9 D% w        spSketch->CloseEdition();//退出草图环境  J3 M0 N2 q, H/ v6 u; \. M7 r
4 B1 h+ G+ w  F# G. t. W8 l
      
/ D0 R3 U! V# ^' r[/mw_shl_code]
) {& T2 o$ s$ p" U) j9 e+ P
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

有两种方式可以创建草图:: G* q2 P+ Y) a0 K! R* C
1)通过参考平面创建
; z7 k8 v' A- P; ~首先获取一个CATIPrtPart变量:% m# [9 ]" R, v
CATIPrtPart_var spPart(pIPrtContOnDocument->GetPart());
' o4 O/ D5 L% P5 @; k3 I1 Z: RpIPrtContOnDocument->Release();
; [* M4 z* k( S5 X有了CATIPrtPart变量就可以利用其方法GetReferencePlanes(),获取参考平面' p) [5 A  R6 b% L/ J
CATLISTV(CATISpecObject_var) spRefPlanes = spPart->GetReferencePlanes();; t0 N. L( [2 G( \5 I+ A
然后创建XY plane (spRefPlanes[1]); r! E5 Y( r0 S9 I& d% K. j/ {  ?
CATISketchFactory_var spSketchFactory(pSpecContainer);2 B. g7 X$ K: y( B; P# {; a- A
if ( NULL_var == spSketchFactory ) return (CATStatusChangeRCCompleted);0 c6 i3 y1 u( i; Y+ e5 B# L$ E
CATISketch_var spSketch(spSketchFactory->CreateSketch(spRefPlanes[1]));
* z( J7 X1 k8 G( j; j4 ?" W7 Iif ( NULL_var == spSketch ) return (CATStatusChangeRCCompleted);- c8 C3 G6 l3 P
spSketch->OpenEdition();
) X! ~$ ]3 O3 I. \7 s. k/ K; I' c& G# a2) 通过原点和两个矢量方向
( n6 j8 s7 ?, e, ]该方法是通过定义一个原点和两个方向pH、pV  进行创建。; H  A) g9 O/ }* o* |
定义原点和方向:
# e( l, U. s. I0 F/ y" Mdouble origin[3]={0.0,0.0,10.0};; M5 V' V% e$ N7 r$ Z
double x_dir[3]={1.0,0.0,0.0};
) D7 ]# H0 R4 h' b5 ?  F0 Jdouble y_dir[3]={0.0,1.0,0.0};
3 `2 F$ h' x0 k6 h0 M* K# BCATISketchFactory_var spSketchFactory(pSpecContainer);! d+ {6 ^7 ^# z$ U
if ( NULL_var == spSketchFactory ) return (CATStatusChangeRCCompleted);
# F5 G  o  [- _& b; OCATISketch_var spSketch(spSketchFactory->CreateSketch(origin,x_dir,y_dir));
) S1 m, t* Q0 Z9 T+ p7 `if ( NULL_var == spSketch ) return (CATStatusChangeRCCompleted);  Z/ V2 Y. q0 l
spSketch->OpenEdition();% `4 l+ d2 j3 \, s; c- i
到这里,你已经创建了一个Sketch,你可以在上面创建任意的草图了。
2 @, u" Q& N& C7 W' M* f创建好记住要将其关闭:* G' z8 U3 d; V
spSketch->CloseEdition();8 x  v5 S6 s" M
% @9 a4 e, U# N5 {2 r5 L
8 W* A( o/ {0 k# L) Y( Y
上海点团信息科技有限公司,承接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 K# A- \: R4 s

, ~  Q7 m- ?6 N; ^. a' X% q1 b# C9 K' S- K& p% C9 ?
我的第一个程序运行成功了,但是显示不正常
回复 支持 反对

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

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

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

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

    我知道了