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

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

[复制链接]

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

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

admin 楼主

2018-1-10 10:12:25

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

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

x
0 E+ b6 C5 c! X2 I
Catia二次开发源码分享: 获取装配所有组件列表
% ?3 ~1 K0 i# C
1 M0 Q% i+ z. v% {9 s; N- D' O5 y+ X" P, C) C! U+ K
[mw_shl_code=c,true]/* ----------------------------*/2 p( G" k8 b. I9 R
        /* 2. Retrieves Root Product   */# r, C, `' ^  h) ?/ O% w
        /* ----------------------------*/
. d% `4 X8 H1 P2 a       
' N9 M, T, l! r/ W; O        // Begin navigation throUGh the document => start with the RootProduct.
0 ]) |- Q: J5 k2 R. ]& {, h        CATIDocRoots* piDocRootsOnDoc = NULL;
7 ?4 O, E7 {3 ?% }6 f6 F        rc = pDoc->QueryInterface(IID_CATIDocRoots,; E3 d0 \. |9 z# U$ c
                                      (void**) &piDocRootsOnDoc);& U  a$ u: V! i5 H" r: z6 t" @* X
        if ( FAILED(rc) ) return 3;
2 U  \- K9 e6 b6 O$ [& M/ y. p        4 V: f6 E. r( j5 B4 k+ `" b0 B
        // get the root product which is the first element of root elements7 t8 u" p  I# H7 g$ _8 o- V
        CATListValCATBaseUnknown_var* pRootProducts = ; `- j5 Z) N7 e/ V$ j
                piDocRootsOnDoc->GiveDocRoots();. ^. s2 B6 {' }8 `2 Y! c! g
        CATIProduct_var spRootProduct = NULL_var;% c. Q, `0 ?4 }0 Y- V) L3 F& p: X' s
       
3 }% V, K- `1 W& B0 M& I/ v! P; A        if (pRootProducts && pRootProducts->Size())
. T+ |; C( U: O) W, W  q        {  
' s6 Y. _7 z' o3 O2 s$ `& i                spRootProduct = (*pRootProducts)[1];
8 t5 |, M) z% X; V+ a" V6 Z                delete pRootProducts;
2 n0 }& X* r* S2 J                pRootProducts = NULL;1 A' A6 m( K9 R, s8 \
        }0 k. e" ^( O4 N# x
/** @anchor err_1 piDocRootsOnDoc not set to NULL after release */
) o+ s  i0 |( P) e; t9 C9 [2 U        piDocRootsOnDoc->Release();& x+ N, ~9 d( |9 i
        piDocRootsOnDoc = NULL;
' t6 j( J3 a+ _       
( e, P) M' \% \" w        // Get CATIProduct handle on the root product.. m1 ~/ L. w9 Q$ \* N5 `
        CATIProduct *piProductOnRoot = NULL;
% O) o+ ~0 g! O9 e9 k        rc = spRootProduct->QueryInterface(IID_CATIProduct,# V0 z; `0 @% K' Q' @4 N
                                               (void**) &piProductOnRoot);& F$ S  R7 U5 E( a+ E" ]" z! W
        if ( FAILED(rc) ) return 3;, U% c. j+ z5 ?7 K, j* W- s; y" J, C
/ L# J) x1 h7 g7 K0 h8 i4 e
        /* ---------------------------------------*/
  d+ ]; E( m6 |! {        /* 3. Retrieves children under the root   */* l) }6 I8 f6 q6 {
        /* ---------------------------------------*/
3 E. ~- s7 K7 H  @, j" A        , b; `' c- y' T
        int nbOfDirecTChidren = piProductOnRoot -> GetChildrenCount() ;. S- @1 v8 F6 x% ?, g. R
        cout << " Number of direct children under the root = " << nbOfDirectChidren << endl << flush;% \  c6 G) m- y# D9 Z7 H+ F& W
        : l# z4 T& J) |- H
        // then on a root product, get all the children agregated to it.! \" k7 `5 m* [2 `% G, G8 @
        CATListValCATBaseUnknown_var*   ListChildren =
8 i8 J! G5 |# Y5 n- |                piProductOnRoot->GetAllChildren();
+ `: n+ G) N$ w1 M; ]* y7 B7 F/** @anchor err_2 piProductOnRoot not set to NULL after release */ / Y% t2 o2 e( A# H/ h
        piProductOnRoot -> Release();, ]" c7 M0 |( U, f! B
        piProductOnRoot = NULL;
7 f7 U# ^. }* U' |% A        if(NULL != ListChildren)/ A; H/ z$ G$ Y3 @( I
        {
- a# A! ~0 S' u) u' `+ H2 d" D               
' c0 T& {2 N3 x2 I# }* v                int numberOfChildren = ListChildren->Size();5 M+ m+ O6 W) ]7 q' W
                cout << " Number of all children under the root = " << numberOfChildren << endl << flush;
9 J8 b& l6 h( v$ V/ A' D; l. E2 @3 @8 v5 c7 r% P6 E2 A$ R
                /* -----------------------------------------------------------*/
  `9 h" N7 M" Z1 o7 b                /*  4. For each child, get its partNumber, and InstanceName   *// s% X. n& i3 Q. x  @1 g9 b. w
                /* -----------------------------------------------------------*/$ ]9 N  I& I1 V
                CATIProduct_var spChild = NULL_var;% w1 T, x* |  `# M( a4 q% O
                for (int i=1;i<=numberOfChildren;i++)
  T! C' ^: A! l4 l7 Y                {9 r, [8 u4 {4 O5 o( B
                        spChild = (*ListChildren);6 [5 ~& M/ N+ Z* R3 G
/** @anchor err_3 spChild not tested before use ( if !! ) */ ; t0 Y: Y: i' ^$ a" O
                        if ( NULL_var == spChild ) return 4;0 q' c, y1 D: K8 Z9 M9 I# L
                        CATUnicodeString partNumber = spChild -> GetPartNumber();
. T& z+ Q- S7 T- O! W) I3 B! ?                        CATUnicodeString instanceName (" ");
% v* a; O- E; {8 w. [  O                        rc = spChild -> GetPrdInstanceName ( instanceName ) ;& o) X) u; {4 [6 s# ?3 U
                        if  ( FAILED(rc) ) return 4;9 T) u4 ^9 k% I3 H; J
                        0 E- m1 z) o( A- F6 q, X; T; U
                        cout << " child number : " << i << endl << flush;
) `( W% n7 ~/ H& Q0 X+ x( L1 G2 }$ b                        cout << " has as part number : " << partNumber.CastToCharPtr()  << endl << flush;$ D6 Z( G' ^1 y1 D8 i: k) Q" Q
                        cout << " and as instanceName : " << instanceName.CastToCharPtr() << endl << endl << flush;
2 `* }( s) |" e- |0 M4 ?/ b9 V. c                }5 Y  N. m$ L7 l* o
                delete ListChildren;
) i2 x: Q3 b* b  w' S                ListChildren=NULL;
& ]/ A# b3 [1 ~/ Z; p3 [; L        }       
$ k- u' c% g1 y8 i1 G: m5 `        /* -------------------------------------------- */1 n' S+ I+ N. B# a2 O' |8 K3 i
        /*   Ends the session                        */8 c' B# l; {' w3 o( H$ m2 A
        /* -------------------------------------------- */[/mw_shl_code]& O6 b5 q1 j$ w$ j
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了