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

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

  [复制链接]

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

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

admin 楼主

2017-12-22 13:44:56

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

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

x
CATIA二次开发入门教程---20 创建草图
. f. R% U' v. k9 H, \; S& S
% Y& o6 N4 C  i0 ~" H% ~  B: R$ |3 f6 E) P8 E
[mw_shl_code=c,true]////////获得Editor、Document、Container、设置GSMFactory2 o6 E' P& g# A5 X
        CATFrmEditor* pEditor = CATFrmEditor::GeTCurrentEditor();( n5 B1 S& }  [  D
        CATDocument *pDoc = pEditor->GetDocument();
+ V8 E& a- X2 u# Z3 ]1 W( Z, H8 j        CATIContainerOfDocument_var spConODocs = pDoc;
  P  N3 J( ], s0 G" y0 Z
: N( T* f  c- _1 \! D& N        CATIContainer*            pContainer;                //Container
7 d( B2 h! F3 V8 U        CATIPrtContainer*     pPrtContainer;//PartContainer* {+ v6 o5 ~9 [" Y! S/ g
        CATIGSMFactory_var        spGSMFactory;                //GSM工厂
) }) p3 p+ @0 ~
$ ~* K! M2 O! |0 H        CATIPrtPart_var        spPrt   ;//
9 O, H4 s& J# _! {        HRESULT hr = spConODocs->GetSpecContainer(pContainer);//获取Container
. |! D4 {) ?+ }" j. K+ J8 U4 h5 h5 v* w$ _4 `9 n
        hr =pContainer->QueryInterface(IID_CATIPrtContainer,(void **)&pPrtContainer);//获取PrtContainer
% a$ b2 b" y& V+ O( I        spPrt = pPrtContainer->GetPart();' h* ?9 B+ m. n0 a- P5 B9 Q
        CATListValCATISpecObject_var spListRefPlanes = spPrt->GetReferencePlanes();//获取3个参考平面
) }% C: x: [1 b. ], n
. w, z: G. I9 |2 {5 P        CATISpecObject_var spSketchPlane = spListRefPlanes[3];//第三个平面$ ]+ i' A* q. J+ m
        CATISketchFactory_var spSketchFactOnPrtCont(pPrtContainer);//草图工厂" J9 L4 g! {, `  Z4 W1 n
        CATISketch_var spSketch = spSketchFactOnPrtCont->CreateSketch( spSketchPlane );        //创建草图
$ g; w0 b- a! X        CATI2DWFFactory_var spWF2DFactOnSketch(spSketch);
; [( @  b3 t4 H7 ~* ~1 U
5 Y% W% m4 p4 ^6 k) b' s7 R. ~        spSketch->OpenEdition();        //进入草图开始绘图
* z, S1 S7 E( r/ G8 w      
) ^+ P+ P9 \9 k/ |1 |/ r' [5 _        spSketch->CloseEdition();//退出草图环境$ B' X+ b, \5 ^9 Y* B
5 G& \4 G5 S* C/ ?) c
      " ]$ }6 a5 ~' W1 u: ^
[/mw_shl_code]
4 }" L4 m" I" R" A% R
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

有两种方式可以创建草图:
, P0 F8 i2 b* L8 a1)通过参考平面创建) `/ t; o  h* H# B' r; M: g
首先获取一个CATIPrtPart变量:
$ y7 R* U8 \0 G) O, @CATIPrtPart_var spPart(pIPrtContOnDocument->GetPart());- v  |) A5 I3 d! ~3 A: |- U% P) i- ]
pIPrtContOnDocument->Release();6 V. [9 _5 a+ v( }
有了CATIPrtPart变量就可以利用其方法GetReferencePlanes(),获取参考平面
+ S% b4 S( |. l3 Z7 FCATLISTV(CATISpecObject_var) spRefPlanes = spPart->GetReferencePlanes();/ F1 W2 `1 b7 P3 _
然后创建XY plane (spRefPlanes[1])
7 g& J* A" c. N5 ACATISketchFactory_var spSketchFactory(pSpecContainer);" {# z( g6 g  @1 |& I
if ( NULL_var == spSketchFactory ) return (CATStatusChangeRCCompleted);( q# f5 p$ M5 U! S5 G6 d
CATISketch_var spSketch(spSketchFactory->CreateSketch(spRefPlanes[1]));
4 t2 ~2 n$ a; rif ( NULL_var == spSketch ) return (CATStatusChangeRCCompleted);
' E% Q4 O* @8 {spSketch->OpenEdition();4 q+ [/ J8 \* r
2) 通过原点和两个矢量方向" E! n( i4 A) f
该方法是通过定义一个原点和两个方向pH、pV  进行创建。" |% |# s3 |" T% I! q% d0 ^8 M
定义原点和方向:2 u5 Y$ ^8 D% ~- s
double origin[3]={0.0,0.0,10.0};
7 X9 F% I9 T/ k' m4 Z  tdouble x_dir[3]={1.0,0.0,0.0};
; E' ?0 J- p' e! `double y_dir[3]={0.0,1.0,0.0};
" w/ `& N2 z! o2 B: MCATISketchFactory_var spSketchFactory(pSpecContainer);3 W, H6 D5 v% E7 i
if ( NULL_var == spSketchFactory ) return (CATStatusChangeRCCompleted);
9 d9 |8 x. q& {$ R# N6 P' w3 NCATISketch_var spSketch(spSketchFactory->CreateSketch(origin,x_dir,y_dir));
# g! Q4 f* U/ l* I6 H' Oif ( NULL_var == spSketch ) return (CATStatusChangeRCCompleted);
! w$ a5 r& a8 s1 P  PspSketch->OpenEdition();% j. e1 k' d; ?( B7 x, q
到这里,你已经创建了一个Sketch,你可以在上面创建任意的草图了。- D+ Y, ^  J, `: x2 r! D
创建好记住要将其关闭:5 A3 N' x( u( s7 Z2 |5 }' f& N
spSketch->CloseEdition();
0 R% {! a+ V4 j7 o, n0 N/ W0 P# S- P; @& K) G( c$ G+ j

( v1 q/ q$ z+ C3 o* b& B
上海点团信息科技有限公司,承接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二次开发如何实现呀
# p6 F- M8 y5 E/ M& d
; e6 ?. F. v" C( \% W9 B
5 t% t+ Q# T; n' o
我的第一个程序运行成功了,但是显示不正常
回复 支持 反对

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

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

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

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

    我知道了