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

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

[复制链接]

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

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

admin 楼主

2018-1-10 10:12:25

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

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

x

, ?3 M( x2 C3 V' B* I0 C$ ~Catia二次开发源码分享: 获取装配所有组件列表
, ]2 }7 h4 g7 z8 b% p' D  Q1 o1 U+ R2 ]' |$ L# E+ F

! M5 S% e% \4 u. Z% S; e[mw_shl_code=c,true]/* ----------------------------*/
+ o) c5 J- m, U) D( p        /* 2. Retrieves Root Product   */5 j' p) @3 \. Q' v) H
        /* ----------------------------*/
% T; D& g( B9 A        / o: ^8 [! J+ ~4 `( t
        // Begin navigation throUGh the document => start with the RootProduct.1 E- c3 m; X7 Z$ B& R# h% K
        CATIDocRoots* piDocRootsOnDoc = NULL;
1 A  `9 u2 p: X# i) w4 O. @( I, b        rc = pDoc->QueryInterface(IID_CATIDocRoots,  E. N  u* g" @: ~% ]1 d6 a
                                      (void**) &piDocRootsOnDoc);. K  w/ r" ^) X; C
        if ( FAILED(rc) ) return 3;  G9 _( a! g% @  B% @- @
        8 A/ n3 |, _: l- V- U' I
        // get the root product which is the first element of root elements4 i8 [. j( A% n# W" d
        CATListValCATBaseUnknown_var* pRootProducts =
( B2 s. d; Z/ ~; r! d                piDocRootsOnDoc->GiveDocRoots();; I+ H0 \/ U6 C" w
        CATIProduct_var spRootProduct = NULL_var;
* j5 m& U+ w) a4 D        # ^& `( W1 h+ _) ~; ~% h
        if (pRootProducts && pRootProducts->Size())' L8 {6 \7 O. J# `/ i
        {  0 T1 n  }( t, _- Q
                spRootProduct = (*pRootProducts)[1];7 ]% e  r; |8 G+ _4 G
                delete pRootProducts;- J5 [6 Z2 @7 ^: k5 h" ?4 y+ e
                pRootProducts = NULL;0 ^* S8 h7 Y3 P) H* f
        }
2 n4 m- O* J' \& i. h) F1 e/** @anchor err_1 piDocRootsOnDoc not set to NULL after release */
. J& v3 l1 ^3 \5 Z1 l% y        piDocRootsOnDoc->Release();3 {; w4 E* d# b9 w+ E" }+ P
        piDocRootsOnDoc = NULL;
( t( Y* h' g1 w2 Q& }$ ?; e) _* n. K       
2 [/ \+ T7 E$ e! ^. @1 w/ @4 E        // Get CATIProduct handle on the root product.# ?0 K$ s0 w2 Q0 e
        CATIProduct *piProductOnRoot = NULL;
: b5 w1 h9 S/ W& j, n& @        rc = spRootProduct->QueryInterface(IID_CATIProduct,
' K8 z9 p8 r# |4 e8 Q  P                                               (void**) &piProductOnRoot);* {0 @2 b, \/ w1 f
        if ( FAILED(rc) ) return 3;
7 n, M! b4 W  K
& c7 B0 i) O8 z  D6 S' s) t        /* ---------------------------------------*/
( T) F5 U  c2 t# }) G- {+ m        /* 3. Retrieves children under the root   */
, s2 ]( ^6 K- x        /* ---------------------------------------*/" r4 H  ]1 f: M/ m0 A9 x5 n
        # q( t# ?0 }6 R8 A" j7 ?6 I5 ~
        int nbOfDirecTChidren = piProductOnRoot -> GetChildrenCount() ;' E; b; E* }* g) N
        cout << " Number of direct children under the root = " << nbOfDirectChidren << endl << flush;# ?- @0 w* Q3 a/ ?, F0 z. C/ K
       
, B7 A# b4 N+ r# _        // then on a root product, get all the children agregated to it.
' |4 T2 V% L, b- L9 E8 z1 A        CATListValCATBaseUnknown_var*   ListChildren =$ x5 y# W5 l' F0 u9 d( e
                piProductOnRoot->GetAllChildren();1 }& V) Z) t2 x+ ~
/** @anchor err_2 piProductOnRoot not set to NULL after release */
9 U0 }: p8 ]! v/ T0 l# Q        piProductOnRoot -> Release();* S5 s/ O, n3 X0 i
        piProductOnRoot = NULL;. ]- g0 V: F) J; [. v* H
        if(NULL != ListChildren)
/ l: p- d  {- o1 z+ o        {
  \0 |# ?" s4 V1 ]) `               
0 {# F4 c& _) J: K: L6 P7 m                int numberOfChildren = ListChildren->Size();
* c3 ^' G, O- }' Y4 l8 n+ D/ q                cout << " Number of all children under the root = " << numberOfChildren << endl << flush;; z8 C* z+ l! R: ?% e& r
8 q, y3 n7 j& E- ?5 _2 i
                /* -----------------------------------------------------------*/
* V5 y) R# I8 I4 n9 R                /*  4. For each child, get its partNumber, and InstanceName   */' o0 h: ]6 m- I' m1 g+ n# G$ J
                /* -----------------------------------------------------------*/
, F1 m7 F/ G2 w7 i                CATIProduct_var spChild = NULL_var;% f5 I/ l8 \9 }: h  j3 E# v4 D5 m
                for (int i=1;i<=numberOfChildren;i++). }7 n' H# `% c: v
                {+ T- ~) W- A0 V3 w
                        spChild = (*ListChildren);% E% u9 e. s8 y) d& ]7 B2 `
/** @anchor err_3 spChild not tested before use ( if !! ) */ 4 h; ~$ [! }" [( @) s1 E2 R4 o
                        if ( NULL_var == spChild ) return 4;
2 @' G. I# h" @- {                        CATUnicodeString partNumber = spChild -> GetPartNumber();
# B3 ]+ R4 R6 P% ]! Z$ D6 @, v                        CATUnicodeString instanceName (" ");
" R) B8 _  F6 f& a0 Y3 U' D                        rc = spChild -> GetPrdInstanceName ( instanceName ) ;) M& K" x8 q* K* n+ R$ S& I
                        if  ( FAILED(rc) ) return 4;+ }. M9 R  l( C$ l, V3 K
                        1 {' x4 ~1 x5 i' A2 L: O
                        cout << " child number : " << i << endl << flush;
1 b7 c5 M, S# Z3 {4 h7 s- m1 F                        cout << " has as part number : " << partNumber.CastToCharPtr()  << endl << flush;
5 s2 _8 X. `8 w! n- o# k                        cout << " and as instanceName : " << instanceName.CastToCharPtr() << endl << endl << flush;
1 e8 d! B+ ]% }0 d6 }                }
$ R! O1 E  ^2 a8 P8 Y                delete ListChildren;; b/ T. K7 C6 G! T) z# @9 k
                ListChildren=NULL;" L% l( `  G" Q7 U
        }       
4 y! S+ Z# b& O; x$ t        /* -------------------------------------------- */6 C6 K8 p# Z* H4 _- Y; j. j/ v
        /*   Ends the session                        */6 ~7 V1 }6 C3 t- r6 J
        /* -------------------------------------------- */[/mw_shl_code]
9 B* D6 k* H1 |5 C
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了