PLM之家精品课程培训,联系电话:18301858168 QQ: 939801026

  • NX二次开培训

    NX二次开培训

    适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术对于老鸟也值得借鉴!.

    NX CAM二次开发培训报名 NX二次开发基础培训报名
  • PLM之家Catia CAA二次开发培训

    Catia二次开发培训

    Catia二次开发的市场大,这方面开发人才少,难度大。所以只要你掌握了开发,那么潜力巨大,随着时间的积累,你必将有所用武之地!

  • PLM之Teamcenter最佳学习方案

    Teamcenter培训

    用户应用基础培训,管理员基础培训,管理员高级培训,二次开发培训应有尽有,只要你感兴趣肯学习,专业多年经验大师级打造!

  • PLM之Tecnomatix制造领域培训

    Tecnomatix培训

    想了解制造领域数字化吗?想了解工厂,生产线设计吗?数字化双胞胎,工业4.0吗?我们的课程虚位以待!

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

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

  [复制链接]

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

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

admin 楼主

2017-12-22 13:44:56

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

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

x
CATIA二次开发入门教程---20 创建草图
# _: B' i+ ]$ W5 V
  I( O' Z6 B( v( h
5 r( U* r, g3 I0 j9 S& `3 V[mw_shl_code=c,true]////////获得Editor、Document、Container、设置GSMFactory# Y* a1 l1 S3 Q/ \
        CATFrmEditor* pEditor = CATFrmEditor::GeTCurrentEditor();
- I% C3 o3 O2 A" z: I/ g1 v: k        CATDocument *pDoc = pEditor->GetDocument();
6 b- _6 a5 N! M- l6 Q8 F        CATIContainerOfDocument_var spConODocs = pDoc;1 G1 y* I8 R% e  O

! \, r3 |; \" Q# L5 _% j        CATIContainer*            pContainer;                //Container3 N8 S3 W- ]1 Y; t
        CATIPrtContainer*     pPrtContainer;//PartContainer2 f; \5 K9 w; m, I% {. q+ B* p) W
        CATIGSMFactory_var        spGSMFactory;                //GSM工厂! L2 m! b, z5 g. _3 ]3 n

/ n3 Q9 e: T4 S  f, ~6 n2 k        CATIPrtPart_var        spPrt   ;//
8 h0 Y# H& h7 S        HRESULT hr = spConODocs->GetSpecContainer(pContainer);//获取Container3 B* D, t8 ?/ h, ?3 k  |% q  \2 I" t
1 c" [" _4 t9 c0 a; K' e, j
        hr =pContainer->QueryInterface(IID_CATIPrtContainer,(void **)&pPrtContainer);//获取PrtContainer
" |% O! K$ E- R        spPrt = pPrtContainer->GetPart();
0 l; N/ J% _3 t8 H" j        CATListValCATISpecObject_var spListRefPlanes = spPrt->GetReferencePlanes();//获取3个参考平面9 e# A5 W5 |8 T1 b8 G$ C/ C4 x

3 u: x( F2 {" B! n# s: G! I        CATISpecObject_var spSketchPlane = spListRefPlanes[3];//第三个平面
$ f3 P. O: B% ^/ g" V; r# V) X        CATISketchFactory_var spSketchFactOnPrtCont(pPrtContainer);//草图工厂& O4 m+ t' M; u2 a
        CATISketch_var spSketch = spSketchFactOnPrtCont->CreateSketch( spSketchPlane );        //创建草图
# r8 H1 x2 A$ B+ J3 ]9 F+ u& |        CATI2DWFFactory_var spWF2DFactOnSketch(spSketch);
0 X0 Y) E( |4 t* q+ {, J) b5 S, J
        spSketch->OpenEdition();        //进入草图开始绘图
; ~( d2 f. J: a% _! {* C& d- l- L      & X/ I2 w* n% W( Q! r; y
        spSketch->CloseEdition();//退出草图环境
& [) i7 e# e) R3 G1 }
4 a& t1 ?! S6 f% I. l, O4 ]      8 K, J6 ]3 ?% a3 }( V. b! D
[/mw_shl_code]: m0 Q. Z2 y( z7 b
QQ截图20171224112147.png
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

全部回复2

admin 发表于 2017-12-22 13:45:19

admin 沙发

2017-12-22 13:45:19

有两种方式可以创建草图:
  r2 R: `; q, V1 S1 L  e0 T  H( j7 n1)通过参考平面创建
9 o' t# i. Q: P# Y# J首先获取一个CATIPrtPart变量:
7 D3 H' q( L" W: e% u' aCATIPrtPart_var spPart(pIPrtContOnDocument->GetPart());, E+ t: \! j9 n6 l# P; i  x
pIPrtContOnDocument->Release();) a6 R( ~; S9 k5 I
有了CATIPrtPart变量就可以利用其方法GetReferencePlanes(),获取参考平面1 o# j5 Q. D. s* G+ }0 a
CATLISTV(CATISpecObject_var) spRefPlanes = spPart->GetReferencePlanes();, b0 j8 S3 {( a% D0 N
然后创建XY plane (spRefPlanes[1]); I5 T; B" g& ^  |3 f
CATISketchFactory_var spSketchFactory(pSpecContainer);
: \0 j) D1 j1 o, V  p. Jif ( NULL_var == spSketchFactory ) return (CATStatusChangeRCCompleted);
& J! C& k$ ~- z$ `CATISketch_var spSketch(spSketchFactory->CreateSketch(spRefPlanes[1]));; ^' r. I: e9 e% u  ^
if ( NULL_var == spSketch ) return (CATStatusChangeRCCompleted);
4 h& A& X1 C3 @: _3 ^% v/ @spSketch->OpenEdition();5 E' x  g* i: U. r* X. R
2) 通过原点和两个矢量方向
' Z4 J# S: K7 k! h该方法是通过定义一个原点和两个方向pH、pV  进行创建。
/ T1 l7 [% r1 W) g定义原点和方向:
, O8 k* d) |) }6 J, J1 y! cdouble origin[3]={0.0,0.0,10.0};: w. ^0 N: W$ q. j7 ]
double x_dir[3]={1.0,0.0,0.0};
9 k* `! V! P& }( e# Rdouble y_dir[3]={0.0,1.0,0.0};3 {: n2 O, {" ~& J2 H* y8 m- {3 T6 s. l
CATISketchFactory_var spSketchFactory(pSpecContainer);
3 k( ^# X0 [' H. i: Gif ( NULL_var == spSketchFactory ) return (CATStatusChangeRCCompleted);( s# `! |# _% V6 D% p( H* @6 o( g
CATISketch_var spSketch(spSketchFactory->CreateSketch(origin,x_dir,y_dir));
8 I; @" }7 F8 {" d4 uif ( NULL_var == spSketch ) return (CATStatusChangeRCCompleted);. C) A, ~4 w% o
spSketch->OpenEdition();  q% J5 O: E5 D/ ^
到这里,你已经创建了一个Sketch,你可以在上面创建任意的草图了。
/ H$ m; ^: J$ v8 [& [" f创建好记住要将其关闭:2 v2 H- K9 G* A9 b1 P0 e9 L1 L
spSketch->CloseEdition();
2 l. z+ F3 p2 D8 H( P: d0 q* m( C. K( v2 M- t  |8 O

' B2 j8 C' ?4 X- p& z( P# j% y
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

cwp86 发表于 2018-3-25 10:10:36

cwp86 板凳

2018-3-25 10:10:36

在设计产品是不可能只选择XY,XZ,YZ这三个参九参考面,哪么问题就来了,例如用户选择实体上某个平面特征为参考面,进行下步的设计,这个在产品设计过程中经常使用,CAA二次开发如何实现呀' M, @) _, `- e

4 @2 D& a7 r* u/ Q- ]* e/ ^: |# R# D1 O+ C
我的第一个程序运行成功了,但是显示不正常
回复 支持 反对

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

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

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

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

    我知道了