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二次开发入门教程---15 通过点击屏幕创建点

[复制链接]

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

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

admin 楼主

2017-5-6 13:17:52

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

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

x
CATIA二次开发入门教程---15 通过点击屏幕创建点3 {. _4 }! B5 s3 e1 \. X7 j0 F9 z6 M
通过点击屏幕,自动创建点, 这里直接建立了一个简单的对话框,通过pushbutton来添加一个回掉函数,函数里面去执行创建点的类。- |9 ^8 g. S! g. j' a( g1 |
createPoint.PNG
. M% p1 F9 i2 D! Y+ M2 A2 _
) C+ k" }. a+ C& I6 Dvoid DialogTesTCmdDialog::OnPushButtonCreatePointPushBActivateNotification(CATCommand* cmd, CATNotification* evt, CATCommandClientData data)  K7 }5 u8 T3 s6 @6 Z- K
{, f& ^" F2 @; t- N8 J# j
  // Add your code here
& k' u0 F1 f" V      CreatePointCmd *createPoint = new CreatePointCmd();1 H  W& Z8 W' o& n: N
}
" k, r4 Q3 v0 `* r3 P
5 N5 B( f! l' e: r2 Y; H. T' z新建一个catia 的命令,名称为 CreatePointCmd ,接下来要做的就是在 action one 里面进行点的创建,代码如下:7 n1 v" I' C9 M3 K, r( V
( x: z& v, U# T. ^
CATBoolean CreatePointCmd::ActionOne( void *data )3 Y3 |$ U. I5 p: J* o$ @9 R2 J
{* p. U1 T6 h- J+ `
  // TODO: Define the action associated with the transition
9 W9 Y. m2 h; y  // ------------------------------------------------------* g9 x8 a: Q* q. ^0 C, ]
CATMathPoint2D point2D =  _Indication->GetValue();
' [9 _$ J, e0 g0 v$ p$ p CATMathPlane plane = _Indication->GetMathPlane();
% [: X. M: d- f CATMathPoint point3D;$ ^% r& G$ t" |- A+ B
plane.EvalPoint(point2D.GetX(),point2D.GetY(),point3D);
' B' ~" W: x, _" w
3 k- S5 h! X9 p" c cout<<"Point coordinates:" << point3D.GetX() << "," << point3D.GetY() << "," << point3D.GetZ()<<endl;1 R6 R2 t# e4 V3 R" K+ D
    : K% S$ Q4 l& z, f
  //设置Container(非根节点)7 s2 R/ U! K- |
  //获得Editor
! V7 c6 H4 h& G% H5 t  CATFrmEditor* pEditor = CATFrmEditor::GetCurrentEditor();
; v7 @$ N* H) l, s) B  //得到当前对象的文档
1 h' V5 Y. Z( I* Q, y, c+ H  CATDocument * pDocument = NULL ;! d8 A$ @4 \( t. r& j
  //取得当前活动对象3 b% k" C  x8 G! \6 P
  CATPathElement activePath = pEditor->GetUIActiveObject();! O8 ?+ X* L! P4 v5 F
  //取得当前活动的product
  {; V2 A1 T* i- q  CATIProduct *pActiveProduct = (CATIProduct *)activePath.SearchObject(CATIProduct::ClassName());
$ q& g: v+ ?' z# a6 N  //当前活动对象不存在; L9 W' L& c( S* T
  if (pActiveProduct == NULL)* U. l8 Y/ x( R5 }1 d* l- v
  {& d; i! I# O& D5 W+ q. S, O
    pDocument = pEditor->GetDocument();
5 @7 n4 m. r2 p& b2 Z: a5 B9 H  }7 }' k" H+ z& Z  T- q4 K5 h% a& h) P
  else
7 q/ `6 Z% B' H# s6 r! D# k7 i/ r9 j; ]  {) x' V$ U" q, H; I
    CATIProduct_var spRef = pActiveProduct->GetReferenceProduct();
8 g3 m( `5 P/ H+ c  L' Z    //当前对象的引用对象是否存在& _& W( u6 ?' p% }% N
    if ( NULL_var == spRef )* j/ k! D' Z. v9 w$ C
    {
) ~# @6 C( [* ^' [      return FALSE;" G/ K7 X8 E" A' z
    }
" F$ t! d% L% `* M8 `- ]! C, U! z1 l: j    //当前对象的链接对象# g& @& Y8 F  d, v! Y
    CATILinkableObject * piLinkableObject = NULL;
# g6 ^0 h% p3 }. s+ l    HRESULT rc = spRef->QueryInterface( IID_CATILinkableObject, (void**)& piLinkableObject );                            4 Z& c3 v, _$ ~
    if ( FAILED(rc) )
1 ~7 Q$ }: w, {! ^    {
$ t8 ~+ y' v: j3 R. J& J* \      piLinkableObject->Release();, X: g3 |" z: H# @
      piLinkableObject = NULL ;) u: c5 R2 e" ]6 B) E) h+ l' ^0 Y1 \
      return FALSE;  h. t# ]1 `! D7 Q7 G
    }9 p. a' I% G0 @! _- v* [
    //得到当前对象的文档
+ q, H- Y8 ?. f4 l0 e8 [1 F    pDocument = piLinkableObject->GetDocument();
: L& j3 l5 U+ f' b( f4 d; i    piLinkableObject->Release();2 |, D7 d9 Y2 l2 ^5 N7 j
    piLinkableObject = NULL ;
9 m: c4 E$ O) _2 C" H    if ( NULL == pDocument)% ?5 P# y/ A' Z6 d
    {
- k" m( U9 T- A+ ~      return FALSE;2 M& C( N. s$ q- P  P& |8 a2 C* x
    }5 W. a2 i7 i3 s+ W, j2 ~1 t
  }
- `) J4 q" J1 U0 W  //得到文档容器集
" ?7 ~+ ~4 D6 @" U. @* {# S  CATIContainerOfDocument * pIContainerOfDocument = NULL;# x" y6 F# A0 {3 X, [
  HRESULT rc = pDocument->QueryInterface(IID_CATIContainerOfDocument, (void**)&pIContainerOfDocument);1 l0 h$ @% z2 @- _/ y5 Z
  if (FAILED(rc))6 L7 Y. x( Z  r3 A$ y* J& ]
  {
4 J# G8 t3 F" m    //pIContainerOfDocument->Release();+ Y! V4 F5 `# `% }+ {, z6 e
    pIContainerOfDocument = NULL ;
9 v* L, L, e0 p6 s4 m3 Z+ n/ x    return FALSE;
' i- N+ Y% @$ t( v! o  }
  ~" d4 ~: \& V0 _+ C' `  ) K! q  w, X% R% k4 H& R
  //获得Document6 D$ o9 a6 ~" v6 ^3 N+ d) Z! B0 Y
  CATIContainer* _pContainer = NULL;
7 F" T) I7 F: N0 R: m5 t" b  //获得SpecContainer
) g5 V7 |: F9 D. o/ x! J  HRESULT hr = pIContainerOfDocument->GetSpecContainer(_pContainer);$ ~4 t8 b& W8 x' t& X! ?6 k

! F7 e( Y# |$ T9 s* e  //GSM工厂
/ {, F' c! V* P* d# q. ]  CATIGSMFactory_var spGSMFactory = NULL_var;) |) D. f4 `3 m+ f( i, G" p
  //设置工厂  5 i' p) {, L# t- S$ C+ |/ L
  spGSMFactory = _pContainer;         ( m4 T" r1 g/ |* ?+ W3 v8 X$ {& d* ~
  CATIGSMPoint_var spPoint = spGSMFactory->CreatePoint(point3D);
0 l9 |% w* p+ \' I1 A  CATISpecObject_var spSpecPoint= spPoint;     9 M5 X6 a/ O0 E! q8 W1 k# b9 n
  CATIGSMProceduralView_var spSndPntObj = spSpecPoint;$ E9 h3 [5 f0 s/ E
) t7 ^9 Y8 H7 B+ N" @* `
  //*将点显示在屏幕上% t2 P# i$ v/ \7 C" l, ?5 x
  spSndPntObj->InsertInProceduralView();
: \' h+ [+ e8 v# F9 D& ]  //更新点对象
: [4 J+ y5 B) {$ U# z  spSpecPoint->Update();
2 }2 d) d0 k. c( ?
( |1 l6 b, h4 x) q5 d/ h' H( X  return TRUE;
6 ]% Y4 G8 P0 S7 r" R}' W' B  v% j' @% Q4 D  Y
* ^' |. O/ u* b9 G, {6 a

2 D+ _9 m! y$ _* K& \效果如下:
) y1 L( t( _9 X) F
" Y; {9 c/ s) j' b: x- `  \4 @/ u* M! V) C1 K. k  w

) y) y, s9 Q$ w" ^
上海点团信息科技有限公司,承接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指的是什么呀7 T( M4 K' F/ t7 B! J8 `( D* g  F9 X
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了