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

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

admin 楼主

2017-12-22 13:44:56

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

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

x
CATIA二次开发入门教程---20 创建草图7 |) w: t2 Z, |: P

2 V% I. T6 D) W. P
8 P, A' N( N: ~, w& f" |: y  [[mw_shl_code=c,true]////////获得Editor、Document、Container、设置GSMFactory
3 `. G" ]" h# q        CATFrmEditor* pEditor = CATFrmEditor::GeTCurrentEditor();
: @" x4 r1 C: X: B# Y6 E: d4 c* B        CATDocument *pDoc = pEditor->GetDocument();  U; Q, n6 d: z$ Z' h8 q
        CATIContainerOfDocument_var spConODocs = pDoc;3 o1 F- x1 T) V! \$ C$ E
: e9 L; C% N- A  p, X6 B
        CATIContainer*            pContainer;                //Container/ o: U2 s3 {& |4 K; g) ]
        CATIPrtContainer*     pPrtContainer;//PartContainer0 a1 [; b, ~3 Y& s
        CATIGSMFactory_var        spGSMFactory;                //GSM工厂; \: n- U# l3 Z' `  Q' ?

, `7 y; j* w& D9 f' B        CATIPrtPart_var        spPrt   ;//
6 k5 S# K5 J, S1 g        HRESULT hr = spConODocs->GetSpecContainer(pContainer);//获取Container& x# v$ _6 f6 f. z; x. g; r

- D4 |& `: M2 M6 C5 i0 Q        hr =pContainer->QueryInterface(IID_CATIPrtContainer,(void **)&pPrtContainer);//获取PrtContainer, l$ A  Y4 O" l
        spPrt = pPrtContainer->GetPart();
( e8 e* P6 n: |7 x6 x6 u" M1 G        CATListValCATISpecObject_var spListRefPlanes = spPrt->GetReferencePlanes();//获取3个参考平面
" G/ ?6 o6 M6 q# |# B7 x' j
8 |/ X& z: k0 C, `        CATISpecObject_var spSketchPlane = spListRefPlanes[3];//第三个平面
* |4 w6 W! s0 B. x* ^9 o        CATISketchFactory_var spSketchFactOnPrtCont(pPrtContainer);//草图工厂9 ?) Q5 J: l; f9 V; u8 `6 X- `
        CATISketch_var spSketch = spSketchFactOnPrtCont->CreateSketch( spSketchPlane );        //创建草图
/ k& m, f7 |9 v$ P# |" H5 ~        CATI2DWFFactory_var spWF2DFactOnSketch(spSketch);8 O3 p$ _( E6 W' p: k
/ R9 H( N# _; P
        spSketch->OpenEdition();        //进入草图开始绘图
6 d+ m8 z! q  s* c      ! a8 ?  q1 ~- c1 W
        spSketch->CloseEdition();//退出草图环境
, m0 q  s- z! J$ h" G3 r; i( z% z1 K. d+ L/ G4 ~
      
9 e  ~  w7 ?4 k2 |[/mw_shl_code]: U/ W6 B% J: L
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

有两种方式可以创建草图:" H$ O6 f  G/ h
1)通过参考平面创建5 U6 Y8 D4 `+ P) M- L
首先获取一个CATIPrtPart变量:
! u" T! T$ c6 p8 u0 L: [) G6 k9 XCATIPrtPart_var spPart(pIPrtContOnDocument->GetPart());
) t7 p/ v- Y: s4 F* ~: f' @pIPrtContOnDocument->Release();
. V& Q6 x2 Y  v- s; V  o" }有了CATIPrtPart变量就可以利用其方法GetReferencePlanes(),获取参考平面) R6 w3 C0 R/ R( {6 }
CATLISTV(CATISpecObject_var) spRefPlanes = spPart->GetReferencePlanes();
/ l4 _5 Z' d' i/ Z- b& C# V' [然后创建XY plane (spRefPlanes[1])$ t* `6 ?% Z: [1 |7 u8 E
CATISketchFactory_var spSketchFactory(pSpecContainer);
: b4 E- V/ R. q' Hif ( NULL_var == spSketchFactory ) return (CATStatusChangeRCCompleted);5 b/ N! x1 }. r/ d$ x
CATISketch_var spSketch(spSketchFactory->CreateSketch(spRefPlanes[1]));
; v( B+ ?6 M& {2 a% v7 P" D# Cif ( NULL_var == spSketch ) return (CATStatusChangeRCCompleted);
2 g: r8 B* `* W- W/ x/ rspSketch->OpenEdition();$ H2 V: K. B" \# r3 V0 S8 z. D
2) 通过原点和两个矢量方向
$ `2 k% d4 B" m* ?# W& v该方法是通过定义一个原点和两个方向pH、pV  进行创建。( p+ p" Z" T8 I% ~. {
定义原点和方向:$ G" q, i6 S9 ]
double origin[3]={0.0,0.0,10.0};+ U$ Y* P/ Y4 W$ l
double x_dir[3]={1.0,0.0,0.0};2 r9 K/ Y. L! C! U9 E1 u3 l
double y_dir[3]={0.0,1.0,0.0};1 H% `* h7 Q' O8 T" @4 F# s
CATISketchFactory_var spSketchFactory(pSpecContainer);
& X; M0 N; z% C" d& C) I" Iif ( NULL_var == spSketchFactory ) return (CATStatusChangeRCCompleted);
7 t* @' Y/ P8 |6 [7 R: JCATISketch_var spSketch(spSketchFactory->CreateSketch(origin,x_dir,y_dir));' {/ V" p5 l9 o& d
if ( NULL_var == spSketch ) return (CATStatusChangeRCCompleted);$ \% |7 F; u: x/ g6 ]
spSketch->OpenEdition();! S- C+ ]# e2 ]  A) ?
到这里,你已经创建了一个Sketch,你可以在上面创建任意的草图了。$ p) l3 |5 e4 `
创建好记住要将其关闭:/ p  h) x1 \4 T. O& m3 g# D
spSketch->CloseEdition();
. r6 e7 l& }. Y2 H) ~  i
5 D8 D, M  l4 K: x7 E- K, z# n8 t( ]0 R' D4 V+ P* _6 e) O
上海点团信息科技有限公司,承接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二次开发如何实现呀7 h1 [& R* U1 E/ ?
5 `4 J7 a5 s; g: g

) f. _7 h+ A' K1 J  V
我的第一个程序运行成功了,但是显示不正常
回复 支持 反对

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

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

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

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

    我知道了