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

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

  [复制链接]

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

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

admin 楼主

2017-12-22 13:44:56

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

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

x
CATIA二次开发入门教程---20 创建草图8 t: r. K3 j8 E  E" J
2 w( z# q4 s1 R

) o' L3 m5 _3 b: }) }. e[mw_shl_code=c,true]////////获得Editor、Document、Container、设置GSMFactory, e; W+ c! D, C6 j5 f
        CATFrmEditor* pEditor = CATFrmEditor::GeTCurrentEditor();
' |) Y1 t/ x* _8 u; s8 C) x0 K0 g        CATDocument *pDoc = pEditor->GetDocument();
- v1 X9 }7 S) Q" X2 Y; w' N' p# i        CATIContainerOfDocument_var spConODocs = pDoc;
) m" H/ v: t" j8 y" Q: r, n
% w5 g% l6 T0 C        CATIContainer*            pContainer;                //Container
; W# E- V6 ]- h, i; \# V5 W4 k        CATIPrtContainer*     pPrtContainer;//PartContainer
6 c! e2 j5 d& W- c' d. ^# S        CATIGSMFactory_var        spGSMFactory;                //GSM工厂( d0 M( c& m$ E; g& h8 Z

6 ^6 F* G. |0 j) z! b1 i5 V        CATIPrtPart_var        spPrt   ;//+ i) f* l( P( q8 y# i
        HRESULT hr = spConODocs->GetSpecContainer(pContainer);//获取Container8 g8 W0 r* O1 Y

2 Q! F; {: ~, @/ d7 H. P        hr =pContainer->QueryInterface(IID_CATIPrtContainer,(void **)&pPrtContainer);//获取PrtContainer
: c8 h+ g- V0 G( T* a( c        spPrt = pPrtContainer->GetPart();
+ Z1 Y, E' S' Y- Q5 Q! \6 A5 e        CATListValCATISpecObject_var spListRefPlanes = spPrt->GetReferencePlanes();//获取3个参考平面1 b# G. i* ^3 f6 |
. F3 Z" Y4 c# H& a) F: M
        CATISpecObject_var spSketchPlane = spListRefPlanes[3];//第三个平面3 ^" f4 @; h. {6 d. t8 F' S+ P
        CATISketchFactory_var spSketchFactOnPrtCont(pPrtContainer);//草图工厂
) u' J8 b) {5 n        CATISketch_var spSketch = spSketchFactOnPrtCont->CreateSketch( spSketchPlane );        //创建草图
& b, f- ~4 q7 i+ e) s' t4 y; q  q        CATI2DWFFactory_var spWF2DFactOnSketch(spSketch);2 {! [8 j) n) N2 r* M2 f3 N  O
5 Q1 H* g% u7 [9 m" u' l& e5 N' l
        spSketch->OpenEdition();        //进入草图开始绘图' @% i3 J. R) S' g
      ) s, W7 s7 q# K  n2 k% X1 a
        spSketch->CloseEdition();//退出草图环境
3 W1 w# n9 k+ `! p# y
) Q: E2 d+ w0 e3 u      
; s) N0 ~' G/ H  M1 `* P[/mw_shl_code]
# H" ]' X" |2 j! {2 X& o
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

有两种方式可以创建草图:
% T1 ~% l: c8 y' l1)通过参考平面创建
% C. L1 E  `$ N6 B1 X! ?首先获取一个CATIPrtPart变量:  x- J6 w/ n! W. }
CATIPrtPart_var spPart(pIPrtContOnDocument->GetPart());
0 R+ u, ]& l/ |1 X% i+ E+ EpIPrtContOnDocument->Release();9 y' z# U" `+ Q+ |% C
有了CATIPrtPart变量就可以利用其方法GetReferencePlanes(),获取参考平面
# w" ~; y: e. R  }% \3 yCATLISTV(CATISpecObject_var) spRefPlanes = spPart->GetReferencePlanes();
& c, |2 O3 D: b* m+ c( M6 m7 E- e! M然后创建XY plane (spRefPlanes[1])* ~( V" z7 o: \& S& T7 R8 `- G
CATISketchFactory_var spSketchFactory(pSpecContainer);
/ q/ d2 f/ p" b5 x# H5 a( Hif ( NULL_var == spSketchFactory ) return (CATStatusChangeRCCompleted);
" {( e3 X5 z+ A2 t. x4 y' sCATISketch_var spSketch(spSketchFactory->CreateSketch(spRefPlanes[1]));
6 ^- J2 ^  F' p9 }if ( NULL_var == spSketch ) return (CATStatusChangeRCCompleted);
" Z/ Z0 V6 [2 o3 ~! ~spSketch->OpenEdition();
0 G. Q% {* M$ f0 h  w2) 通过原点和两个矢量方向, h; a7 S' R$ D6 C# e/ k5 O
该方法是通过定义一个原点和两个方向pH、pV  进行创建。
# t: t# w8 h) [& r定义原点和方向:; A/ A: a$ s; T, p( X
double origin[3]={0.0,0.0,10.0};1 b! |5 v3 @( B! R" F/ u
double x_dir[3]={1.0,0.0,0.0};' K1 s: X1 n0 U' s
double y_dir[3]={0.0,1.0,0.0};
6 I# }/ w  ^: W: g1 ?CATISketchFactory_var spSketchFactory(pSpecContainer);* _' C+ O; X0 Q2 V# z
if ( NULL_var == spSketchFactory ) return (CATStatusChangeRCCompleted);
" _8 G7 A# _6 {# g0 N# g: F' u: _CATISketch_var spSketch(spSketchFactory->CreateSketch(origin,x_dir,y_dir));
' |4 D; C" Z2 sif ( NULL_var == spSketch ) return (CATStatusChangeRCCompleted);
! L; V. B/ U8 \# ]+ O, L' YspSketch->OpenEdition();5 l( N7 F" Y" u/ p9 T* C
到这里,你已经创建了一个Sketch,你可以在上面创建任意的草图了。
" r+ W' O7 u% r创建好记住要将其关闭:
+ m% E9 q  H$ ospSketch->CloseEdition();/ a) ^! C- x% h# S, Y. h) N

) |& u, A7 @+ o# k% C5 v) X$ n) Q, a. q3 a6 A" C1 F- H
上海点团信息科技有限公司,承接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二次开发如何实现呀' G! H9 v9 f2 a
  \  ?  T) X# [/ C
4 J' q1 l5 E, e) [( M: B. p+ y
我的第一个程序运行成功了,但是显示不正常
回复 支持 反对

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

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

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

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

    我知道了