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

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

  [复制链接]

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

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

admin 楼主

2017-12-22 13:44:56

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

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

x
CATIA二次开发入门教程---20 创建草图
, o" u  E' d3 I& p8 b2 s  S+ h% x! [) y7 h

! z+ p4 l+ ?8 W4 g/ @[mw_shl_code=c,true]////////获得Editor、Document、Container、设置GSMFactory0 @( k4 V! t6 D. Z2 u
        CATFrmEditor* pEditor = CATFrmEditor::GeTCurrentEditor();6 V! ^# j% v- Y* D  J# n' w
        CATDocument *pDoc = pEditor->GetDocument();
8 O' Y: {7 \  p7 G+ `% D' l( a        CATIContainerOfDocument_var spConODocs = pDoc;- p$ K, Y& t/ o# h0 a( A

  W# R$ W6 C$ F; u        CATIContainer*            pContainer;                //Container6 D# `8 i) M3 ]$ |6 K
        CATIPrtContainer*     pPrtContainer;//PartContainer
' n5 g! P/ |" K( X  k' @        CATIGSMFactory_var        spGSMFactory;                //GSM工厂
$ j% M6 k4 a; w9 {
( C  b  u1 @7 h8 R1 N. B' o0 k        CATIPrtPart_var        spPrt   ;//
8 Q; H7 ^. ]4 }! ~: N& ^- ^        HRESULT hr = spConODocs->GetSpecContainer(pContainer);//获取Container2 M3 u7 R7 B7 I; p# r
# t. R  N8 [9 b* ^' D
        hr =pContainer->QueryInterface(IID_CATIPrtContainer,(void **)&pPrtContainer);//获取PrtContainer% y& Y, b# J4 M$ |. n! [# E# @
        spPrt = pPrtContainer->GetPart();
/ y* i% |' ]' I1 y% M  }% ~        CATListValCATISpecObject_var spListRefPlanes = spPrt->GetReferencePlanes();//获取3个参考平面
' w2 T  s* D# j2 w  r' ], i! ]* A. c
        CATISpecObject_var spSketchPlane = spListRefPlanes[3];//第三个平面! N& b/ E3 P, v# z3 c
        CATISketchFactory_var spSketchFactOnPrtCont(pPrtContainer);//草图工厂- i4 ~9 j* j. C
        CATISketch_var spSketch = spSketchFactOnPrtCont->CreateSketch( spSketchPlane );        //创建草图9 y5 m% ^9 U3 q, Q) ~: T5 D$ `
        CATI2DWFFactory_var spWF2DFactOnSketch(spSketch);
" ^  |/ m3 j' w; F, W
7 H7 [0 a2 s( G8 m! U* A5 E        spSketch->OpenEdition();        //进入草图开始绘图
. v4 _, f2 q# r0 B      & @4 t7 P7 Y+ ?7 X
        spSketch->CloseEdition();//退出草图环境
$ [- {0 [9 R4 \+ `6 c# [- d2 H6 v& E5 F+ M2 k
      0 O9 j8 e" s% o0 C. z
[/mw_shl_code]
, k$ Y$ U; j6 C6 c; R# y3 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

有两种方式可以创建草图:* z; T/ M" h, o: L$ o
1)通过参考平面创建" [6 j6 g, \* A
首先获取一个CATIPrtPart变量:: J: _2 J+ V, W' @+ t" ~
CATIPrtPart_var spPart(pIPrtContOnDocument->GetPart());
: b+ W3 q+ D5 Z$ i6 BpIPrtContOnDocument->Release();
" q( O; P9 |- l$ [& t有了CATIPrtPart变量就可以利用其方法GetReferencePlanes(),获取参考平面
' p8 _/ P7 i# v/ s' F& }; ?CATLISTV(CATISpecObject_var) spRefPlanes = spPart->GetReferencePlanes();& h' l( R$ R: n4 b
然后创建XY plane (spRefPlanes[1])
( Q) F% V2 V* x6 v  x2 hCATISketchFactory_var spSketchFactory(pSpecContainer);( l# n& U$ R# u' M0 `4 g; q+ ^% c
if ( NULL_var == spSketchFactory ) return (CATStatusChangeRCCompleted);$ S7 F) e4 b5 v
CATISketch_var spSketch(spSketchFactory->CreateSketch(spRefPlanes[1]));
% D" w$ ^; }% b8 I# N0 ?6 I( kif ( NULL_var == spSketch ) return (CATStatusChangeRCCompleted);. e' r+ Q7 f8 B$ _& r9 p" g& n! n
spSketch->OpenEdition();
- p* o6 t2 N+ }2 A% a" v: z: D2) 通过原点和两个矢量方向' C$ T! u0 s' J# K! {
该方法是通过定义一个原点和两个方向pH、pV  进行创建。3 ?7 |1 H% K; |9 z. D
定义原点和方向:
; ]2 ^" h* I, I+ ^' i9 j' sdouble origin[3]={0.0,0.0,10.0};
$ h. \# T4 g. ydouble x_dir[3]={1.0,0.0,0.0};
2 n( b6 b+ `- ~8 cdouble y_dir[3]={0.0,1.0,0.0};- U. Z( k! E: Q; [. F! ]
CATISketchFactory_var spSketchFactory(pSpecContainer);: ?7 m0 `1 t; R8 f, N9 N
if ( NULL_var == spSketchFactory ) return (CATStatusChangeRCCompleted);
5 i! {8 O. l, t$ p/ f: Z) eCATISketch_var spSketch(spSketchFactory->CreateSketch(origin,x_dir,y_dir));$ {/ i3 q, l  c6 C; S; m9 z- v
if ( NULL_var == spSketch ) return (CATStatusChangeRCCompleted);
6 _- J( E% x) j. C2 ~spSketch->OpenEdition();
- E% g+ |4 x( s+ @到这里,你已经创建了一个Sketch,你可以在上面创建任意的草图了。7 \* k$ P6 |  \* J* v; b- t
创建好记住要将其关闭:
9 E' M. F& w" V7 S/ @5 R( @spSketch->CloseEdition();+ q% {* Y& {  q6 C0 s
$ E7 A7 [0 @( ?, L5 s

& A/ D- H5 k6 S7 C
上海点团信息科技有限公司,承接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二次开发如何实现呀3 o9 I+ W8 N0 M1 Y

0 s' o+ `# _1 Q: ]1 |. H
, G  b& ]  P: v$ Z
我的第一个程序运行成功了,但是显示不正常
回复 支持 反对

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

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

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

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

    我知道了