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 4520 1

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

admin 楼主

2017-5-6 13:17:52

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

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

x
CATIA二次开发入门教程---15 通过点击屏幕创建点
% w% Y3 u+ T7 n通过点击屏幕,自动创建点, 这里直接建立了一个简单的对话框,通过pushbutton来添加一个回掉函数,函数里面去执行创建点的类。
7 a9 x& z% W$ e1 i9 A+ z( Y! p createPoint.PNG
6 T1 {/ T  ?. F  l" M% u, z% ~+ w5 y, f$ U
void DialogTesTCmdDialog::OnPushButtonCreatePointPushBActivateNotification(CATCommand* cmd, CATNotification* evt, CATCommandClientData data)
' K+ K! f$ r9 X{% o* N2 B" @3 y8 z) Z# |
  // Add your code here1 w1 g( p* r- q* M. \& `' G$ z$ z+ y
      CreatePointCmd *createPoint = new CreatePointCmd();
4 Y4 A3 F9 q+ t7 a5 S}' Z. X# {- @- v" x7 C0 X3 }
  W5 v0 m/ |7 R' n" g/ j0 g
新建一个catia 的命令,名称为 CreatePointCmd ,接下来要做的就是在 action one 里面进行点的创建,代码如下:
& ?+ @8 b& Y- W1 c, }- u: u2 w1 C( ^2 d5 O( X; u& O0 w/ I
CATBoolean CreatePointCmd::ActionOne( void *data )
, N( L  z: x: J4 b; G. }4 m+ I{
' {$ u9 w3 A+ ]  // TODO: Define the action associated with the transition
# m" M  U: Y1 X) ?  // ------------------------------------------------------5 ]3 m3 u. E/ c6 _, [
CATMathPoint2D point2D =  _Indication->GetValue();
+ X4 X- g) I5 q/ { CATMathPlane plane = _Indication->GetMathPlane();7 Z9 z! l2 o. C. A; D
CATMathPoint point3D;
9 y4 K6 A1 T  m* Y+ z plane.EvalPoint(point2D.GetX(),point2D.GetY(),point3D);
0 T0 O2 Y. ?5 q, l) E1 z$ B
. M( D3 U0 P1 T* M% `$ @% Y  t cout<<"Point coordinates:" << point3D.GetX() << "," << point3D.GetY() << "," << point3D.GetZ()<<endl;
! |, i6 |$ N- A: ]# G% }0 u8 W4 X    & p! k7 C* d9 K$ ~7 f4 ?4 {1 G1 k8 Y9 v
  //设置Container(非根节点)
4 ~) w7 R9 r) Y& j+ ~  //获得Editor' M; y% F; k$ I1 G3 @
  CATFrmEditor* pEditor = CATFrmEditor::GetCurrentEditor();7 a1 Q* J  ~3 R# L7 j
  //得到当前对象的文档% X5 I0 B  h! g! }) W
  CATDocument * pDocument = NULL ;
5 K" K6 R" K1 s$ D; ]2 X5 i$ E  //取得当前活动对象/ Z5 p5 Z1 ]4 v$ N
  CATPathElement activePath = pEditor->GetUIActiveObject();3 L3 Y1 \$ Q5 i! S
  //取得当前活动的product
6 N: l4 R, S1 F( m+ Q& ~4 e  CATIProduct *pActiveProduct = (CATIProduct *)activePath.SearchObject(CATIProduct::ClassName());
) I: @( b3 K' i  j: r  //当前活动对象不存在0 W7 s" R- Y, ~- V
  if (pActiveProduct == NULL)
' J0 J: q/ P. s4 U5 P, H* y7 |  {
$ U# g( ^+ {% u7 g1 d1 M" p    pDocument = pEditor->GetDocument();
6 G# F( y1 {2 k- r  }* c! J2 ]0 @& V& m) p  N
  else3 [- x) C$ N/ Q8 P
  {8 |% s8 x- O( l% D% ]
    CATIProduct_var spRef = pActiveProduct->GetReferenceProduct();
2 {6 P4 H6 z. F0 n/ {0 f( L9 X    //当前对象的引用对象是否存在( m" p; z2 ~( J8 y
    if ( NULL_var == spRef )
& n( C) p* y1 F+ Q1 S1 M! J+ Q    {+ k% h5 K# K2 _5 m# V
      return FALSE;' ?. Q. a/ G% X$ }! I
    }
' B9 U% n& a0 u) n    //当前对象的链接对象
4 F8 l6 X( c8 S1 M/ S    CATILinkableObject * piLinkableObject = NULL;
& }: }$ D. [. {5 t# i    HRESULT rc = spRef->QueryInterface( IID_CATILinkableObject, (void**)& piLinkableObject );                            6 G0 s- c' p6 v( b7 _& X4 @
    if ( FAILED(rc) )! p7 C1 Y' ~+ I4 R, H, p
    {
+ _# Q- u# f# E9 o      piLinkableObject->Release();, |  u+ M$ ?  f
      piLinkableObject = NULL ;' j9 h1 m2 Y: W; u! X
      return FALSE;
/ r( \2 U" D4 @    }1 J7 \3 Z: F, f0 y0 ^% ~
    //得到当前对象的文档
2 a/ k7 s" A% {% `    pDocument = piLinkableObject->GetDocument();4 }# g6 }- T  @2 x- [2 V
    piLinkableObject->Release();
$ H* h4 K9 l8 ]# b* Z    piLinkableObject = NULL ;
7 U. ]) O( O# h4 O/ Y9 S2 g    if ( NULL == pDocument)" q( [+ z; a! D. u7 L5 W) x& _
    {
0 i9 ~, Y, R5 ~2 ~' t' W      return FALSE;
3 s4 o) [2 R$ l8 x! L  b  r0 ?5 o    }7 Z) p, w, r1 v1 v& ?& W4 G( N! z
  }, ~, f0 k3 k# L2 ~  k: w; |" Y
  //得到文档容器集
  O5 _4 {0 |5 X4 K8 ?# g) v  CATIContainerOfDocument * pIContainerOfDocument = NULL;
! a. L" w+ L6 j1 Y9 Y  HRESULT rc = pDocument->QueryInterface(IID_CATIContainerOfDocument, (void**)&pIContainerOfDocument);3 Z( {2 d: D$ A2 R& l
  if (FAILED(rc))5 Y6 g/ c$ C8 y, {; |2 Q1 ?
  {
1 n9 u" N% V7 ]3 {% r2 ?% k( P    //pIContainerOfDocument->Release();/ {+ F: R& @: \7 S7 x
    pIContainerOfDocument = NULL ;) }; Q* o: j/ N! c
    return FALSE;; J0 \- K! k- D( r6 g8 g$ N, A+ ~% r
  }
; H! @4 A/ h  S$ o  
1 ]# ^; V# u6 s; l  //获得Document
, [, Z" `# p+ I# F$ r* z  CATIContainer* _pContainer = NULL;
& I4 V7 r4 x7 C) S+ U" |  //获得SpecContainer5 A8 Z! ~6 X0 y; T8 K: U0 W
  HRESULT hr = pIContainerOfDocument->GetSpecContainer(_pContainer);
