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

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

  [复制链接]

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

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

admin 楼主

2017-12-22 13:44:56

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

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

x
CATIA二次开发入门教程---20 创建草图' l  V0 c& Z+ h- `* |: E& A

8 |5 y  ]  u4 X
- \1 r5 B; y6 Q( b% g[mw_shl_code=c,true]////////获得Editor、Document、Container、设置GSMFactory, a. ~! X% N" a2 h, x# E" {$ \
        CATFrmEditor* pEditor = CATFrmEditor::GeTCurrentEditor();! C8 s; N7 m8 N% X: X, D8 N# g2 U
        CATDocument *pDoc = pEditor->GetDocument();
* q/ l5 W1 U: \& [        CATIContainerOfDocument_var spConODocs = pDoc;( [2 a+ ]# a& I  U/ ?: k% W! `

7 [8 X% ^7 `: `1 f) l2 l8 m2 S& z        CATIContainer*            pContainer;                //Container
6 B, K2 v' m$ ]' o2 |1 l        CATIPrtContainer*     pPrtContainer;//PartContainer8 z( R: |$ y+ ]2 n
        CATIGSMFactory_var        spGSMFactory;                //GSM工厂0 B- u4 [" y0 i" c0 J, k- }! h
% u+ g  G  N) Y# h2 d" r9 {
        CATIPrtPart_var        spPrt   ;//
( A$ U" U7 [7 |        HRESULT hr = spConODocs->GetSpecContainer(pContainer);//获取Container
: Q' s! |- F# @  L- L# c' W; z) r
  w% c7 G! h! k        hr =pContainer->QueryInterface(IID_CATIPrtContainer,(void **)&pPrtContainer);//获取PrtContainer
* G' {! y  W7 U. O        spPrt = pPrtContainer->GetPart();5 h/ Q. E3 {6 H7 M+ m
        CATListValCATISpecObject_var spListRefPlanes = spPrt->GetReferencePlanes();//获取3个参考平面
1 ~/ \- o) B: V- E
9 A; T& d* B8 P. C2 z. l        CATISpecObject_var spSketchPlane = spListRefPlanes[3];//第三个平面
3 E$ q5 p! O  X. R9 W        CATISketchFactory_var spSketchFactOnPrtCont(pPrtContainer);//草图工厂  E- q: [+ y1 L2 X7 h
        CATISketch_var spSketch = spSketchFactOnPrtCont->CreateSketch( spSketchPlane );        //创建草图
1 O0 i  S& Z  p1 x: L# @& G* Q        CATI2DWFFactory_var spWF2DFactOnSketch(spSketch);8 p, T' ?* D9 s3 l3 W' ^

) I! z) p  t& G) g" W; O        spSketch->OpenEdition();        //进入草图开始绘图
" x& e8 T7 I! e      
# c& r& t( l2 @4 @( ^6 N        spSketch->CloseEdition();//退出草图环境7 o# ^, x9 o* I0 t' j

# {1 D" s0 B( W1 y/ d. c1 y      
% T8 w3 i/ ?* v9 b9 {6 s9 y[/mw_shl_code]
8 q# w' e+ E9 @. M/ K" e2 }
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

有两种方式可以创建草图:
4 ]5 r" V0 C6 m1)通过参考平面创建* t% L2 Q8 p6 O/ r( i: r
首先获取一个CATIPrtPart变量:3 l! v) u& Q5 _" R8 [
CATIPrtPart_var spPart(pIPrtContOnDocument->GetPart());% U; F# B" |! f1 t
pIPrtContOnDocument->Release();- F: n0 F3 g; B) E& t/ l& V
有了CATIPrtPart变量就可以利用其方法GetReferencePlanes(),获取参考平面
8 n* w7 \3 o0 G* B4 VCATLISTV(CATISpecObject_var) spRefPlanes = spPart->GetReferencePlanes();) ?% i6 d; ?2 S7 |- v- O% m
然后创建XY plane (spRefPlanes[1])# I/ [# G, x0 D. z( J
CATISketchFactory_var spSketchFactory(pSpecContainer);
* v# S6 L; y# P* r/ Z9 _6 Z* Iif ( NULL_var == spSketchFactory ) return (CATStatusChangeRCCompleted);
( g$ L  a$ s! @CATISketch_var spSketch(spSketchFactory->CreateSketch(spRefPlanes[1]));- ~' L- o1 H5 o
if ( NULL_var == spSketch ) return (CATStatusChangeRCCompleted);' ^8 e/ Z( s( u3 [/ |* K8 Y  Y2 c+ {) V
spSketch->OpenEdition();6 q2 m1 y8 p/ P: U
2) 通过原点和两个矢量方向! I1 s. n$ P) q, A6 Z3 |
该方法是通过定义一个原点和两个方向pH、pV  进行创建。
5 W5 o& y1 b) p* `1 C定义原点和方向:' M9 F, o; [- t* ?" w, ?
double origin[3]={0.0,0.0,10.0};
4 j/ T7 }1 o. V! o' G8 Idouble x_dir[3]={1.0,0.0,0.0};6 f3 L+ h' n7 B+ {. k
double y_dir[3]={0.0,1.0,0.0};' K2 E! q/ K8 p5 k' f/ E0 m
CATISketchFactory_var spSketchFactory(pSpecContainer);% t! l. p0 f  m8 J2 p5 Y
if ( NULL_var == spSketchFactory ) return (CATStatusChangeRCCompleted);
6 f7 o$ F7 L& `& y4 @) U$ |+ ^CATISketch_var spSketch(spSketchFactory->CreateSketch(origin,x_dir,y_dir));
: ^, F: h9 [+ a' eif ( NULL_var == spSketch ) return (CATStatusChangeRCCompleted);, e" S3 E" O7 t% P2 }8 V% h* {- g
spSketch->OpenEdition();( s5 n# X+ ~) h# o. e) @% p
到这里,你已经创建了一个Sketch,你可以在上面创建任意的草图了。# S$ b. U/ q5 X0 e4 F0 x* r
创建好记住要将其关闭:
% \$ Q! W# }1 e, O- ispSketch->CloseEdition();$ u) }# D6 @- J' c) T
0 f) J9 R! g* T
& D# e# B, r4 j$ l
上海点团信息科技有限公司,承接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二次开发如何实现呀
, S, g' E; l4 B/ p8 X) A' e7 P7 {- S. h! F2 s5 j7 Z$ U. b) x: R" ^9 p1 T
6 |: v, R/ z! j. @
我的第一个程序运行成功了,但是显示不正常
回复 支持 反对

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

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

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

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

    我知道了