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

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

admin 楼主

2017-5-6 13:17:52

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

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

x
CATIA二次开发入门教程---15 通过点击屏幕创建点6 S" o/ b3 O0 M5 B+ F
通过点击屏幕,自动创建点, 这里直接建立了一个简单的对话框,通过pushbutton来添加一个回掉函数,函数里面去执行创建点的类。  m6 [. i: Z) G* B
createPoint.PNG , M6 b1 ~* t! W' \3 ~

3 Q8 X: C5 r# b! O( I, N- I  S2 a$ Zvoid DialogTesTCmdDialog::OnPushButtonCreatePointPushBActivateNotification(CATCommand* cmd, CATNotification* evt, CATCommandClientData data)
$ u' u5 B, X' d5 u) R{
2 k& }. M: p9 v5 o) A6 X  // Add your code here
: G6 `8 i' G0 @8 S5 p      CreatePointCmd *createPoint = new CreatePointCmd();
9 Q% [; V5 o0 e$ W. S$ |# q! \}
; w: F* B4 Y/ Y+ ]; C9 K2 `5 Q  N5 f
新建一个catia 的命令,名称为 CreatePointCmd ,接下来要做的就是在 action one 里面进行点的创建,代码如下:
$ l% _- C3 C& v3 x
: G& ?% g+ ^5 `9 d6 X' _# v  eCATBoolean CreatePointCmd::ActionOne( void *data )
! \" Z% `- D3 G  L  m  S+ h& ~{
- t  W: ^- S" i  // TODO: Define the action associated with the transition , R" W) V& F$ M, d3 m: u
  // ------------------------------------------------------; M* h* u7 Y5 }+ r9 J
