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

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

  [复制链接]

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

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

admin 楼主

2017-12-22 13:44:56

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

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

x
CATIA二次开发入门教程---20 创建草图
8 s* q+ f1 T' ]. Z* E1 Z$ o
/ ^( Y( ?3 W6 r8 `. ?
+ ?1 G; e7 H8 B[mw_shl_code=c,true]////////获得Editor、Document、Container、设置GSMFactory! A! k! d; Q9 G9 y
        CATFrmEditor* pEditor = CATFrmEditor::GeTCurrentEditor();
( `6 }. u0 f0 k- J# X1 W        CATDocument *pDoc = pEditor->GetDocument();
$ @7 d4 Z, J6 K9 A% b# B        CATIContainerOfDocument_var spConODocs = pDoc;
% q  B7 c$ j) K9 a' R" q- J2 q
/ T, o( \* o& I$ X+ D& R! T! K        CATIContainer*            pContainer;                //Container
3 t8 A' U5 @2 c: Z/ d0 h        CATIPrtContainer*     pPrtContainer;//PartContainer5 {3 R2 l8 n6 K6 K& S
        CATIGSMFactory_var        spGSMFactory;                //GSM工厂
) C  G0 U: F, q
' d+ q4 @0 [2 P5 V# t5 V4 C        CATIPrtPart_var        spPrt   ;//
, O& X6 b9 W% ~! I        HRESULT hr = spConODocs->GetSpecContainer(pContainer);//获取Container: Z' t, y) H# ]* b3 y, ~8 |
! G5 E5 y% b, u# U4 v* V
        hr =pContainer->QueryInterface(IID_CATIPrtContainer,(void **)&pPrtContainer);//获取PrtContainer2 [$ g) F' P0 W* d, Y
        spPrt = pPrtContainer->GetPart();
' g7 [/ |( Y, @( ~        CATListValCATISpecObject_var spListRefPlanes = spPrt->GetReferencePlanes();//获取3个参考平面
# _) O7 Q  d, Z
0 r" B: o: B- i        CATISpecObject_var spSketchPlane = spListRefPlanes[3];//第三个平面; W7 [0 v1 ^6 a$ G3 t  ?
        CATISketchFactory_var spSketchFactOnPrtCont(pPrtContainer);//草图工厂
1 T' N4 v8 v! i        CATISketch_var spSketch = spSketchFactOnPrtCont->CreateSketch( spSketchPlane );        //创建草图) v& V: Y. ]0 h) g
        CATI2DWFFactory_var spWF2DFactOnSketch(spSketch);
& ?4 k3 j3 z& w# E) G3 R& j$ S* A3 G: ?( z3 j7 x+ m
        spSketch->OpenEdition();        //进入草图开始绘图
! Q) B9 w( ?) O; e      $ V7 k5 P) e2 B/ D- E0 ]
        spSketch->CloseEdition();//退出草图环境/ a; o1 }: l$ [" r% v& O( U) F
$ P8 a" y1 Y% c' \4 Q2 ]' o
      
0 v: X8 s6 L' p  ?4 U, Q0 J[/mw_shl_code]8 Y0 z9 z# P! E# v5 H+ g% J; Y
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

有两种方式可以创建草图:% Q  [2 x7 [  N  t
1)通过参考平面创建
- h6 B; @. k3 i7 f2 u* x首先获取一个CATIPrtPart变量:
+ Y* v* e  V- u. {CATIPrtPart_var spPart(pIPrtContOnDocument->GetPart());7 K$ U  t% {, ^/ U2 n# B& `- \
pIPrtContOnDocument->Release();2 V. M; h/ ?3 k8 L* A
有了CATIPrtPart变量就可以利用其方法GetReferencePlanes(),获取参考平面2 b5 j: p% D& U8 T- Z3 L1 K
CATLISTV(CATISpecObject_var) spRefPlanes = spPart->GetReferencePlanes();# J& ~. W5 E# l# a" A0 Z. v% D/ |
然后创建XY plane (spRefPlanes[1])3 Y# H. }' ?+ E. O* O3 Z& k
CATISketchFactory_var spSketchFactory(pSpecContainer);
' ^1 x: b3 m4 D6 x4 {& M! Hif ( NULL_var == spSketchFactory ) return (CATStatusChangeRCCompleted);) U* ~8 [$ X/ t
CATISketch_var spSketch(spSketchFactory->CreateSketch(spRefPlanes[1]));
* W5 ]! B# V) j2 T' v- pif ( NULL_var == spSketch ) return (CATStatusChangeRCCompleted);
/ z1 c2 p0 u9 ispSketch->OpenEdition();
: ^% W7 G# }# o( l1 y' [3 q2) 通过原点和两个矢量方向3 l, G. B0 e" F
该方法是通过定义一个原点和两个方向pH、pV  进行创建。! L, ^9 b3 |. ]- D( j
定义原点和方向:) ~# x' K/ w8 P
double origin[3]={0.0,0.0,10.0};
  W4 @1 j3 @" V/ s, |$ H. ^& bdouble x_dir[3]={1.0,0.0,0.0};0 \+ b1 [: K$ A. `6 b
double y_dir[3]={0.0,1.0,0.0};
& E& c/ u/ E* W$ B8 ZCATISketchFactory_var spSketchFactory(pSpecContainer);
- l' o1 p! w/ x% w' m" F7 Z+ qif ( NULL_var == spSketchFactory ) return (CATStatusChangeRCCompleted);
2 D( Z+ S, ?) Q2 ]1 k7 f0 TCATISketch_var spSketch(spSketchFactory->CreateSketch(origin,x_dir,y_dir));
. w: M$ X* E0 Q7 fif ( NULL_var == spSketch ) return (CATStatusChangeRCCompleted);
, r8 d% c4 k$ y3 c# kspSketch->OpenEdition();$ ]4 d# ^$ |* ?. a
到这里,你已经创建了一个Sketch,你可以在上面创建任意的草图了。
  X: @; I5 S7 B1 b3 p创建好记住要将其关闭:
- R3 A! T. ]; c! K' H4 ZspSketch->CloseEdition();
8 {+ i8 O5 t  g6 E" X: ?" F; Y2 {4 v

3 L( u7 S1 S  q, D/ V
上海点团信息科技有限公司,承接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二次开发如何实现呀+ D! H& s& O. p) C% w

8 V( D+ |4 z* s- ^; B/ ?  X+ V0 R' \
我的第一个程序运行成功了,但是显示不正常
回复 支持 反对

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

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

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

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

    我知道了