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

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

  [复制链接]

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

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

admin 楼主

2017-12-22 13:44:56

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

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

x
CATIA二次开发入门教程---20 创建草图
/ Z1 P! Y0 `: V5 k6 G# t. j! C) y
/ A+ r% V0 [! f" D. g- h! T" s- O$ y; |! e" g
[mw_shl_code=c,true]////////获得Editor、Document、Container、设置GSMFactory
  h) \: F7 h* `! F! a" z1 T        CATFrmEditor* pEditor = CATFrmEditor::GeTCurrentEditor();4 k5 Z( L4 D; X6 F9 ]4 z
        CATDocument *pDoc = pEditor->GetDocument();
" m5 a9 e9 U4 s. E        CATIContainerOfDocument_var spConODocs = pDoc;/ a  n# {# D1 Q0 ~
3 d. n7 i, a& ^4 N) W& m
        CATIContainer*            pContainer;                //Container7 @% P: r8 f1 X4 |0 \2 v# ~2 A  ~
        CATIPrtContainer*     pPrtContainer;//PartContainer
* U* {! d+ r! j# g' R        CATIGSMFactory_var        spGSMFactory;                //GSM工厂
$ v8 b3 h8 x1 A  Q, X* N  }( A& ?; N* _
        CATIPrtPart_var        spPrt   ;//% |# v# @; i# g  c% x/ u2 b, F
        HRESULT hr = spConODocs->GetSpecContainer(pContainer);//获取Container
$ F9 g9 z* }# O# _: Q* ~7 S' h1 ^& [
        hr =pContainer->QueryInterface(IID_CATIPrtContainer,(void **)&pPrtContainer);//获取PrtContainer
; ~5 _% f- |' X) G: r! _. g" R, L        spPrt = pPrtContainer->GetPart();+ j" Z: J& E3 {
        CATListValCATISpecObject_var spListRefPlanes = spPrt->GetReferencePlanes();//获取3个参考平面: S- m4 U+ E) S- ?& t
1 L! @2 u. F+ D5 [
        CATISpecObject_var spSketchPlane = spListRefPlanes[3];//第三个平面
) M. ]! q- E0 X' N. s: q  D8 H; I        CATISketchFactory_var spSketchFactOnPrtCont(pPrtContainer);//草图工厂
4 r( U0 k& W8 `! p6 p% F8 A        CATISketch_var spSketch = spSketchFactOnPrtCont->CreateSketch( spSketchPlane );        //创建草图
+ v! |; {4 c7 N        CATI2DWFFactory_var spWF2DFactOnSketch(spSketch);
  t/ Q4 l* ~1 ]" {; k% ~/ q
; L0 v$ z( ^6 ?. W. r, l+ x        spSketch->OpenEdition();        //进入草图开始绘图  F- |* a+ M8 z* `& ^
      
7 d. ~4 [4 d' {0 B; p( e        spSketch->CloseEdition();//退出草图环境: G6 C9 j& g0 S6 {. V5 p
( K2 v- X* E" w& w; O
      
1 f, l/ ~8 I% S9 V9 L[/mw_shl_code]: K6 ~8 e- y: c7 L0 c: b
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

有两种方式可以创建草图:
! G: x8 P; b7 C4 f( c1)通过参考平面创建
, R; n- N5 K7 }2 z4 o3 _首先获取一个CATIPrtPart变量:
' H/ m7 G* K# N* q# |# d! d7 U7 T# \6 |CATIPrtPart_var spPart(pIPrtContOnDocument->GetPart());
1 ~1 p2 E& P1 w/ G- S8 kpIPrtContOnDocument->Release();1 Q* g; K! k5 f! N
有了CATIPrtPart变量就可以利用其方法GetReferencePlanes(),获取参考平面, m3 W" e/ M- t# g9 N
CATLISTV(CATISpecObject_var) spRefPlanes = spPart->GetReferencePlanes();& @6 o, \/ @' H
然后创建XY plane (spRefPlanes[1]); H  l' ?" q( Z- I
CATISketchFactory_var spSketchFactory(pSpecContainer);/ H! {1 l% X5 I
if ( NULL_var == spSketchFactory ) return (CATStatusChangeRCCompleted);
- B" u1 o( [8 c$ i2 nCATISketch_var spSketch(spSketchFactory->CreateSketch(spRefPlanes[1]));% ^( t5 U1 e6 @) @2 J+ R. ^
if ( NULL_var == spSketch ) return (CATStatusChangeRCCompleted);+ [! E+ T- `; z* J
spSketch->OpenEdition();1 E5 k4 C, [6 p: M
2) 通过原点和两个矢量方向
1 v% O6 c1 s( O' a3 e2 o该方法是通过定义一个原点和两个方向pH、pV  进行创建。
$ k: y6 o4 C/ x& O$ t! S定义原点和方向:
- G" z$ P/ o( }; j/ T6 Rdouble origin[3]={0.0,0.0,10.0};6 M5 N0 H( I- L: H/ |5 f
double x_dir[3]={1.0,0.0,0.0};
/ D* F) j: v9 r+ h0 t) idouble y_dir[3]={0.0,1.0,0.0};
7 U9 D6 D# q4 T2 l5 h6 s& RCATISketchFactory_var spSketchFactory(pSpecContainer);
. `1 V: P/ Y. H+ o8 ^if ( NULL_var == spSketchFactory ) return (CATStatusChangeRCCompleted);
6 t* p" r. t, C7 TCATISketch_var spSketch(spSketchFactory->CreateSketch(origin,x_dir,y_dir));
9 n. g1 a- }1 M, c/ p( z9 q9 Iif ( NULL_var == spSketch ) return (CATStatusChangeRCCompleted);1 k0 W1 r, ]/ H. ?( M. L
spSketch->OpenEdition();9 u0 {* p; P* f9 m) m* }$ i) ?
到这里,你已经创建了一个Sketch,你可以在上面创建任意的草图了。
! j* Z* D# S# B1 l. `' Z创建好记住要将其关闭:
( i# j6 L1 v- `: uspSketch->CloseEdition();
% [0 b! ]% A7 }& e
" a+ C& d( j$ D: }) q  q0 [
6 E. W0 A( M: @& s4 j0 Y
上海点团信息科技有限公司,承接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 P5 Z$ h% ?+ o" q& [: K, F4 E' I1 b$ r0 m/ g& S
; N6 r$ \2 X4 z  J# D+ P( z4 N
我的第一个程序运行成功了,但是显示不正常
回复 支持 反对

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

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

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

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

    我知道了