PLM之家PLMHome-工业软件践行者

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

  [复制链接]

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

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

admin 楼主

2017-12-22 13:44:56

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

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

x
CATIA二次开发入门教程---20 创建草图
/ W2 b% c- }$ u5 k7 t3 r7 C8 ^
, S" `1 p0 J) M5 n# L& u2 B1 ?0 d# X+ Y4 `& j0 J# x" l
[mw_shl_code=c,true]////////获得Editor、Document、Container、设置GSMFactory
: u& d' T6 t' w+ k: w$ z/ @: ^; a        CATFrmEditor* pEditor = CATFrmEditor::GeTCurrentEditor();& a' _& v, W1 z( A: m
        CATDocument *pDoc = pEditor->GetDocument();
* ^8 l  X& C! w0 L! s5 l9 m* ?; x4 V        CATIContainerOfDocument_var spConODocs = pDoc;
; M  @, x1 Q5 i1 n6 H8 H2 O* M% h0 R0 N1 R+ f
        CATIContainer*            pContainer;                //Container+ x: u: l. w3 i$ D! L
        CATIPrtContainer*     pPrtContainer;//PartContainer
, k( G4 Y* z, Q        CATIGSMFactory_var        spGSMFactory;                //GSM工厂( B7 N( D/ B1 N

! G2 Y+ c  y$ S$ l. E        CATIPrtPart_var        spPrt   ;//' x( u# S* {7 |" I7 _3 u/ Y
        HRESULT hr = spConODocs->GetSpecContainer(pContainer);//获取Container" Y1 K) B6 n% _/ A) q- D
6 U$ f/ R1 _, R0 U; r! Q
        hr =pContainer->QueryInterface(IID_CATIPrtContainer,(void **)&pPrtContainer);//获取PrtContainer
; W: m: I$ E8 U. u        spPrt = pPrtContainer->GetPart();
% p; I! ?& u3 P: L1 J7 ~/ q        CATListValCATISpecObject_var spListRefPlanes = spPrt->GetReferencePlanes();//获取3个参考平面
5 ?/ @+ a1 o9 F* R, ~! T! G: ?. M
) m5 g# e; b1 I# s+ s; p; D        CATISpecObject_var spSketchPlane = spListRefPlanes[3];//第三个平面
' F0 i& a3 v" U3 L; C        CATISketchFactory_var spSketchFactOnPrtCont(pPrtContainer);//草图工厂
) a% D9 h  a+ u! E% L        CATISketch_var spSketch = spSketchFactOnPrtCont->CreateSketch( spSketchPlane );        //创建草图
& ~% i$ b/ y+ d% {0 ~- S+ {        CATI2DWFFactory_var spWF2DFactOnSketch(spSketch);
7 ~% o+ J7 a. s# I4 k; ~& g8 d  n
9 x( r; ~% b+ ?        spSketch->OpenEdition();        //进入草图开始绘图& o$ a3 b9 X) Y4 B" r( s9 ~0 P
      
: Y' f+ R( X4 x1 R7 W2 v        spSketch->CloseEdition();//退出草图环境
; G4 v' R% _: F5 Q  F# j7 S' Q. O' n* S, J! M
      . x) k) _( |* U* w  C2 G; j
[/mw_shl_code]3 h1 E0 w4 B; z  L
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

有两种方式可以创建草图:
1 ?# L- i. T. }: a( o1)通过参考平面创建
" Q: I/ P: I6 ]0 N4 a3 R  x- G首先获取一个CATIPrtPart变量:. |) Q" L% t/ c7 y; l
CATIPrtPart_var spPart(pIPrtContOnDocument->GetPart());
) C* g" h) {" `; P/ ?pIPrtContOnDocument->Release();1 R6 h9 J3 C! ^, u2 W
有了CATIPrtPart变量就可以利用其方法GetReferencePlanes(),获取参考平面
+ @% Z$ m6 D/ p6 RCATLISTV(CATISpecObject_var) spRefPlanes = spPart->GetReferencePlanes();# p4 {3 Y" ]/ p9 {" I% H2 j; Z, b
然后创建XY plane (spRefPlanes[1])
- m! J6 m4 y: p, G0 }4 s; YCATISketchFactory_var spSketchFactory(pSpecContainer);
" J: A* v9 J  e- Gif ( NULL_var == spSketchFactory ) return (CATStatusChangeRCCompleted);
$ t- f8 M% N7 A: ?* |0 n5 WCATISketch_var spSketch(spSketchFactory->CreateSketch(spRefPlanes[1]));4 H2 z2 U* R2 Z+ }3 c- R4 |
if ( NULL_var == spSketch ) return (CATStatusChangeRCCompleted);4 a4 \% h: B* p  b" j3 {4 P) |
spSketch->OpenEdition();
9 {' Y4 `4 z# a' `4 V$ `" D2) 通过原点和两个矢量方向3 q% L) E& Q; O+ `8 |
该方法是通过定义一个原点和两个方向pH、pV  进行创建。7 ]3 p3 Q- p# T7 o# r6 _6 f4 P& A
定义原点和方向:
( \7 q4 \) ~7 N+ A) Idouble origin[3]={0.0,0.0,10.0};
+ m: F9 M8 M0 O0 F7 Odouble x_dir[3]={1.0,0.0,0.0};
. f) N8 e  z/ e& _double y_dir[3]={0.0,1.0,0.0};! y: p2 P- V; d
CATISketchFactory_var spSketchFactory(pSpecContainer);
; R  w" e. W" x# w0 R6 b8 xif ( NULL_var == spSketchFactory ) return (CATStatusChangeRCCompleted);# H# y) O# p- \: ~8 @! B
CATISketch_var spSketch(spSketchFactory->CreateSketch(origin,x_dir,y_dir));
. |+ ^" |+ d, i$ w( Hif ( NULL_var == spSketch ) return (CATStatusChangeRCCompleted);
" }+ J6 [0 B3 T0 LspSketch->OpenEdition();2 s% a0 n$ M7 [! o$ y
到这里,你已经创建了一个Sketch,你可以在上面创建任意的草图了。
( Y1 ^# g8 w# {6 p7 g, y# t/ o创建好记住要将其关闭:
: R: i1 C8 {3 g; t% G. B- g5 uspSketch->CloseEdition();! z$ m* A$ f* M; o4 h# Q' M

8 l9 c" n5 k, ^6 Q3 M; [9 i, K: P, Q9 Q& M$ 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二次开发如何实现呀9 `! {$ X2 F' k  ~$ n" F9 ~

* j# Y, k0 O% f( R- F) s* \. \8 y8 ^9 V: w
我的第一个程序运行成功了,但是显示不正常
回复 支持 反对

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

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

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

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

    我知道了