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

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

[复制链接]

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

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

admin 楼主

2018-1-10 10:12:25

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

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

x

% S  i8 b' c+ F# \Catia二次开发源码分享: 获取装配所有组件列表
6 ~$ H& k6 V' K, R
) J1 q4 d" \% c" a( C- j9 L0 e  f+ _  r) f  B4 M
[mw_shl_code=c,true]/* ----------------------------*/, P( r3 V' V4 A" |0 p- `# t1 c
        /* 2. Retrieves Root Product   */
; n& ~* N! G$ ^  H9 c* F/ I        /* ----------------------------*/% ]3 \2 r7 [1 t6 P( D2 p" A& |
       
4 K1 ]) g7 C( y+ m        // Begin navigation throUGh the document => start with the RootProduct.
4 `- U! I" _9 N( t3 U; b        CATIDocRoots* piDocRootsOnDoc = NULL;8 D! |- M* F* T
        rc = pDoc->QueryInterface(IID_CATIDocRoots,
2 q; x: b4 E+ K; b                                      (void**) &piDocRootsOnDoc);
" x2 G% u! y" M) c& W; ^        if ( FAILED(rc) ) return 3;
8 n$ j1 _9 n9 O, ^  n        ( L' p$ A& J. ?: q/ d
        // get the root product which is the first element of root elements
/ Z2 b3 O$ j$ ^3 u6 t        CATListValCATBaseUnknown_var* pRootProducts = ! f0 f7 l# j+ v
                piDocRootsOnDoc->GiveDocRoots();  Y: h; U5 z1 v, E0 K& d; v
        CATIProduct_var spRootProduct = NULL_var;
7 U( h3 i% f# j$ \! x! v       
( F* D3 g$ e  Z6 u  S        if (pRootProducts && pRootProducts->Size())7 k& u9 w" z/ }: c% b( e
        {  
7 }) n6 a- @) d                spRootProduct = (*pRootProducts)[1];
! P/ ]: M) R+ c2 O/ d% D2 E$ h                delete pRootProducts;- T! Y! Q% W2 Z
                pRootProducts = NULL;; z% A/ t9 a& Q- t4 m5 m, f4 W
        }$ B5 L9 g8 ]  @6 J
/** @anchor err_1 piDocRootsOnDoc not set to NULL after release */
- U2 k/ P9 i; E5 E        piDocRootsOnDoc->Release();* A6 P8 |# V  L6 }/ U$ x0 ]( X3 p8 W
        piDocRootsOnDoc = NULL;
# w& S2 z; N, n1 l       
, D. i8 T9 S5 P+ a3 q        // Get CATIProduct handle on the root product.
  o2 x" U- a: m) I+ R! v0 k        CATIProduct *piProductOnRoot = NULL;6 z" y3 N/ O3 j/ G) n5 l1 ?: O
        rc = spRootProduct->QueryInterface(IID_CATIProduct,
- c* }& i3 B/ X! I1 g* P0 o8 N6 T                                               (void**) &piProductOnRoot);6 S/ l; ?0 s" f8 x, N6 j
        if ( FAILED(rc) ) return 3;
; `1 F8 p( p9 J' v4 Y
) Y. O1 ^/ a1 T! o. o! X' V        /* ---------------------------------------*/
, K5 r5 D5 J) V3 I" r# P        /* 3. Retrieves children under the root   */
8 z! m0 O4 Q; L% b        /* ---------------------------------------*/
, m9 \/ y  s. y  _* \  Y! g        / j# z: y; o9 ?% J
        int nbOfDirecTChidren = piProductOnRoot -> GetChildrenCount() ;
$ X! A4 O& {! A, n        cout << " Number of direct children under the root = " << nbOfDirectChidren << endl << flush;1 d, B( R( h9 t0 R4 R/ b( w6 z2 v
       
4 c: h4 b6 F$ E        // then on a root product, get all the children agregated to it.
4 s( l* `2 G) E1 ~        CATListValCATBaseUnknown_var*   ListChildren =0 F) p/ W$ u- n$ v0 T3 y
                piProductOnRoot->GetAllChildren();
4 A' N! t  q6 b8 e/** @anchor err_2 piProductOnRoot not set to NULL after release */
9 A$ s: V0 j* K: ~        piProductOnRoot -> Release();7 m# L/ ]/ o, ~
        piProductOnRoot = NULL;
/ y1 K- o; m/ Q, ~' }0 k; f6 w2 Q  a        if(NULL != ListChildren)2 c, H7 r4 ^8 P; V6 W9 T9 }7 D2 ]$ n
        {
' g, n; R% L1 y( D. R               
$ i9 ?+ R6 o- j, d7 D" d                int numberOfChildren = ListChildren->Size();
; q, I( c0 w% e0 U                cout << " Number of all children under the root = " << numberOfChildren << endl << flush;
/ w( s- |8 A) f! }* J; H8 _, Z" b* @9 A8 T3 }  J; I$ U- l  W
                /* -----------------------------------------------------------*/
/ w% {$ O9 ^! z1 j. i                /*  4. For each child, get its partNumber, and InstanceName   */& U- f6 a* \! q! e
                /* -----------------------------------------------------------*/9 m% F) U" c! b$ g
                CATIProduct_var spChild = NULL_var;- P! O) j8 s' V
                for (int i=1;i<=numberOfChildren;i++)4 }  d! l4 O% l! w, M+ K! l2 P
                {
) i1 e+ S; o. d& m8 r7 p                        spChild = (*ListChildren);; p( Z$ q8 T' r! r4 Z: x
/** @anchor err_3 spChild not tested before use ( if !! ) */
: O/ A9 B5 `* F( K1 e8 ~0 F                        if ( NULL_var == spChild ) return 4;
! a( k9 g/ h* V# K. w% P; a1 c/ q                        CATUnicodeString partNumber = spChild -> GetPartNumber();
8 |+ E6 ]; o& K6 h                        CATUnicodeString instanceName (" ");/ e; \5 a9 C3 V' V  D
                        rc = spChild -> GetPrdInstanceName ( instanceName ) ;
# d$ T* s4 _- ^$ k                        if  ( FAILED(rc) ) return 4;) {3 }( \( O4 y8 y- h
                        ( d3 a( u4 Z8 g# z7 H4 B8 m& P7 m% ^
                        cout << " child number : " << i << endl << flush;3 U- t2 E) n2 `' J; G
                        cout << " has as part number : " << partNumber.CastToCharPtr()  << endl << flush;
& n  i5 M; E# a4 [                        cout << " and as instanceName : " << instanceName.CastToCharPtr() << endl << endl << flush;
: z/ ?0 o8 ^* Z6 A: L* u" `                }
; Z0 Z' ^2 {; g) k# w  L% t                delete ListChildren;7 A# `( S2 \0 V  t2 D0 X( |# \
                ListChildren=NULL;
" q" M, @0 C& C7 f6 B        }       
. V7 H6 |: B2 h. C* l/ x9 H. p7 m        /* -------------------------------------------- */
2 ]& q/ V9 n% `. `% s        /*   Ends the session                        */; k" J0 N0 J4 h4 f1 H0 V
        /* -------------------------------------------- */[/mw_shl_code]
: \1 c9 Z) M5 Q
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了