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

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

[复制链接]

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

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

admin 楼主

2018-1-10 10:12:25

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

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

x
5 n! g4 L# Z/ S( n8 r, b
Catia二次开发源码分享: 获取装配所有组件列表6 C5 P$ O  N5 F2 B5 U* O

( O5 [- e/ D/ Q! `3 y0 x$ y. D3 m
7 q& {6 ~" g' R8 l% v) d[mw_shl_code=c,true]/* ----------------------------*/
# @. _; [  j+ t0 }; x5 o- Q2 g        /* 2. Retrieves Root Product   */7 t) ~! V) t- p" b: M2 v
        /* ----------------------------*/! n$ K- O- B& W" ^
       
. j" z, R7 x# s. ?9 E7 Q9 T        // Begin navigation throUGh the document => start with the RootProduct.
: `! K8 C* o1 J3 C3 I0 Q        CATIDocRoots* piDocRootsOnDoc = NULL;
6 t' d) ]; U2 B$ x7 u& p! o        rc = pDoc->QueryInterface(IID_CATIDocRoots,% R' l1 Y0 w, `+ h2 q2 \
                                      (void**) &piDocRootsOnDoc);2 v% ^  V6 g9 D0 u9 p) _. K' ~
        if ( FAILED(rc) ) return 3;
0 m0 `, ~  C  w; M5 ^' ~        ! M- d. L: Y& P
        // get the root product which is the first element of root elements/ z' d; G9 R2 u; }, e  h" Z
        CATListValCATBaseUnknown_var* pRootProducts = * D$ p* j$ z; i4 W, O
                piDocRootsOnDoc->GiveDocRoots();
1 R1 o2 b# _" Y* w& \        CATIProduct_var spRootProduct = NULL_var;
$ M3 B- [; ?4 S9 M: E       
$ Z9 Y; c1 l8 o) M1 ^        if (pRootProducts && pRootProducts->Size())1 |' c9 m3 l* f( w9 u9 I* ~
        {  2 K) K6 X* L2 b1 W
                spRootProduct = (*pRootProducts)[1];2 _4 S% Q9 V6 f/ |! j0 T. o
                delete pRootProducts;  T& P  e  L: b2 M2 |7 O: J
                pRootProducts = NULL;
; P4 e7 m! L# }5 t        }
' M$ u) G& g5 N& N0 k( ?0 r/** @anchor err_1 piDocRootsOnDoc not set to NULL after release */ . U0 X/ f& r5 c- ^; ]3 Z  D9 |. a
        piDocRootsOnDoc->Release();
) N3 R) U9 B) w+ Y        piDocRootsOnDoc = NULL;( J9 ?8 l! n% G, Y: x& J( @
        $ k9 D  A. r! o! a
        // Get CATIProduct handle on the root product.
7 n- F! P& g& z& o: H        CATIProduct *piProductOnRoot = NULL;
# ]4 g% ~9 e7 m3 N! b        rc = spRootProduct->QueryInterface(IID_CATIProduct,
) o; N& e" k$ ~) W7 g5 n                                               (void**) &piProductOnRoot);
! S+ o, q0 l/ w, g        if ( FAILED(rc) ) return 3;" Z' E9 y* X6 ]& w+ c( R; Q

5 p8 e3 q: a3 l8 ~# {        /* ---------------------------------------*/" U5 x" x5 n' `5 M
        /* 3. Retrieves children under the root   */
: ^7 l+ F8 \. s        /* ---------------------------------------*/
5 O" j9 u2 n+ V* r; W& h/ q9 O9 z        % H2 x7 t; z: B% O
        int nbOfDirecTChidren = piProductOnRoot -> GetChildrenCount() ;; e) A5 W+ R* Z3 J' h8 {
        cout << " Number of direct children under the root = " << nbOfDirectChidren << endl << flush;
! h. a& t: Q4 T# c4 M, T       
! s3 g& Q; a6 D; G: x0 n        // then on a root product, get all the children agregated to it.
: H1 g7 s" ?$ e7 n) B; D        CATListValCATBaseUnknown_var*   ListChildren =
( s/ a, M/ W# @! O$ h                piProductOnRoot->GetAllChildren();  G! W' d3 q0 B) H
/** @anchor err_2 piProductOnRoot not set to NULL after release */ - S6 ~7 v- Q  _, K# n: X. G
        piProductOnRoot -> Release();$ u. C1 s  S, e- Z. V+ z5 o2 c
        piProductOnRoot = NULL;$ C, M  r( n( B5 d  i, b/ j
        if(NULL != ListChildren)
6 T' Z' t0 W% \, L. G/ Q        {
$ C% J. n) ~; O+ y               
3 y9 f& g5 `1 B% A  G                int numberOfChildren = ListChildren->Size();. C5 F8 d( {0 {5 D) |
                cout << " Number of all children under the root = " << numberOfChildren << endl << flush;5 G1 S! t* L/ l0 i3 ~  g" @6 [

% e; _2 y6 w' N3 k- O9 J, T                /* -----------------------------------------------------------*/  x. j- F2 M% q9 A
                /*  4. For each child, get its partNumber, and InstanceName   */
; A1 P. s& `# r% n0 b! h                /* -----------------------------------------------------------*/
. J" t# Q9 d& t5 l                CATIProduct_var spChild = NULL_var;4 g4 o- O# @2 Q/ ?
                for (int i=1;i<=numberOfChildren;i++)
4 l: z. h6 P  w4 B                {8 t# F$ s* z. p9 N$ T6 V
                        spChild = (*ListChildren);  f0 X  g* E$ D0 A% I
/** @anchor err_3 spChild not tested before use ( if !! ) */
+ B, x" _6 Q$ u# \                        if ( NULL_var == spChild ) return 4;- o; g  @* V" i# ^8 E/ Q$ }3 A
                        CATUnicodeString partNumber = spChild -> GetPartNumber();6 x" D, Z# e; G! k3 ^& J
                        CATUnicodeString instanceName (" ");
( a+ `; T) ?5 U6 q8 [7 z. b                        rc = spChild -> GetPrdInstanceName ( instanceName ) ;
/ C5 a! p* ~% V2 r  j% R7 F& H# s                        if  ( FAILED(rc) ) return 4;- K' t7 g- G  X' Z; i
                       
. L0 ?$ d  k) T! e2 F% m                        cout << " child number : " << i << endl << flush;7 V& x( ^9 v/ l8 k/ t
                        cout << " has as part number : " << partNumber.CastToCharPtr()  << endl << flush;
0 ~$ c  y, o/ K/ A  g; r% W                        cout << " and as instanceName : " << instanceName.CastToCharPtr() << endl << endl << flush;
, }8 ^. n( G* k+ y1 s) q) n$ _! ]                }
1 Q% J; }, s# u5 @8 n& Y" R                delete ListChildren;1 r  i$ W7 F5 G; V
                ListChildren=NULL;
3 r5 `, \3 O+ S        }        8 C$ s# L& |/ F  ]
        /* -------------------------------------------- */
9 v7 i& n5 `$ X% m        /*   Ends the session                        */
# a- t6 C1 ?8 Z8 d( H5 C6 e        /* -------------------------------------------- */[/mw_shl_code]
4 t4 X4 \" ?  q! 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二次开发专题模块培训报名开始啦

    我知道了