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

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

admin 楼主

2017-12-22 13:44:56

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

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

x
CATIA二次开发入门教程---20 创建草图  Z7 K0 @# L# K3 H. @) M
- {- [, z2 F8 D3 @/ G/ }! Y8 p- _" r

. k+ z; `# [" T* B! c  j  u5 O3 U) D[mw_shl_code=c,true]////////获得Editor、Document、Container、设置GSMFactory
, l8 m2 E8 V# d8 z3 Q: o        CATFrmEditor* pEditor = CATFrmEditor::GeTCurrentEditor();" H+ L3 `, p7 J. F0 U, \" T
        CATDocument *pDoc = pEditor->GetDocument();
# v: J6 @) `0 T+ e, b  N        CATIContainerOfDocument_var spConODocs = pDoc;
3 w6 v% F" J/ l9 O7 o9 W' B' ?7 L; f4 q* C2 K
        CATIContainer*            pContainer;                //Container
8 Z0 D" F0 I0 b        CATIPrtContainer*     pPrtContainer;//PartContainer. l1 o7 \8 A- r& u+ S3 S( l0 ~! m
        CATIGSMFactory_var        spGSMFactory;                //GSM工厂' a+ q1 }5 h. G( a1 B0 X3 G

& B( E* ^$ c% I. [6 S        CATIPrtPart_var        spPrt   ;//
- v% N. {' \) s3 m3 [1 s        HRESULT hr = spConODocs->GetSpecContainer(pContainer);//获取Container
! e  I: ]$ Y9 M' @5 |
- G% ], B# x7 x8 x        hr =pContainer->QueryInterface(IID_CATIPrtContainer,(void **)&pPrtContainer);//获取PrtContainer3 P- o  P0 E: v" K. m' x  B& E
        spPrt = pPrtContainer->GetPart();- {3 I( s6 v& w1 D$ X+ m( x
        CATListValCATISpecObject_var spListRefPlanes = spPrt->GetReferencePlanes();//获取3个参考平面2 |: t- s! J% N

7 y) s0 q) h, |! [4 `        CATISpecObject_var spSketchPlane = spListRefPlanes[3];//第三个平面. v; V5 Y, }. Y$ T  }! V6 ^
        CATISketchFactory_var spSketchFactOnPrtCont(pPrtContainer);//草图工厂
' e4 {2 f% R$ G6 q        CATISketch_var spSketch = spSketchFactOnPrtCont->CreateSketch( spSketchPlane );        //创建草图
8 u9 N( y- r  T+ l4 }9 b; N        CATI2DWFFactory_var spWF2DFactOnSketch(spSketch);: F4 b* w6 P  L/ M, Y- Q

1 a6 v: t4 r% f1 Y9 k  O        spSketch->OpenEdition();        //进入草图开始绘图
6 l5 t0 }$ z& `" l2 q! g( x, ?+ Y      6 |3 S* _: v" t' k
        spSketch->CloseEdition();//退出草图环境* J- D2 b) v' E% U+ J
# c$ j5 \1 J8 G. y/ y
      6 L$ N( k. w3 ~. |# ^
[/mw_shl_code]
: K; m$ B5 p. 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

有两种方式可以创建草图:- W8 U2 ]4 A' m# e6 J5 j% T: H
1)通过参考平面创建
  f1 e+ ^! {& _5 A; \: ~# K首先获取一个CATIPrtPart变量:
- O- `& V5 @6 Q# r$ n& w" ]+ HCATIPrtPart_var spPart(pIPrtContOnDocument->GetPart());- w, q2 y5 N- J
pIPrtContOnDocument->Release();# A, Y0 F$ b5 N* j% ]9 o
有了CATIPrtPart变量就可以利用其方法GetReferencePlanes(),获取参考平面
( w6 F' w) H6 p" f  P# m! iCATLISTV(CATISpecObject_var) spRefPlanes = spPart->GetReferencePlanes();! K9 X4 A1 Z4 C, O
然后创建XY plane (spRefPlanes[1])
' Q* D5 S) ^$ C! I- z) M/ tCATISketchFactory_var spSketchFactory(pSpecContainer);. c2 a5 M# V9 T! B+ G; b
if ( NULL_var == spSketchFactory ) return (CATStatusChangeRCCompleted);9 L! v# K* M9 W1 z4 M0 ^1 ^# C
CATISketch_var spSketch(spSketchFactory->CreateSketch(spRefPlanes[1]));
7 {3 Z+ l$ X% o/ mif ( NULL_var == spSketch ) return (CATStatusChangeRCCompleted);; F) Y: N7 d: {! l
spSketch->OpenEdition();; S0 R6 V" }4 J0 e! u3 ?
2) 通过原点和两个矢量方向
5 K3 b3 J+ y3 o+ [- q0 [' V该方法是通过定义一个原点和两个方向pH、pV  进行创建。
- e" B2 M; s+ ^4 B5 y定义原点和方向:; L" L& m) l$ j
double origin[3]={0.0,0.0,10.0};
5 p9 j4 T+ J" A7 F: l0 Tdouble x_dir[3]={1.0,0.0,0.0};
; \6 Z  D  i! wdouble y_dir[3]={0.0,1.0,0.0};
5 u1 v5 L1 I% c5 h: YCATISketchFactory_var spSketchFactory(pSpecContainer);. h6 `- a6 L# o) K- m4 G
if ( NULL_var == spSketchFactory ) return (CATStatusChangeRCCompleted);4 ]. f) j2 m/ ~7 B5 ~' C* P
CATISketch_var spSketch(spSketchFactory->CreateSketch(origin,x_dir,y_dir));
7 ]3 W5 S6 r6 f! sif ( NULL_var == spSketch ) return (CATStatusChangeRCCompleted);$ O0 `. \" m6 |0 I. c6 b
spSketch->OpenEdition();
! X! d# q0 b7 R4 A: Y* Z到这里,你已经创建了一个Sketch,你可以在上面创建任意的草图了。
) G$ p+ a1 y3 z2 G  G( _6 P6 G创建好记住要将其关闭:% p6 T& ]1 f2 y" f( ]; I+ O; Q2 c
spSketch->CloseEdition();- U' l% d0 d# i' [) K

& m4 o& n/ x) b$ G4 q5 t$ P. j, T) y/ R) q) b# b( ~) B
上海点团信息科技有限公司,承接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二次开发如何实现呀) \3 G4 o( q3 r* F$ a$ w3 I

# Z( H* S% N+ L4 w
- S; @" @# ^5 J9 }7 \9 m
我的第一个程序运行成功了,但是显示不正常
回复 支持 反对

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

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

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

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

    我知道了