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

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

  [复制链接]

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

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

admin 楼主

2017-12-22 13:44:56

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

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

x
CATIA二次开发入门教程---20 创建草图
7 _$ q% p4 z- r/ t
: ?# _2 h! a* A% I" z7 E  e: {  X9 p7 S9 y$ T
[mw_shl_code=c,true]////////获得Editor、Document、Container、设置GSMFactory1 S- V8 F% u, u( w7 ]; z. G
        CATFrmEditor* pEditor = CATFrmEditor::GeTCurrentEditor();
) D- i/ [. }8 I' X" g: X% {        CATDocument *pDoc = pEditor->GetDocument();
5 `7 w% P, M% D# U0 H' V        CATIContainerOfDocument_var spConODocs = pDoc;2 G) X( I1 v: ^

+ ~+ I9 Z0 g# ]        CATIContainer*            pContainer;                //Container9 c1 _# u" x2 ~3 g- ~1 m, s  ]& X: t
        CATIPrtContainer*     pPrtContainer;//PartContainer. a9 m8 q8 u' A+ B
        CATIGSMFactory_var        spGSMFactory;                //GSM工厂" u% F( e* X% ~1 W+ J+ J

6 a6 q8 {( G4 [6 N6 M4 H        CATIPrtPart_var        spPrt   ;//
! i) h! y1 ?/ W- U        HRESULT hr = spConODocs->GetSpecContainer(pContainer);//获取Container
' l/ Q: I$ B0 B# D/ Z1 l! @
1 N3 G$ |1 _# [( q! D9 A        hr =pContainer->QueryInterface(IID_CATIPrtContainer,(void **)&pPrtContainer);//获取PrtContainer
; m- [: t( H( N* ]        spPrt = pPrtContainer->GetPart();
4 y* A' b7 Q1 j  {0 r# d1 s3 \        CATListValCATISpecObject_var spListRefPlanes = spPrt->GetReferencePlanes();//获取3个参考平面
! \$ w; w# }1 [0 K
) ^' m! n- ]1 _6 n: L        CATISpecObject_var spSketchPlane = spListRefPlanes[3];//第三个平面( {- X, M' S2 m9 F" a
        CATISketchFactory_var spSketchFactOnPrtCont(pPrtContainer);//草图工厂
. w7 E7 A0 @. q4 a) h& v        CATISketch_var spSketch = spSketchFactOnPrtCont->CreateSketch( spSketchPlane );        //创建草图* F3 i- m  l" H
        CATI2DWFFactory_var spWF2DFactOnSketch(spSketch);6 v3 Q1 [; z! j; U2 a
6 g4 q) K; W9 D' t5 J
        spSketch->OpenEdition();        //进入草图开始绘图/ d3 B, C) g7 m  z* x; I
      
- H# J& m0 _1 ?! i' u% j        spSketch->CloseEdition();//退出草图环境
* g! v0 S0 [4 t& ]1 m
: G% T5 Q0 r6 o4 @      
, J3 b, N+ p% y5 C6 }  N$ c2 F+ S# [[/mw_shl_code]
3 T; M& R, E- o" [% W$ }
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

有两种方式可以创建草图:: M8 R" p$ P3 H
1)通过参考平面创建- l/ ]4 z+ I5 N" j5 s8 g) c9 L' C
首先获取一个CATIPrtPart变量:0 r9 ~5 Z0 ~/ P4 z( U
CATIPrtPart_var spPart(pIPrtContOnDocument->GetPart());! {8 V- ]- j$ O4 G' l% r1 O
pIPrtContOnDocument->Release();
8 F2 P, M+ D& I% R( [7 H! a有了CATIPrtPart变量就可以利用其方法GetReferencePlanes(),获取参考平面7 l& u$ B2 g6 Y$ H3 Q6 O- g4 ]5 g% }
CATLISTV(CATISpecObject_var) spRefPlanes = spPart->GetReferencePlanes();6 H0 L, x$ [& |( o
然后创建XY plane (spRefPlanes[1])5 M- x' o/ H+ K' T7 l7 U' `: z
CATISketchFactory_var spSketchFactory(pSpecContainer);
) G. m! P9 S9 B/ W/ S3 c' ~if ( NULL_var == spSketchFactory ) return (CATStatusChangeRCCompleted);5 z( g8 B& _! j
CATISketch_var spSketch(spSketchFactory->CreateSketch(spRefPlanes[1]));* D) J. h, Q  L5 C
if ( NULL_var == spSketch ) return (CATStatusChangeRCCompleted);6 @8 t, L/ H! h* Z. M7 T' j8 ~! n
spSketch->OpenEdition();
6 j- e% X: x3 i* X, n2) 通过原点和两个矢量方向
8 \  \' Q8 N4 M. }6 ]该方法是通过定义一个原点和两个方向pH、pV  进行创建。3 i" l: l+ o: Y4 t
定义原点和方向:4 M. \% L& T) x. \% ?. P8 o- }
double origin[3]={0.0,0.0,10.0};
+ C- ^1 v1 f/ ydouble x_dir[3]={1.0,0.0,0.0};) U3 n( H9 S$ M& g8 u0 F
double y_dir[3]={0.0,1.0,0.0};
3 U! W/ i2 v% J6 R; E$ B5 ICATISketchFactory_var spSketchFactory(pSpecContainer);, O( R0 V1 |- d4 [$ ^* N4 M) H
if ( NULL_var == spSketchFactory ) return (CATStatusChangeRCCompleted);
- {' ]# Y' Q8 v% @+ y2 `$ e& ICATISketch_var spSketch(spSketchFactory->CreateSketch(origin,x_dir,y_dir));0 o% \5 f: J) X" q
if ( NULL_var == spSketch ) return (CATStatusChangeRCCompleted);4 j4 D! y# i# U3 E4 W4 _
spSketch->OpenEdition();" n- l+ y1 ^5 R/ ?: u
到这里,你已经创建了一个Sketch,你可以在上面创建任意的草图了。
, d, R, W; C- X9 d# @0 l( r创建好记住要将其关闭:
: h. ?  @4 `5 ]* v2 J# CspSketch->CloseEdition();
1 D$ B9 o0 Z& [( @4 y7 q  [. S. Z4 Q) E
9 J1 i# j' e( O* ~9 Z
上海点团信息科技有限公司,承接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二次开发如何实现呀$ _2 z7 E* }" H9 B, F
- z: i0 r7 s3 \* N! S: B! {& {
# b! X  W: `. }7 J1 x( m
我的第一个程序运行成功了,但是显示不正常
回复 支持 反对

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

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

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

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

    我知道了