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

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

[复制链接]

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

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

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

x
9 L* `/ `. u3 X7 }/ N. m1 n
Catia二次开发源码分享: 获取装配所有组件列表
4 h* [) P3 q0 ~, U( Q9 @. b) a1 L, Z* a0 P8 h: e4 K

5 n: r6 `& F( Y* {) j% V[mw_shl_code=c,true]/* ----------------------------*/
- |3 }6 r8 R4 ^4 G' C8 U/ Y! c1 j3 s        /* 2. Retrieves Root Product   */" F2 e; |5 \& l  V/ z: k
        /* ----------------------------*/
/ A! T/ i1 S8 B/ T  E# ?$ r+ B        3 [9 ]- t4 W/ g- J
        // Begin navigation throUGh the document => start with the RootProduct.
" P, N4 v4 X& c4 `        CATIDocRoots* piDocRootsOnDoc = NULL;
* j. h2 p3 |: D% u; {( L        rc = pDoc->QueryInterface(IID_CATIDocRoots,# `/ ~' [- n+ p( r
                                      (void**) &piDocRootsOnDoc);3 I+ [* ~6 |8 k: U5 g3 P
        if ( FAILED(rc) ) return 3;
) V# j2 U" {& k7 i5 N        9 u, f# S& w' O7 _9 v
        // get the root product which is the first element of root elements
9 Q3 {8 J; b) V  ]) A( U9 @- L6 S        CATListValCATBaseUnknown_var* pRootProducts = 6 {4 ]1 T0 y1 O
                piDocRootsOnDoc->GiveDocRoots();+ u: K' Q; C* n$ e
        CATIProduct_var spRootProduct = NULL_var;
; U! k" X' ]  s  Y( G       
7 T' P+ W& W3 Z0 f1 K% f1 J: N        if (pRootProducts && pRootProducts->Size())' [& M: z1 G3 B( B2 c
        {  
  O% w5 @  a. j1 ^* h7 M7 R                spRootProduct = (*pRootProducts)[1];
" _6 p- t3 i' e: T                delete pRootProducts;
3 Y3 I! o8 j6 O# l0 W2 P                pRootProducts = NULL;
2 P( t* S  \# S) H6 r) Q        }! Y. D) E) ]: |7 Y& h! _; V& M" I/ d; T
/** @anchor err_1 piDocRootsOnDoc not set to NULL after release */
2 h; L! @7 Y& P! h- J, t        piDocRootsOnDoc->Release();0 _* d8 v9 b# c# I. d! b% D, L5 u
        piDocRootsOnDoc = NULL;  G- N% x6 h& j; ]0 F
       
% P# K- g# n1 e; K" B* r5 g        // Get CATIProduct handle on the root product.2 h0 ~& V# d* m+ ?5 |; ]8 E" C* U+ Q
        CATIProduct *piProductOnRoot = NULL;
, U0 T" N& v$ g( A4 g$ R- i  R        rc = spRootProduct->QueryInterface(IID_CATIProduct,
: {& p0 C" u0 L( K+ ~' t                                               (void**) &piProductOnRoot);
( j$ S1 z% D! N        if ( FAILED(rc) ) return 3;
: A7 j4 s. Y4 J0 ?4 `5 d) [" Q! Q# V' _" Y  e" z. I
        /* ---------------------------------------*/
; J8 z1 _9 ~( A' l* I- d8 h1 E+ K        /* 3. Retrieves children under the root   */
# U! J2 X7 C1 k9 n0 y) ~        /* ---------------------------------------*/1 B# M' i8 D! q  e( {( B! w; F
       
2 B% |6 A' j+ o7 M        int nbOfDirecTChidren = piProductOnRoot -> GetChildrenCount() ;$ o7 ^5 J; I" o) Y
        cout << " Number of direct children under the root = " << nbOfDirectChidren << endl << flush;
* X, g" r/ z! V& z       
5 ^% I5 _/ d( N# _* Q        // then on a root product, get all the children agregated to it.
5 G6 W& ?' |$ l9 B, |6 s        CATListValCATBaseUnknown_var*   ListChildren =
5 S& q% M5 T  ^2 G, b2 E7 Z; K5 P                piProductOnRoot->GetAllChildren();7 U2 ]0 o, e- \8 p# V
/** @anchor err_2 piProductOnRoot not set to NULL after release */ 1 o6 D  k0 j6 S$ v5 \. k( M7 _1 _+ d! |
        piProductOnRoot -> Release();
$ v" T. A% Y# f) n4 g7 q& Z* y        piProductOnRoot = NULL;
' V3 r7 ~' Z8 b/ \        if(NULL != ListChildren)
+ \$ _8 Z. H* a* Q2 t/ T& {9 {        {" B- b, t+ Z6 f
                ' Q1 D3 J9 U' V% X. F% k
                int numberOfChildren = ListChildren->Size();. B5 J- @4 Y/ t7 A
                cout << " Number of all children under the root = " << numberOfChildren << endl << flush;
% G  e4 q  l5 E7 `; E+ ~; K8 i- Y1 S' [5 C3 ?" t% O
                /* -----------------------------------------------------------*/
- [4 p! ]+ n; G                /*  4. For each child, get its partNumber, and InstanceName   */
3 u' u4 k& q: y                /* -----------------------------------------------------------*/' I7 }8 L* ~  |% I' e! \# S
                CATIProduct_var spChild = NULL_var;
4 D, y7 q8 ~% `4 O0 ?2 P( X9 k6 c9 m                for (int i=1;i<=numberOfChildren;i++)
4 c5 g- g) @2 w                {. M: |  j. w+ r
                        spChild = (*ListChildren);
. A5 K' b. I. C; t# b/** @anchor err_3 spChild not tested before use ( if !! ) */ , H& D' p4 j$ x  p% v) p
                        if ( NULL_var == spChild ) return 4;
9 K; p% {! ]! ?6 e9 n7 I; t9 F                        CATUnicodeString partNumber = spChild -> GetPartNumber();
" L( E. J/ K+ `# k  H/ i. P                        CATUnicodeString instanceName (" ");
: t2 U3 A/ i4 m0 q                        rc = spChild -> GetPrdInstanceName ( instanceName ) ;
# q+ b9 E+ I8 f  {1 ~( M8 j                        if  ( FAILED(rc) ) return 4;5 Q/ k% g8 a% q$ u5 x
                       
4 Y$ T! j0 `1 T                        cout << " child number : " << i << endl << flush;! {9 g+ H  h+ c7 ]
                        cout << " has as part number : " << partNumber.CastToCharPtr()  << endl << flush;
7 N9 c0 R: ?# v% f9 i                        cout << " and as instanceName : " << instanceName.CastToCharPtr() << endl << endl << flush;
/ O" F* I# j. d, E. j  d" M0 j                }: [; V- v) H- C0 @* T
                delete ListChildren;7 A* h& q' [# ?5 L4 O/ A6 ?' R+ \
                ListChildren=NULL;
# {; H  y8 `. B5 O8 l$ w        }       
1 K/ g2 T& @# Z8 Q# \        /* -------------------------------------------- */
+ T9 r2 O* p2 }        /*   Ends the session                        */
' R! n( c8 G/ [7 s1 f        /* -------------------------------------------- */[/mw_shl_code]
) d, I& u: H: Y
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了