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

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

  [复制链接]

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

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

admin 楼主

2017-12-22 13:44:56

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

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

x
CATIA二次开发入门教程---20 创建草图
$ J0 k# M/ g3 x+ R, O% G8 T/ U9 H6 Q: C6 U- R

. Y7 Q4 `: D% B1 Z: c5 k6 Y[mw_shl_code=c,true]////////获得Editor、Document、Container、设置GSMFactory+ q8 j" C. {0 d5 Z+ {- S8 ^; f  i
        CATFrmEditor* pEditor = CATFrmEditor::GeTCurrentEditor();
7 X1 J9 U# r1 ]2 j, u0 K( z( M0 @' }        CATDocument *pDoc = pEditor->GetDocument();
7 o) Y- S. q  N$ x' [! Z        CATIContainerOfDocument_var spConODocs = pDoc;) p; o3 O# `; v2 F- F

) S/ e* v4 z8 Z$ H# g5 H8 f2 c        CATIContainer*            pContainer;                //Container
1 k& J) `* @0 }) @) \        CATIPrtContainer*     pPrtContainer;//PartContainer2 O2 b. d; |5 s3 s, w0 {
        CATIGSMFactory_var        spGSMFactory;                //GSM工厂- Z! @1 s5 S. B4 d. I! r8 s4 n" t
+ n* Z$ z$ m8 W* q" ~8 h, n. Q
        CATIPrtPart_var        spPrt   ;//
( I. c% ~$ L4 }, P        HRESULT hr = spConODocs->GetSpecContainer(pContainer);//获取Container
, g- {9 s% n0 z2 S, \' n* p5 e, ^: N/ `, e0 V7 N
        hr =pContainer->QueryInterface(IID_CATIPrtContainer,(void **)&pPrtContainer);//获取PrtContainer
0 n4 I1 }' ^( Z4 f8 f/ w0 z8 a        spPrt = pPrtContainer->GetPart();
, c! }8 e7 G0 l* m# w        CATListValCATISpecObject_var spListRefPlanes = spPrt->GetReferencePlanes();//获取3个参考平面
! L  z. p/ a& W+ D; y3 @' O% f
  Z) t0 P7 ]; X+ P& R        CATISpecObject_var spSketchPlane = spListRefPlanes[3];//第三个平面
) A5 m* g& g. n0 ~        CATISketchFactory_var spSketchFactOnPrtCont(pPrtContainer);//草图工厂
, X) m: x7 _! Q' i# M) o        CATISketch_var spSketch = spSketchFactOnPrtCont->CreateSketch( spSketchPlane );        //创建草图
- H# E0 H3 F/ F! X        CATI2DWFFactory_var spWF2DFactOnSketch(spSketch);
7 O( R6 j" \* \& l) n3 i9 W! h# E6 {, ]
! w% w. F; E% H- V! r6 [9 J# h        spSketch->OpenEdition();        //进入草图开始绘图
* M) l0 D# I5 V( H; L6 ]+ c      8 v" f% S7 I6 o* O# h
        spSketch->CloseEdition();//退出草图环境7 N0 y$ e% R* ~) a, x, S8 ]* {1 r- ^
3 b! u9 K$ ^# l+ p
      
/ c% ?% e- J6 V+ q$ I& D, h[/mw_shl_code]
3 P8 I. N- `$ e2 u/ F; R- q
QQ截图20171224112147.png
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

全部回复2

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

admin 沙发

2017-12-22 13:45:19

有两种方式可以创建草图:3 C6 k$ q" N5 {( R" N9 O6 D
1)通过参考平面创建
- L3 u( ?* K& E' c+ C0 \. q- j% G首先获取一个CATIPrtPart变量:3 P" l. l2 n. w6 _4 w6 k  P
CATIPrtPart_var spPart(pIPrtContOnDocument->GetPart());
6 Q8 L; _! h9 w; [pIPrtContOnDocument->Release();* g* @, ~0 r1 }* j, V
有了CATIPrtPart变量就可以利用其方法GetReferencePlanes(),获取参考平面) }5 c) o; G& a
CATLISTV(CATISpecObject_var) spRefPlanes = spPart->GetReferencePlanes();; p/ x) `. L# f) u& N2 a8 O
然后创建XY plane (spRefPlanes[1])$ U' E4 k) I6 J& u
CATISketchFactory_var spSketchFactory(pSpecContainer);
4 a2 c& z* A8 f5 G1 K( W, Iif ( NULL_var == spSketchFactory ) return (CATStatusChangeRCCompleted);
( r2 B6 ^5 N; n4 V" ]CATISketch_var spSketch(spSketchFactory->CreateSketch(spRefPlanes[1]));2 z% K( e5 d. @- \
if ( NULL_var == spSketch ) return (CATStatusChangeRCCompleted);: z" ^4 X* ]9 v4 ]3 S% T
spSketch->OpenEdition();
1 v& t0 Z0 c) S/ T5 \- r2) 通过原点和两个矢量方向
8 d; U1 A" }( u/ }3 C8 Q该方法是通过定义一个原点和两个方向pH、pV  进行创建。
$ P. }4 C$ g: B9 G; j2 ^' V定义原点和方向:
' z) N( P& I) A4 A6 l5 d7 cdouble origin[3]={0.0,0.0,10.0};
) X/ R! s) S2 ~double x_dir[3]={1.0,0.0,0.0};
. _, O6 m8 R4 E4 c1 j4 P7 h4 Udouble y_dir[3]={0.0,1.0,0.0};
% i* u9 C$ S2 Y+ fCATISketchFactory_var spSketchFactory(pSpecContainer);
- u* ^/ x! f7 K& Tif ( NULL_var == spSketchFactory ) return (CATStatusChangeRCCompleted);2 x; c/ ^; |0 k9 V" n" H6 W
CATISketch_var spSketch(spSketchFactory->CreateSketch(origin,x_dir,y_dir));
, {2 m& p/ _8 N+ p2 pif ( NULL_var == spSketch ) return (CATStatusChangeRCCompleted);
  o  u3 G2 X- G  Z+ v/ zspSketch->OpenEdition();
" _" M2 I; [6 ]) \7 m+ ?& r/ o到这里,你已经创建了一个Sketch,你可以在上面创建任意的草图了。8 P7 i! M2 Y# H3 a. h, x4 a
创建好记住要将其关闭:
" Q0 m9 j. S% s1 q) }3 z: P& EspSketch->CloseEdition();
! ]+ v5 i4 s( |/ j9 A: p6 f& ?. ]9 _) G. x6 L7 i. C8 }& i
3 ^9 f9 L/ m7 r7 N" B
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

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

cwp86 板凳

2018-3-25 10:10:36

在设计产品是不可能只选择XY,XZ,YZ这三个参九参考面,哪么问题就来了,例如用户选择实体上某个平面特征为参考面,进行下步的设计,这个在产品设计过程中经常使用,CAA二次开发如何实现呀
% A+ P9 f' B. b: Q, P! H+ [3 V8 L$ L2 c0 I  W

( w9 V0 q+ Z8 g# J8 ?, i- B2 K
我的第一个程序运行成功了,但是显示不正常
回复 支持 反对

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

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

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

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

    我知道了