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

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

[复制链接]

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

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

admin 楼主

2018-1-10 10:12:25

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

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

x

, p% C: v' {' Q9 c# gCatia二次开发源码分享: 获取装配所有组件列表
  K2 L) \9 p) |$ R! \
4 s5 g2 f) q# ?0 Y/ H( V: r9 ^2 W. v; w, W7 N# L& C
[mw_shl_code=c,true]/* ----------------------------*/# N8 p! U; A- ?4 v* A  U
        /* 2. Retrieves Root Product   */
5 e' i8 d4 k& N3 v        /* ----------------------------*/
3 @1 H6 d% Q0 X        : W, R' R( P3 r0 N
        // Begin navigation throUGh the document => start with the RootProduct." i" J0 o2 Q  ^6 ?4 E
        CATIDocRoots* piDocRootsOnDoc = NULL;
8 m* `* L$ E' `1 ^) \        rc = pDoc->QueryInterface(IID_CATIDocRoots,/ M( Q6 D4 c" S; |# d) ~& R# ?
                                      (void**) &piDocRootsOnDoc);6 R$ u& ]7 |1 p+ R8 L; F" T
        if ( FAILED(rc) ) return 3;
+ N+ Q5 h1 w" e3 g; k, r  Q- _& L        % P! n' g' _# s
        // get the root product which is the first element of root elements0 I# a2 G1 x6 Z/ @6 U7 L
        CATListValCATBaseUnknown_var* pRootProducts =
/ v& x; _2 s% n                piDocRootsOnDoc->GiveDocRoots();
1 K/ ?0 g5 w7 H* r        CATIProduct_var spRootProduct = NULL_var;
) ?- ~' l' T# j          P8 p! Z# W# ]5 j
        if (pRootProducts && pRootProducts->Size())4 f# |1 ?2 b2 H# q* s6 M
        {  
$ j' L# i; |! k% ?# `0 d  E- `                spRootProduct = (*pRootProducts)[1];
. L, M$ H, i" J" ^" F                delete pRootProducts;2 t) D( |# Q' r, }
                pRootProducts = NULL;
; D/ F4 e( A$ M" P" v        }: @! J6 u$ i3 N3 d% k7 |
/** @anchor err_1 piDocRootsOnDoc not set to NULL after release */ $ V- G& }$ d2 D/ R
        piDocRootsOnDoc->Release();
1 `! Q4 c6 U6 U+ f5 `3 x        piDocRootsOnDoc = NULL;% V4 U; b; ^# @4 _6 ~
       
2 J  T8 t' `' V" t  x# h* W        // Get CATIProduct handle on the root product.
4 |( q( C" C7 U5 ^        CATIProduct *piProductOnRoot = NULL;; l$ h& Z% Z* [
        rc = spRootProduct->QueryInterface(IID_CATIProduct,' B. }9 G0 _5 @) u, R' [3 U( ~
                                               (void**) &piProductOnRoot);- R! E' k/ L; R( H
        if ( FAILED(rc) ) return 3;
, X# H( D8 C1 @3 b* `5 L6 T0 ~" `$ ]/ A6 F
        /* ---------------------------------------*/
  V: f$ g1 s9 o8 m) v& R        /* 3. Retrieves children under the root   */
8 W1 r0 s  s, u: x2 z        /* ---------------------------------------*/- T+ i. X7 S  W0 N
       
& A3 w8 c8 g* C8 y. L        int nbOfDirecTChidren = piProductOnRoot -> GetChildrenCount() ;0 J* N. z; D5 F+ L( S9 k+ z
        cout << " Number of direct children under the root = " << nbOfDirectChidren << endl << flush;: u7 D% T- X, {/ R" z/ C
        ( H! c1 m$ ^) J5 ]3 N# M6 l
        // then on a root product, get all the children agregated to it.
% L7 Y3 q0 O  |" @8 ?" M- c5 U        CATListValCATBaseUnknown_var*   ListChildren =# z* i$ S- e! X: O
                piProductOnRoot->GetAllChildren();
5 ?3 L& r6 ^% U/ E/** @anchor err_2 piProductOnRoot not set to NULL after release */
: D! w3 p( s, A+ U2 z/ G- c        piProductOnRoot -> Release();1 E0 i! _) }( ]. I! K
        piProductOnRoot = NULL;; T( Q  g3 ^5 R/ m
        if(NULL != ListChildren)) r# F4 D7 p$ S# D. d* c5 P5 f+ H
        {: ?8 G9 x1 |2 ~1 b4 r; f3 n
               
: s) u0 s5 S2 V4 t& I                int numberOfChildren = ListChildren->Size();
" Z% [5 Z. {" B2 ]- K. w7 r; t                cout << " Number of all children under the root = " << numberOfChildren << endl << flush;
6 b$ z" r# k+ j, [# e( S7 `2 C: x! i& |4 D8 ?" V
                /* -----------------------------------------------------------*/
4 P0 k. E, k9 ~1 j% P5 f! r: q                /*  4. For each child, get its partNumber, and InstanceName   */4 ?0 k* a6 _& J' M7 F& c3 C
                /* -----------------------------------------------------------*/# g6 {9 ^+ n$ ~3 `1 e5 \
                CATIProduct_var spChild = NULL_var;
- H/ e( D, }( Z1 L                for (int i=1;i<=numberOfChildren;i++)0 n& p0 w& o% {( G% y2 c
                {
* Y. `) @9 u6 z1 f$ H                        spChild = (*ListChildren);7 v( ?1 U& P( B. C- ~7 U' ?
/** @anchor err_3 spChild not tested before use ( if !! ) */
1 L  m2 F. B3 D                        if ( NULL_var == spChild ) return 4;# N! G" F% G) F$ |/ C" d
                        CATUnicodeString partNumber = spChild -> GetPartNumber();
2 K0 |! q% Y0 v. J8 i( W                        CATUnicodeString instanceName (" ");
! c- r) s) z. h# F3 h                        rc = spChild -> GetPrdInstanceName ( instanceName ) ;
: G; u  g- T0 n  k6 p* X# j0 R2 ]4 z                        if  ( FAILED(rc) ) return 4;
9 [; j0 R7 M, F' Q                       
* Z3 r8 X8 m0 G$ H) f                        cout << " child number : " << i << endl << flush;/ M9 T4 H8 c  u; w2 f' }
                        cout << " has as part number : " << partNumber.CastToCharPtr()  << endl << flush;
( u1 {: i4 B# V1 }8 w                        cout << " and as instanceName : " << instanceName.CastToCharPtr() << endl << endl << flush;2 |6 b0 b* R5 `# M! w+ q
                }
; v% G' |( ~4 y& k" y. @+ W! G                delete ListChildren;
) I, X) `$ m& h2 [( s& s                ListChildren=NULL;; q1 O3 \: e. T! y0 l
        }        5 U6 G+ k: H4 _/ A- x# w+ P
        /* -------------------------------------------- */
2 p, S# J7 b, i8 {9 @2 N" V        /*   Ends the session                        */5 v3 {& Q& e% t: f* ]  e
        /* -------------------------------------------- */[/mw_shl_code]# R) S" Q! l% P
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了