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

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

[复制链接]

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

admin 发表于 2018-1-10 10:12:25 |阅读模式

admin 楼主

2018-1-10 10:12:25

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

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

x

+ C$ b0 p3 R" M. w% u: _+ JCatia二次开发源码分享: 获取装配所有组件列表1 ]6 ^) O$ d; ]( T5 y0 J

: h' T* \* y, \3 Y9 \, T1 w
) L$ N, x- v' f, N: A8 j! S$ Y# x) V[mw_shl_code=c,true]/* ----------------------------*/
2 P5 O5 _! L5 \. V: r7 S0 s        /* 2. Retrieves Root Product   */
2 R* {/ ^4 l/ q: {4 s        /* ----------------------------*/8 `/ I" E0 u( M1 K' {: [& Q, e
       
' o( ]# u2 ]) z. G- h0 b        // Begin navigation throUGh the document => start with the RootProduct.
) Y1 ^5 q1 z  b- _% ~0 M" i: |        CATIDocRoots* piDocRootsOnDoc = NULL;
. X$ Q0 V2 l; A$ o7 |# x! H; t  e        rc = pDoc->QueryInterface(IID_CATIDocRoots,# h8 C; {: l) _7 w; A- n
                                      (void**) &piDocRootsOnDoc);
- r6 C( H: N2 {( G, \        if ( FAILED(rc) ) return 3;
' m# \4 }7 r& l" W9 e9 V$ L& ^       
- M0 U5 a3 p6 G        // get the root product which is the first element of root elements. a! o* O2 j' |* E3 y# h6 m2 W
        CATListValCATBaseUnknown_var* pRootProducts =
! R+ {3 _$ G: p                piDocRootsOnDoc->GiveDocRoots();; H5 {  M1 J! n+ c! Z2 G+ Y
        CATIProduct_var spRootProduct = NULL_var;+ K2 d1 j# q$ Q6 X3 d! g) R# \
       
9 C( J. X' n  b6 v# a        if (pRootProducts && pRootProducts->Size())
( n" Q1 h1 a8 {6 V- f& v4 D, a        {  
4 ]. p+ p! F: R: {8 _: Z                spRootProduct = (*pRootProducts)[1];; L, i+ N- i0 W3 N! V
                delete pRootProducts;
6 H' O! a3 [5 f! K+ P) r                pRootProducts = NULL;
: v9 R+ H* n0 A+ s9 C4 W        }
! t8 r# T2 P) i/ L: y! n; v/** @anchor err_1 piDocRootsOnDoc not set to NULL after release */ ' F" C! C2 ~3 O0 O$ Z: ?6 s
        piDocRootsOnDoc->Release();
# h4 o5 W9 @7 C# ~5 o4 `        piDocRootsOnDoc = NULL;: x( I5 R/ b* s6 S& W
       
7 t* R& {* F+ u% v7 v$ n        // Get CATIProduct handle on the root product.3 z) C2 @9 n. [' I8 x% r4 ]
        CATIProduct *piProductOnRoot = NULL;
4 ]4 O5 j- Y" p. d1 p% |/ R, ]/ V" L        rc = spRootProduct->QueryInterface(IID_CATIProduct,9 n: ~) h# ?3 X0 l
                                               (void**) &piProductOnRoot);
7 I! d( z6 _+ M  Q' Q        if ( FAILED(rc) ) return 3;
2 B0 f1 g" e- E9 K. A6 Y  N- \
        /* ---------------------------------------*/
( ~" K7 k- Q) U4 X; t+ S/ {        /* 3. Retrieves children under the root   */
+ C: q$ L3 Z5 j, m        /* ---------------------------------------*/
+ U& P. U# D1 B% `3 B! e       
- l5 H, O0 ]6 N/ ~5 r        int nbOfDirecTChidren = piProductOnRoot -> GetChildrenCount() ;( J* C( J' o0 K% s, |: b. j! H
        cout << " Number of direct children under the root = " << nbOfDirectChidren << endl << flush;
* q+ o, q0 X3 ]0 N+ N; [) b; _       
+ f4 {1 n3 b. X9 I' P* Y2 y        // then on a root product, get all the children agregated to it.* I* @: K# `$ C$ ~$ _* N
        CATListValCATBaseUnknown_var*   ListChildren =
% t( P3 r; B8 a; X% y                piProductOnRoot->GetAllChildren();
' q/ {8 c: G+ Z" i5 D) V: @/** @anchor err_2 piProductOnRoot not set to NULL after release */ + C. i% Q2 c5 a
        piProductOnRoot -> Release();
( H! s$ K) q) F" u: O! C        piProductOnRoot = NULL;
. K2 E7 u3 b4 e8 w  j+ R        if(NULL != ListChildren)) p* z/ J! R" V& N  K. M- Q& ?' I
        {/ \, g# i4 x1 o" z* ^7 `
                , d- L% U; `, m( Z& ], L
                int numberOfChildren = ListChildren->Size();
3 Y* f& ]3 k+ F/ V( l- M4 b$ T                cout << " Number of all children under the root = " << numberOfChildren << endl << flush;
* h; m# U# ^4 v0 {: k6 x& r( Y% a/ ?
                /* -----------------------------------------------------------*/
/ p0 E% l% B5 n& D! T4 X                /*  4. For each child, get its partNumber, and InstanceName   */* A6 |. u; e1 q; N; {" o6 g5 j
                /* -----------------------------------------------------------*/
& c* U* y( f) l0 s7 N, Q                CATIProduct_var spChild = NULL_var;
$ H7 O+ B0 H! @) S: ?% C                for (int i=1;i<=numberOfChildren;i++)% Z  x( G3 a# m# ]6 f  U
                {
& m3 t' X0 c- v( E  ]                        spChild = (*ListChildren);5 c5 M* c% ~% R4 x- Q* g
/** @anchor err_3 spChild not tested before use ( if !! ) */
& L' s/ H) W5 l0 r& c, G: N                        if ( NULL_var == spChild ) return 4;
& f+ n. Y( g6 j                        CATUnicodeString partNumber = spChild -> GetPartNumber();! [4 }" }* N8 J9 L& Y
                        CATUnicodeString instanceName (" ");
* H. n; B+ [! ~                        rc = spChild -> GetPrdInstanceName ( instanceName ) ;5 Y! n8 ~$ \+ a" E
                        if  ( FAILED(rc) ) return 4;" M" ^# c( Q3 j7 [7 n' w% |. G3 G
                       
- {. B  Q, p5 \7 {                        cout << " child number : " << i << endl << flush;" }8 o! A0 t4 j& D( I
                        cout << " has as part number : " << partNumber.CastToCharPtr()  << endl << flush;; _% i2 }+ I& v' k
                        cout << " and as instanceName : " << instanceName.CastToCharPtr() << endl << endl << flush;- X6 J* g  C2 t+ {' S7 \% ^  d
                }* r1 r2 J5 P1 j/ @5 g3 T- D* r, Y
                delete ListChildren;
0 H  O. x+ |- k                ListChildren=NULL;# b6 f* {2 s/ }9 B
        }        / t7 W" `8 T% t5 v
        /* -------------------------------------------- */
; T4 @( h6 [1 D+ N$ A* r  e        /*   Ends the session                        */  ^3 C8 n0 r) e! p" r+ Q: I
        /* -------------------------------------------- */[/mw_shl_code]
' M! a% _4 Y- 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二次开发专题模块培训报名开始啦

    我知道了