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

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

  [复制链接]

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

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

admin 楼主

2017-12-22 13:44:56

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

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

x
CATIA二次开发入门教程---20 创建草图
: a' C, X! F- W
& ~* ^5 m2 o  F2 W4 r
) t8 C, q% Z% ]2 H[mw_shl_code=c,true]////////获得Editor、Document、Container、设置GSMFactory
2 n0 P" e8 [+ }0 x& k        CATFrmEditor* pEditor = CATFrmEditor::GeTCurrentEditor();3 b$ |) S  s% Y1 u1 D* C
        CATDocument *pDoc = pEditor->GetDocument();
! y  i1 k4 E& k. T" ?        CATIContainerOfDocument_var spConODocs = pDoc;( n3 E. h& Y' M
# z: r4 `" {( T# v
        CATIContainer*            pContainer;                //Container3 m# b, k( E9 i
        CATIPrtContainer*     pPrtContainer;//PartContainer6 g  |* V, H0 b& ^# r+ y: c3 ?
        CATIGSMFactory_var        spGSMFactory;                //GSM工厂
  f- o5 O( I/ i, S3 s# D: S$ f
: K8 a1 K/ `0 \, k% ~3 }$ i7 ^7 O2 P        CATIPrtPart_var        spPrt   ;//& {, S9 P: m/ l
        HRESULT hr = spConODocs->GetSpecContainer(pContainer);//获取Container% _: Z: m( [7 Y$ K
' \/ Q5 s; o+ y/ y- b
        hr =pContainer->QueryInterface(IID_CATIPrtContainer,(void **)&pPrtContainer);//获取PrtContainer% J# a3 \3 q- j
        spPrt = pPrtContainer->GetPart();0 e+ H$ r$ K$ M1 s& e1 U/ k
        CATListValCATISpecObject_var spListRefPlanes = spPrt->GetReferencePlanes();//获取3个参考平面
: O8 _: j1 u, x4 ?! d1 F' q- O! A; R6 p& i
        CATISpecObject_var spSketchPlane = spListRefPlanes[3];//第三个平面8 r/ b" x& Z% J/ Z( p' f% j8 N
        CATISketchFactory_var spSketchFactOnPrtCont(pPrtContainer);//草图工厂
) m0 e! f* }# t5 m        CATISketch_var spSketch = spSketchFactOnPrtCont->CreateSketch( spSketchPlane );        //创建草图
" [- R# f4 t  B# h        CATI2DWFFactory_var spWF2DFactOnSketch(spSketch);
5 O, C7 x2 d' f. @8 Z+ o' M! j) B4 R
        spSketch->OpenEdition();        //进入草图开始绘图0 L4 h: _. Q: F* f8 i
      
3 C+ V8 f: v  n" Y$ B- H2 K        spSketch->CloseEdition();//退出草图环境
( R# j$ p! ?. h# D5 U: A
4 w( l7 \- t+ Y# x      
* ~% I) P& P" ]& o[/mw_shl_code]
, C5 {' Q$ ]3 P$ ?# T# @. E6 R$ 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

有两种方式可以创建草图:
+ d6 m5 I2 E  L% J8 A) p1)通过参考平面创建4 m9 p; Y9 |8 n) D
首先获取一个CATIPrtPart变量:5 @4 i3 s* r" O1 E" t
CATIPrtPart_var spPart(pIPrtContOnDocument->GetPart());; D: Z# x" A+ G3 z5 B7 u
pIPrtContOnDocument->Release();) u% i3 u) F& J( o! K% w* L2 ~0 \
有了CATIPrtPart变量就可以利用其方法GetReferencePlanes(),获取参考平面3 C2 [0 ], N# j/ `
CATLISTV(CATISpecObject_var) spRefPlanes = spPart->GetReferencePlanes();
/ |0 k; E8 |4 V  O# T然后创建XY plane (spRefPlanes[1])
( c+ }! `& _# R. pCATISketchFactory_var spSketchFactory(pSpecContainer);
" L+ L2 `8 V) G4 s+ [if ( NULL_var == spSketchFactory ) return (CATStatusChangeRCCompleted);
# v1 X$ h) M& B$ Q  PCATISketch_var spSketch(spSketchFactory->CreateSketch(spRefPlanes[1]));
' U6 Q7 r1 H# H# r0 |& K. {* kif ( NULL_var == spSketch ) return (CATStatusChangeRCCompleted);- P3 z$ r# |  U: l& Q: @
spSketch->OpenEdition();
7 F/ F5 p+ h# }% w7 v2) 通过原点和两个矢量方向2 {# [! V# A$ T& N
该方法是通过定义一个原点和两个方向pH、pV  进行创建。7 Y: N5 s1 C* m$ J, W2 F* S9 x
定义原点和方向:
8 t3 u1 I. |. F! M$ h. ]9 Ddouble origin[3]={0.0,0.0,10.0};' |, |3 j% N6 N6 r$ q/ v1 |  \$ v
double x_dir[3]={1.0,0.0,0.0};
. W5 r* Z) p" d# Tdouble y_dir[3]={0.0,1.0,0.0};
9 J" m  B0 `+ t4 _$ {' f& pCATISketchFactory_var spSketchFactory(pSpecContainer);8 \9 g/ }8 M. V, e6 h+ _/ o
if ( NULL_var == spSketchFactory ) return (CATStatusChangeRCCompleted);) J; N: W( W4 z( m
CATISketch_var spSketch(spSketchFactory->CreateSketch(origin,x_dir,y_dir));
. W- B. ]2 S, F$ J! e" w' Yif ( NULL_var == spSketch ) return (CATStatusChangeRCCompleted);: c) j$ X% W, P9 F8 z
spSketch->OpenEdition();
  T: X6 f( J  o4 \+ J% t到这里,你已经创建了一个Sketch,你可以在上面创建任意的草图了。! s' x# ~4 {4 C' n7 ]
创建好记住要将其关闭:
6 O) S' G- H( p0 b9 h6 }spSketch->CloseEdition();
! `. q6 P# u+ x9 }4 C' P- }( O2 ^! f* e; m3 t# X

/ y1 e0 x# F8 e0 f  F5 n
上海点团信息科技有限公司,承接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 j3 D! V  S# C: }! h2 Y
- k% f9 w! \6 V& w: b+ W+ O$ d0 s# J

" ~% x1 }4 ]2 S2 J! C
我的第一个程序运行成功了,但是显示不正常
回复 支持 反对

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

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

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

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

    我知道了