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

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

[复制链接]

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

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

admin 楼主

2018-1-10 10:12:25

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

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

x

9 s0 j: d: j* n* W: \! z  VCatia二次开发源码分享: 获取装配所有组件列表
/ r- a, B) i' w; `! M8 w0 X9 Q, @# p' m3 @$ ~

7 Y; x. J8 h# h) a" D* J) a[mw_shl_code=c,true]/* ----------------------------*/% _% M4 E6 D  f
        /* 2. Retrieves Root Product   */* `0 _2 Y7 w& p  j
        /* ----------------------------*/3 u. P  A: g1 e0 g7 b$ Q
          f- v1 s" W9 j3 a$ u
        // Begin navigation throUGh the document => start with the RootProduct.
( W7 K/ h$ F/ [4 M8 @" e        CATIDocRoots* piDocRootsOnDoc = NULL;
. x/ K, S8 g6 w0 C( d' ~0 j( G        rc = pDoc->QueryInterface(IID_CATIDocRoots,! A" c& ~& u7 b5 ]# `
                                      (void**) &piDocRootsOnDoc);
, u- K  d( T8 U! a        if ( FAILED(rc) ) return 3;0 _: S/ \9 m5 o) i7 U! [% c) P: p9 }
       
8 L* p: \+ M) S! p        // get the root product which is the first element of root elements
: [1 V$ D8 f' u1 p7 `        CATListValCATBaseUnknown_var* pRootProducts =
4 {# P; |' H0 j; B                piDocRootsOnDoc->GiveDocRoots();
; x" O) ?- N: j( F/ d$ c" M; W        CATIProduct_var spRootProduct = NULL_var;
/ S  H3 k' k/ {  ?       
) w. ]7 o' s  A$ U        if (pRootProducts && pRootProducts->Size())0 q( m+ R' _: U6 g' Y
        {  
! U4 |, Q! J/ |' [                spRootProduct = (*pRootProducts)[1];
, b; ]& w" F3 p' I4 B1 d                delete pRootProducts;6 ]4 m# x+ `! g3 O
                pRootProducts = NULL;/ ]+ C+ E$ r0 M* N3 b: l
        }# I9 M4 U2 ]+ w! w+ `
/** @anchor err_1 piDocRootsOnDoc not set to NULL after release */
6 ~1 b* Y/ e3 f. J  y$ V        piDocRootsOnDoc->Release();$ r( A" `* t0 o6 D
        piDocRootsOnDoc = NULL;
9 y) J5 M& `0 W) h9 ]# h( \5 Q       
0 i" r1 s& ]  v4 X- z8 O( _        // Get CATIProduct handle on the root product.
. h8 _' q1 [  h3 w) k        CATIProduct *piProductOnRoot = NULL;! G, E6 f  I  v# h
        rc = spRootProduct->QueryInterface(IID_CATIProduct,
+ Y: a$ u! G+ n# \& x8 g# W                                               (void**) &piProductOnRoot);
! E3 D; u# u/ b) G, e. a  p1 S& O; j        if ( FAILED(rc) ) return 3;+ f5 A# L9 v  R. }$ }
/ a4 ~# o4 }- q& x# ^1 D
        /* ---------------------------------------*/
, D2 Z% u) m" ~/ D+ e9 R3 g        /* 3. Retrieves children under the root   */' M, {  z/ M* _+ w( X+ a
        /* ---------------------------------------*/+ d" q: S: t0 M
       
$ F" |3 I! Z$ {' o. w        int nbOfDirecTChidren = piProductOnRoot -> GetChildrenCount() ;6 b  n" o7 K: ?" M
        cout << " Number of direct children under the root = " << nbOfDirectChidren << endl << flush;. d; N. z; t4 G7 Q4 r' N
       
& O% ~4 G; d8 |5 _) W        // then on a root product, get all the children agregated to it.0 ^' Q1 M) u/ ^- B. Q+ O
        CATListValCATBaseUnknown_var*   ListChildren =! t# g" x8 `7 p/ T0 l4 G: y( M
                piProductOnRoot->GetAllChildren();
* s% Z* f+ c& h- ]/** @anchor err_2 piProductOnRoot not set to NULL after release */ 9 U' n& U; }0 n2 @
        piProductOnRoot -> Release();
2 Q/ K. Q# G6 y* N% A        piProductOnRoot = NULL;" a; j, l) `' S3 d$ M! G
        if(NULL != ListChildren)8 Y4 g7 M' R. p' g; O
        {; s2 f$ ]9 U7 [: A9 c
                - d; J4 \0 x; e( `; Y6 a
                int numberOfChildren = ListChildren->Size();
( E" |( s4 M: N                cout << " Number of all children under the root = " << numberOfChildren << endl << flush;
/ z7 t* z, b& B8 t8 C
4 D6 x, P, p- O) Y/ `0 E                /* -----------------------------------------------------------*/
. G1 T2 W& B, P7 z2 n5 J2 Y- j                /*  4. For each child, get its partNumber, and InstanceName   */. a3 Y8 J' v. T& C5 M7 x( _
                /* -----------------------------------------------------------*/
$ A# d( L" b2 W5 w) b. i                CATIProduct_var spChild = NULL_var;
* A/ ^1 s" A- `  Q8 H3 K& k& N                for (int i=1;i<=numberOfChildren;i++)% O! D, E% e9 [( n
                {5 D' O( Y0 X5 a
                        spChild = (*ListChildren);' b$ i; U. |8 I1 D3 j- O1 i% X
/** @anchor err_3 spChild not tested before use ( if !! ) */ ( V4 N+ E' V1 L' U8 K) g' D
                        if ( NULL_var == spChild ) return 4;# V* _) V! w: U" o$ b; X) M6 o
                        CATUnicodeString partNumber = spChild -> GetPartNumber();* c# o& i; T7 q- V, b" y
                        CATUnicodeString instanceName (" ");
  ~- L! L% N+ ?3 a                        rc = spChild -> GetPrdInstanceName ( instanceName ) ;
. l  k) \, `) R7 i$ p) y. O. g$ Y                        if  ( FAILED(rc) ) return 4;. v: K- S, a# a4 z
                        # i) V% U9 F4 ~4 e
                        cout << " child number : " << i << endl << flush;
2 X, r! \) ~$ n4 `& q& T( ~                        cout << " has as part number : " << partNumber.CastToCharPtr()  << endl << flush;
( S0 B! J% w' Y3 B8 ~                        cout << " and as instanceName : " << instanceName.CastToCharPtr() << endl << endl << flush;% N4 v9 L/ c5 C  P. f+ Y/ g
                }
* B, P$ q' y/ E' b$ d: M' I                delete ListChildren;4 C) O( M! I  B# H- V8 ~% ]% k
                ListChildren=NULL;
2 I0 d) |$ v+ C9 k- K2 @. o, I        }       
' n* v5 u4 s: ?1 N* Y) ]        /* -------------------------------------------- */
; ^; R  K( u  h( X        /*   Ends the session                        */
6 {. a% U9 z* W) d0 v/ b        /* -------------------------------------------- */[/mw_shl_code]. ^6 H  f: g; B( B
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了