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

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

[复制链接]

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

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

admin 楼主

2018-1-10 10:12:25

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

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

x

, ?" B1 D! e: Y" d- O9 ICatia二次开发源码分享: 获取装配所有组件列表
( t$ A1 a+ \" W4 f; `+ }$ D" P' h
! j$ S5 w0 O0 W& x! Y+ X  @
[mw_shl_code=c,true]/* ----------------------------*/
1 w$ Q3 i2 y- M5 G8 t: K3 k% j        /* 2. Retrieves Root Product   */: a9 Q1 K! g& Z0 j. T! y- C2 M
        /* ----------------------------*/8 N6 l) \' k5 h$ Y  H! ?0 M
       
) G. x/ Q6 Q& r$ I" e+ j4 f        // Begin navigation throUGh the document => start with the RootProduct.+ @' W  L4 k: o% [, l
        CATIDocRoots* piDocRootsOnDoc = NULL;
- W. a" v: n/ b4 g3 X        rc = pDoc->QueryInterface(IID_CATIDocRoots,
! e, s  }6 o; r                                      (void**) &piDocRootsOnDoc);
8 p2 j2 N, a4 p        if ( FAILED(rc) ) return 3;
. D) F* E# e# s! |       
2 @# K" _  @$ B3 \2 Z, r        // get the root product which is the first element of root elements, j, t, p; {, I. m, c, v
        CATListValCATBaseUnknown_var* pRootProducts =   C+ W! v0 W9 @
                piDocRootsOnDoc->GiveDocRoots();
1 o) |9 {) }& s+ o        CATIProduct_var spRootProduct = NULL_var;. R: \, `1 B: v
       
, E) P% L( R6 C$ f( \        if (pRootProducts && pRootProducts->Size())
- a) [2 m9 R# u! O: R4 V  p        {  ) c: Y: j1 d0 q& ~) f
                spRootProduct = (*pRootProducts)[1];# U2 A3 i$ J" f, e3 G
                delete pRootProducts;# x4 ?0 r5 G3 |3 K
                pRootProducts = NULL;/ l* a" @* T. b* d$ f- `
        }
4 G4 J" H& y, K, m/** @anchor err_1 piDocRootsOnDoc not set to NULL after release */
1 v6 ?- Z0 W1 W& n9 m- K        piDocRootsOnDoc->Release();
8 X2 S: K  h- H: X; l9 O5 u8 B        piDocRootsOnDoc = NULL;* M9 q$ s; R( b# o! S
        ' H' v1 F- W8 n8 F/ h) _1 d! ^* m
        // Get CATIProduct handle on the root product.
8 h) D& \& z+ w' I+ O" t        CATIProduct *piProductOnRoot = NULL;; H; R! @5 A! [& J/ @0 e
        rc = spRootProduct->QueryInterface(IID_CATIProduct,1 W( X, J5 }$ `0 f( F0 j
                                               (void**) &piProductOnRoot);
9 e. T2 ~4 f7 K8 j( |        if ( FAILED(rc) ) return 3;7 H+ U, }, z6 {! I. J# P! e
, W9 x$ Q& n9 q
        /* ---------------------------------------*/8 G. k, J* l" B# M9 b2 e- l
        /* 3. Retrieves children under the root   */. c( I0 W, [2 ?9 F: r
        /* ---------------------------------------*/
, \+ H- z! C  L1 }       
; W3 {* S2 o! e* }+ b        int nbOfDirecTChidren = piProductOnRoot -> GetChildrenCount() ;/ F' {+ Z# e- v( l  I
        cout << " Number of direct children under the root = " << nbOfDirectChidren << endl << flush;
/ p. U; G, u5 f) O$ S# O        , `* u3 h2 B8 a( R, Z
        // then on a root product, get all the children agregated to it.( r4 L0 ?# m7 \8 L- h4 l* }
        CATListValCATBaseUnknown_var*   ListChildren =
* A/ p9 w2 T7 ^) A+ B, }                piProductOnRoot->GetAllChildren();7 r4 Y- z# A2 p, e  c' [$ r$ |2 D
/** @anchor err_2 piProductOnRoot not set to NULL after release */ 8 r6 W% u. V( k# k1 D1 a
        piProductOnRoot -> Release();
. B  ^% x! r; f8 E! o) f        piProductOnRoot = NULL;
0 D& Q$ z- L( r8 M% h2 h        if(NULL != ListChildren)& h  ]3 o6 Z( H. D$ E
        {
) @2 O+ ^9 b* K, f3 L               
0 }3 v: @# ]1 ^, _, X6 M) U                int numberOfChildren = ListChildren->Size();
9 J( _; S& S& r" c! a6 i                cout << " Number of all children under the root = " << numberOfChildren << endl << flush;
2 T' _! G5 F$ l9 R) H( V9 D3 o6 G* ?& L3 d
                /* -----------------------------------------------------------*/
" R; k8 E7 p- S) s- U9 @9 Y' Z                /*  4. For each child, get its partNumber, and InstanceName   */5 H$ q% X" w+ c6 n- b1 j0 c) _
                /* -----------------------------------------------------------*/% z' w) w8 C9 {
                CATIProduct_var spChild = NULL_var;* I  Z3 b1 P5 Z$ N/ J1 `+ q2 w/ p) y0 ]; t
                for (int i=1;i<=numberOfChildren;i++)
$ a, s1 L$ D7 U& C4 X1 n" y                {
. h8 h  u% G% Z( B4 U. z) j                        spChild = (*ListChildren);8 i5 e3 Y, r% b$ m
/** @anchor err_3 spChild not tested before use ( if !! ) */
2 b& R5 s2 Z7 c1 e* i5 I2 O1 G& \                        if ( NULL_var == spChild ) return 4;
7 N- L. C0 J* _- ^8 H" @/ d3 m( ?2 b1 y                        CATUnicodeString partNumber = spChild -> GetPartNumber();
; g/ `7 K; m8 U                        CATUnicodeString instanceName (" ");, H* z8 a' r5 f) i1 f
                        rc = spChild -> GetPrdInstanceName ( instanceName ) ;
. T; `& h$ S. G: d( A- `                        if  ( FAILED(rc) ) return 4;
4 M7 s6 R8 L; C( U                        9 Q7 H1 Z' ^1 C. w, y7 |# L5 n
                        cout << " child number : " << i << endl << flush;1 D+ v" ?2 k5 Z
                        cout << " has as part number : " << partNumber.CastToCharPtr()  << endl << flush;
# ^/ C; M  e7 D; r4 Q7 f4 {                        cout << " and as instanceName : " << instanceName.CastToCharPtr() << endl << endl << flush;
5 J; o9 R7 C0 m                }* L- p- E' E, p6 |7 P3 f5 i
                delete ListChildren;
; `- D, d+ f% G3 P0 J9 L- p; C                ListChildren=NULL;7 @3 B+ _& c6 N
        }       
: [) c' O% g7 o! G        /* -------------------------------------------- */
- C7 E- E# M2 |* H" a- Q8 W7 ]        /*   Ends the session                        */
1 A5 o% j% G7 @, y, Q        /* -------------------------------------------- */[/mw_shl_code]# h9 [1 G$ W8 n) 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二次开发专题模块培训报名开始啦

    我知道了