PLM之家PLMHome-工业软件践行者

Catia二次开发源码分享: 获取装配所有组件列表

[复制链接]

2018-1-10 10:12:25 2560 0

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

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

x
" m2 l; F1 G0 S! W1 l  o9 ~8 @
Catia二次开发源码分享: 获取装配所有组件列表
) c: q4 w  b: ~5 N3 V  _; z. o( ~' N

% ^7 I6 `( Z$ X) `[mw_shl_code=c,true]/* ----------------------------*/
* C  c2 t, o9 B        /* 2. Retrieves Root Product   */
6 C  w( {( r& d& l$ R8 \9 W9 m        /* ----------------------------*/
% z, s6 Q$ d' y        4 [* v, f' V8 K6 K* r
        // Begin navigation throUGh the document => start with the RootProduct.
5 K. `5 i! t2 s1 Z) |! M5 s        CATIDocRoots* piDocRootsOnDoc = NULL;+ W% @* ]# @/ s: T3 t5 K
        rc = pDoc->QueryInterface(IID_CATIDocRoots,
& ~8 Y" @- ^2 ~( ]/ o* Q; H                                      (void**) &piDocRootsOnDoc);# `' ^4 X& S0 u9 I& i( L7 q% D
        if ( FAILED(rc) ) return 3;
7 l0 s% d' u: e) J; M& w7 K       
5 c+ S  v; G& c) Q        // get the root product which is the first element of root elements
0 L# U& W. C6 f: t1 |, {+ {        CATListValCATBaseUnknown_var* pRootProducts =
4 h5 ]+ G; c* K2 s                piDocRootsOnDoc->GiveDocRoots();
8 e8 n! ]* Y% v5 m        CATIProduct_var spRootProduct = NULL_var;
) @' _" V2 A0 ]        7 K, F1 a- i; R1 l7 c0 H% ]& [
        if (pRootProducts && pRootProducts->Size())
9 t% J4 A, ]; {# }        {  
$ R9 P! j1 v5 P  f  \" G4 h                spRootProduct = (*pRootProducts)[1];' ?' m, W+ d. G% f& a: ~5 h
                delete pRootProducts;- n! Y! u; H) x
                pRootProducts = NULL;) D" N0 ^3 e; G' H- Y
        }
: r" V1 g' t& B7 n/** @anchor err_1 piDocRootsOnDoc not set to NULL after release */
2 A, O1 B1 f' L        piDocRootsOnDoc->Release();' K% p) E, h  q/ U* \; h+ ?1 d
        piDocRootsOnDoc = NULL;( S9 |# q% E  i0 D9 q2 _7 S
        1 P! {) U8 L+ N1 d. }; e
        // Get CATIProduct handle on the root product.9 G. j% L1 M* D9 v! q# c1 Z
        CATIProduct *piProductOnRoot = NULL;
$ @6 A4 @' t2 B: {( s        rc = spRootProduct->QueryInterface(IID_CATIProduct,
' ]1 q; s/ u2 e* L2 D                                               (void**) &piProductOnRoot);
  U8 z' T# s# ?- W6 O4 y& K        if ( FAILED(rc) ) return 3;
  L, |% j! e: K# I0 ~# H5 E& v
        /* ---------------------------------------*/9 T; B! C, {+ `/ J. L( [/ r2 w
        /* 3. Retrieves children under the root   */% x3 k4 t0 S9 E" ?0 N) T% s0 _
        /* ---------------------------------------*/& L3 p) r$ ?2 S. h0 P
       
. j; I1 @; b" z        int nbOfDirecTChidren = piProductOnRoot -> GetChildrenCount() ;" e( h' ~6 x$ H* x8 o: W
        cout << " Number of direct children under the root = " << nbOfDirectChidren << endl << flush;- |3 a+ F% }( T: \- V9 {: G' V' a
        9 v6 _& @% n) Q4 b5 X1 |
        // then on a root product, get all the children agregated to it.
  l; R% f" J4 N5 [% Y4 c& G- T9 R        CATListValCATBaseUnknown_var*   ListChildren =
' I( @! B7 n& I, ~4 {% i, |                piProductOnRoot->GetAllChildren();
8 ?$ D5 s$ l% z/** @anchor err_2 piProductOnRoot not set to NULL after release */ , N7 `. P! i" E6 d) |8 F
        piProductOnRoot -> Release();  K, ^; N% O! |: E& Q
        piProductOnRoot = NULL;
2 D- I2 d1 |9 q( i        if(NULL != ListChildren)9 j' r2 D, _7 [% T$ K( Q- Q4 a  `
        {, G1 ~, p! Y: S% @6 r8 @
                ; B3 }1 e% x9 i/ A  a0 U! b
                int numberOfChildren = ListChildren->Size();- i0 D4 y/ P7 o, _! z
                cout << " Number of all children under the root = " << numberOfChildren << endl << flush;
! P4 Q+ p1 t& b6 M$ H. n' g2 q
$ C! J9 p, R! G. s                /* -----------------------------------------------------------*/" l5 U8 V. J- {9 ^0 I- Q# ]1 t# V
                /*  4. For each child, get its partNumber, and InstanceName   */
& I3 j1 Y" u5 K" R2 j                /* -----------------------------------------------------------*/6 ]" d0 [& K- P/ E1 t4 W
                CATIProduct_var spChild = NULL_var;8 F  }' {) w6 D8 q2 k% z+ @! c
                for (int i=1;i<=numberOfChildren;i++)
2 B' w% w7 {0 F                {
* ^, s+ ~* C. [8 R$ T4 f' ~2 j# _* G                        spChild = (*ListChildren);  }) p3 [" b6 d. `0 n
/** @anchor err_3 spChild not tested before use ( if !! ) */ 9 d0 Q' I$ H& X& I  w& ]( e$ D& v
                        if ( NULL_var == spChild ) return 4;% A% n+ |1 u. o( L$ A
                        CATUnicodeString partNumber = spChild -> GetPartNumber();
" C! h: P7 i. s* E6 l                        CATUnicodeString instanceName (" ");1 G% Q/ K3 w& t/ \  T
                        rc = spChild -> GetPrdInstanceName ( instanceName ) ;* z6 ]) V) B/ ]7 N  S/ |; c
                        if  ( FAILED(rc) ) return 4;
0 X0 s! ]$ o, r9 {9 \9 v: z                        5 P- ^7 E, z- E' B7 C) K) W
                        cout << " child number : " << i << endl << flush;3 \/ \$ Z( o5 z9 l4 l& M
                        cout << " has as part number : " << partNumber.CastToCharPtr()  << endl << flush;. R+ K; T2 H2 l5 u8 I* w" p
                        cout << " and as instanceName : " << instanceName.CastToCharPtr() << endl << endl << flush;- J( {; Y( L5 A3 q, _/ L- u( q" _
                }
2 U( }7 x2 \/ F- E8 @                delete ListChildren;
. t( C- f# h- E* h: Z4 F9 w                ListChildren=NULL;
4 C6 Y/ D' p  J- E) p" d6 U. k        }        & r; J; P; Y, d
        /* -------------------------------------------- */; o; v; o) \$ R% g
        /*   Ends the session                        */1 S* @9 r& Z1 w7 C: X  B. k3 c
        /* -------------------------------------------- */[/mw_shl_code]7 o3 Y2 Z* h3 D3 S, P4 d
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了