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

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

admin 楼主

2017-12-22 13:44:56

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

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

x
CATIA二次开发入门教程---20 创建草图0 z1 _' P! M$ k/ \  R2 F  F8 R( R
0 J( M9 _! s. l+ j  q) \
7 g. P& U2 a" y9 {0 a
[mw_shl_code=c,true]////////获得Editor、Document、Container、设置GSMFactory
( `! |! l+ g% X( }9 Z) H        CATFrmEditor* pEditor = CATFrmEditor::GeTCurrentEditor();+ S0 n/ M" \* O4 S- ^9 Z+ O
        CATDocument *pDoc = pEditor->GetDocument();1 S" a  D+ z# J2 m0 p2 j' }
        CATIContainerOfDocument_var spConODocs = pDoc;9 r! V& B( T, }7 Y* K- q/ D
8 A  t& e9 d9 V5 T$ _/ b
        CATIContainer*            pContainer;                //Container4 J1 l1 K- m" Y% x/ d' c- m0 _  c( M* P
        CATIPrtContainer*     pPrtContainer;//PartContainer
6 a- E- {# i1 T# o2 p' A        CATIGSMFactory_var        spGSMFactory;                //GSM工厂
/ J9 ~3 x/ V" D" {, u; e3 m  K  w
/ r6 [$ h1 \' r5 z  e        CATIPrtPart_var        spPrt   ;//
, e  {9 f* w- ]3 U- V        HRESULT hr = spConODocs->GetSpecContainer(pContainer);//获取Container
$ N" V- j3 n, E7 c, }: ?7 F
6 D# b: q% X  V, B' q$ l! u) M        hr =pContainer->QueryInterface(IID_CATIPrtContainer,(void **)&pPrtContainer);//获取PrtContainer5 S" g8 `8 n8 y2 O5 d1 a* j. A
        spPrt = pPrtContainer->GetPart();2 C' y/ |" y& `( S- ~0 O9 y% Q
        CATListValCATISpecObject_var spListRefPlanes = spPrt->GetReferencePlanes();//获取3个参考平面# `2 a% ]; Y. k/ ?; `
9 r# k$ ^% x: i6 P3 V* M
        CATISpecObject_var spSketchPlane = spListRefPlanes[3];//第三个平面( {* C# j3 I0 t- ^: V
        CATISketchFactory_var spSketchFactOnPrtCont(pPrtContainer);//草图工厂$ a6 m/ V! h6 S& n" O
        CATISketch_var spSketch = spSketchFactOnPrtCont->CreateSketch( spSketchPlane );        //创建草图$ U( x, {. A+ r" i- J% x
        CATI2DWFFactory_var spWF2DFactOnSketch(spSketch);6 b4 J$ r6 J% |! ?
2 ]! _- S+ G0 F( w' C
        spSketch->OpenEdition();        //进入草图开始绘图3 H. I( U+ l( q1 X! s, }7 g9 F5 {
      
6 l% r0 J0 Q3 `        spSketch->CloseEdition();//退出草图环境# I  \  |. r$ v3 e& e7 z  c
7 l1 d" I! p" i+ B1 G) g: H
      
! _. i' G, f7 X- q7 o[/mw_shl_code]
# A7 i8 Z( z* I9 I1 y: H
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

有两种方式可以创建草图:) B8 D- d; b6 t" f' g
1)通过参考平面创建
, u0 Z" G7 d2 T首先获取一个CATIPrtPart变量:
3 @1 `9 V' ?" q5 X2 LCATIPrtPart_var spPart(pIPrtContOnDocument->GetPart());
: _0 x- U0 @4 e. FpIPrtContOnDocument->Release();) h8 m* A) N7 p# R: ]
有了CATIPrtPart变量就可以利用其方法GetReferencePlanes(),获取参考平面
& K* @  h0 u( @/ j/ LCATLISTV(CATISpecObject_var) spRefPlanes = spPart->GetReferencePlanes();% k7 o1 j0 A% q7 @9 @3 h
然后创建XY plane (spRefPlanes[1])
! ]; B* X, \. u6 s% f2 UCATISketchFactory_var spSketchFactory(pSpecContainer);
# R8 P- _. a" L$ ^2 wif ( NULL_var == spSketchFactory ) return (CATStatusChangeRCCompleted);
( e3 }, J& I7 qCATISketch_var spSketch(spSketchFactory->CreateSketch(spRefPlanes[1]));4 h* G4 m  |! W: b
if ( NULL_var == spSketch ) return (CATStatusChangeRCCompleted);
0 c! U- M/ w0 z# u  _spSketch->OpenEdition();
, J& R6 P2 ^/ [5 N* O2) 通过原点和两个矢量方向: K! d/ G8 d% y0 S+ Z  k1 }
该方法是通过定义一个原点和两个方向pH、pV  进行创建。
. q" a( W- U8 g& l- [3 D定义原点和方向:
' g4 x9 n  T+ y* S% ndouble origin[3]={0.0,0.0,10.0};
; i% S! h3 ^/ G( [. X2 c) jdouble x_dir[3]={1.0,0.0,0.0};
& `3 h3 [! X0 O: v! `; _double y_dir[3]={0.0,1.0,0.0};
7 S. |2 {4 l" qCATISketchFactory_var spSketchFactory(pSpecContainer);
& I" k5 M. T" B5 v8 E% W/ E( Rif ( NULL_var == spSketchFactory ) return (CATStatusChangeRCCompleted);$ F$ B7 u$ Q* ^% q9 t! A
CATISketch_var spSketch(spSketchFactory->CreateSketch(origin,x_dir,y_dir));
. G& O. X% L. J, V' l$ wif ( NULL_var == spSketch ) return (CATStatusChangeRCCompleted);
+ r" F: U1 K$ @! w9 U( cspSketch->OpenEdition();
8 n) @( M* }# D" C1 j& |# x到这里,你已经创建了一个Sketch,你可以在上面创建任意的草图了。/ l6 j! H, ]8 e! K; |* u6 W
创建好记住要将其关闭:# f; n5 ]& b) q; L' s8 X# ?* j4 z
spSketch->CloseEdition();
5 V% b3 r3 S4 D7 s6 l5 b+ ]0 v6 [1 }$ ~6 P4 J
3 d- I  b8 k5 H
上海点团信息科技有限公司,承接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二次开发如何实现呀$ U* u3 c4 F& K8 S$ i

7 A3 r& z6 t( t7 z. Q/ W$ r6 [% {0 E! ?, U. p3 P$ r# {
我的第一个程序运行成功了,但是显示不正常
回复 支持 反对

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

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

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

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

    我知道了