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

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

[复制链接]

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

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

admin 楼主

2018-1-10 10:12:25

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

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

x
; {* V0 l, P1 m7 T/ m  B& k1 Q7 h
Catia二次开发源码分享: 获取装配所有组件列表
/ J4 G% F# J. l! @! g3 p( X( b! ^" r# ~) g5 u! m$ X2 f' g) q
6 m6 N% \1 x3 v+ N! S& A
[mw_shl_code=c,true]/* ----------------------------*/! D3 t3 T5 U2 a- }( E# _
        /* 2. Retrieves Root Product   */
& [& K/ l+ J2 \  x        /* ----------------------------*/
$ ?/ b$ r1 n' Q( j3 ]5 E; b        % b0 ^# O; P: c' x( C
        // Begin navigation throUGh the document => start with the RootProduct.
+ V/ W2 V5 k( _8 Q' E& t        CATIDocRoots* piDocRootsOnDoc = NULL;
, v+ T' _' l* l, a* M        rc = pDoc->QueryInterface(IID_CATIDocRoots,/ m, v& i% @0 r8 V
                                      (void**) &piDocRootsOnDoc);
7 d+ c) s) p. u! J. _        if ( FAILED(rc) ) return 3;
" R  J  H. W4 v( K% S; S       
3 S" c& f) w* E' q& L        // get the root product which is the first element of root elements  H- e8 s) ?" w1 {" a- Z) R: X
        CATListValCATBaseUnknown_var* pRootProducts =
2 m$ @' {& g: X2 s( H1 `                piDocRootsOnDoc->GiveDocRoots();
0 x7 j$ q% e0 \  b0 o        CATIProduct_var spRootProduct = NULL_var;
9 V# d3 b4 O. x, m9 }       
: r% C" w+ z6 P7 q        if (pRootProducts && pRootProducts->Size())- N# W% `6 u. U& a# O
        {  9 x- O9 _0 p- o" H
                spRootProduct = (*pRootProducts)[1];! ^% Q+ X  n8 t( d9 Q7 {
                delete pRootProducts;" g$ t7 e( m! C
                pRootProducts = NULL;
2 V  X; z5 N+ n3 ^$ ?, S+ B( |        }
1 ]- s! F4 R; r6 N; y# o$ c/** @anchor err_1 piDocRootsOnDoc not set to NULL after release */
% J9 o& f( H7 L8 A9 I$ M        piDocRootsOnDoc->Release();1 G9 ?7 z( M) ?" ~" ]% I) a0 p
        piDocRootsOnDoc = NULL;
0 Q  g9 p# V! w4 L       
* G1 X% {- ?, v2 |. m        // Get CATIProduct handle on the root product.
1 ]( h) P7 U5 V% ~( {0 |        CATIProduct *piProductOnRoot = NULL;$ |2 U! ~; r* x; i" K7 q
        rc = spRootProduct->QueryInterface(IID_CATIProduct,$ \, o1 ~. S& U/ _
                                               (void**) &piProductOnRoot);. O; f' _- t7 Y0 P% Q
        if ( FAILED(rc) ) return 3;; b1 ]. n8 T+ t, W% K

* ]6 @' A+ a4 W/ h! A        /* ---------------------------------------*/
5 m9 q: g+ c0 I8 R4 B        /* 3. Retrieves children under the root   */
5 f- S! W9 `" [8 {1 T        /* ---------------------------------------*/
4 o, t4 D8 |0 i8 M. }* T       
8 {2 g5 X& P9 e* c" V        int nbOfDirecTChidren = piProductOnRoot -> GetChildrenCount() ;
5 d% D% `) A& K$ P        cout << " Number of direct children under the root = " << nbOfDirectChidren << endl << flush;2 \. g! w: a$ M' u+ y
        ; J" _) X6 }# e0 K
        // then on a root product, get all the children agregated to it.
% v9 a! L0 m3 ?- U        CATListValCATBaseUnknown_var*   ListChildren =
  W$ p7 s' g; @$ R6 @# x* u                piProductOnRoot->GetAllChildren();- K3 X2 ~. R# A* d) l3 m  T
/** @anchor err_2 piProductOnRoot not set to NULL after release */
8 o1 y7 |/ X. M0 r7 `        piProductOnRoot -> Release();
* `0 U* E' f( A; L/ ~$ [        piProductOnRoot = NULL;+ t- u( ?$ E" p6 ]4 L
        if(NULL != ListChildren)) x: x! {/ W: F% T
        {
# v+ u3 ~) u. z8 m  x                # K+ X4 K: z! M: Z2 m
                int numberOfChildren = ListChildren->Size();
4 ~( a2 H  s" n9 }& D                cout << " Number of all children under the root = " << numberOfChildren << endl << flush;
0 ^3 t7 r) P5 ?: O) K  y8 [% A: A% \/ p4 R4 j3 L
                /* -----------------------------------------------------------*/
' V" i, Y3 k: L; i% Z5 m8 u) w2 g& v                /*  4. For each child, get its partNumber, and InstanceName   */  D" i5 R2 x* W
                /* -----------------------------------------------------------*/* B  Z5 g- X  z2 i
                CATIProduct_var spChild = NULL_var;
( }2 l  F2 G! m, \" X3 b3 C1 S' z                for (int i=1;i<=numberOfChildren;i++)2 f9 [5 L9 W. G* G* m
                {4 G5 N  U- E1 l
                        spChild = (*ListChildren);) I: b( ]1 P) H; G% Q) B( H
/** @anchor err_3 spChild not tested before use ( if !! ) */
& N9 Y% A! P* U9 Q7 |) t, f6 {                        if ( NULL_var == spChild ) return 4;' X' I9 u6 P# k& H, [( h
                        CATUnicodeString partNumber = spChild -> GetPartNumber();' a. i  F$ I6 \7 I, B: ^' n
                        CATUnicodeString instanceName (" ");. m$ t- C0 t# _
                        rc = spChild -> GetPrdInstanceName ( instanceName ) ;: `5 r: t( f6 {0 _
                        if  ( FAILED(rc) ) return 4;
  j1 D5 F. X$ j# w9 x                       
$ P  M6 ?9 \1 c+ W4 T9 D                        cout << " child number : " << i << endl << flush;
" |  X& j$ o' w/ D# Z; x                        cout << " has as part number : " << partNumber.CastToCharPtr()  << endl << flush;# F' n4 H) ^( S& O
                        cout << " and as instanceName : " << instanceName.CastToCharPtr() << endl << endl << flush;+ {7 ^. z' U9 T' a
                }
. X5 _4 U: R2 G8 d. `                delete ListChildren;3 u* v- M. T, t$ `3 h( U. n
                ListChildren=NULL;5 R  z- O& X3 T) _6 I. x
        }        6 y' b! L6 X* d& X! V7 N0 }
        /* -------------------------------------------- */
  m/ }: h& P+ X2 i$ A, f& C. N        /*   Ends the session                        *// y4 p$ X' N3 |5 k' P; q
        /* -------------------------------------------- */[/mw_shl_code]
% _8 ?5 g6 L6 x+ e$ f5 N
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了