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

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

[复制链接]

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

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

admin 楼主

2018-1-10 10:12:25

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

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

x
) M3 N5 z+ {, [/ X
Catia二次开发源码分享: 获取装配所有组件列表: G# W3 q5 [% R: Z( U+ d: q

3 H+ M& c" G& g3 Q; E
! x* b) f5 _3 z: n[mw_shl_code=c,true]/* ----------------------------*/3 R8 E- z9 v" A
        /* 2. Retrieves Root Product   */
, n4 ~( A- Y- r( R" i' G        /* ----------------------------*/, i+ j, E' [% i( p% n
       
$ X3 {8 h9 H! R' u        // Begin navigation throUGh the document => start with the RootProduct.
* W' O9 \1 L3 [" _% d$ k8 C& i8 p        CATIDocRoots* piDocRootsOnDoc = NULL;" r. Q$ @+ D7 i
        rc = pDoc->QueryInterface(IID_CATIDocRoots," N5 N: S/ O: p9 |
                                      (void**) &piDocRootsOnDoc);
' \) P; \( X; f; R! I        if ( FAILED(rc) ) return 3;2 L; P; J: G! j, T' ^4 r
       
' O% G" n; ?5 z4 h: p5 e        // get the root product which is the first element of root elements
7 k: r# ]5 E" ]% e  b        CATListValCATBaseUnknown_var* pRootProducts = , |  W# b: D$ {% E9 i& P
                piDocRootsOnDoc->GiveDocRoots();
& \1 c, M  L0 K; B* B        CATIProduct_var spRootProduct = NULL_var;
7 }4 b: P+ v1 \- i; \6 Q/ ^1 B2 }        9 ?" M7 F3 L- i0 u; d1 e# K2 u; P
        if (pRootProducts && pRootProducts->Size())
& [4 z% v) `4 ~8 {        {  
4 G: p% ]/ s9 n- [+ p                spRootProduct = (*pRootProducts)[1];- m* _- q( |: r3 D" K) Q4 U
                delete pRootProducts;2 u; ^6 O1 N, H
                pRootProducts = NULL;
$ v* t* B8 ]2 _        }
: `* u9 A2 @0 V6 ~3 G9 z( S: U/** @anchor err_1 piDocRootsOnDoc not set to NULL after release */
8 D( ?6 x" {( [3 \0 }- P) @        piDocRootsOnDoc->Release();
) f8 W) C- e! n2 L  `' x/ d        piDocRootsOnDoc = NULL;
$ o0 u' \: Y- @        - J9 q5 N9 |' L* x! `0 _. j1 x
        // Get CATIProduct handle on the root product.6 P+ d; Y. e; H  j4 `1 W  O
        CATIProduct *piProductOnRoot = NULL;
: q8 o$ B& V& t. a4 k# w        rc = spRootProduct->QueryInterface(IID_CATIProduct,
+ V& M5 M- ?1 Q' i7 f7 O' n( f1 G                                               (void**) &piProductOnRoot);
$ R& @" O' T; l6 ~: b1 q8 q% \        if ( FAILED(rc) ) return 3;
% g8 o/ G1 y6 y& [  q
5 a9 Y; R" V$ W+ D: G1 R/ k        /* ---------------------------------------*/% s1 f3 q+ q9 ^- O
        /* 3. Retrieves children under the root   */
. g- v; [& I6 i4 z$ L8 ?/ x$ s/ y& A        /* ---------------------------------------*/
/ B, S9 Z: Y: P( D& S% w# y4 f5 L! M3 ^       
" I3 R* c) V3 W7 Q: h        int nbOfDirecTChidren = piProductOnRoot -> GetChildrenCount() ;% t! q2 n  T4 s) f8 L1 h2 T
        cout << " Number of direct children under the root = " << nbOfDirectChidren << endl << flush;
$ d9 B, S6 [# g1 U       
" a4 @: t/ [7 X, }: M+ ?" `: @        // then on a root product, get all the children agregated to it.
  |  v" k0 g; [' J        CATListValCATBaseUnknown_var*   ListChildren =3 y! J" X; T# ~4 X+ R. H
                piProductOnRoot->GetAllChildren();2 r8 h) c2 w  h* _2 n6 V6 A% Z
/** @anchor err_2 piProductOnRoot not set to NULL after release */
8 e* R& N9 R! M/ i2 @        piProductOnRoot -> Release();
( g* J& i5 c. u% `& j7 o        piProductOnRoot = NULL;3 ~/ ]  i" L0 A  C
        if(NULL != ListChildren)9 J# `, b$ Y/ y7 |+ ~: N1 R0 B
        {. ]% F) r# P7 Q" y/ A" O
               
6 e% Z3 ]- S- x7 E' v                int numberOfChildren = ListChildren->Size();
0 V, r8 ^1 j$ w8 S% A# U                cout << " Number of all children under the root = " << numberOfChildren << endl << flush;
, J* ]& ]: h- u  N0 n7 S  Q2 F) x7 J, C' e& {* ~) Z4 ^
                /* -----------------------------------------------------------*/
8 C; T; M& O8 }% g6 y1 B; S                /*  4. For each child, get its partNumber, and InstanceName   */
' }( b# d* t" S4 \# Z                /* -----------------------------------------------------------*/( ~, c! J' R- K' {* x5 ~
                CATIProduct_var spChild = NULL_var;
9 ]) g, I# s! s& \5 B                for (int i=1;i<=numberOfChildren;i++)
" t3 C) L) e6 P# y                {& o! S/ P3 J- C8 J" H
                        spChild = (*ListChildren);/ v* p) t" n. u  D! x
/** @anchor err_3 spChild not tested before use ( if !! ) */
& n2 u0 X( ^$ @                        if ( NULL_var == spChild ) return 4;$ _% H% K+ I4 }4 c9 j* C
                        CATUnicodeString partNumber = spChild -> GetPartNumber();
$ `. ~0 G* C, V6 ?. Y6 K, J+ ]: [                        CATUnicodeString instanceName (" ");/ Q. c$ i, |) f) S
                        rc = spChild -> GetPrdInstanceName ( instanceName ) ;+ u2 d: u, k- b/ b/ C& H9 W! n
                        if  ( FAILED(rc) ) return 4;
; P1 F2 `( g7 A$ k- @: m                        # d- u1 l/ Z; I
                        cout << " child number : " << i << endl << flush;
, n/ A4 n* Z7 k6 B                        cout << " has as part number : " << partNumber.CastToCharPtr()  << endl << flush;
$ @, t6 C! n/ J1 r                        cout << " and as instanceName : " << instanceName.CastToCharPtr() << endl << endl << flush;
  k7 M, G: X( e& c6 C9 d! E                }3 j. o* o! b) ~! b  r8 L
                delete ListChildren;4 d: q- C; |7 G( f: W8 q
                ListChildren=NULL;
4 j! j" P) E9 ^* K) Z6 ^        }       
! R# F+ t! N- I        /* -------------------------------------------- *// U: A: g6 J- N  q
        /*   Ends the session                        */+ P  }8 I8 n, x
        /* -------------------------------------------- */[/mw_shl_code]5 u2 ?' U7 F( D- m
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了