PLM之家精品课程培训

PLM之家精品课程培训

联系电话:18301858168   |   QQ咨询:939801026
NX二次开发培训

NX二次开发培训

UFUN/NXOpen C++和实战案例

适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术。
公众号二维码

关注公众号

点击扫描二维码免费在线高清教程

课程详情
Catia二次开发培训

Catia二次开发培训

市场需求大,掌握核心技术前景广阔

Catia二次开发的市场需求大,人才稀缺。掌握开发技能潜力巨大,随着经验积累将在汽车、航空等领域有所作为。
B站二维码

在线原创B站视频

点击关注工业软件传道士主页

课程详情
Teamcenter培训

Teamcenter培训

全方位培训,从基础应用到高级开发全覆盖

涵盖用户应用基础培训、管理员基础培训、管理员高级培训及二次开发培训等全方位内容,由多年经验讲师打造。
QQ群二维码

加入同行交流

点击扫描二维码加入QQ群

课程详情
×

PLM之家plmhome公众号

课程涵盖: PLM之家所有原创视频

×

关注B站视频

所有高清视频一览无余,全部在线播放学习

×

加入PLM之家QQ群

同行交流,疑问解答,更多互助

PLM之家PLMHome-国产软件践行者

[原创] CATIA二次开发入门教程---15 通过点击屏幕创建点

[复制链接]

2024-6-12 17:01:01 4529 1

admin 发表于 2017-5-6 13:17:52 |阅读模式

admin 楼主

2017-5-6 13:17:52

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

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

x
CATIA二次开发入门教程---15 通过点击屏幕创建点
8 O* d0 l2 I  [5 [8 T通过点击屏幕,自动创建点, 这里直接建立了一个简单的对话框,通过pushbutton来添加一个回掉函数,函数里面去执行创建点的类。
- ~9 ~, o2 e8 [, J3 D createPoint.PNG
* E( z" g# k, M5 n
8 `2 O! Z6 P8 G0 d/ g" ~4 X' fvoid DialogTesTCmdDialog::OnPushButtonCreatePointPushBActivateNotification(CATCommand* cmd, CATNotification* evt, CATCommandClientData data)
5 w5 ?+ a0 d8 w/ o4 U4 ~: o{  E. z* @: _/ c! X( N* [, b3 f
  // Add your code here
5 M, ~) W3 \* N( X. V- F& @      CreatePointCmd *createPoint = new CreatePointCmd();% g1 G3 X* m* f; h# D/ N! W
}
/ q& Z2 b- V  \, r1 ]+ @9 E7 \0 `( Q+ h& P/ P' g2 @% b2 ^
新建一个catia 的命令,名称为 CreatePointCmd ,接下来要做的就是在 action one 里面进行点的创建,代码如下:
$ d2 a0 }' ^. R$ ^# C+ c. ~0 k" i
CATBoolean CreatePointCmd::ActionOne( void *data )
: P/ u$ C# X8 z) X% j! C{1 ^7 E) y0 @0 w9 E; M# u
  // TODO: Define the action associated with the transition
7 g+ `; P$ g, E1 ^8 S8 F- P  // ------------------------------------------------------
) p% {* S! q6 w9 J% q CATMathPoint2D point2D =  _Indication->GetValue();6 R  {! S5 f) ]  N3 u7 {
CATMathPlane plane = _Indication->GetMathPlane();
, n- p7 Z: S$ ]+ B; O2 |- C  k$ q CATMathPoint point3D;
: ?% @( s  [1 y0 m# D1 ^ plane.EvalPoint(point2D.GetX(),point2D.GetY(),point3D);& z9 M* x/ b5 r. ?3 E" H" G
8 j5 L. c# x9 Z3 Q9 r
cout<<"Point coordinates:" << point3D.GetX() << "," << point3D.GetY() << "," << point3D.GetZ()<<endl;
/ q( k" d7 k8 `0 s9 u  i    - t  Z0 ^3 L! F; ?' j- j
  //设置Container(非根节点)
; P; |) s' a8 m/ }  //获得Editor
3 L# T( v' |) n  N6 h& ]5 B  CATFrmEditor* pEditor = CATFrmEditor::GetCurrentEditor();
. k, o) h& a. g4 h$ g# B  //得到当前对象的文档
0 i7 N2 ?' }! C2 H( g' t  CATDocument * pDocument = NULL ;
; M9 M! S" |4 e  //取得当前活动对象) x0 r9 {; J. k6 m' F
  CATPathElement activePath = pEditor->GetUIActiveObject();
4 f' ~0 |4 S$ T3 ?  //取得当前活动的product8 Y+ O3 _) Q- w3 E  j
  CATIProduct *pActiveProduct = (CATIProduct *)activePath.SearchObject(CATIProduct::ClassName());
$ h* L# b* R& J2 T0 ]& f  //当前活动对象不存在2 i# T& J  U5 I8 r$ k% m+ X
  if (pActiveProduct == NULL)" y2 y. ]6 k" u- j+ ?$ H
  {1 u8 }7 E5 B9 ]6 v- d  @
    pDocument = pEditor->GetDocument();9 u8 i  n7 y  f8 X
  }
