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

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

[复制链接]

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

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

admin 楼主

2018-1-10 10:12:25

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

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

x

$ E- q. F" G; Y; U( H/ B/ d) K5 d  hCatia二次开发源码分享: 获取装配所有组件列表
& ?7 y  ^$ Y. U0 d3 J# l! J" Q2 K
" t4 O6 _6 C& L& s& I* n. I1 r3 @! W" G- ~
[mw_shl_code=c,true]/* ----------------------------*/& l) V8 n# X0 S8 l1 ], n1 S7 [+ W
        /* 2. Retrieves Root Product   */
6 M2 A& Q# S& t( [        /* ----------------------------*/
, @+ [! ~8 S) i       
! K6 r  Q/ A2 v2 |) M        // Begin navigation throUGh the document => start with the RootProduct.
& a) c0 A: s& W9 _        CATIDocRoots* piDocRootsOnDoc = NULL;, K& `  B% z! {
        rc = pDoc->QueryInterface(IID_CATIDocRoots,, f0 \1 @, r4 k7 G
                                      (void**) &piDocRootsOnDoc);2 q$ O- I8 j" w
        if ( FAILED(rc) ) return 3;; }- d+ A4 X1 F# D
        # t) Q" W/ q  L$ V9 F5 J
        // get the root product which is the first element of root elements
3 z, D7 g7 Y8 u        CATListValCATBaseUnknown_var* pRootProducts = % i  F) p% k' O& x8 t- B/ w" J
                piDocRootsOnDoc->GiveDocRoots();
' E: a  w# h. o. r        CATIProduct_var spRootProduct = NULL_var;
( s: D( D! }) K& B# p       
3 A- z% Z# l( b: c        if (pRootProducts && pRootProducts->Size())
5 u# z' `* U6 G2 N- F" T        {  
  |: y, U; _4 v) n/ c                spRootProduct = (*pRootProducts)[1];4 u* C# b  x3 q
                delete pRootProducts;
0 Q8 ~% _- \4 _0 e7 a) g                pRootProducts = NULL;7 _9 h6 o: v. Z" B  }+ {8 @1 ]
        }/ M* b% i2 n9 T: ^7 V4 e+ m7 V, \
/** @anchor err_1 piDocRootsOnDoc not set to NULL after release */ $ a$ p5 J, K5 b1 Q
        piDocRootsOnDoc->Release();
) s" M3 g; K% }. \( y        piDocRootsOnDoc = NULL;7 k) t. y& B( D. P6 a; B& x
       
* O% [& w) D- O2 h' E5 o, |        // Get CATIProduct handle on the root product.
3 _. Y: ~3 J; f% r$ P+ p% {- w        CATIProduct *piProductOnRoot = NULL;& E9 M" Z# r0 ^' F+ ~: r: m$ j
        rc = spRootProduct->QueryInterface(IID_CATIProduct,  ~# q9 }" F  m7 \0 P% X
                                               (void**) &piProductOnRoot);
2 v/ E2 F) L, Q1 s( i( `# W        if ( FAILED(rc) ) return 3;
+ `3 v/ f6 p  u' O) Q- G; u7 q& R9 d0 E: ~4 o" e
        /* ---------------------------------------*/, e0 `  v0 T; _6 c7 o7 r3 y, u* W7 y
        /* 3. Retrieves children under the root   */
$ ^0 W( Q# @+ }' @) H        /* ---------------------------------------*/
3 Q  [" |+ w" Y        9 q' l$ j5 ~* j
        int nbOfDirecTChidren = piProductOnRoot -> GetChildrenCount() ;
+ T' e, _) u9 E! W8 K1 \+ C: y3 H        cout << " Number of direct children under the root = " << nbOfDirectChidren << endl << flush;
3 Y6 i1 J" p* D        ' e2 L: L% B/ H( r: d3 z4 |# p
        // then on a root product, get all the children agregated to it.
! S; b$ Q9 P) e/ p( v' W" ]& d! [        CATListValCATBaseUnknown_var*   ListChildren =' |( H5 f; D- {) e. Y
                piProductOnRoot->GetAllChildren();
# C4 F3 N+ k4 V! Z4 P" _/** @anchor err_2 piProductOnRoot not set to NULL after release */
+ H( r2 V+ i. H" |3 @8 ^4 p        piProductOnRoot -> Release();6 C3 O- L( u3 o* g
        piProductOnRoot = NULL;& \- C6 ~: `* Y1 P, a, u
        if(NULL != ListChildren)
% f& `. }5 C5 R/ t* g        {
! J3 q9 o' b! \" N% m. r" p( T               
5 q5 H8 y* ~3 Y4 S! |9 c, Q9 l+ V                int numberOfChildren = ListChildren->Size();
0 @7 Q0 V7 @# w0 ^                cout << " Number of all children under the root = " << numberOfChildren << endl << flush;2 J3 a$ ]' L5 Q9 {
' ^/ y- e. H  t
                /* -----------------------------------------------------------*/3 D+ h9 Q" [! q" L$ h
                /*  4. For each child, get its partNumber, and InstanceName   */
9 \' x% p% G2 R3 y                /* -----------------------------------------------------------*/. E7 S0 e: f- v& h" j4 `+ c" I, K
                CATIProduct_var spChild = NULL_var;( @  o: a6 p* R. P3 i; d+ _
                for (int i=1;i<=numberOfChildren;i++), U3 n# e$ r+ g' H
                {
+ \% K8 a* ?3 [# A0 P5 k' d                        spChild = (*ListChildren);5 f+ H. M1 m% V
/** @anchor err_3 spChild not tested before use ( if !! ) */
5 M1 K1 d& g, f6 U                        if ( NULL_var == spChild ) return 4;
7 o- e" }' e- L" ~+ N9 Z                        CATUnicodeString partNumber = spChild -> GetPartNumber();
; [# N9 [- U# P8 p( E1 G                        CATUnicodeString instanceName (" ");
2 ]8 Y0 D# ~9 i                        rc = spChild -> GetPrdInstanceName ( instanceName ) ;/ q8 b# B4 U3 F% Q' W
                        if  ( FAILED(rc) ) return 4;! x1 f# p" \) g; {5 f. c5 ?
                       
$ i) Z9 y& d* A6 W/ s                        cout << " child number : " << i << endl << flush;5 F; V* |0 W4 W' x$ G% h
                        cout << " has as part number : " << partNumber.CastToCharPtr()  << endl << flush;
8 _, H$ \$ z! t. n$ r  R3 F4 [# y, N                        cout << " and as instanceName : " << instanceName.CastToCharPtr() << endl << endl << flush;
/ \2 h! v& f' e) H& n  M- o                }
4 n4 m1 s! N: l7 |& L                delete ListChildren;
' Q, B( g0 D, \8 }' p                ListChildren=NULL;
) }- }/ v% @' V4 |. I$ I% f        }       
9 w2 M9 h, _7 w9 U: M/ Z. _        /* -------------------------------------------- */
, q" N$ Q! Y% G/ |# G! B( f2 h8 }, A" B        /*   Ends the session                        */
; w' d  e! T" v' k/ S! m) d5 z        /* -------------------------------------------- */[/mw_shl_code]$ A# r& u" h. G/ v6 `2 a
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了