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二次开发源码分享:选择对象的方式

[复制链接]

2019-11-13 16:49:02 5506 1

admin 发表于 2017-4-17 21:57:51 |阅读模式

admin 楼主

2017-4-17 21:57:51

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

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

x
# d9 X! k; `: F1 x  K
Catia二次开发源码分享:选择对象的方式
0 X+ i8 ~  [3 f8 r3 `0 w/ ]8 T5 F4 j8 y
# }: ]4 A% i  J# a- W0 b
#include "CAARCSelectObject.h"
  d2 c% h. N# @& p2 j  t#include "CATIndicationAgent.h"
, Y$ @; o# T. |. J#include "CATMathPlane.h"1 v+ G6 V; N5 E0 g+ Q# X

7 h0 V& K5 D6 A7 C7 G4 h) \3 x' \#include "CATCreateExternalObject.h"+ c8 O4 Q6 f7 Q
9 e+ y' G, ]# b+ ?$ g+ ]
#include "CATIGSMPlane.h"
& t4 D7 x  `5 X# N. s0 A
7 _# R  Z% n& `9 \#include "CATIGSMPoint.h"
! T1 G( n7 u6 ^1 V; K5 F  P! P0 y; R
#include "CATPathElementAgent.h"+ e! w# o  D9 c' M+ w- d. ^

. h+ M/ d* F% b#include "CATPathElement.h"& i2 z6 o: k0 B  t$ h& A
& u3 j: c) K9 V6 G& F
#include "CATISpecObject.h"( c  o- `5 |- @

% T  p# W! _5 M3 O. V* V% ^! M! N1 u#include "CATApplicationFrame.h"
1 `4 L$ p8 m7 b& N
' a/ A( w4 ~7 t#include "CATDlgWindow.h"5 }- s& E4 f6 h) i" m! N# |& M

& K; j0 i* x' _$ U5 U9 e" @#include "CATDlgNotify.h"
2 D) Z7 q  p* e8 v5 P5 w) M1 N
! _& K% }5 r/ M; D+ lCATCreateClass( CAARCSelectObject);
+ O* U0 ?5 C& r. P
" h6 v& V# f( F0 H& m$ f# V5 m) k8 Q% S. M
//-------------------------------------------------------------------------& P. z2 ^8 g( X3 s+ C( G& i
// Constructor+ k2 o) h* h3 B, \. i0 ^
//-------------------------------------------------------------------------
# m1 h' z* r* v4 b4 M/ W( a* CCAARCSelectObject::CAARCSelectObject() :1 }3 z: R& s% B$ _
  CATStateCommand ("CAARCSelectObject", CATDlgEngOneShot, CATCommandModeExclusive) ( t2 w. ?; C5 K6 j! u( o
//  Valid states are CATDlgEngOneShot and CATDlgEngRepeat
) P" C3 P, ~( L. I' k# u5 U  X{, `6 R, n+ y2 Q9 m3 _
}4 L/ ?# Q+ x6 Z% S' u' Z! g
" C/ ^) [4 n- A1 {, D6 k- L
//-------------------------------------------------------------------------
# [8 E6 B1 g; v) `. [2 T0 F// Destructor
  B( u" |% Z% J6 Z4 A! @2 @5 o//-------------------------------------------------------------------------4 `6 D/ x! t7 l0 ^- _* U- j
CAARCSelectObject::~CAARCSelectObject()% D+ ]3 ]6 W4 S, v; [9 ?3 X
{
0 F$ E# M) k$ e1 \. E5 h4 u3 R0 n, g; \. p* @3 j1 O" Y7 S" a2 J
}4 {$ i- ^$ l2 J) m4 E0 w' S

% ~7 a" l/ K/ q; \% N
% Z  g# G- k" I+ W" E//-------------------------------------------------------------------------
" K3 j/ b) A0 A( }  C( k$ r// BuildGraph()
7 h! I$ C* r: u* V( [4 H- r. P//-------------------------------------------------------------------------
3 d& M" c$ ~3 S" Fvoid CAARCSelectObject::BuildGraph()' L; h! k# F/ T, y
{% \) e( c" l* e% w
  _daPathEltObject = new CATPathElementAgent("SpecObject");+ c; C1 L) d7 {, S" ~9 x- Z3 @
  _daPathEltObject->AddElementType(IID_CATIGSMPlane);
+ _2 u( L4 `( u; ?! O" ^. G* ^  _daPathEltObject->SetBehavior( CATDlgEngWithPSOHSO | CATDlgEngWithPrevaluation | CATDlgEngWithUndo);& ~7 U% b2 d) u, o( s

% G4 {3 `4 l! S$ I! _9 g  AddCSOClient(_daPathEltObject);
/ V  ?. o5 l6 _1 `$ e4 A: ^6 N; E% y- m# }
  CATDialogState *stGetObject = GetInitialState("选择任意对象");8 |  g3 m$ h' E; l: ?+ {' W
  stGetObject->AddDialogAgent(_daPathEltObject);5 t8 f' T! {( f, x) U; Y
+ L% v" u% ^8 Q
  CATDialogTransition *pFirstTransition = AddTransition
% ^5 `+ V: \+ C6 j: {3 L! X    (
& ^9 x: R- ]+ s, B2 |    stGetObject,
4 I; J' z- [! K' d; y9 u    NULL,0 Y0 ?8 W" q; l: z
    IsOutputSetCondition(_daPathEltObject),                   2 {  g* }" g/ g# ?+ z, c0 J$ |5 p
    Action((ActionMethod) & CAARCSelectObject::ActionOne)
6 }& z. \! ~# b9 Q# v    );
& `% P+ k- }+ n, r2 N; Q0 v& V) R! p. q/ {' N$ v6 k
}; j& h$ G9 N/ n9 ?

  @4 ?+ q6 q  o# Y6 D; R- T$ |4 b# G* ?
//-------------------------------------------------------------------------
( B6 [- q6 J7 e& [// ActionOne ()* H1 w  y% w) s/ Z7 J: m1 y
//-------------------------------------------------------------------------
/ U& e9 u6 ?- PCATBoolean CAARCSelectObject::ActionOne( void *data )
# Z6 K8 O# ]( B/ O. M1 V% ^{; x3 ^* s  S5 S+ V! Q( Z
  CATPathElement* pObject = _daPathEltObject->GetValue();
9 `/ v! S) u4 x- M2 y: z- m1 X) ?" I4 P0 A/ M
  //如果选择对象不为空的处理
4 n5 C; V8 U  ~  if (pObject && pObject->GetSize())
1 q' {' e2 Y; g! L  {
0 I. o& ~. ~8 Q4 P$ H    int objectSize = pObject->GetSize() - 1;
0 C% h; U# n# Z% Q) H+ M    CATBaseUnknown *sProduct = (*pObject)[objectSize];
3 w( _: L( L. n( q, `! Q    for (int i = 0; i<objectSize;i++)$ L! v& T3 A( Q
    {. w/ _/ F! ?6 }/ B. O/ F8 v5 V
      CATBaseUnknown *sProduct = (*pObject)[i];; P# N8 |7 a$ t) r, |& T
    }/ ~( j3 G/ w8 N! L) \" E
; M2 F; R( a1 [' d
    CATISpecObject *spObject;* ]9 G7 s0 P: g) q# v2 w+ ]
    sProduct->QueryInterface(IID_CATISpecObject, (void**)&spObject);  H  [. c# c- [: t# A6 f% L
/ b$ @$ }9 _: ^# v9 v2 t! n
    CATUnicodeString displayName = spObject->GetName();
2 {( {; _, o, P4 H; B
, A* m3 z4 p  H+ u3 W    CATApplicationFrame *pApplication = CATApplicationFrame::GetFrame();
4 q* A: X3 G$ [- Y" C4 O. `/ @2 M  }- F* e6 R) X" C
    if (NULL != pApplication) {
& I  x# N# r; Y1 G. g" v- t5 \8 F# z! \. ?
      CATDlgWindow * pMainWindow = pApplication->GetMainWindow();+ m/ f4 U1 _, y1 M# @
# Z# q2 k& x9 o  e4 |
      CATDlgNotify *pNotifyDlg = new CATDlgNotify- ^+ P, f0 K6 ?. L
        (pMainWindow, "提示", CATDlgNfyOK);; u7 r/ c" W% j/ G+ r2 ^" d

) }! W- s3 n8 u0 Z      if (NULL != pNotifyDlg) {# A, O/ P+ Q( U1 ]; V8 I2 N# Q7 K; C
        pNotifyDlg->DisplayBlocked
* n$ I( S* E0 v3 ^  g          (displayName,5 {$ V' x6 D0 u. Z8 X% F; C1 Y2 [0 }
          "选择的类型为:");* ~( Q  t/ w1 m+ R8 ~2 n
3 y2 `4 B$ S' I/ ?* s3 e1 k
        pNotifyDlg->RequestDelayedDestruction(); ) P/ n$ ]# I, v# o: j
      }- N7 y& A0 k7 k! `) y
    }; ?) U2 K0 @" T  z; q0 c& }9 I+ Y
, H4 B2 u. l3 y0 e8 ^1 N  t
  }
$ Q: d2 K# s& Y( C, r% o( d/ u# }0 Y3 _
  return TRUE;6 z. u+ T! A6 {* [. H  m7 R
}7 A# B9 w$ j$ q; u

9 w% g+ y8 c9 P. L7 N6 c6 t
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

全部回复1

1211523676 发表于 2019-11-13 16:49:02

1211523676 沙发

2019-11-13 16:49:02

谢谢分享,收藏学习一下
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了