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

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

  [复制链接]

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

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

admin 楼主

2017-12-22 13:44:56

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

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

x
CATIA二次开发入门教程---20 创建草图
' K1 u" m& W2 A0 g) w4 \4 E6 x+ _1 P1 Q2 A
% R' ?, i8 q; g* m9 y8 h" j' {
[mw_shl_code=c,true]////////获得Editor、Document、Container、设置GSMFactory5 @) B+ s& t2 }" L0 E! T0 P
        CATFrmEditor* pEditor = CATFrmEditor::GeTCurrentEditor();3 c! X" }# J9 b5 n) W2 q
        CATDocument *pDoc = pEditor->GetDocument();3 l. s5 ?/ g' Y# |
        CATIContainerOfDocument_var spConODocs = pDoc;* `$ ?5 X6 [1 _. f

( ]/ V1 N* F. P9 Q        CATIContainer*            pContainer;                //Container, Q1 U, [" n% \$ E: H- j
        CATIPrtContainer*     pPrtContainer;//PartContainer$ m/ Q" z5 c  E" @0 C6 A8 q3 X+ N
        CATIGSMFactory_var        spGSMFactory;                //GSM工厂
% s; L( Q( Q/ }2 K; h3 R# u: _7 o
$ `3 v! c; A2 r, t        CATIPrtPart_var        spPrt   ;//8 Y  H/ _+ V) i+ s" }
        HRESULT hr = spConODocs->GetSpecContainer(pContainer);//获取Container
! I+ A; n: W4 }, u7 m2 r( {9 I7 y  t% C* s& S
        hr =pContainer->QueryInterface(IID_CATIPrtContainer,(void **)&pPrtContainer);//获取PrtContainer
- _5 u5 g4 F5 A: X        spPrt = pPrtContainer->GetPart();5 S' Q) f9 ?& a' U
        CATListValCATISpecObject_var spListRefPlanes = spPrt->GetReferencePlanes();//获取3个参考平面$ [. w9 T. T+ R4 Q' e5 |! X
. D% |* Y) J& ?0 F8 X
        CATISpecObject_var spSketchPlane = spListRefPlanes[3];//第三个平面! B1 L& x- L/ P, K
        CATISketchFactory_var spSketchFactOnPrtCont(pPrtContainer);//草图工厂
5 A) z7 e2 U# F4 G/ _        CATISketch_var spSketch = spSketchFactOnPrtCont->CreateSketch( spSketchPlane );        //创建草图$ x7 L: e3 M& z2 |
        CATI2DWFFactory_var spWF2DFactOnSketch(spSketch);6 Y+ J0 {2 P* `

( j' c! V- z8 L8 y% ]! d# C        spSketch->OpenEdition();        //进入草图开始绘图
# `' Z2 F8 R! n$ `3 s      + P9 W( s: m+ f
        spSketch->CloseEdition();//退出草图环境
  e+ V3 M* r+ w! h9 D; J8 J( x& {$ n. K+ |8 O
        `- I. e8 t+ X+ O* Z5 l1 D
[/mw_shl_code]
9 \2 o4 x7 J  Z' p/ c7 {. [
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

有两种方式可以创建草图:8 c, G0 R  ~1 X5 o8 w
1)通过参考平面创建
) F; ?; T* i$ Y$ K首先获取一个CATIPrtPart变量:. g& X" h" @% B5 V! v
CATIPrtPart_var spPart(pIPrtContOnDocument->GetPart());% f6 H* \2 p* C* }
pIPrtContOnDocument->Release();8 {4 j8 G# M* Y8 d* a
有了CATIPrtPart变量就可以利用其方法GetReferencePlanes(),获取参考平面, b' x9 t" Y, j8 H' U) f
CATLISTV(CATISpecObject_var) spRefPlanes = spPart->GetReferencePlanes();% s* u) {  v9 e. J1 K" P" r
然后创建XY plane (spRefPlanes[1])
7 B3 u# H4 W; R. [: J) PCATISketchFactory_var spSketchFactory(pSpecContainer);
1 N+ g! e+ s# U, p" i' ~if ( NULL_var == spSketchFactory ) return (CATStatusChangeRCCompleted);3 y. h* F  y0 [! f! R' y: N
CATISketch_var spSketch(spSketchFactory->CreateSketch(spRefPlanes[1]));
; b4 j) ?, \* q( @# Dif ( NULL_var == spSketch ) return (CATStatusChangeRCCompleted);: v# A( h5 W0 Y& I" N- @$ }
spSketch->OpenEdition();* P; M2 m; ~( ~; |( D- f7 L
2) 通过原点和两个矢量方向  H' ~+ z& a- Q0 ~# t
该方法是通过定义一个原点和两个方向pH、pV  进行创建。
7 ?$ ?( y( f( L1 S6 Y/ C5 ^- A定义原点和方向:" f. Y* j4 j/ Z; m3 @( b
double origin[3]={0.0,0.0,10.0};
0 m! a3 h8 `( S1 m; m. {double x_dir[3]={1.0,0.0,0.0};
. n+ h" i$ }6 L! rdouble y_dir[3]={0.0,1.0,0.0};4 f* m* l- U9 a1 Z) N+ {
CATISketchFactory_var spSketchFactory(pSpecContainer);
( u: J" C' h) ^if ( NULL_var == spSketchFactory ) return (CATStatusChangeRCCompleted);$ i% c0 A7 s  y& X* Q  {4 v8 M! \
CATISketch_var spSketch(spSketchFactory->CreateSketch(origin,x_dir,y_dir));# Q* l" G# k: S
if ( NULL_var == spSketch ) return (CATStatusChangeRCCompleted);+ {0 }( c) `; a4 U$ d; ^
spSketch->OpenEdition();1 c1 Z1 B$ n% K! ?* q% J- F
到这里,你已经创建了一个Sketch,你可以在上面创建任意的草图了。9 t. \& E2 R2 b  l! J% F7 g
创建好记住要将其关闭:
* O; ~( ?+ E# l! N  {spSketch->CloseEdition();
/ z( R+ I+ U; k1 R8 ~1 S' r8 I. _* ^' X  y/ W

5 I- |' U4 X5 Z, f3 b$ y( a3 i
上海点团信息科技有限公司,承接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二次开发如何实现呀7 I! b2 S8 v$ T' `

5 A3 F, E0 `( K+ _0 k! R
( [3 B) ^2 c8 z2 K6 y: c
我的第一个程序运行成功了,但是显示不正常
回复 支持 反对

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

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

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

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

    我知道了