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

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

  [复制链接]

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

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

admin 楼主

2017-12-22 13:44:56

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

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

x
CATIA二次开发入门教程---20 创建草图  F; V) [, p9 N- s

9 t$ `5 P6 D7 U4 ?3 }% i, y1 [: |1 P/ a' ]7 O
[mw_shl_code=c,true]////////获得Editor、Document、Container、设置GSMFactory! u" R( O7 h: ^" T4 }
        CATFrmEditor* pEditor = CATFrmEditor::GeTCurrentEditor();+ E3 V7 ?2 O! j8 N2 {# }
        CATDocument *pDoc = pEditor->GetDocument();* ]/ o2 E- R+ h
        CATIContainerOfDocument_var spConODocs = pDoc;$ f! R, o+ l( U: v2 X( F, x! O$ U

! S+ x2 ?* h+ T# e' |* x        CATIContainer*            pContainer;                //Container' C* Z4 p# T7 X
        CATIPrtContainer*     pPrtContainer;//PartContainer' i& w' r6 ~2 D6 K- {. B1 d) S) n
        CATIGSMFactory_var        spGSMFactory;                //GSM工厂
( B+ W+ S/ Q6 f) J; {
! R" K9 x$ @" b* s$ }) ]        CATIPrtPart_var        spPrt   ;//
( `4 R7 E8 K8 N! {0 d$ [        HRESULT hr = spConODocs->GetSpecContainer(pContainer);//获取Container
' i% w( o1 u9 U" U- u2 F6 f
, ?6 W% A# ~% k. z. Q" r. T        hr =pContainer->QueryInterface(IID_CATIPrtContainer,(void **)&pPrtContainer);//获取PrtContainer
7 M* w! ]7 W2 M  W        spPrt = pPrtContainer->GetPart();8 W) Z: m7 x" {* v# m
        CATListValCATISpecObject_var spListRefPlanes = spPrt->GetReferencePlanes();//获取3个参考平面
8 X: @- w' @, W8 y2 e: I2 e; G5 Y$ O
( l% x- ?) z- J- J        CATISpecObject_var spSketchPlane = spListRefPlanes[3];//第三个平面% V& ~6 v0 c, R
        CATISketchFactory_var spSketchFactOnPrtCont(pPrtContainer);//草图工厂
' J8 u/ Q+ T: l& s, X$ C: X        CATISketch_var spSketch = spSketchFactOnPrtCont->CreateSketch( spSketchPlane );        //创建草图
0 E7 y1 @8 w& M' H4 @1 f- A        CATI2DWFFactory_var spWF2DFactOnSketch(spSketch);
, d: k1 k: D) h5 C( _* {' H8 Z
. m' S8 g5 M" m' b& N; Z& ^) B2 B        spSketch->OpenEdition();        //进入草图开始绘图& ?+ v8 O! x$ V: z1 ~1 q
      6 E; E8 p2 J- E5 ~9 G8 s
        spSketch->CloseEdition();//退出草图环境
/ b: w- N7 s. B# Q
! g9 F6 i, s- M8 J) f      ! H! y  O; }; L; a  Y8 m' ?5 s
[/mw_shl_code]
) G. z5 R9 b, X2 w; @4 v9 g
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

有两种方式可以创建草图:
9 Y  _5 f* ^$ z% `7 v9 e1)通过参考平面创建
' _1 }( J4 ^+ s2 a' F+ A; ?5 e首先获取一个CATIPrtPart变量:
* L# S  o. T7 }" [CATIPrtPart_var spPart(pIPrtContOnDocument->GetPart());; O7 R" A  G% z3 t( r; e7 C
pIPrtContOnDocument->Release();0 b; \* R  q" l2 {: d+ S3 y
有了CATIPrtPart变量就可以利用其方法GetReferencePlanes(),获取参考平面
+ N. A% Y: [* C6 _8 fCATLISTV(CATISpecObject_var) spRefPlanes = spPart->GetReferencePlanes();
) r9 e6 |0 u- F, N" I然后创建XY plane (spRefPlanes[1])  [, U; W5 |  `2 d: \% Z
CATISketchFactory_var spSketchFactory(pSpecContainer);
6 i, o2 ~& F& ]! ]! rif ( NULL_var == spSketchFactory ) return (CATStatusChangeRCCompleted);# ~- B, |6 t& h3 M% M. X2 s
CATISketch_var spSketch(spSketchFactory->CreateSketch(spRefPlanes[1]));0 K' [  N5 ~: D1 _
if ( NULL_var == spSketch ) return (CATStatusChangeRCCompleted);3 E2 v( y6 M& {7 y1 S  m" ?7 y
spSketch->OpenEdition();
8 i: G' ?5 C& ^1 n& |# N2) 通过原点和两个矢量方向
# n# [$ F) W' ^) Y- G; ~$ a1 k3 f该方法是通过定义一个原点和两个方向pH、pV  进行创建。. D# l  [# U. w8 M! _2 }- V
定义原点和方向:6 i% t8 h6 E7 g3 M6 @& `  V$ u
double origin[3]={0.0,0.0,10.0};6 I8 ]0 u% a+ y
double x_dir[3]={1.0,0.0,0.0};
9 c3 A9 J& N7 g; c% ^0 ]7 X8 K5 ]double y_dir[3]={0.0,1.0,0.0};7 [; a8 w1 H- A. K/ E  F+ I! e
CATISketchFactory_var spSketchFactory(pSpecContainer);9 O0 w) n6 D9 x( P0 Z8 \% x
if ( NULL_var == spSketchFactory ) return (CATStatusChangeRCCompleted);
! @# e/ @# q1 g# |$ M- r' kCATISketch_var spSketch(spSketchFactory->CreateSketch(origin,x_dir,y_dir));
9 {: _8 L! e& d, B/ O, Hif ( NULL_var == spSketch ) return (CATStatusChangeRCCompleted);& p8 e' S4 e. o4 A' c/ e
spSketch->OpenEdition();: u1 r) p0 N7 x- F1 ~7 y
到这里,你已经创建了一个Sketch,你可以在上面创建任意的草图了。$ H2 l( z  _. v' z
创建好记住要将其关闭:
8 t1 w; I3 F- m; Z3 X' R2 V  SspSketch->CloseEdition();
7 _& \" O1 ~1 I8 [4 c; i$ G1 n. S1 _4 |4 F) m% d! f
* c6 m6 @! X- y
上海点团信息科技有限公司,承接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二次开发如何实现呀. \- p- m/ Y$ V% X& c

5 [6 x8 ~( G5 ]2 l; N1 U, h& k( `/ a  f6 {7 w6 C
我的第一个程序运行成功了,但是显示不正常
回复 支持 反对

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

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

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

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

    我知道了