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

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

[复制链接]

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

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

admin 楼主

2018-1-10 10:12:25

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

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

x

6 v3 c) E8 T, bCatia二次开发源码分享: 获取装配所有组件列表
- C+ o8 l- _* C6 ?
: J- w6 k% c* o1 g$ ]2 \; o" {) ^4 \5 M7 ^& @) }( [' j# `
[mw_shl_code=c,true]/* ----------------------------*/6 X9 S! U. f5 ~* q* j9 o
        /* 2. Retrieves Root Product   */
* ^+ k/ X. T5 r8 H, m        /* ----------------------------*/6 ?/ p! \) r. a
        2 y% g  g' {1 h+ n
        // Begin navigation throUGh the document => start with the RootProduct.
. L5 ?( {  c% U        CATIDocRoots* piDocRootsOnDoc = NULL;4 \. L2 y- t4 H+ Y0 t8 T
        rc = pDoc->QueryInterface(IID_CATIDocRoots,' e# ]- S9 ~/ J
                                      (void**) &piDocRootsOnDoc);
& M2 t% A2 w: E6 y% `/ h        if ( FAILED(rc) ) return 3;  u" R7 H' R5 a/ p2 G" U' x
        / _4 V  y8 Y7 I
        // get the root product which is the first element of root elements
& z7 N9 C, @/ `( l9 o) I        CATListValCATBaseUnknown_var* pRootProducts = % e9 f! T) }5 l) K. q" {% z
                piDocRootsOnDoc->GiveDocRoots();
% \5 k( P% R; A+ `& a        CATIProduct_var spRootProduct = NULL_var;
$ H- z: b1 C7 p9 D! d        $ K6 s* ~* x) n* X' U
        if (pRootProducts && pRootProducts->Size())  L8 e, r9 f0 `  E9 G
        {  
4 E4 Z) ]( {& E+ S4 ]* d                spRootProduct = (*pRootProducts)[1];7 ?4 d* X  ^9 K$ |# O  d& q
                delete pRootProducts;
0 s* ]' a0 R+ [+ d+ }! l1 b# J% y6 I                pRootProducts = NULL;$ m1 U. l( h' Z; q
        }0 Z/ n/ j( k" f! v
/** @anchor err_1 piDocRootsOnDoc not set to NULL after release */
5 x. I3 Y% j: u3 i9 ^4 e! Q& h        piDocRootsOnDoc->Release();
) n* c! i' _1 }) r        piDocRootsOnDoc = NULL;
* B5 m; V! E" P  T; }1 y7 W       
" z$ v# c2 l& D' N0 d$ {, b) j        // Get CATIProduct handle on the root product.
* U; ?4 V9 I& w2 O- g! \( e& k$ g        CATIProduct *piProductOnRoot = NULL;9 I1 B6 I0 L, |
        rc = spRootProduct->QueryInterface(IID_CATIProduct,  x4 I1 `6 T. I1 ^8 L+ v( E
                                               (void**) &piProductOnRoot);
% E" j" q+ B! {+ [        if ( FAILED(rc) ) return 3;
! E2 a; g: `6 a. s- y& ?+ W
6 O& d6 W  N# u/ J: n2 e        /* ---------------------------------------*/
8 k$ @2 s; T; d        /* 3. Retrieves children under the root   */( B3 }2 ~9 N; u& s
        /* ---------------------------------------*/* q& ~# ]% P& _) |8 o7 \. B
        3 A: H. _5 T, ^# q6 L1 P8 O
        int nbOfDirecTChidren = piProductOnRoot -> GetChildrenCount() ;
& `6 o7 v) j! a/ n        cout << " Number of direct children under the root = " << nbOfDirectChidren << endl << flush;+ P% V: W2 C9 J4 E/ C
       
7 d8 v% e9 c8 F9 J" w! E        // then on a root product, get all the children agregated to it.
/ f  N+ F3 \% d" _. ~5 r4 n        CATListValCATBaseUnknown_var*   ListChildren =
/ L) W/ R6 V/ t, n                piProductOnRoot->GetAllChildren();
3 B* [6 _/ l- @1 w0 G1 K& a/** @anchor err_2 piProductOnRoot not set to NULL after release */ ( }( l5 R* r. G; ^/ }; b) A) f& N* d
        piProductOnRoot -> Release();
4 \2 _& F: R; |0 ]$ j) C        piProductOnRoot = NULL;5 P! Q) Z- \  q7 ]3 T! s- b
        if(NULL != ListChildren)* M% B' b# r+ W! F, _
        {' J( x5 D) h7 l  c
               
; p) |* y4 {7 L9 @0 h. }) U4 d                int numberOfChildren = ListChildren->Size();3 R. k' u" N9 z6 T  Q9 |) a$ c
                cout << " Number of all children under the root = " << numberOfChildren << endl << flush;: W2 ^5 ~' M1 P
& Q7 q- j# K, Z% I  e4 f
                /* -----------------------------------------------------------*/! g# \/ x& A7 R1 }0 z3 ^4 o
                /*  4. For each child, get its partNumber, and InstanceName   */
. Z3 r& U7 l# r( Z7 E, H                /* -----------------------------------------------------------*/
0 x7 U* n0 b1 k5 K2 Q                CATIProduct_var spChild = NULL_var;, V( A$ ^; X9 `, i( G5 r( a2 \/ k
                for (int i=1;i<=numberOfChildren;i++)2 P* V1 F: ?) L% `0 j) s
                {
2 B1 J3 `: k" i  V# }" f                        spChild = (*ListChildren);
& Y. g7 f( p9 Y4 i9 V1 X9 @/** @anchor err_3 spChild not tested before use ( if !! ) */
1 Z4 X( N/ x; p* S) a$ ~1 O                        if ( NULL_var == spChild ) return 4;
& O9 |/ ~* E: g! p                        CATUnicodeString partNumber = spChild -> GetPartNumber();
" |: z0 u$ t8 w: l* K( S6 _1 I9 X  v                        CATUnicodeString instanceName (" ");* R6 ]: W7 j2 V5 i
                        rc = spChild -> GetPrdInstanceName ( instanceName ) ;
0 B* N/ u4 T, y; P8 k                        if  ( FAILED(rc) ) return 4;' P9 [) h) h* N3 m3 R" J1 b) W9 j
                       
9 U, F% k5 J- u- j9 x/ J3 H6 z                        cout << " child number : " << i << endl << flush;
% q8 N5 h! `6 l- A8 p8 z5 G% w                        cout << " has as part number : " << partNumber.CastToCharPtr()  << endl << flush;/ z1 c/ ^" w3 R3 q0 N4 e# V% z
                        cout << " and as instanceName : " << instanceName.CastToCharPtr() << endl << endl << flush;
+ l0 w) f! p4 h5 q. w+ r                }' c7 d$ W$ i6 X6 Z$ I7 j2 W
                delete ListChildren;
8 P; S) I' }: A) W# B  J/ F; F                ListChildren=NULL;. ]" O# f$ v7 D! Q( B% W/ e
        }        + F/ `* ?. \& Y3 i; W( a# S# }2 t
        /* -------------------------------------------- */
3 x; j9 j/ X; ~        /*   Ends the session                        */" f0 }2 G/ R* l1 d7 Z& w$ H
        /* -------------------------------------------- */[/mw_shl_code]
, C+ ?2 B: Q* W' T4 d& f
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了