6 K7 S6 f  h" b8 Q; L$ F( K: @
- Z3 W9 E- f+ g  //GSM工厂
9 y4 _9 U2 C  L  CATIGSMFactory_var spGSMFactory = NULL_var;
! f% r* }0 f; q  //设置工厂  ' |1 q0 D' ~5 u5 h7 ^; r+ U
  spGSMFactory = _pContainer;         ) M0 x) c  Q' j9 _1 m3 u
  CATIGSMPoint_var spPoint = spGSMFactory->CreatePoint(point3D);
  w- L+ M4 T$ M  CATISpecObject_var spSpecPoint= spPoint;     / o: @! f- c7 E! Z8 m, _
  CATIGSMProceduralView_var spSndPntObj = spSpecPoint;
4 k5 W# G/ g. D- k! C; u4 X8 Y
- O6 E1 W2 R, d5 a  //*将点显示在屏幕上
$ p9 S  m/ |: m- m! u+ {  spSndPntObj->InsertInProceduralView();
& w3 R2 F* e2 h6 l$ F  //更新点对象* Z0 n2 ~: J7 a# J% f) T  l
  spSpecPoint->Update();# F8 b* d2 {9 N+ ]# g# k3 h

) Q) C4 ]; A$ L. c& O3 e  return TRUE;9 ^6 ]( Y% q* J9 f  l
}
2 \+ p  Z+ E) I) _2 ~) V( ~$ Z  e% \* q; |

# H6 `2 U! ]; y7 ], [7 y效果如下:) x) z9 Y) Q4 P# k
. t# h, D& {6 o. b

$ E0 e: t- T/ ^- G' O6 ^
0 ~# ~7 k+ R4 f
上海点团信息科技有限公司,承接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指的是什么呀0 d, b& i( s) e8 o! z, i
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了