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

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

  [复制链接]

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

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

admin 楼主

2017-12-22 13:44:56

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

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

x
CATIA二次开发入门教程---20 创建草图* z' _, q( p8 R" P7 c# c

. N/ h% O) b# b9 ]( r$ e' F$ U0 ?( U( ?# w
[mw_shl_code=c,true]////////获得Editor、Document、Container、设置GSMFactory! C* L2 q  r) r2 q5 _6 T$ q
        CATFrmEditor* pEditor = CATFrmEditor::GeTCurrentEditor();( q' j9 O# s( @& V$ w
        CATDocument *pDoc = pEditor->GetDocument();+ s1 @! o" g5 ^6 }  D, ?; _
        CATIContainerOfDocument_var spConODocs = pDoc;
7 G: k: k) K6 D; U! j4 h
" d: m) o( p0 l# {7 F. B        CATIContainer*            pContainer;                //Container4 Q9 [6 `+ ]" d
        CATIPrtContainer*     pPrtContainer;//PartContainer9 H. G* ?' ~3 p1 @8 S
        CATIGSMFactory_var        spGSMFactory;                //GSM工厂* S' |" y# M. T% v

' m1 ^. K  q5 e6 o2 v        CATIPrtPart_var        spPrt   ;//
8 H% Q: E8 s0 @" `* v        HRESULT hr = spConODocs->GetSpecContainer(pContainer);//获取Container
# y$ S! @: g3 `+ B, d/ D9 i
) M2 u& I8 q! h; h  l) y0 C' g& c0 e        hr =pContainer->QueryInterface(IID_CATIPrtContainer,(void **)&pPrtContainer);//获取PrtContainer% \7 @2 `8 f1 U: T
        spPrt = pPrtContainer->GetPart();9 I8 T4 x  ~% z1 _) _
        CATListValCATISpecObject_var spListRefPlanes = spPrt->GetReferencePlanes();//获取3个参考平面2 r& c% O; T7 `" g

& {; S; @1 a1 U- P6 C1 R( r        CATISpecObject_var spSketchPlane = spListRefPlanes[3];//第三个平面
3 O6 {: ?8 k+ A' B5 v7 }  D        CATISketchFactory_var spSketchFactOnPrtCont(pPrtContainer);//草图工厂
; S3 K, h6 }- P' k; Z+ G        CATISketch_var spSketch = spSketchFactOnPrtCont->CreateSketch( spSketchPlane );        //创建草图8 P. @  d, ]6 v
        CATI2DWFFactory_var spWF2DFactOnSketch(spSketch);
) f# q& C% s. T* Q9 @7 A! [
, S' @! F' x' C+ @9 C9 X        spSketch->OpenEdition();        //进入草图开始绘图6 J1 m6 ~- ^. p& y. `  @! f
      : T7 l3 e, _  F, x8 n9 O- m
        spSketch->CloseEdition();//退出草图环境
( @$ I2 |4 L9 J
, j. z/ i( ^7 l$ k0 y0 N$ [      
! U2 n, ]8 B3 O4 {0 Y. x+ S[/mw_shl_code]0 q6 p" n) |3 Q( }( N* y
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

有两种方式可以创建草图:
* J" y. Z% K3 m, x5 @) r" `1)通过参考平面创建
5 m1 K. l/ F' u首先获取一个CATIPrtPart变量:
) O6 @: \7 X3 x8 VCATIPrtPart_var spPart(pIPrtContOnDocument->GetPart());
8 }( n7 o3 |; ^# jpIPrtContOnDocument->Release();
/ f- Q1 Y6 e$ Q有了CATIPrtPart变量就可以利用其方法GetReferencePlanes(),获取参考平面6 I# D7 H2 y: \
CATLISTV(CATISpecObject_var) spRefPlanes = spPart->GetReferencePlanes();
& q: E: Q/ H* x- |$ n  |$ b8 O* P- A然后创建XY plane (spRefPlanes[1])
5 a. r6 H4 T" P* r- L; b3 iCATISketchFactory_var spSketchFactory(pSpecContainer);; c0 Y7 {3 m; G+ z; A
if ( NULL_var == spSketchFactory ) return (CATStatusChangeRCCompleted);, k8 i# }8 R6 k& h. x
CATISketch_var spSketch(spSketchFactory->CreateSketch(spRefPlanes[1]));( A6 b+ g9 ~9 j* N/ L3 t% }4 g3 V. m
if ( NULL_var == spSketch ) return (CATStatusChangeRCCompleted);
7 D- E4 ~' k* r: j' _) ZspSketch->OpenEdition();
  e( B; K* i( H: T3 L2) 通过原点和两个矢量方向2 [2 T# Q+ m3 K5 ?8 v7 m
该方法是通过定义一个原点和两个方向pH、pV  进行创建。
9 m4 g. r. d3 s8 R; N' W1 j3 j定义原点和方向:
" |; G6 H' X' ~; v0 O. a9 Hdouble origin[3]={0.0,0.0,10.0};5 q* c0 q; {4 e1 P# ?- F/ h* z* x
double x_dir[3]={1.0,0.0,0.0};- _* G6 ^% |8 Y' p% n2 Y9 m/ i
double y_dir[3]={0.0,1.0,0.0};: J5 o& o. `! n, G
CATISketchFactory_var spSketchFactory(pSpecContainer);( u6 k( `9 T7 z- I
if ( NULL_var == spSketchFactory ) return (CATStatusChangeRCCompleted);5 e/ P0 ?3 R( Y! z0 y# y
CATISketch_var spSketch(spSketchFactory->CreateSketch(origin,x_dir,y_dir));" y! J& E5 e/ z: A
if ( NULL_var == spSketch ) return (CATStatusChangeRCCompleted);$ e: @( m3 u3 ^' q- @2 ^
spSketch->OpenEdition();
, F4 w1 [9 D0 _& b到这里,你已经创建了一个Sketch,你可以在上面创建任意的草图了。
  M5 `9 p% a7 S& v: C5 R: |1 A创建好记住要将其关闭:% b7 D* M* p* @/ j
spSketch->CloseEdition();* z+ [( W, Y4 J, P  M8 x0 d

& y+ t7 {* ]+ g3 k4 Z! t2 |% V9 J+ m$ \$ w3 f9 }  }; V3 F
上海点团信息科技有限公司,承接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二次开发如何实现呀" C8 `2 B+ X; k5 t
* X7 |% ~  n  F8 N

( ~/ `* n9 M# b& [/ }* r& a
我的第一个程序运行成功了,但是显示不正常
回复 支持 反对

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

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

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

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

    我知道了