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

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

[复制链接]

2014-2-13 14:47:51 3542 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);
    , n3 H& @( h" F3 U/ q! o
  2.             tree_control0->InsertColumn(2,"Status",100);. I9 M1 Y2 j5 [- ]. t
  3. 7 `  h5 R0 H, l1 h/ y1 q- l6 j
  4.                 ! m, B# g5 ]2 ~2 }1 \
  5.                 ( ]& T/ x: C& W, l
  6.                 // get asembly name1 R1 C. }8 B. s- l
  7. 1 [* ?6 N& e- U: n. n: u- m
  8.                 BasePart *displayBasepart = theSession->Parts()->BaseDisplay();' z# Q9 {" K2 c; b5 ~! T: W7 M
  9.                 Part *workpart = theSession->Parts()->Work();
    - L1 ?8 X! l2 \' {5 b8 ]1 E
  10.                 // get rootcomponent; l. b7 y* k, X' G+ S
  11.                 Assemblies::Component *rootcomponent = displayBasepart->ComponentAssembly()->RootComponent();) X7 w% `+ T6 j; p- a
  12.                 if(rootcomponent)
    - y( z' Y: f4 C% t8 |  g. |
  13.                 {) K% N5 J6 R, B
  14.                         Node *parentNode= tree_control0->CreateNode(rootcomponent->DisplayName());
    1 w6 |; \  n$ N9 ]& m: }3 H
  15.                         tree_control0->InsertNode(parentNode,NULL,NULL,Tree::NodeInsertOptionAlwaysFirst);
    + W6 Y; F' d& h7 p7 C
  16.                         parentNode->SetColumnDisplayText(2,loadStatus(rootcomponent));
    3 @% n  k2 y$ O; n% X" @
  17.                         getcompoents(parentNode,rootcomponent);2 e! }0 z& n1 T& z9 e/ y" I
  18.                   7 U2 H5 M& Z/ [0 ]4 a3 v0 V
  19.                 ) M# g8 q; k* ~! K7 A2 u$ L) J* Z) l
  20.                 }9 q# w0 T4 ~% n) a! ?1 p
  21. & H0 s' |$ E5 z+ C
  22.                 else  E9 m0 J  ]9 {/ L: @% `7 t
  23.                 {
    , `8 X# H5 {" o/ T: o
  24.                         Node *newNode = tree_control0->CreateNode(workpart->Leaf());
    % y7 I! L& I0 m. |2 P) A0 k! j5 c# S
  25.                         newNode->SetDisplayIcon("piecepart");+ |9 b1 l" I, R
  26.                         newNode->SetSelectedIcon("piecepart");
    * D5 `: X7 z6 G' n- ?8 M
  27.                         tree_control0->InsertNode(newNode,NULL,NULL,Tree::NodeInsertOptionAlwaysFirst);
    , l* t3 `% q' \9 g
  28.                         newNode->SetColumnDisplayText(2,"loaded piecepart");% Q% s. L3 b/ Z6 k+ j6 f! _% F
  29.                         delete newNode;
    9 X( F! U+ h7 Q, b
  30.                         newNode = NULL;
    ' @$ }6 T# s: [) ?
  31.                
    0 S7 x$ @. J+ a4 n2 ~$ [% \
  32.                 }
    : |5 I* l* s- `8 E4 S3 y

  33. % p. ^0 w0 l0 a$ l% k
  34.                
    8 f% f/ R0 G* n; R/ k$ R+ Y
  35.         }* U9 @8 n5 D  }5 l  |; W
  36.        
    " p0 p; W; X" _1 }5 |
  37.         # G( s  L. P+ ^+ v
  38. 5 [2 L/ V7 i0 ]: K
  39. 7 n! [2 N, b; Z# |1 {/ _6 B: U
  40. Node * PNTDemo::createInsertNode(Node *pNode,NXString name,NXString geticon)
    " |  q" F1 C; J) l$ h( Q
  41. {
    # f% g/ I# {: x/ @& _2 \
  42.         Node *getNode = tree_control0->CreateNode(name);3 E# @" ]" v) t$ K; p" j
  43.         getNode->SetDisplayIcon(geticon);6 u* m; s! ^  G' }9 {$ Y
  44.         getNode->SetSelectedIcon(geticon);# e8 c) A3 [8 _$ \# J/ i
  45.         tree_control0->InsertNode(getNode,pNode,NULL,Tree::NodeInsertOptionLast);
    3 W" L( L8 o/ I7 u: x) Y
  46.         return getNode;8 j% W: T; f7 Z# Z/ A$ X
  47. ) \) @/ ]8 ]( R/ n. I
  48. }3 }8 L: D0 N% e& O) y

  49. 4 o7 H. B) H, _9 R; M# x/ l! ~
  50. NXString PNTDemo::loadStatus(Assemblies::Component *component)
    5 T! K* u! g$ _5 K& I
  51. {' T- @" f) e6 X! _7 Q5 \
  52.          Part *part =dynamic_cast<Part*>(component->Prototype());
    ( w7 y7 t% g5 ~
  53.          if(part==NULL_TAG)2 i. _# l1 T/ u% U* B5 B& `
  54.          {
    ( M: z! s7 |" D9 l
  55.            return "Not Loaded";( F, o9 p' E+ Z$ j# C/ H' `9 {
  56.          }
    ; D1 i4 ?$ W  \. ]' j3 B( {3 i" k4 V
  57.          else
    4 e" o6 P# f/ r/ q8 y! r) r
  58.          {
    2 Q$ b2 I+ P+ b; S0 S
  59.          if(part->IsFullyLoaded())& g" B6 l2 @9 m3 T8 c" m/ `( V7 p
  60.                  return "Fully Loaded";
    ( v" N( S* c- q) ?
  61.          else+ X! c9 @3 M. g  z% _3 o( {: f
  62.                  return "Partially Loaded";4 I' q' O1 L+ G! r
  63.         8 p$ m- `' b# z" t5 R: q- p+ w! l; W
  64.          }* A6 I, `' \6 X  v
  65. }' i$ D% f0 x4 G
  66. void PNTDemo::getcompoents(Node *parentNode,Assemblies::Component *root)
    / f. _! a! o  Y9 v
  67. {
    - i6 X+ \& W7 m. ^$ k$ G
  68.    
    ) S* @3 Q* v; g/ D3 [4 G* D7 N
  69.            vector <Assemblies::Component *> children = root->GetChildren();* X. h: C+ s4 ^9 d. F
  70.            for(int i = 0 ; i < children.size(); i ++)
    ' L, {! r* G9 n
  71.            {
    : I! ]: A; V% Y7 J# q
  72.                    Assemblies::Component *com = children[i];
    : s, m4 Y, S- [. i& i1 [* {. p
  73.                    Node *newNode = createInsertNode(parentNode,com->DisplayName(),"assembly");
    . Y3 h7 J7 v, V
  74.                    newNode->SetColumnDisplayText(2,loadStatus(com));. @9 b3 m3 [9 r# m, d$ @2 \
  75.                    getcompoents(newNode,com);
    5 h/ u) x& g9 Q6 |$ H2 ^
  76.                        
    # Z2 t! m. |6 d8 U
  77.            }0 `. q3 ~. W& e9 x, K
  78.    ( S9 @0 {: X+ B3 g( q

  79. 9 b3 Z1 q9 Q4 {$ a' |/ Z7 u

  80. % |; z6 s; o& @
  81. }
复制代码
6 I! c" S9 P# v3 `4 ^
模拟装配导航器treelist代码分享--树控件的使用7 ^& M$ F6 M, e2 Z. Q
) r7 h' j. A* ?

4 h* s6 a3 o* Q- b
, U; X$ j' S1 N* f9 [+ R  g6 Q
: z5 o3 i4 R  N1 t$ m
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了