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

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

admin 楼主

2017-12-22 13:44:56

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

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

x
CATIA二次开发入门教程---20 创建草图/ S) U/ b+ r9 D# l4 p4 o- H. W  G) N
! @# z; X) J+ p
: Q, g, F; X- D& b8 G: k
[mw_shl_code=c,true]////////获得Editor、Document、Container、设置GSMFactory: ]3 |$ t8 `( R) Y1 S( u
        CATFrmEditor* pEditor = CATFrmEditor::GeTCurrentEditor();
! R! T' M: t- v( A/ i) Q; |* {# i        CATDocument *pDoc = pEditor->GetDocument();; m6 f3 ?( Z, m) m  ?5 E2 _
        CATIContainerOfDocument_var spConODocs = pDoc;
3 ~/ {* ^+ G& Y1 J4 y) H( A( J3 Y6 I0 Y) M. A3 W
        CATIContainer*            pContainer;                //Container
7 h/ b( B3 a4 j) o* F2 \# V  y        CATIPrtContainer*     pPrtContainer;//PartContainer) f4 ]# h# [: J; ~
        CATIGSMFactory_var        spGSMFactory;                //GSM工厂* B' T# z" @: i  W; {

# h0 v. ]" \: L6 \" ~/ D" a; c        CATIPrtPart_var        spPrt   ;//
. n% F  a2 A* }        HRESULT hr = spConODocs->GetSpecContainer(pContainer);//获取Container
9 N  L3 ]0 C1 O1 m- Y3 K2 j, k3 R( E/ s+ y* S  s4 f
        hr =pContainer->QueryInterface(IID_CATIPrtContainer,(void **)&pPrtContainer);//获取PrtContainer- u$ F2 K3 v, O* `- N
        spPrt = pPrtContainer->GetPart();. M. a8 m, f/ H( {- V
        CATListValCATISpecObject_var spListRefPlanes = spPrt->GetReferencePlanes();//获取3个参考平面
  g* ^- m/ {. U1 j5 {, k; t( A
4 y' U% t# R9 S  \: N- ~9 ]        CATISpecObject_var spSketchPlane = spListRefPlanes[3];//第三个平面
1 T4 Y# K$ O1 y4 g, N3 A, f, \        CATISketchFactory_var spSketchFactOnPrtCont(pPrtContainer);//草图工厂
+ U7 h8 I' v4 b/ w' d! J        CATISketch_var spSketch = spSketchFactOnPrtCont->CreateSketch( spSketchPlane );        //创建草图
, r0 Q+ X. Q9 g  a        CATI2DWFFactory_var spWF2DFactOnSketch(spSketch);
$ z6 L9 l9 K; m! m
5 |8 i6 E' t# l+ W; b" O2 {! i        spSketch->OpenEdition();        //进入草图开始绘图* q) y; T: \& b. E* }" ?6 F' k
      
# ~* f) B+ h  l; j        spSketch->CloseEdition();//退出草图环境
6 f- l. ?0 p6 ^
9 R9 f1 ?) g5 i; e      - k) f: |$ C2 z, g6 i/ `
[/mw_shl_code]" d* k; X% }; J& P  X
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

有两种方式可以创建草图:
( o' D8 t- z% c1)通过参考平面创建
4 C3 V9 q% ~5 c+ S8 g' W) ^' B5 X首先获取一个CATIPrtPart变量:2 {3 P' W+ D2 q6 k
CATIPrtPart_var spPart(pIPrtContOnDocument->GetPart());) f/ q: [. L, R# x
pIPrtContOnDocument->Release();
- V: j" d% J- P有了CATIPrtPart变量就可以利用其方法GetReferencePlanes(),获取参考平面) k( r9 s3 Z6 ~9 w& v
CATLISTV(CATISpecObject_var) spRefPlanes = spPart->GetReferencePlanes();0 O1 P. b2 @( i
然后创建XY plane (spRefPlanes[1])
" d7 i1 d! a% l% `/ w; SCATISketchFactory_var spSketchFactory(pSpecContainer);) {. e3 b# u& _, {1 W
if ( NULL_var == spSketchFactory ) return (CATStatusChangeRCCompleted);- V  t: B$ v/ D9 L4 d2 R
CATISketch_var spSketch(spSketchFactory->CreateSketch(spRefPlanes[1]));+ X  u) P- z; T1 J/ N; ^2 }
if ( NULL_var == spSketch ) return (CATStatusChangeRCCompleted);
% f; b$ Q, W  v: a% IspSketch->OpenEdition();! _% B- J! w% N' @) @4 @
2) 通过原点和两个矢量方向. l3 F+ Y4 j0 X' ]2 R1 W
该方法是通过定义一个原点和两个方向pH、pV  进行创建。
7 B  J& {8 g+ L4 y& u( P定义原点和方向:
8 k4 _( X; w0 ]# `7 a! vdouble origin[3]={0.0,0.0,10.0};6 I( S. h7 \& ?5 B6 N' Q
double x_dir[3]={1.0,0.0,0.0};1 g( b6 X( ?2 j. T1 M4 D! ~
double y_dir[3]={0.0,1.0,0.0};; X! T& s4 T3 U. [; B  R( w
CATISketchFactory_var spSketchFactory(pSpecContainer);
( e  S! ^, }* b# a/ A3 m: vif ( NULL_var == spSketchFactory ) return (CATStatusChangeRCCompleted);
; _$ \( I- p3 H. p+ l" L# {/ kCATISketch_var spSketch(spSketchFactory->CreateSketch(origin,x_dir,y_dir));. ~/ d: J; J. d9 k% S, w
if ( NULL_var == spSketch ) return (CATStatusChangeRCCompleted);6 J) ^  N; U% U
spSketch->OpenEdition();+ d' Y6 o9 t3 q9 g, S2 [1 }
到这里,你已经创建了一个Sketch,你可以在上面创建任意的草图了。
2 `2 ~* w& B4 y! `: Z" I" D创建好记住要将其关闭:" ]% c+ q  b! P/ U  m" k/ U: L
spSketch->CloseEdition();% J5 H( P2 p  K. w* |! l
" }3 L3 T' e+ E# h8 ?! @
  x7 q1 m+ e( P$ G/ ?' s" i
上海点团信息科技有限公司,承接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二次开发如何实现呀
, L$ |7 f& {& d7 @8 M$ O
. i7 R, J7 [7 U1 h* b. _
  p+ {" H; y. j
我的第一个程序运行成功了,但是显示不正常
回复 支持 反对

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

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

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

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

    我知道了