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 4158 2

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

admin 楼主

2017-12-22 13:44:56

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

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

x
CATIA二次开发入门教程---20 创建草图8 J  x8 H% R  o" Y" w5 }5 J8 w9 Y
$ l0 w) Q& v4 O. C- A, D
, S! T* U1 |1 z. Z& e
[mw_shl_code=c,true]////////获得Editor、Document、Container、设置GSMFactory- x4 |  j, t8 J5 L3 n
        CATFrmEditor* pEditor = CATFrmEditor::GeTCurrentEditor();, ~/ o- Z+ I, Y/ V- h; M: M( k' {
        CATDocument *pDoc = pEditor->GetDocument();* ]2 D7 m7 x9 i2 L0 x& ]; g" z
        CATIContainerOfDocument_var spConODocs = pDoc;! Z8 c* `, Y2 Y7 z3 k2 z
( }+ s$ M( U# \( t- F8 N# y6 |
        CATIContainer*            pContainer;                //Container% ]) w) E$ I' x8 j0 L4 P
        CATIPrtContainer*     pPrtContainer;//PartContainer, l2 B/ ~/ ]) ?9 D) u
        CATIGSMFactory_var        spGSMFactory;                //GSM工厂! Y8 r, }1 e1 i# W+ z/ \. C
: N5 K& {# T4 D3 P
        CATIPrtPart_var        spPrt   ;//) A1 b0 ]. `: G5 g8 e. i) i
        HRESULT hr = spConODocs->GetSpecContainer(pContainer);//获取Container
6 g* ]# U0 `1 e) i$ u! I7 I+ C& T1 }8 j" v
        hr =pContainer->QueryInterface(IID_CATIPrtContainer,(void **)&pPrtContainer);//获取PrtContainer9 G0 I: L6 U1 z0 u2 E- Y& z
        spPrt = pPrtContainer->GetPart();5 P$ q2 x  [- a: I5 M1 T
        CATListValCATISpecObject_var spListRefPlanes = spPrt->GetReferencePlanes();//获取3个参考平面# F. y% ?$ _6 y

7 k# v8 D; h( Y. g; r  h        CATISpecObject_var spSketchPlane = spListRefPlanes[3];//第三个平面
8 r1 U5 I+ A: A' h        CATISketchFactory_var spSketchFactOnPrtCont(pPrtContainer);//草图工厂& T, b6 U) `' t+ X1 o
        CATISketch_var spSketch = spSketchFactOnPrtCont->CreateSketch( spSketchPlane );        //创建草图
1 j6 `. y, Y5 N5 Y! L! O        CATI2DWFFactory_var spWF2DFactOnSketch(spSketch);, p5 h; L6 ?! f( X  J7 k& V% V

' B" k( O: `4 Q$ o# i        spSketch->OpenEdition();        //进入草图开始绘图7 t. }; A. [, p- g& E0 X, j
      / g3 e: g; z# J% \& M. ~
        spSketch->CloseEdition();//退出草图环境
, y( U) Z; A% f: S* k7 B4 u3 }9 ]5 K1 `: P* c, |- I: X& c$ I
      0 n, W" g& z* B" r) e2 H/ o! q$ p
[/mw_shl_code]
0 X+ W+ G# L$ C+ g. s$ y$ k8 |+ g
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

有两种方式可以创建草图:
$ A3 Q- {" ?3 O; P( }1 G1)通过参考平面创建
! L; p( {6 C: v. H& @2 J首先获取一个CATIPrtPart变量:; ~5 f9 E2 b( }7 Q- b
CATIPrtPart_var spPart(pIPrtContOnDocument->GetPart());
! ]4 U8 S8 W& C( ~& `& a' ?  ypIPrtContOnDocument->Release();5 x/ I* `" m$ g. |8 u* y
有了CATIPrtPart变量就可以利用其方法GetReferencePlanes(),获取参考平面9 u/ E! w  o) r
CATLISTV(CATISpecObject_var) spRefPlanes = spPart->GetReferencePlanes();* [  t9 U2 |3 W6 k: [
然后创建XY plane (spRefPlanes[1])
0 W* s. |% G2 ?: k+ S5 F" t$ iCATISketchFactory_var spSketchFactory(pSpecContainer);5 t& {6 e; N' {! N; ]' a
if ( NULL_var == spSketchFactory ) return (CATStatusChangeRCCompleted);
% c  V+ W8 d( o# {8 O  n- _CATISketch_var spSketch(spSketchFactory->CreateSketch(spRefPlanes[1]));( {+ f! H+ Z7 c6 D! o% S+ V1 p8 \% ?
if ( NULL_var == spSketch ) return (CATStatusChangeRCCompleted);8 X4 k9 I2 z: \# F% w
spSketch->OpenEdition();% b& T7 L2 M6 @% v
2) 通过原点和两个矢量方向
# O" Z% M# B. O) `: e+ _% T该方法是通过定义一个原点和两个方向pH、pV  进行创建。
! K* F. M4 v5 L定义原点和方向:) T8 `3 H# A6 \) N
double origin[3]={0.0,0.0,10.0};
0 r- S/ v) }+ Y& I2 Qdouble x_dir[3]={1.0,0.0,0.0};
) Y: D5 d% s( g7 b2 L5 e' @double y_dir[3]={0.0,1.0,0.0};
- p. w, z: l( E7 c5 m  jCATISketchFactory_var spSketchFactory(pSpecContainer);
1 a9 {. s* ~6 l8 @if ( NULL_var == spSketchFactory ) return (CATStatusChangeRCCompleted);
% @& ?. d; K, Z! v, TCATISketch_var spSketch(spSketchFactory->CreateSketch(origin,x_dir,y_dir));
4 c% S$ @" Q- ]% K# ~5 _8 @if ( NULL_var == spSketch ) return (CATStatusChangeRCCompleted);: Z9 t6 T  f: K
spSketch->OpenEdition();
6 A  B6 _/ f1 o8 P到这里,你已经创建了一个Sketch,你可以在上面创建任意的草图了。( h2 q7 T, C+ ]9 W4 G$ K/ [
创建好记住要将其关闭:% q- R: Z" B2 U" d+ y
spSketch->CloseEdition();( y! D. \7 X  B+ r* q- D4 D

5 P1 S0 ^  J* w6 y8 I1 o6 T- @' }9 r
上海点团信息科技有限公司,承接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二次开发如何实现呀1 [% f2 o& |4 V
. i: v5 e. Z+ O* z: }

( ?! Y. a- Y: x0 g0 Q
我的第一个程序运行成功了,但是显示不正常
回复 支持 反对

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

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

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

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

    我知道了