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

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

[复制链接]

2014-2-13 14:47:51 3566 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);% H  @. D3 J% O4 o1 x$ l6 n
  2.             tree_control0->InsertColumn(2,"Status",100);, W$ V, r" d. Y- c# j# q

  3. , k; e: M" s/ \( `
  4.                 ( n" Z7 J; B, U( e
  5.                 # o$ S& `8 F" P, ^
  6.                 // get asembly name) u, C2 F) n& p

  7. - ?( o8 k, b) X  q, \, w9 G
  8.                 BasePart *displayBasepart = theSession->Parts()->BaseDisplay();
    2 x- b5 I) t$ U5 x3 w+ Z$ M1 c
  9.                 Part *workpart = theSession->Parts()->Work();
    6 I! F" W0 [0 `+ r
  10.                 // get rootcomponent
    . e. B! e, y# {
  11.                 Assemblies::Component *rootcomponent = displayBasepart->ComponentAssembly()->RootComponent();
    * X. A6 |1 m  ^/ c
  12.                 if(rootcomponent)- I, g4 E  i6 f6 F6 n, H. A
  13.                 {, F( k, C( Y7 S+ L; ~4 o$ R
  14.                         Node *parentNode= tree_control0->CreateNode(rootcomponent->DisplayName());( ^+ `1 T- `6 C. [( e# [. A
  15.                         tree_control0->InsertNode(parentNode,NULL,NULL,Tree::NodeInsertOptionAlwaysFirst);- F8 `4 p# z% e: G0 ~
  16.                         parentNode->SetColumnDisplayText(2,loadStatus(rootcomponent));/ R  t' N+ Q( p8 @/ S& |7 d1 Z( v
  17.                         getcompoents(parentNode,rootcomponent);
    ' d  S8 d- W! ]
  18.                   ) D4 Y5 U, j$ E8 j# w1 K1 A
  19.                
    + ~# q  _+ p" Y( k
  20.                 }
    % a$ O, s" x+ i2 J9 i
  21. $ _! M) @# i; ^+ ~1 e
  22.                 else5 _8 Z) {2 X9 a, l2 U- Y2 N
  23.                 {0 g4 T0 V$ a, m2 O  @
  24.                         Node *newNode = tree_control0->CreateNode(workpart->Leaf());9 g# s4 n, P2 {1 E( ^6 P4 G1 _
  25.                         newNode->SetDisplayIcon("piecepart");
    7 \4 Q- j0 j# d2 A- G  X
  26.                         newNode->SetSelectedIcon("piecepart");
    $ @" _6 w+ P: z2 A7 N
  27.                         tree_control0->InsertNode(newNode,NULL,NULL,Tree::NodeInsertOptionAlwaysFirst);
    , ~+ X! \( n9 Z. v! O$ v
  28.                         newNode->SetColumnDisplayText(2,"loaded piecepart");
    1 ]7 _% t( i/ b" Z9 Z; R
  29.                         delete newNode;
    , k$ D* Z6 k$ Q0 `7 p2 v! _& b0 M
  30.                         newNode = NULL;
    7 ]0 [7 c3 Q3 R) r# Z0 i
  31.                 6 W9 m, _/ O, w* u0 Q6 S5 f4 U6 p
  32.                 }! F* Z8 f7 b$ S) l

  33. - O# U, o% J/ W2 {! q0 J
  34.                
    & d  F4 ^, s# ^% O6 _: L
  35.         }2 J& P7 w0 d6 d9 @! I' a
  36.         6 J( u* ^' D1 h& d; @$ r* K, d8 e
  37.        
    8 k# a# v9 G) H: z4 I* r
  38. . u" t* A( f4 c2 _% F

  39. 0 X& G  x3 R" ^" O6 u5 u
  40. Node * PNTDemo::createInsertNode(Node *pNode,NXString name,NXString geticon); q4 Y$ r8 C: o8 ?# t3 g0 v" _
  41. {& i8 K+ o3 C. c  @
  42.         Node *getNode = tree_control0->CreateNode(name);
    " B" S$ V8 i4 c
  43.         getNode->SetDisplayIcon(geticon);4 g' I  [9 e/ ^+ E8 ]. k) V4 I: I
  44.         getNode->SetSelectedIcon(geticon);# B; e8 x# Z$ d
  45.         tree_control0->InsertNode(getNode,pNode,NULL,Tree::NodeInsertOptionLast);
    1 I0 _, e" G- I) y& x. D
  46.         return getNode;
    2 r0 w% S9 j0 ~/ Z6 x' [

  47.   Z/ N6 x/ F9 T
  48. }7 s. o9 S" l; @' h$ `) H
  49. 2 K6 ^6 k2 K; Y$ {- I
  50. NXString PNTDemo::loadStatus(Assemblies::Component *component)
    * B. e) @1 \3 p- d; F
  51. {' m( ^, R6 O0 u7 v# [
  52.          Part *part =dynamic_cast<Part*>(component->Prototype());
    , ]7 F# u$ U* c* g5 V
  53.          if(part==NULL_TAG)
    / E8 J/ P4 g0 I7 h( f+ k, u
  54.          {  u1 M7 i) C/ X) \# [- C" M
  55.            return "Not Loaded";
    $ H, G5 O# O* M
  56.          }7 n+ }/ @" K3 P3 g
  57.          else$ A( W4 N# V2 k4 b- A: M  E
  58.          {
    * f; Q4 w& k: q+ ?2 Z9 K0 I
  59.          if(part->IsFullyLoaded())
    $ M* z: d: P4 c6 n8 p2 M
  60.                  return "Fully Loaded";
    3 w  s9 T9 M' p5 A
  61.          else
    0 J' M$ B( `, B6 E0 Q6 ?! L3 E
  62.                  return "Partially Loaded";' u" `4 q8 |% U5 \7 w; z* O
  63.         7 H; X* i& r9 R, o, Y
  64.          }
    ' k  w- w6 t0 D
  65. }
    7 ^& v' _% g3 z  V6 z# b
  66. void PNTDemo::getcompoents(Node *parentNode,Assemblies::Component *root)
    / S6 G7 B0 A% `  W; N* t8 W/ B
  67. {
    8 i  e6 P2 B1 u
  68.    1 ~% X4 Q7 _' {1 h( d; b/ Y4 n6 c
  69.            vector <Assemblies::Component *> children = root->GetChildren();
    , V8 z: J9 R. w' U$ b6 O
  70.            for(int i = 0 ; i < children.size(); i ++)
    ' t: U0 o# w5 U- {8 U
  71.            {5 w$ {$ u2 w" N, k5 i% f
  72.                    Assemblies::Component *com = children[i];
    - y5 T) P+ h; y% p7 h7 ~+ Q: l% a  H
  73.                    Node *newNode = createInsertNode(parentNode,com->DisplayName(),"assembly");% I- m7 o5 B8 e) ]" P" R
  74.                    newNode->SetColumnDisplayText(2,loadStatus(com));
    % ]4 G8 a- P7 R' c, z2 f5 V
  75.                    getcompoents(newNode,com);& @8 O9 {8 e+ e, K2 T2 G0 Y4 A
  76.                         2 s8 G$ R0 r8 l6 \! Z+ {
  77.            }
    ! T% H5 G5 a& [6 w
  78.    0 r$ P  w9 Y6 Z0 Q3 {' c. N8 J! k

  79. 4 x9 W- ?! }$ b

  80. 8 O4 m, A1 X: Z6 u
  81. }
复制代码
/ V/ q& l* K3 z8 l' o; [* [) g- O* d+ E
模拟装配导航器treelist代码分享--树控件的使用
) C' L. s/ g, y# _
* X: c! g& G0 a
8 s" F7 {/ R  S$ C/ A6 W6 N4 q& n0 m3 ?( M" T0 c; T

7 n2 J% E! f/ y- m! e
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了