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

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

[复制链接]

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

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

admin 楼主

2018-1-10 10:12:25

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

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

x
) T# Z( r1 Q0 ]- ?
Catia二次开发源码分享: 获取装配所有组件列表
* f* o% I5 U3 A& e! ~# y# e+ [2 Q. y) v5 T& v3 U/ ]

( v! o& d/ ^) P7 k' g& m/ U[mw_shl_code=c,true]/* ----------------------------*/
& A: @8 ?/ K( M        /* 2. Retrieves Root Product   */- Y+ n; }+ ]9 m1 _$ u* B0 v& [
        /* ----------------------------*/
* z6 J: r" N" Q4 Q0 l       
8 Q, U3 j7 X  F5 }1 o6 X* ?        // Begin navigation throUGh the document => start with the RootProduct.
# x  d% @1 q* p: N' `1 u        CATIDocRoots* piDocRootsOnDoc = NULL;$ T) X; n0 |# s( ?, |* P
        rc = pDoc->QueryInterface(IID_CATIDocRoots,# h2 w- Y5 e# ]8 b9 ^: M7 f) S
                                      (void**) &piDocRootsOnDoc);7 |9 K0 ^/ x$ L( D' b  ~& s
        if ( FAILED(rc) ) return 3;
, {/ D8 [9 u4 ~; V0 h% ~       
( Z. E9 K% d' S" c3 Y  F8 D9 y) e. _        // get the root product which is the first element of root elements
6 b5 @6 ]/ W' ^4 Y8 k2 D        CATListValCATBaseUnknown_var* pRootProducts = 6 @9 W1 e* k0 W+ _0 S5 C
                piDocRootsOnDoc->GiveDocRoots();
/ @: J/ W6 X/ ]! a/ F6 }1 H        CATIProduct_var spRootProduct = NULL_var;4 {0 U) T# H8 V: a6 `* @
       
, {  s0 Q/ h+ d  ]# ^7 Q        if (pRootProducts && pRootProducts->Size())
' {6 M; S$ r0 n        {    A1 F/ e5 q0 q) ?& t/ [: d- U
                spRootProduct = (*pRootProducts)[1];$ c" v3 h  U& i* J, ~- y4 H) C1 S
                delete pRootProducts;
1 D. ~5 g* p% U  O. \                pRootProducts = NULL;
+ U, D; E* I! J& e$ X        }
" w- R3 F3 a5 Z$ {* ~/ k/** @anchor err_1 piDocRootsOnDoc not set to NULL after release */
9 n3 X- f) q3 _        piDocRootsOnDoc->Release();
$ z: R/ W  L$ p  y% Q        piDocRootsOnDoc = NULL;$ }" t7 i4 |! s
       
& Q& l9 ^5 r! `: m' Q- }9 n        // Get CATIProduct handle on the root product.
, `# L3 I/ F; O! r: n9 _6 f        CATIProduct *piProductOnRoot = NULL;5 N" t9 [) Q$ F7 k) ^4 F
        rc = spRootProduct->QueryInterface(IID_CATIProduct,
# z3 B' `* w6 _/ G" h& j                                               (void**) &piProductOnRoot);
- q1 w' J, O6 r# D" m. E$ I        if ( FAILED(rc) ) return 3;
" a; ^2 f8 V- l1 \
  }$ x; h& A( c5 G8 v! ?        /* ---------------------------------------*/% m+ v. ^8 P( {( \8 Y  K. D
        /* 3. Retrieves children under the root   */
6 N, Z; K/ q* V, q        /* ---------------------------------------*/
1 U0 N( Q3 A3 O7 D5 e8 s       
. X7 v1 |1 d5 g# d0 V6 S# R2 x        int nbOfDirecTChidren = piProductOnRoot -> GetChildrenCount() ;* D( s* l" l: z5 m' [
        cout << " Number of direct children under the root = " << nbOfDirectChidren << endl << flush;
0 f6 R: Q5 w- ?* D       
% S1 g( `3 e: n- u/ M        // then on a root product, get all the children agregated to it." A% C0 c( l; m3 p# |
        CATListValCATBaseUnknown_var*   ListChildren =
& X" [( W1 z  e* @8 a, @. ]                piProductOnRoot->GetAllChildren();
/ a9 b% z; J- I$ |, ^$ _/** @anchor err_2 piProductOnRoot not set to NULL after release */ ; k7 r/ a: _7 b& Q
        piProductOnRoot -> Release();( ^. ]9 h) E- t) c# w
        piProductOnRoot = NULL;: O2 B) [. a4 O- N* [
        if(NULL != ListChildren)" f8 F6 V8 S8 M- P
        {) U9 @4 l( ~* P5 [. Y# _- p
               
. t% P/ p) U) r' Q3 @- I3 p                int numberOfChildren = ListChildren->Size();
1 [$ X7 T& l  X1 }. T$ `+ r% |                cout << " Number of all children under the root = " << numberOfChildren << endl << flush;" w9 R2 o8 @* V% ~* {: w
" _9 N: q1 P' o4 r, o1 S1 S
                /* -----------------------------------------------------------*/* g. }4 W8 a$ g, l
                /*  4. For each child, get its partNumber, and InstanceName   */
9 E4 T( i) q2 x! s$ l- G  W                /* -----------------------------------------------------------*/
; j, [/ r0 _4 k7 T2 c                CATIProduct_var spChild = NULL_var;
) Y- {' c( q$ y6 D& B( M                for (int i=1;i<=numberOfChildren;i++)) M, }& v1 w) W% Y0 Y% R
                {
) K  W! `$ W/ s* T+ I1 r                        spChild = (*ListChildren);
( _0 t" l# Q5 g3 F/** @anchor err_3 spChild not tested before use ( if !! ) */
" |, V! X' ]$ v& M                        if ( NULL_var == spChild ) return 4;
! a% x9 q5 J- u6 k                        CATUnicodeString partNumber = spChild -> GetPartNumber();  |8 _) c5 x* m$ S5 p
                        CATUnicodeString instanceName (" ");
7 w' W  W4 C  l5 P6 q                        rc = spChild -> GetPrdInstanceName ( instanceName ) ;7 b0 a: L( ?! n, `8 D7 {
                        if  ( FAILED(rc) ) return 4;9 d! A1 n$ L! O/ r  Y5 G  H
                       
+ w3 U$ _4 o! b" w# |  ?1 l                        cout << " child number : " << i << endl << flush;
# b1 v: r: E' d                        cout << " has as part number : " << partNumber.CastToCharPtr()  << endl << flush;
' {" N+ t& J5 m: a                        cout << " and as instanceName : " << instanceName.CastToCharPtr() << endl << endl << flush;! p1 V# C" l3 f1 ~% X* t% B" ?
                }% Q$ }3 m3 K4 }6 e
                delete ListChildren;
- a' E, {5 y/ P! g# l                ListChildren=NULL;
4 v5 `) ?/ ^+ T$ E5 D4 t/ `0 R# E! o        }        5 u7 k- k* U. U8 s) q2 J5 d
        /* -------------------------------------------- */
. D% {& t* @0 E5 u& p) M+ N1 q+ r        /*   Ends the session                        */
9 `# @9 B5 g7 F( u6 t2 u0 Q9 w/ L! U        /* -------------------------------------------- */[/mw_shl_code]
) o, k% m! {0 o& C3 @9 @
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了