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

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

[复制链接]

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

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

admin 楼主

2018-1-10 10:12:25

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

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

x
8 N9 ~) P' a, Y$ W% f. k
Catia二次开发源码分享: 获取装配所有组件列表
  C" n2 J9 p  `0 L/ e; l
6 F1 B5 Z5 M: O& k) K: O# ?) K, }# Q( m$ R
[mw_shl_code=c,true]/* ----------------------------*/2 h( s" r3 F, g* v- x
        /* 2. Retrieves Root Product   */( h2 C( H( C+ b& B2 y
        /* ----------------------------*/
7 r+ R9 p$ G! f" {8 @" C" f( _) ^, Q       
: Z. H" S; ]) _+ |0 o5 ~        // Begin navigation throUGh the document => start with the RootProduct.- `( F, F* q+ R, I, f  }% ?
        CATIDocRoots* piDocRootsOnDoc = NULL;) W# O( W" C/ Q& r4 j
        rc = pDoc->QueryInterface(IID_CATIDocRoots,
1 s  B  u( J/ e6 i                                      (void**) &piDocRootsOnDoc);! X: S( t0 B( M8 E9 R& E; o
        if ( FAILED(rc) ) return 3;4 u1 x3 R2 A% s1 ^4 Y- R" i/ p( x
        # `0 Z# `+ w/ K" |& J( c# `
        // get the root product which is the first element of root elements5 K( ?. f  k  H# Y& S. E( E. @. ?
        CATListValCATBaseUnknown_var* pRootProducts =
8 ]% e  J# X. M                piDocRootsOnDoc->GiveDocRoots();
! W% t* @7 z1 H' ^. u        CATIProduct_var spRootProduct = NULL_var;
9 L8 _$ l/ w  {9 u        0 X" E: }" O% J( I% r3 s& }
        if (pRootProducts && pRootProducts->Size())! m6 I2 v7 ?9 j" r9 n0 c& ~
        {  
) U) i. t8 G* a$ B4 {' k1 d! w                spRootProduct = (*pRootProducts)[1];
# l- G# g' ]0 E" ]                delete pRootProducts;' z4 p% O, B: u
                pRootProducts = NULL;
% B5 k! ~& e( `1 h' U        }' Q$ m/ j, m; \9 E; p( _
/** @anchor err_1 piDocRootsOnDoc not set to NULL after release */
) t" h9 z1 T; u6 S; ~        piDocRootsOnDoc->Release();
/ h8 |: ?: d& ^4 \        piDocRootsOnDoc = NULL;
$ E/ _- J3 U/ K; ^        : W" g4 c7 L, T; w8 z5 `7 B
        // Get CATIProduct handle on the root product.  k$ D8 v" q# S2 ]0 a* h4 @
        CATIProduct *piProductOnRoot = NULL;
+ j% v' N: `/ I8 L        rc = spRootProduct->QueryInterface(IID_CATIProduct,
; B, n3 E7 h# X                                               (void**) &piProductOnRoot);' }+ B! {! \/ E$ R" D. s+ E; j9 j
        if ( FAILED(rc) ) return 3;0 O+ T4 V2 E+ b  U, c; h
, D" Y5 f) I) k5 v  b% `" w
        /* ---------------------------------------*/1 a6 H, b1 b& ]- z  z8 T
        /* 3. Retrieves children under the root   */$ j/ H% T' p- U: s% Z2 H
        /* ---------------------------------------*/# R* A* j6 ]. b$ o; J
       
" `# Z% j# v2 n. [. R0 X2 d6 p  ?        int nbOfDirecTChidren = piProductOnRoot -> GetChildrenCount() ;+ h0 Q5 o+ W$ |, c0 N; |- d
        cout << " Number of direct children under the root = " << nbOfDirectChidren << endl << flush;
# o1 M9 _4 e' q0 v! [& l( x6 g, l       
* I  O# w6 j* b" b* A        // then on a root product, get all the children agregated to it.4 F6 f, O' t1 [* L
        CATListValCATBaseUnknown_var*   ListChildren =# `" j' A( p# g  f
                piProductOnRoot->GetAllChildren();! r$ j, k1 ^" ^$ P  P3 K
/** @anchor err_2 piProductOnRoot not set to NULL after release */
5 O6 T# r( d6 w& C/ ^        piProductOnRoot -> Release();
2 L& |+ K5 O& {5 V        piProductOnRoot = NULL;
1 {' d  }) F& \% t" X& u        if(NULL != ListChildren)
9 n( w' W& Y( m0 g2 U7 e; ~- L9 H        {9 C" N: c- j) p: `2 a
               
5 B5 g( ^( B' y1 m                int numberOfChildren = ListChildren->Size();) K, A) {4 ?8 Y; a
                cout << " Number of all children under the root = " << numberOfChildren << endl << flush;
8 p+ J) l9 i4 y; p9 X/ E
8 ~/ e) y9 z4 `( J* W# E  o                /* -----------------------------------------------------------*/
, n& b/ q8 S6 L; `% V" U1 o                /*  4. For each child, get its partNumber, and InstanceName   */
# F. f- {3 v, u, P# j9 s3 m% [                /* -----------------------------------------------------------*/
. S  {( |: S$ }% a                CATIProduct_var spChild = NULL_var;7 V1 y9 D: F8 n: c: f9 E
                for (int i=1;i<=numberOfChildren;i++)4 _. o4 _2 R: z( q. b% P3 J4 E
                {
. a5 [/ k' s: R$ v9 }                        spChild = (*ListChildren);
' ^) s1 z, Q8 ?2 I& K/** @anchor err_3 spChild not tested before use ( if !! ) */
  S. [! g) H: s9 O* L* J6 n                        if ( NULL_var == spChild ) return 4;
' _# M& q! [  }9 _8 B                        CATUnicodeString partNumber = spChild -> GetPartNumber();- |) C: E; s4 L6 @6 b% V4 U; B
                        CATUnicodeString instanceName (" ");
& X0 a+ n, W$ a) H! M, p4 h& r                        rc = spChild -> GetPrdInstanceName ( instanceName ) ;% R: S! H6 N8 x  Z
                        if  ( FAILED(rc) ) return 4;
9 D/ R8 I) p6 a7 G                       
& V* f' k/ ?9 ~% _6 h7 r                        cout << " child number : " << i << endl << flush;
0 o3 X" I, [9 }$ g; g                        cout << " has as part number : " << partNumber.CastToCharPtr()  << endl << flush;( a# `6 X! S" ?- r$ `. {
                        cout << " and as instanceName : " << instanceName.CastToCharPtr() << endl << endl << flush;, k  O; K- B9 [. _! \5 w7 O
                }7 G/ l3 ]$ Z: a. S( R# `: m
                delete ListChildren;
# L$ ^  P: c* i5 b                ListChildren=NULL;2 n" z+ V" p% u  P: V
        }        6 v3 }* l3 G& r8 y" K/ I0 K& Z7 f1 g
        /* -------------------------------------------- */6 L- Y4 N% G* J5 H  z: h
        /*   Ends the session                        */
. @7 q+ g5 k/ j7 v0 U' y        /* -------------------------------------------- */[/mw_shl_code]* p  ]2 [! G/ z& k& ]) G
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了