CATMathPoint2D point2D =  _Indication->GetValue();
9 H6 }1 w! U7 c& O CATMathPlane plane = _Indication->GetMathPlane();5 @5 q( H4 O5 Y$ q0 x% M0 C
CATMathPoint point3D;/ A1 X9 R! E, r  \' O# O
plane.EvalPoint(point2D.GetX(),point2D.GetY(),point3D);! U( p, [. [* j" g4 Z8 d# j
% J( I' c% Q3 w; `" g3 A
cout<<"Point coordinates:" << point3D.GetX() << "," << point3D.GetY() << "," << point3D.GetZ()<<endl;
! k& G: k: T) I    ' z  g2 ~& O& a- P" }  \
  //设置Container(非根节点)8 [% M) J. ]6 _
  //获得Editor& h( m' a2 s8 O7 Y2 o' x3 J9 w
  CATFrmEditor* pEditor = CATFrmEditor::GetCurrentEditor();
' E4 b6 ?# `: _# Q: W1 z; h, c  //得到当前对象的文档6 b* H9 u* V6 g) q
  CATDocument * pDocument = NULL ;
: W2 C9 w" u* ?. g0 z  //取得当前活动对象1 ]/ b, o5 k& ^4 {
  CATPathElement activePath = pEditor->GetUIActiveObject();& ^& H: A& h7 W  t% n: O
  //取得当前活动的product
+ ^* K: O3 I( h2 x  P. G0 V! p  CATIProduct *pActiveProduct = (CATIProduct *)activePath.SearchObject(CATIProduct::ClassName());7 N+ |, r8 I5 ]1 O( A
  //当前活动对象不存在$ `$ {& j" ?/ A. c8 z. H
  if (pActiveProduct == NULL), C( B, v2 V) o
  {
) w) B4 [% q  A    pDocument = pEditor->GetDocument();
+ y6 o# N8 o  h9 i$ P  }4 r- ^3 s7 _# P/ l& {- W9 o
  else  M% i4 [4 G9 l! v$ J5 F# Z
  {1 D9 F5 e1 Z& A
    CATIProduct_var spRef = pActiveProduct->GetReferenceProduct();
0 ?" P# K7 V5 s9 `3 r" C- D    //当前对象的引用对象是否存在! h4 B. u$ Z' R, k, I
    if ( NULL_var == spRef )2 O% l# _) v! T$ \( k
    {
# H& C1 ~* J; j; \      return FALSE;
  K( ]* a! a0 R3 g% @    }, K/ k2 c. z1 |7 p8 Z) T  L! A2 c
    //当前对象的链接对象* L7 J2 V$ l3 o" z( r* f& E
    CATILinkableObject * piLinkableObject = NULL;$ [) h9 h2 [1 C4 o6 ^% y  |+ O& O9 Q$ `
    HRESULT rc = spRef->QueryInterface( IID_CATILinkableObject, (void**)& piLinkableObject );                            / m0 o) L/ U9 J; h4 }* q9 a
    if ( FAILED(rc) )2 y* p: c. I; F& U3 Q
    {
# V4 l7 P. {" }( \3 v      piLinkableObject->Release();
9 j, c- U; v! I; [. I. ]      piLinkableObject = NULL ;& G# q/ I( n0 ~% S3 F
      return FALSE;! g! P; R! {6 h* I6 M7 i+ O( }
    }1 Q* j' g; M( F" `6 b; R9 G6 u
    //得到当前对象的文档
- _8 {2 m: x8 N# B    pDocument = piLinkableObject->GetDocument();
3 O0 i7 x7 Z7 }& a    piLinkableObject->Release();
. F  [( p' o) ^5 e    piLinkableObject = NULL ;
" u0 U1 R$ E. ]2 t! |    if ( NULL == pDocument)
3 m, S& `, F& X) |$ Z8 f    {$ E6 P5 Q# }5 O: F5 J' T. u; I) W6 p  ^! _
      return FALSE;
5 G. @- t4 W$ F: A9 K    }
6 k) V& I2 o  a  }
  }! D2 l- {( L0 s  //得到文档容器集
( o9 v9 _. k3 e* r  O6 _  CATIContainerOfDocument * pIContainerOfDocument = NULL;
) l, D# z. u# U( a0 `  HRESULT rc = pDocument->QueryInterface(IID_CATIContainerOfDocument, (void**)&pIContainerOfDocument);
2 R$ X7 @+ \+ P6 ?, \  if (FAILED(rc))
( m4 J. W+ S8 V9 e2 I; w! N6 ?/ D  {/ z! J3 ~; S; i3 T
    //pIContainerOfDocument->Release();- D# E# x  Z' d5 b1 ~3 y
    pIContainerOfDocument = NULL ;
& l, R7 i) T4 n. r9 L* x! o    return FALSE;. c/ a7 j% C2 m. L% {
  }
! W8 q8 E* E4 C" }2 ?  / \, }6 `/ J) J  P
  //获得Document! n  t& R5 ^4 j: `! T5 s
  CATIContainer* _pContainer = NULL; ( g& g& f7 C) r5 L7 D) U
  //获得SpecContainer
  i8 d/ }: r5 Y* ~% [6 f  HRESULT hr = pIContainerOfDocument->GetSpecContainer(_pContainer);* L: t; O5 R0 R+ @; r  Q9 t
$ @. {1 `! [4 N" T2 t  M& U
  //GSM工厂3 N7 {! Y2 @) t3 l9 }
  CATIGSMFactory_var spGSMFactory = NULL_var;
6 p& G$ s' t! D! k* [2 z  //设置工厂  
' s, G' l# D2 R* E  spGSMFactory = _pContainer;         
& `! d+ O) d4 a. ~  CATIGSMPoint_var spPoint = spGSMFactory->CreatePoint(point3D);" V: ]* d* e0 I2 p+ A+ ?0 d
  CATISpecObject_var spSpecPoint= spPoint;     - ]: b$ ~9 o3 Y3 K
  CATIGSMProceduralView_var spSndPntObj = spSpecPoint;" S0 {2 i0 W5 M: I. J- A# t! [

3 \; x  G7 G% K1 ^  //*将点显示在屏幕上' x5 B( g3 E- W2 [! D
  spSndPntObj->InsertInProceduralView();
$ v% i" R& E- V4 Q2 j  //更新点对象
1 ~7 i% |% r& j  spSpecPoint->Update();
; v. b* h7 j7 {: I3 n ) u% G# F$ g% J" ?% h/ s6 X
  return TRUE;
5 ^7 }+ z# [* k) A! l7 ^}& ^7 Q8 Z/ P/ |! r8 O0 W

5 H: I( J7 d$ Y+ _% M/ t: L+ J) i; D' k6 }* N7 R& t' }6 ?8 ~
效果如下:3 e+ O2 w- ~& ?6 T" J7 m( G
3 t! E' g/ h6 n
; `4 j0 p( c1 {+ L% V% x( \- m9 _$ ]8 v
! L9 B# r7 Z, ]+ s/ 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指的是什么呀
5 y2 A, D4 g# C; ^* y, z1 ?
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了