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

[复制链接]

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

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

admin 楼主

2017-4-17 21:57:51

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

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

x

+ |9 X0 d4 U; w- r0 aCatia二次开发源码分享:选择对象的方式 9 I3 v4 `+ Q0 y2 H

; J% z  _  ~% _5 H1 p0 [! q9 L, Y" y# ^. {
#include "CAARCSelectObject.h"! f7 e0 {7 N( {  W6 A
#include "CATIndicationAgent.h"! X0 o( b) F  L  j3 k" H
#include "CATMathPlane.h") j" V0 x$ R7 f% B" P% {: b) r
& b2 L4 `, A& {9 w- _. {
#include "CATCreateExternalObject.h"
3 e: s: \  X" S1 g# y7 E
$ W% J2 o( {. g0 G#include "CATIGSMPlane.h"
* j1 n( b: D/ e) k% }+ a
7 r- I/ l& N% K# T+ R1 @5 \) x#include "CATIGSMPoint.h"
3 g0 g1 G0 ?* N: x8 y* k, k1 n
+ a( h6 `% l* u+ I% Z  B( ?  y$ B#include "CATPathElementAgent.h"
" G7 O/ l+ f, D
( R: Y) W* D+ q) t! Q#include "CATPathElement.h"
8 M* p# @* X8 ]. q9 G9 V7 c3 ]5 m+ H9 |, N3 F) M3 k( R( u5 J8 A
#include "CATISpecObject.h"! X+ p/ Z% @6 i. f" D* @4 }

- \7 w, ?: \8 I8 v4 ^/ O#include "CATApplicationFrame.h") p8 m5 Z$ {+ U6 N$ V. t# ~4 \2 Q  W

/ m- }, ?- N) G& a7 K; h4 w! H5 ]) `#include "CATDlgWindow.h"
: a( ]4 d! r2 j: F! n2 h
6 }* v8 g7 y2 R1 X+ X3 o# f6 W#include "CATDlgNotify.h"
' ?/ e1 l0 P& Z9 [' Z' a- u. Q. c4 S" \8 j2 R
CATCreateClass( CAARCSelectObject);
# w+ E. ~0 S' [( Y5 y
- T. _; w. }6 }1 b5 w0 b5 W- p* U
. n7 X4 B/ z) W$ E5 P5 A; e//-------------------------------------------------------------------------, r( p8 r4 r$ A1 B
// Constructor" M' G+ B) F, O' ^2 B1 x  w
//-------------------------------------------------------------------------% \7 r5 E" y8 e7 N" |
CAARCSelectObject::CAARCSelectObject() :
/ C. u% a3 d1 x$ e* r5 l  CATStateCommand ("CAARCSelectObject", CATDlgEngOneShot, CATCommandModeExclusive) 9 v+ _7 n$ O5 x2 d. W& ]! I
//  Valid states are CATDlgEngOneShot and CATDlgEngRepeat; A9 S1 L' a8 x6 M; }9 \
{
' K" ~+ V2 d  a' ]( V& ^$ O}$ r3 i0 ?- r) g& f. H/ ?
* L6 Q5 J$ E# c0 G
//-------------------------------------------------------------------------+ `0 e1 ~/ f" h: B- ^$ _) h) J
// Destructor0 }; J& r6 W! d3 I  Y2 p! n9 i1 e
//-------------------------------------------------------------------------% I% q, \0 H4 a1 W' ?, w
CAARCSelectObject::~CAARCSelectObject()$ R; Z) P6 [, F
{2 w" K* a2 S: y/ K. b: F

" i- C7 b! U+ y; T7 @( b}! w6 r& f! A8 i3 A8 X9 u; N8 k  Z
6 D0 e8 l* z, C

) U  B# |5 O3 f' E//-------------------------------------------------------------------------, h+ ~. p9 Y* _6 s/ F  V
// BuildGraph()
6 |8 r" d" c4 \# b% \//-------------------------------------------------------------------------
0 R, r6 c! @3 D& q- w6 H9 rvoid CAARCSelectObject::BuildGraph()
& t+ @7 x+ [' Q) ~: f1 ^: }, S) a{
" R/ Q8 O+ T9 A  F0 w% C" ~  _daPathEltObject = new CATPathElementAgent("SpecObject");
7 V5 Y4 U1 s8 |  _daPathEltObject->AddElementType(IID_CATIGSMPlane);
% g! X# \2 Z( r  _daPathEltObject->SetBehavior( CATDlgEngWithPSOHSO | CATDlgEngWithPrevaluation | CATDlgEngWithUndo);. ?  Z; V/ E3 P. Q+ H
, l% w  M3 L+ }; t- I0 S
  AddCSOClient(_daPathEltObject); 0 C. S. t3 O# m
; \! Y2 m2 `0 \5 {3 U/ @4 F2 D) N* G0 b
  CATDialogState *stGetObject = GetInitialState("选择任意对象");; a$ W; z) w* B  I: u
  stGetObject->AddDialogAgent(_daPathEltObject);. u% l2 j# s5 B

! @/ u" I" R+ G) W- y% d4 \9 O  CATDialogTransition *pFirstTransition = AddTransition% B7 V  w2 j/ E$ C5 s, j
    (
6 Y2 c0 D; \- S: e2 a8 {    stGetObject,6 D9 }0 Y, }5 d/ n6 m7 V4 f" P
    NULL,9 X1 ]! P  A) q
    IsOutputSetCondition(_daPathEltObject),                   $ S# z: j( ~; S! T& Q
    Action((ActionMethod) & CAARCSelectObject::ActionOne)
, I3 E+ T) a5 L- k    );  N" r( J3 X2 M9 m/ c
- l3 L! z, O# V0 G
}
5 j9 ?" U( e2 D
* ]1 e7 k% \. ?) \
/ Z+ k8 `7 ^# H& t, w& p) w7 }//-------------------------------------------------------------------------6 U7 G# M0 i8 d' G5 }. a# ?5 t7 h  Y" f
// ActionOne ()' I0 j4 I0 j% {! Z
//-------------------------------------------------------------------------" s7 F' f* J: U5 p' ]) j
CATBoolean CAARCSelectObject::ActionOne( void *data )$ O. Y5 W. V$ O0 Z0 T5 ~8 b
{
0 G- p) F* z& @  CATPathElement* pObject = _daPathEltObject->GetValue();1 t4 {* Y3 m2 r: E
: g! u! L; f6 T# r5 K1 P9 |
  //如果选择对象不为空的处理( T6 a3 g: |8 n6 U
  if (pObject && pObject->GetSize())' e' ?9 L- f  T8 t) _, @
  { 8 J9 c9 \+ X" i% F% f5 R/ l- v
    int objectSize = pObject->GetSize() - 1; : m' O. f, h8 F7 y+ l3 C, d2 ]' g
    CATBaseUnknown *sProduct = (*pObject)[objectSize];
* g2 Y0 v: x* q. A- B; n    for (int i = 0; i<objectSize;i++)) s+ c9 a" b2 l8 J$ r
    {
' Z/ H' p6 @# ^4 O% x& f8 e1 s% `# @      CATBaseUnknown *sProduct = (*pObject)[i];
/ }0 H3 Z* l  A2 D7 A( e0 D    }
- ?1 d3 o/ m: ~: x* J# v7 U5 a8 t5 ]+ ?
    CATISpecObject *spObject;7 |2 j# A# I3 B( o/ D
    sProduct->QueryInterface(IID_CATISpecObject, (void**)&spObject);
4 m( U5 k0 n9 J$ `" T
3 s7 t0 g1 x$ b$ N( v    CATUnicodeString displayName = spObject->GetName();
+ f! D! W* n& \) ?
% u, @. @' S+ u8 X# e" p    CATApplicationFrame *pApplication = CATApplicationFrame::GetFrame();
# Y, D4 e* z7 c9 A0 \/ H: y- F" l' J, B- D* Q2 D0 ]7 H( q/ X
    if (NULL != pApplication) {0 E! ?! ?& i4 m/ ]9 n- f- c! l* E

7 s, {7 W6 i+ q- K  Y$ _: {. j      CATDlgWindow * pMainWindow = pApplication->GetMainWindow();
' ]& t+ R) [; B* n, _
2 g7 N8 N( o3 x' v% O      CATDlgNotify *pNotifyDlg = new CATDlgNotify
. K) W- G" T: S5 N8 i        (pMainWindow, "提示", CATDlgNfyOK);" o# f" Y+ e* b4 [3 W

( P; f8 P7 n0 z) C      if (NULL != pNotifyDlg) {8 S3 f. N. {7 M* C/ |
        pNotifyDlg->DisplayBlocked/ r/ U6 U! u. d% e$ C/ S' d, r
          (displayName,
9 W, [" X4 V8 N! E          "选择的类型为:");
0 Y7 P- l& l0 }& N! w
- p/ j. f6 i! s        pNotifyDlg->RequestDelayedDestruction(); % r, C% P# ^+ ?5 ^+ J
      }
0 d4 s1 t9 N* k' j8 B. }    }* s1 _/ M1 y, \# H  D: A

5 J3 u  |& q8 l$ w+ m5 N2 D; r  }1 i7 f7 K, O* k0 b* e
% v2 o# W9 q. g, t, U
  return TRUE;
6 @) X, b! P' r- s( W5 i}% V6 Q3 i9 T3 E/ |4 W3 O* ?( U

/ Y% {7 C' w8 i+ w. j
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了