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

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

admin 楼主

2017-4-17 21:57:51

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

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

x
# v9 R6 h# T; ~. M! ]7 m9 v
Catia二次开发源码分享:选择对象的方式
& m5 B4 y) C7 N3 R) }0 K  Z/ P+ F. i2 r7 g
. z9 O* b# |0 B* h- Y$ L( A
#include "CAARCSelectObject.h"
* a1 \# C  g) K% C% c3 J' C$ a# b#include "CATIndicationAgent.h", X" e% z8 E/ O: r7 y/ x+ @9 e
#include "CATMathPlane.h"
, L. r! d* V0 k2 E( e' x1 I3 M* {5 O# y$ |! K5 _0 @( G7 M
#include "CATCreateExternalObject.h"
$ L( {) F0 S6 Z. f! i$ L+ Q# H8 Z1 _5 G" @" i: N' B
#include "CATIGSMPlane.h"
1 x! r" @3 V* `& G5 O7 \3 w+ L6 s% V0 P" A( d7 n
#include "CATIGSMPoint.h"
3 `3 x+ k% z# W2 K% Y8 i- s. F% I4 S! `* ~0 |  b9 h
#include "CATPathElementAgent.h"
2 |8 e: h1 b* ?' g$ Q# `8 v0 n) x4 J& ^& F5 g5 P) a
#include "CATPathElement.h"
' Y3 f- h2 c9 i6 J4 L+ F* \  ~3 x2 t2 S, ~
#include "CATISpecObject.h"
3 O6 Q  ?4 ~9 e7 L- X6 g% E, R/ `5 A8 C' D
#include "CATApplicationFrame.h"4 }6 o. A4 {3 E4 B

$ \. i2 q- `2 v( ^/ i#include "CATDlgWindow.h"! ~. R, ~  w7 k" j% f
% m6 u  Y4 r7 C1 a! J  x$ b. \
#include "CATDlgNotify.h"; I9 M9 X0 J- W0 ^" E3 x

& u: I' ]: c, `CATCreateClass( CAARCSelectObject);
) W' |% Z* P; g" K% V. F
: D& Q0 J7 V# P* B
5 {: e( [6 y- ~7 P- y# N% o//-------------------------------------------------------------------------
" q: s7 o+ H' ~1 P' v8 k// Constructor
8 U! k" C" b9 v( B! w4 l//-------------------------------------------------------------------------: t7 y' _+ h9 [" G" j% y% ]* C9 Y
CAARCSelectObject::CAARCSelectObject() :
9 k) w8 O5 t0 U7 K  r% O; ~  CATStateCommand ("CAARCSelectObject", CATDlgEngOneShot, CATCommandModeExclusive) . T$ z, f7 T) V" O) w/ _- ~
//  Valid states are CATDlgEngOneShot and CATDlgEngRepeat
$ m# p3 o2 Y, Q& ?9 `! G{
% j* Q- W) h, x  Q' J* W! N7 ?}4 m2 a: v* t' o6 w

( ]4 I/ K# b  w9 J+ T//-------------------------------------------------------------------------
. y0 I: A* d7 v8 U# Y0 {) y/ j// Destructor# Q& @9 ]+ G, J* m  E( H
//-------------------------------------------------------------------------
$ u/ Y4 b0 G0 }" v+ |$ s6 W2 JCAARCSelectObject::~CAARCSelectObject()
! J" S; G7 j$ a4 O$ B: b0 Q{
+ G* F1 W. z/ b' ]0 Y+ o$ ^& _1 z0 P8 G3 E. ?! s/ w
}- d" j# N" V' R0 f* c1 W3 t

" g) J& S6 n4 d! Z! M7 Z( K1 N- Y2 e& F7 `+ A7 F
//-------------------------------------------------------------------------8 e  G5 i( g* f0 x% v7 S
// BuildGraph()  J4 x6 B" A( m
//-------------------------------------------------------------------------3 p9 i7 A) l+ Y# T3 P/ P
void CAARCSelectObject::BuildGraph()+ x$ D  C, _5 A4 Q
{
9 a+ F8 v# F, q  _daPathEltObject = new CATPathElementAgent("SpecObject");
; l' Q5 e2 g( M6 u3 Y  _daPathEltObject->AddElementType(IID_CATIGSMPlane);
: B% k( w" ~5 M! F  _daPathEltObject->SetBehavior( CATDlgEngWithPSOHSO | CATDlgEngWithPrevaluation | CATDlgEngWithUndo);8 i+ U, x  ~6 r6 E4 e: R" x5 I3 ]3 |

7 a. y/ ~9 q5 b& Z+ {5 H; }3 ~  AddCSOClient(_daPathEltObject);
3 I$ J" U$ m6 s2 B3 \# @1 d- O0 v4 R1 s! g: w( x
  CATDialogState *stGetObject = GetInitialState("选择任意对象");
# i  R/ \8 p( t, R& Q- g6 z  stGetObject->AddDialogAgent(_daPathEltObject);
1 M, C7 g. U- M3 `' P4 |1 V9 L8 A& K, _& l
  CATDialogTransition *pFirstTransition = AddTransition. `/ g( I7 f% h8 f# c
    (# n9 R- g3 A6 f0 v
    stGetObject," L5 U$ L, ?% m  ~4 F1 k+ K' H( u
    NULL,
4 r# V& O$ b7 o: W' `4 ~8 w    IsOutputSetCondition(_daPathEltObject),                   . S3 q  z; E- m2 s
    Action((ActionMethod) & CAARCSelectObject::ActionOne)
- J( }5 _/ q# ~! A4 M3 @  K3 Y    );7 s& L$ w( [. Z. @6 O8 R
- m/ i" T+ q9 j2 Q( n, w+ J
}0 ]8 Q- o; ]5 V/ S' u- @

- w# D: ?; \" s% ?& i' x  I2 X6 N2 ?0 }, i( O- z
//-------------------------------------------------------------------------4 |' s: [& U; I, |
// ActionOne ()
) I- F: ^- h3 q1 k- e; |//-------------------------------------------------------------------------0 a. B+ A6 d: A8 ?/ [# t
CATBoolean CAARCSelectObject::ActionOne( void *data )
( `) W: y% r/ M, X( _5 f{0 X. o+ X! Z$ _3 r/ w" U
  CATPathElement* pObject = _daPathEltObject->GetValue();
# `& v- c/ c& n( e2 v1 L3 U& @9 j7 k" y
  //如果选择对象不为空的处理0 r0 V8 p/ u5 c) M4 h
  if (pObject && pObject->GetSize())
8 ~/ ^% r9 b+ u  {
  k  {( W3 Y) F+ ?  ~# O! A$ g    int objectSize = pObject->GetSize() - 1;
  }1 N" f( n5 _6 a+ N8 ~: E: @) j! d+ `    CATBaseUnknown *sProduct = (*pObject)[objectSize];' k: ]7 u% w4 e# d
    for (int i = 0; i<objectSize;i++)& F1 j0 M" ?( w
    {
" `$ P4 Q* k$ \1 F      CATBaseUnknown *sProduct = (*pObject)[i];
: d! x, o6 J) W5 k5 s. i3 D    }) j- ^( \, ]- t* c0 z. |

$ W  c# b: }( W1 c0 c; M! u, l    CATISpecObject *spObject;) K2 M7 c* Q; |8 r
    sProduct->QueryInterface(IID_CATISpecObject, (void**)&spObject);
2 [1 }+ B0 c6 A  F7 {& b9 J! K9 d/ t0 u3 e; L
    CATUnicodeString displayName = spObject->GetName();
5 F' Y& S: N% M6 P+ G
% N; h' j3 }5 ]5 K" d- I. U4 W    CATApplicationFrame *pApplication = CATApplicationFrame::GetFrame();$ a& U  B$ G9 n+ ^7 T& G

0 g! D+ o$ X# f" _! u" A) l    if (NULL != pApplication) {
# S' x7 l# s8 S5 g4 |' ~9 R! i2 G, _& J) F4 J( [% B0 c
      CATDlgWindow * pMainWindow = pApplication->GetMainWindow();
7 ^$ c* I: y+ `) D& p& V* J) p- r  o9 @+ V; U; \8 S
      CATDlgNotify *pNotifyDlg = new CATDlgNotify
1 F, `( N- z7 F' \5 l  M        (pMainWindow, "提示", CATDlgNfyOK);
. T; p; N/ o. y, {) T
2 R, F2 V" `6 M. o; Z  j      if (NULL != pNotifyDlg) {% E9 Y& e: x, X/ N6 m( [2 L3 d
        pNotifyDlg->DisplayBlocked- c/ z. A2 X9 [) j8 ~3 X4 X* r' |5 l
          (displayName,
' y8 d- u2 X( y/ [7 O9 a/ c          "选择的类型为:");
, m! Y* `9 o% Z* c: h2 ?0 t3 z6 h# A3 {* ~+ X6 s
        pNotifyDlg->RequestDelayedDestruction();
4 P7 i5 T) u( a7 U* I7 f      }
  r( O* N6 J4 P    }1 P$ W0 B& F" @5 g3 N7 ]
% n  s  w6 `' o" j3 O
  }
" }, |! m# ^) p
* c6 z1 b9 L5 A  return TRUE;+ O  Y* o) v/ X# e. m  \
}6 k& D7 w; Q& i" T
+ @" u' f4 i& i2 A9 E
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了