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

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

[复制链接]

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

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

admin 楼主

2018-1-10 10:12:25

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

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

x
7 J$ R1 {: y8 Q& K$ T( t' ^
Catia二次开发源码分享: 获取装配所有组件列表
) ~0 E- C& h% D  F3 d& Y' y3 T9 ]. W; W

: e. B5 g0 J" A. G# P/ B[mw_shl_code=c,true]/* ----------------------------*/: R  C; D' g! ]* A
        /* 2. Retrieves Root Product   */
4 D) w$ {$ k) N, s. X        /* ----------------------------*/
# v2 @$ i2 ^5 J' c  b4 {3 C        : E8 M8 X+ r$ N& K' L* |
        // Begin navigation throUGh the document => start with the RootProduct.' B  r0 Q( n6 l+ T. G! V& Y6 M
        CATIDocRoots* piDocRootsOnDoc = NULL;! l* F% j& K$ l- U
        rc = pDoc->QueryInterface(IID_CATIDocRoots,  I. H. n7 C* m$ U- f* R( R
                                      (void**) &piDocRootsOnDoc);
$ X# g$ {- Z. Z. z! @# N        if ( FAILED(rc) ) return 3;+ x4 q" R: S$ ?' X
       
0 Q9 _  H. ]+ V0 l6 V* D        // get the root product which is the first element of root elements
% S1 O: z( P9 b6 k        CATListValCATBaseUnknown_var* pRootProducts =
+ V9 B" e" R( M2 w3 q0 [                piDocRootsOnDoc->GiveDocRoots();
0 N# l6 N1 r: D        CATIProduct_var spRootProduct = NULL_var;" Q5 B/ g% ~$ |: C% F3 q0 ]
       
& c5 z3 B, i& _+ R* I" T# K3 l        if (pRootProducts && pRootProducts->Size())+ f- G, v# W- u9 y
        {  . `' a7 [/ h5 D
                spRootProduct = (*pRootProducts)[1];
8 E! y/ _+ t& l7 k2 `. r& l: p  t                delete pRootProducts;
: }7 j3 v8 y  N7 n# V0 ~                pRootProducts = NULL;6 X# m6 I8 T4 [6 q; i1 |  Z
        }
* W  @; _/ s6 {* _/** @anchor err_1 piDocRootsOnDoc not set to NULL after release */
( o- l. Y6 K$ g9 H        piDocRootsOnDoc->Release();
# R) X0 p$ b6 g* \7 I# |. J  a( ^        piDocRootsOnDoc = NULL;
# B1 g4 `- e  H       
  n: H, k7 _3 j& R        // Get CATIProduct handle on the root product.. {% i: M2 c' [4 C/ w8 V
        CATIProduct *piProductOnRoot = NULL;6 {" D- S) Y. K: T0 I1 O* z
        rc = spRootProduct->QueryInterface(IID_CATIProduct,
3 E! {$ A' U& H3 }                                               (void**) &piProductOnRoot);. w# ^0 U' n1 W- q2 d4 M
        if ( FAILED(rc) ) return 3;
& D2 g# ~4 t# [; W9 m- f
7 L# v" f( u8 S- L# |        /* ---------------------------------------*/8 f& c9 |0 F; \7 ?$ W" J  D& N
        /* 3. Retrieves children under the root   */
' t7 Y" H& t. m1 F' _- z& a        /* ---------------------------------------*/" y, r, {! c3 m0 R  S
       
; l& l3 a+ T. o        int nbOfDirecTChidren = piProductOnRoot -> GetChildrenCount() ;2 e0 a1 S3 U5 L: t. y& L" y* @  v
        cout << " Number of direct children under the root = " << nbOfDirectChidren << endl << flush;
$ @  w( ]# I$ x  C        & U' v7 b: P% F& v' H( e. I
        // then on a root product, get all the children agregated to it., d+ F3 Z/ H, k% \
        CATListValCATBaseUnknown_var*   ListChildren =5 O+ l$ W' [3 ~+ w  d4 s% c' {  ^
                piProductOnRoot->GetAllChildren();
( ^9 e4 I; j$ g- B/** @anchor err_2 piProductOnRoot not set to NULL after release */
4 m& T9 O/ u% ~9 F& N' H  B$ D+ V        piProductOnRoot -> Release();
; h7 v5 {! t* I9 \5 F% {7 R5 S        piProductOnRoot = NULL;1 n' B( P8 C0 B# @
        if(NULL != ListChildren), M/ E' T% r; g/ t8 X" r8 |
        {, r$ l2 @- K+ o* x8 O0 b+ A9 W
               
0 C- a9 ?) K1 j                int numberOfChildren = ListChildren->Size();
; x; O, P3 T" a6 _/ U; K' v- ~                cout << " Number of all children under the root = " << numberOfChildren << endl << flush;- a) X* k) A- N' J
/ d# H: h6 p1 ]) J. C, W* |( F
                /* -----------------------------------------------------------*/& I3 X% Z# E* C4 H2 x
                /*  4. For each child, get its partNumber, and InstanceName   */
1 U, v' E& ]" _2 ]                /* -----------------------------------------------------------*/
, X) a9 s' O% F4 X0 j* C                CATIProduct_var spChild = NULL_var;. g% j% c' C* A
                for (int i=1;i<=numberOfChildren;i++)
( N0 v3 d- @  p4 F2 K                {" \. d+ i9 f  T0 f
                        spChild = (*ListChildren);, {# n( W0 p! |) F
/** @anchor err_3 spChild not tested before use ( if !! ) */
! A4 G9 c+ j0 M; a$ w( k5 V" m1 M                        if ( NULL_var == spChild ) return 4;
% h& {. t( v5 K1 u                        CATUnicodeString partNumber = spChild -> GetPartNumber();( E  X" J4 |+ X! @
                        CATUnicodeString instanceName (" ");
5 {  Q7 I9 J1 h5 H+ F                        rc = spChild -> GetPrdInstanceName ( instanceName ) ;
" o, {2 [! [) n+ l' I                        if  ( FAILED(rc) ) return 4;" ^! @! N  t! a- B# K" A0 z: n: u
                        % ]" m. w3 I1 o' `9 n' Y
                        cout << " child number : " << i << endl << flush;
: \/ w, Q1 X4 Q4 K                        cout << " has as part number : " << partNumber.CastToCharPtr()  << endl << flush;
% L2 F6 h& x  h2 {: a6 T                        cout << " and as instanceName : " << instanceName.CastToCharPtr() << endl << endl << flush;2 R# j2 |6 {5 ]
                }" [) ]- y7 Y# H
                delete ListChildren;1 \8 E" M- Q: b+ |
                ListChildren=NULL;% v! E+ W2 a6 B4 _  [& @$ ^
        }       
9 y! w4 E% Y. m2 b) ?        /* -------------------------------------------- */5 [: p$ g& U8 u% _) o( o
        /*   Ends the session                        */
. G" k! w. ^( M' g6 u        /* -------------------------------------------- */[/mw_shl_code]
9 c0 S) j$ g( h+ ^9 F6 V
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了