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

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

[复制链接]

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

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

admin 楼主

2018-1-10 10:12:25

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

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

x

; m) ~' \9 s! f3 d" t0 j7 HCatia二次开发源码分享: 获取装配所有组件列表
1 w; I8 t$ Q3 e2 e
# m" m, e1 @! I/ n
% R+ t1 C0 B. t4 u; x[mw_shl_code=c,true]/* ----------------------------*/0 I% G4 Z+ V+ e
        /* 2. Retrieves Root Product   */
5 ?" F' O' S* ^        /* ----------------------------*/
- {& G. B3 _8 x  c9 l9 S7 _* o        6 J3 f1 [3 Q8 O1 r
        // Begin navigation throUGh the document => start with the RootProduct.1 K$ i* v3 B# u# @' _0 [9 j
        CATIDocRoots* piDocRootsOnDoc = NULL;
- y. E) I& z3 {* t9 j- l        rc = pDoc->QueryInterface(IID_CATIDocRoots,! P$ U7 b9 O# h4 U1 C
                                      (void**) &piDocRootsOnDoc);
, }4 ]1 q/ X3 M. v0 I        if ( FAILED(rc) ) return 3;7 e& I5 S2 r- G1 ^" B) W
       
6 Z% j( ]& n% u- j: J5 |* {# R        // get the root product which is the first element of root elements: q% m4 Q  t' J4 X. [2 l
        CATListValCATBaseUnknown_var* pRootProducts = 9 T+ f6 j9 O: \1 f- V1 D
                piDocRootsOnDoc->GiveDocRoots();7 G* ~2 @6 {4 k8 s3 e# l4 q6 R. G, e! T& ?, l
        CATIProduct_var spRootProduct = NULL_var;  k9 k7 B# i/ I' g7 i& F
        , F* M$ F5 K* E
        if (pRootProducts && pRootProducts->Size())8 v! I( ?. J+ K1 p
        {  
7 }  a8 R2 I& e                spRootProduct = (*pRootProducts)[1];
8 L, D/ b0 F. V, z% H/ e& }$ Q  H! M                delete pRootProducts;0 {. W0 C( ?9 Y3 g4 B+ L
                pRootProducts = NULL;  F' W. @# h2 M  P0 b! \. [; k
        }! Z3 W% t. V- S: E  j
/** @anchor err_1 piDocRootsOnDoc not set to NULL after release */ 6 [# e+ M. u! @/ s" f. M$ I$ h9 }
        piDocRootsOnDoc->Release();0 L/ P$ \) e* d6 x- L6 x3 h
        piDocRootsOnDoc = NULL;' k" [5 q: ?3 s( F0 W% h7 d
        0 R2 |: S7 [! `. T) ?, S: j
        // Get CATIProduct handle on the root product.
  u4 z2 a( o5 @$ |# L3 u        CATIProduct *piProductOnRoot = NULL;
2 o' P; o# L) S4 ?% t* k        rc = spRootProduct->QueryInterface(IID_CATIProduct,
- l# {, V# ^/ H  o                                               (void**) &piProductOnRoot);
1 a# V' a. }# x8 t3 I+ h# |/ }        if ( FAILED(rc) ) return 3;
1 p+ L: K! X7 i) X& H* S) `# C; N! q: O6 s8 |
        /* ---------------------------------------*/. n3 c( M' L9 d
        /* 3. Retrieves children under the root   */
7 w) v+ i( ]. E2 f& e$ w        /* ---------------------------------------*/
+ A% D% `  T; k% `, T0 [       
& \" w( B3 g" c" [3 P+ o        int nbOfDirecTChidren = piProductOnRoot -> GetChildrenCount() ;; a6 V7 x" x  @) X& U6 _
        cout << " Number of direct children under the root = " << nbOfDirectChidren << endl << flush;# U- u1 ~! Q+ u# K# r7 v* j
       
9 D* K7 J( M; O* i: T" y6 a        // then on a root product, get all the children agregated to it.! d9 X0 y1 u7 l3 V0 Y4 B
        CATListValCATBaseUnknown_var*   ListChildren =
/ ?1 ]6 }% s; l& h3 C2 M! r, {                piProductOnRoot->GetAllChildren();* p1 H$ ~+ k) z! u* q8 j+ `
/** @anchor err_2 piProductOnRoot not set to NULL after release */ % N" f( ?5 ?3 H8 O3 e. f
        piProductOnRoot -> Release();
; x9 d! ^! t+ J/ Z( k        piProductOnRoot = NULL;
3 n$ R) g# p, E8 e) Y5 w& u        if(NULL != ListChildren)
7 S: M, _/ w4 w+ ^: O0 U, s        {
9 e& e+ o( R0 ^  T. @! w7 h# m! S8 ^               
+ V0 x/ L, g% u4 a                int numberOfChildren = ListChildren->Size();  G/ G# C4 `2 G8 B% D
                cout << " Number of all children under the root = " << numberOfChildren << endl << flush;6 j5 i* i, L. I. W" {3 e: P% ?

  a, T) A6 q( u+ n                /* -----------------------------------------------------------*/
& H8 @: X7 ~- d* b: b: a/ T                /*  4. For each child, get its partNumber, and InstanceName   */
# L1 f7 c, a7 R+ l" |' d5 t                /* -----------------------------------------------------------*// b5 o) D1 W% Z& S) S2 d
                CATIProduct_var spChild = NULL_var;1 [8 [. V/ v" z  A, K; L
                for (int i=1;i<=numberOfChildren;i++)
- X7 j2 a5 @5 i  G  {- t9 b" ?                {" m# E% Z# n5 p( x( D% @
                        spChild = (*ListChildren);
4 {' x  F9 r6 Z9 k+ ^2 W9 `0 \/** @anchor err_3 spChild not tested before use ( if !! ) */ + ?7 u" x4 W$ P4 r% r2 A. D
                        if ( NULL_var == spChild ) return 4;
  w, f: ?' b. C# u- d0 k  V                        CATUnicodeString partNumber = spChild -> GetPartNumber();! _4 ?$ {3 R& m  a3 }' T8 t. v
                        CATUnicodeString instanceName (" ");, j7 w5 `! N( m7 Q& N7 U' ?- C
                        rc = spChild -> GetPrdInstanceName ( instanceName ) ;
6 t# G! R% \, [% p" \5 M- k5 `                        if  ( FAILED(rc) ) return 4;
7 s6 D+ t+ j2 Q, S0 l2 r                        0 |5 d' [# y4 J8 C% i& e& k
                        cout << " child number : " << i << endl << flush;
3 A) F9 i! h: |( J                        cout << " has as part number : " << partNumber.CastToCharPtr()  << endl << flush;6 x4 ~: ^9 X  G/ w4 h: o5 w8 t
                        cout << " and as instanceName : " << instanceName.CastToCharPtr() << endl << endl << flush;* |+ K0 X4 t' }+ P: O# w0 s. U
                }$ s  z0 R. j/ t- v. j+ _: \$ N/ r3 q
                delete ListChildren;
0 r$ i  F! g: M9 B, l" a                ListChildren=NULL;
: Q' q3 h- Z$ H  q        }       
2 x% Q2 O4 y& W1 l) D: h! A7 h        /* -------------------------------------------- */
% A& Q' Q$ r/ X, W) y$ o        /*   Ends the session                        */+ e" l3 ]) ?' A  u4 F% T
        /* -------------------------------------------- */[/mw_shl_code]
% W  x+ l0 K9 M9 K6 [) M0 E
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了