% @- [; v- A* F( K6 k8 `; e  else0 ?" X. S, e$ O) S  C" z0 h
  {
/ n: R4 T$ F2 t: P1 v! J    CATIProduct_var spRef = pActiveProduct->GetReferenceProduct();+ s4 y8 b/ ~& V
    //当前对象的引用对象是否存在3 i' Y, q1 i; p6 @( b% x" ?& W
    if ( NULL_var == spRef )0 ^) h( A( C+ ~" b& Z
    {
6 w) I1 Q1 x$ y9 J- a      return FALSE;
8 j5 Q5 S7 f+ L" D- g- z    }' Q' K8 n/ ~# n! u! v
    //当前对象的链接对象
) }9 X8 Z& x5 R  ?6 B0 F% ^    CATILinkableObject * piLinkableObject = NULL;
* U( U( X% e5 {# O& [, }5 V    HRESULT rc = spRef->QueryInterface( IID_CATILinkableObject, (void**)& piLinkableObject );                            1 f  Z+ B- ^, e$ E2 B# B
    if ( FAILED(rc) )' ?/ R* G# E" {) D
    {% h1 @3 C6 I( U
      piLinkableObject->Release();
5 q7 p* h& i- J9 `  v' U3 f4 @      piLinkableObject = NULL ;
# j6 ]: b0 K4 a      return FALSE;
' v5 {3 Q, _- |1 p6 Q    }8 p" I0 j! K$ T( E2 u
    //得到当前对象的文档" Q5 D* a7 _) z6 i
    pDocument = piLinkableObject->GetDocument();
9 _9 z6 F/ @0 T9 Y# b) l, l% J* t    piLinkableObject->Release();
, |0 K0 ~; s; J: T    piLinkableObject = NULL ;
0 F- v4 ^/ r& S! n8 x    if ( NULL == pDocument)  Q2 E% u" J9 }7 f
    {
, B( h% I+ V$ ~; y      return FALSE;6 [: W; [8 E3 @8 }' m& `- K
    }  h" b, Z- H6 g' d
  }
1 M% d% L3 k# z' f  //得到文档容器集* y, s* Q4 t( C' |% l! A& P0 ^5 j
  CATIContainerOfDocument * pIContainerOfDocument = NULL;
. M$ }4 H$ k( Z. w  HRESULT rc = pDocument->QueryInterface(IID_CATIContainerOfDocument, (void**)&pIContainerOfDocument);
' Z: W1 b) [6 a# {# A! E  if (FAILED(rc))$ H- r: Z( e/ z  V& j; R& l# o! B
  {
" ^% ~. u* D7 P$ z$ j; r6 o    //pIContainerOfDocument->Release();$ X& _7 ~+ ]7 {0 y- z/ J
    pIContainerOfDocument = NULL ;3 T0 Q4 t' i, r! u! X5 E- m  O
    return FALSE;  ~5 x  S0 x9 B) E1 X
  }; S# V4 |4 o5 p, S3 N% i
  9 X& }+ K- R$ ?  O1 t+ o( d( o
  //获得Document
& d+ S/ e% m9 J4 u) C  G" \  CATIContainer* _pContainer = NULL;
# ]9 R/ L( D- w% q' S  //获得SpecContainer, U. z: K4 ?: r+ L7 n
  HRESULT hr = pIContainerOfDocument->GetSpecContainer(_pContainer);2 `$ H* O* ?( ^3 k

% v2 G' c: i4 c+ B: u/ d  //GSM工厂4 s7 P' l% d# \/ ]2 x+ W
  CATIGSMFactory_var spGSMFactory = NULL_var;
3 G3 i% x# \7 e7 c8 p) ~  //设置工厂  # s6 I6 Y' q+ s* o% E
  spGSMFactory = _pContainer;         ! Y. ?$ w; B4 \' a4 }8 R
  CATIGSMPoint_var spPoint = spGSMFactory->CreatePoint(point3D);' k. g" b& z: ^, Q& t8 \! b
  CATISpecObject_var spSpecPoint= spPoint;     $ g' q) ~+ z# d. m3 y' c" z
  CATIGSMProceduralView_var spSndPntObj = spSpecPoint;
8 [% j2 J" _7 r' f9 D9 Z3 O, _& A. A' C9 \* F
  //*将点显示在屏幕上
" y: m# e+ H) S% U1 d2 |  spSndPntObj->InsertInProceduralView();
+ q% m! ^" T- \7 A9 J  //更新点对象4 S7 w* d: \+ {- {
  spSpecPoint->Update();
* ^1 U" \) O. N- ]8 ?
  d: R, _7 N* E) X1 f  return TRUE;/ T! {0 r7 }) h
}
/ p$ ^( w* V" z4 q/ }! A- l- v5 H3 P3 t5 \, r5 m

7 x; j* m# o2 F% K; Y效果如下:
) E6 |5 M' Z/ B) T
0 E% l1 a# w7 f# X: J$ D4 r! N1 n  b! a& y" A8 k0 D/ {( t

0 ]6 s5 c; S. J
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

全部回复1

onerice 发表于 2024-6-12 17:01:01

onerice 沙发

2024-6-12 17:01:01

  _Indication指的是什么呀
# N$ N7 i3 {  _4 L9 s9 y% i* g* J
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

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

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

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

    我知道了