PLM之家PLMHome-工业软件与AI结合践行者

[二次开发源码] 模拟装配导航器treelist代码分享--树控件的使用

[复制链接]

2014-2-13 14:47:51 3557 0

admin 发表于 2014-2-13 14:47:51 |阅读模式

admin 楼主

2014-2-13 14:47:51

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

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

x
  1.                 tree_control0->InserTColumn(1,"AssemblyName",180);
    - B- f3 E& P4 A6 |
  2.             tree_control0->InsertColumn(2,"Status",100);
    , w' O8 R3 y9 v0 b/ r
  3.   v* f# y( W& Z& P
  4.                 7 `; Y7 S$ g& l  f& s) u' T& D9 n0 H
  5.                
    0 R3 G5 Z! J- x2 o- J& _
  6.                 // get asembly name
    * T; x/ H- \6 V: ]( T: }2 z
  7. 9 F' r$ J" h6 ^1 B0 ~% C
  8.                 BasePart *displayBasepart = theSession->Parts()->BaseDisplay();6 [& O) o: z! @& s
  9.                 Part *workpart = theSession->Parts()->Work();8 @% \! W0 @4 c% C! j4 I7 {, @
  10.                 // get rootcomponent4 V; M' P# H" \8 H3 w  k) Q
  11.                 Assemblies::Component *rootcomponent = displayBasepart->ComponentAssembly()->RootComponent();
    : T  g& G4 U7 |0 O( K
  12.                 if(rootcomponent)
    3 d! @: i/ b* q3 f0 `$ k+ ^# l5 x, a
  13.                 {/ c' m0 N. H9 `( f  a
  14.                         Node *parentNode= tree_control0->CreateNode(rootcomponent->DisplayName());
    / o6 t; p0 W3 G. ^3 m* f
  15.                         tree_control0->InsertNode(parentNode,NULL,NULL,Tree::NodeInsertOptionAlwaysFirst);
    6 t' {& g1 ^" U: w
  16.                         parentNode->SetColumnDisplayText(2,loadStatus(rootcomponent));
    1 }1 h+ ]. C: B5 ]3 F- a5 e0 i
  17.                         getcompoents(parentNode,rootcomponent);; T& {. h/ [: K, ?6 H
  18.                   8 R: B1 j3 {' a+ T9 N
  19.                 & g# ]6 e( C# \) I! N' m3 Z
  20.                 }
    ' w" b- v6 V6 T+ i( b$ F

  21.   l7 t5 t; U) M
  22.                 else* d7 h$ a' w7 t# x! C8 y
  23.                 {
    6 Q. Y( L( k' \1 S! J7 A" v
  24.                         Node *newNode = tree_control0->CreateNode(workpart->Leaf());
    + @& `- t4 U% s/ o
  25.                         newNode->SetDisplayIcon("piecepart");
    $ W8 m' x$ O- S
  26.                         newNode->SetSelectedIcon("piecepart");! O4 \; @2 N( f& T+ Y6 `* u
  27.                         tree_control0->InsertNode(newNode,NULL,NULL,Tree::NodeInsertOptionAlwaysFirst);2 i/ h% q" J; y- d/ T7 I0 g' }( Q
  28.                         newNode->SetColumnDisplayText(2,"loaded piecepart");
    6 L1 ]; z% U) r% K0 u: m! b' j
  29.                         delete newNode;6 z! \3 v( H( I2 Q! H% J
  30.                         newNode = NULL;. A1 b% ~5 M1 O; o7 n( g
  31.                 0 A; s+ x+ u5 F& r, V- r. M
  32.                 }
      e5 x7 R: J# z& F
  33. + h, z/ x- r5 A# z
  34.                
    + ?6 H% v+ d1 H8 n2 \, T
  35.         }' |, i+ U$ e; C, Q8 r
  36.        
    6 ^2 N& H' i- o0 r
  37.        
    0 b- b# B; b/ |
  38. 6 Z* y! [% C, F
  39.   I  d$ B9 N  a" g
  40. Node * PNTDemo::createInsertNode(Node *pNode,NXString name,NXString geticon)
    : e7 @) q: c/ }  N1 I
  41. {
    8 Q3 y0 C4 O$ f% C8 ^7 G
  42.         Node *getNode = tree_control0->CreateNode(name);* i8 p$ j& w! ^. B3 T
  43.         getNode->SetDisplayIcon(geticon);0 a# ?) g1 k) b; B6 R
  44.         getNode->SetSelectedIcon(geticon);2 i; q1 C1 g- g3 |
  45.         tree_control0->InsertNode(getNode,pNode,NULL,Tree::NodeInsertOptionLast);  v* L6 v) g% E) q3 ?: _" c
  46.         return getNode;2 O9 J: O; Z( O* a; j+ {

  47. 5 m' H- ^) Y# Z, Q7 Y
  48. }0 P" a8 z! w& l: A

  49. " E2 y1 `# H3 a: {' ^7 Q
  50. NXString PNTDemo::loadStatus(Assemblies::Component *component), j5 u3 t8 M, C" M2 C  I
  51. {8 r& S+ w9 R$ `/ z  X
  52.          Part *part =dynamic_cast<Part*>(component->Prototype());
    ' M. Z  Y3 b3 n
  53.          if(part==NULL_TAG)
    ( D% s7 h+ B: r0 [
  54.          {
    5 V4 V8 N9 J0 Q4 d
  55.            return "Not Loaded";  Y% I5 c0 P! u9 ]
  56.          }9 Q' m1 |1 W* H
  57.          else
    * K/ C6 ^- S# S
  58.          {' K" B" c! x0 f! q( Y; n  J  M! U
  59.          if(part->IsFullyLoaded())& Q2 m5 S$ l3 V* Q& @
  60.                  return "Fully Loaded";
    , y: t9 P# `: {+ P1 V
  61.          else
    . V1 d* ~; j& R* p+ M: F& o
  62.                  return "Partially Loaded";
    / A/ S- U9 x. i' h
  63.        
    ) f! G( u2 r4 Q
  64.          }
    8 d4 @7 L- y/ D; v( _& X2 r, B
  65. }0 ?/ ?7 U1 s4 n& K3 q0 O: N6 H
  66. void PNTDemo::getcompoents(Node *parentNode,Assemblies::Component *root)6 j, o% C2 C9 ~( @( u; u# J$ Z
  67. {6 b) U  Y+ ^+ Z! S9 u
  68.    
    7 Z5 |7 R6 L6 Q. Q6 w
  69.            vector <Assemblies::Component *> children = root->GetChildren();
    7 d7 l7 z9 K( S, H# a5 E4 A+ s5 Z
  70.            for(int i = 0 ; i < children.size(); i ++)" {4 M  U  @4 y& D1 A7 a
  71.            {
    , S7 M. t; z+ E4 D
  72.                    Assemblies::Component *com = children[i];
    6 ]. s/ y* A3 G; P) s9 r' H
  73.                    Node *newNode = createInsertNode(parentNode,com->DisplayName(),"assembly");. E1 d- k# \: _6 p1 M4 y
  74.                    newNode->SetColumnDisplayText(2,loadStatus(com));4 u: P2 Y' \/ Q. B
  75.                    getcompoents(newNode,com);+ T( Y; t3 `7 A8 S1 f) n
  76.                         " J. D8 B/ g+ w/ I6 D) b
  77.            }! h( j  _; C; g8 b/ N$ R4 y6 }# u  [
  78.    
    + @( u4 ?2 D5 N$ @( A
  79. 5 |2 A( H( r* K  u
  80. : Q. o/ ]. @: ]8 n6 C1 Y9 K' H
  81. }
复制代码
9 n7 n/ a1 j' b4 ~. @: _& e4 {1 L
模拟装配导航器treelist代码分享--树控件的使用
& u$ ]/ X6 y6 i7 p. R, k9 V* i$ U+ ^* p) ]5 \
" c( _/ v1 |3 ^0 S, S3 D5 D
% i; K2 Y3 m7 P: ?2 ?7 m2 n
% X$ P5 N! V6 W  ]8 K) }5 N8 z6 j
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了