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

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

  [复制链接]

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

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

admin 楼主

2017-12-22 13:44:56

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

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

x
CATIA二次开发入门教程---20 创建草图
8 d6 {- I6 k1 D/ k  P" _4 ?
9 ^- E, Q. X9 w4 S" S
$ ~- V: e7 U% g8 ~: X3 b. O* ^[mw_shl_code=c,true]////////获得Editor、Document、Container、设置GSMFactory! k7 h8 u& x% G( {" @5 s
        CATFrmEditor* pEditor = CATFrmEditor::GeTCurrentEditor();" b* L$ B6 {  L3 R% {0 X  d
        CATDocument *pDoc = pEditor->GetDocument();
3 @; l2 w9 F2 Q' B        CATIContainerOfDocument_var spConODocs = pDoc;
- u0 S' R  J) X; V0 j
& E8 ^% m, Z  t7 _- t        CATIContainer*            pContainer;                //Container
& b6 ~6 s9 P2 Z* a  C  I3 H% [        CATIPrtContainer*     pPrtContainer;//PartContainer4 C( J5 N* x* L; y
        CATIGSMFactory_var        spGSMFactory;                //GSM工厂
5 @* E/ ^; w5 N, @: C, L. h7 U/ H
        CATIPrtPart_var        spPrt   ;//- U" u$ r& x5 h6 u2 E5 \
        HRESULT hr = spConODocs->GetSpecContainer(pContainer);//获取Container
$ I5 S2 N9 A  p7 W) C
6 Y! y+ O1 y3 A% X+ D        hr =pContainer->QueryInterface(IID_CATIPrtContainer,(void **)&pPrtContainer);//获取PrtContainer
* O* e! d8 f8 Q0 D        spPrt = pPrtContainer->GetPart();9 e- ?% f8 x% A, ^1 V6 R
        CATListValCATISpecObject_var spListRefPlanes = spPrt->GetReferencePlanes();//获取3个参考平面  k- _$ G4 a# L( d8 T. ^/ u) q9 W4 _

6 W8 U- a/ j1 N% D8 [        CATISpecObject_var spSketchPlane = spListRefPlanes[3];//第三个平面+ }; Z/ {5 a# k( Z1 ?
        CATISketchFactory_var spSketchFactOnPrtCont(pPrtContainer);//草图工厂- f4 _) V& ^' X0 L& d
        CATISketch_var spSketch = spSketchFactOnPrtCont->CreateSketch( spSketchPlane );        //创建草图
7 ]* R& ^) m& H2 n( ~. n4 r: U. ~        CATI2DWFFactory_var spWF2DFactOnSketch(spSketch);
4 }; r: d# m1 }3 [; a1 r+ w/ Y0 z1 ^
        spSketch->OpenEdition();        //进入草图开始绘图8 z& G0 B* Y* H8 g
      , o) R2 g/ t9 s7 \
        spSketch->CloseEdition();//退出草图环境1 y2 c. M5 f% L* j6 o. `# S9 a

3 F- @: W! G" S; \8 b      
; N- l+ Y9 Q7 n/ m9 O- X# h[/mw_shl_code]! b2 \% Q# U+ d. y& Q0 e$ d
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

有两种方式可以创建草图:- Y6 k7 d' w& H9 }2 a
1)通过参考平面创建
7 G$ A- s$ c9 s2 G+ y首先获取一个CATIPrtPart变量:
5 W8 W& L) m2 P* }' T, P- X; K/ {CATIPrtPart_var spPart(pIPrtContOnDocument->GetPart());/ G! k5 E9 F9 \! K/ P" {  o9 g
pIPrtContOnDocument->Release();
" t( G* D/ L# T% y/ Y" f有了CATIPrtPart变量就可以利用其方法GetReferencePlanes(),获取参考平面( [( w4 E; a5 A5 r- @
CATLISTV(CATISpecObject_var) spRefPlanes = spPart->GetReferencePlanes();
: l6 J( p7 e# O: S7 I% J% u7 N/ U然后创建XY plane (spRefPlanes[1])
0 k& l6 y3 ]! \' ^, ICATISketchFactory_var spSketchFactory(pSpecContainer);- X4 B, V% L( {* B6 J  g
if ( NULL_var == spSketchFactory ) return (CATStatusChangeRCCompleted);
0 J# ^0 ?* O; E6 a! f( F9 BCATISketch_var spSketch(spSketchFactory->CreateSketch(spRefPlanes[1]));
: @8 E/ j/ F0 i8 A' dif ( NULL_var == spSketch ) return (CATStatusChangeRCCompleted);
) j! o9 l8 m+ w- nspSketch->OpenEdition();( y# G6 @& n  C& h0 {
2) 通过原点和两个矢量方向, s" z* w" d- L% I# D6 D6 f6 N. G
该方法是通过定义一个原点和两个方向pH、pV  进行创建。
2 U8 \( n4 f4 H" J8 C9 R& G" v4 }3 U定义原点和方向:
% M% ?! y) w+ i  Y9 u6 ~  h3 M1 d! G, Udouble origin[3]={0.0,0.0,10.0};
8 E0 }# m! }# W5 v( @2 qdouble x_dir[3]={1.0,0.0,0.0};
  _3 E! _4 E9 f9 l2 {double y_dir[3]={0.0,1.0,0.0};
7 O* c7 J& U7 i- q5 |. ^4 z$ KCATISketchFactory_var spSketchFactory(pSpecContainer);
* b# d- s7 l/ l, b) G2 q3 O! @# `if ( NULL_var == spSketchFactory ) return (CATStatusChangeRCCompleted);+ v# T1 d" K$ b
CATISketch_var spSketch(spSketchFactory->CreateSketch(origin,x_dir,y_dir));
) R, W4 T3 q0 ^8 @) B2 u5 J' \if ( NULL_var == spSketch ) return (CATStatusChangeRCCompleted);6 J# E8 `# J8 }: K2 s
spSketch->OpenEdition();
7 x* U: \; e, ?* c  P2 N到这里,你已经创建了一个Sketch,你可以在上面创建任意的草图了。
1 o' h. |* u6 R, t; ~8 D# J# R创建好记住要将其关闭:
4 T4 L! j1 _* X* s& N/ h) zspSketch->CloseEdition();
; x7 E  T( x6 j/ D: W; {" H) ^7 {% b% j$ u# O

, a3 A+ y9 N6 b- 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二次开发如何实现呀
  {' T& n6 w- S: t1 j1 h9 N
% t  _& S; y* b+ M7 N3 R
1 O8 T4 t0 R0 _: L
我的第一个程序运行成功了,但是显示不正常
回复 支持 反对

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

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

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

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

    我知道了