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

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

[复制链接]

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

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

admin 楼主

2018-1-10 10:12:25

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

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

x

9 s( y8 o+ Z* [. J3 R5 lCatia二次开发源码分享: 获取装配所有组件列表
6 Z3 ?2 h/ n# F% G  j: A' @" R7 m$ c; |9 R1 h. M0 t* `
7 i$ i- \/ f: X7 k4 z7 k
[mw_shl_code=c,true]/* ----------------------------*/
% f- T  x8 s3 n        /* 2. Retrieves Root Product   */; @+ N0 o0 {% k
        /* ----------------------------*/8 J3 A1 i; A3 P8 i" E8 o1 e
       
8 D, F- Q+ q8 }        // Begin navigation throUGh the document => start with the RootProduct.7 H& f0 Y8 J. @: A
        CATIDocRoots* piDocRootsOnDoc = NULL;5 \% g# K) c. w3 I
        rc = pDoc->QueryInterface(IID_CATIDocRoots,
7 B4 G. c4 \  R                                      (void**) &piDocRootsOnDoc);
6 e  D1 }6 h5 ]  |        if ( FAILED(rc) ) return 3;/ U7 x0 u. K0 R4 O$ d/ x7 P. \5 l& Y
        . W; L+ H, {( I- M; Y
        // get the root product which is the first element of root elements
7 `- J" j0 N& y7 g0 i  s: `5 }        CATListValCATBaseUnknown_var* pRootProducts =
  o* i. v7 N8 h8 A                piDocRootsOnDoc->GiveDocRoots();
  F. B% B) N! O' ^/ F        CATIProduct_var spRootProduct = NULL_var;
; U% ]5 J, d' e3 A2 _& S        ! V( n/ D+ J& C0 R) U) j
        if (pRootProducts && pRootProducts->Size())1 Q- k4 P# A* p% v5 \4 D, O2 d! N0 A
        {  
4 q! y, r" `" }                spRootProduct = (*pRootProducts)[1];  [- _" _* ?" M
                delete pRootProducts;
# L+ i, ^/ W+ k, T8 B4 A6 M3 _                pRootProducts = NULL;4 R& W/ X# e! O7 e1 u
        }
- |4 M# r- g% ]/ [$ ]) G* p/** @anchor err_1 piDocRootsOnDoc not set to NULL after release */
' p1 l* J4 F, V  B7 l. j        piDocRootsOnDoc->Release();
0 Y- p9 I$ h/ G        piDocRootsOnDoc = NULL;
) \/ Z0 }4 ]3 `( e( @7 C$ j- i       
2 P6 [6 M; L- p  p0 L, X/ e% Q        // Get CATIProduct handle on the root product.: _6 U. f0 h; ^5 r% V
        CATIProduct *piProductOnRoot = NULL;! }: A4 e7 K$ F) _" y- W, T, k
        rc = spRootProduct->QueryInterface(IID_CATIProduct,
4 W3 O% r8 ]' g- r/ t) F# T1 E6 g                                               (void**) &piProductOnRoot);9 J& D2 m- {; ~# H( A+ f' z
        if ( FAILED(rc) ) return 3;1 v2 ?$ k& I' x% x
  p$ Q: F% z1 a7 X0 q
        /* ---------------------------------------*/% k; o5 a  Y" B5 {
        /* 3. Retrieves children under the root   */
- R1 s3 {, g& L6 @9 Y7 N        /* ---------------------------------------*/! g( |4 \5 i1 u9 U6 H: t; m
        , z' t# T/ M3 z- [  |7 J4 E
        int nbOfDirecTChidren = piProductOnRoot -> GetChildrenCount() ;2 M3 D7 I3 n3 g# A2 K$ I
        cout << " Number of direct children under the root = " << nbOfDirectChidren << endl << flush;7 e( `( X% q9 S+ l+ e" c2 q7 Q
       
, C# F! N3 _1 E8 l) [- q5 K: r7 n        // then on a root product, get all the children agregated to it.6 Y" o: k/ [' Y' _+ T% {1 c
        CATListValCATBaseUnknown_var*   ListChildren =# T$ h' O1 c- r0 I' a% y. V
                piProductOnRoot->GetAllChildren();' y. ]! {: k; L7 b
/** @anchor err_2 piProductOnRoot not set to NULL after release */ ( ]; z" K; Q0 K( U# d
        piProductOnRoot -> Release();
* I& O9 x- J: S; W' D* _        piProductOnRoot = NULL;& n0 r" w- W: R* Q, ~
        if(NULL != ListChildren)
( ~, K2 m: \3 G  Y' t, G8 o8 L8 ~        {" q* P( j7 [5 X. O8 h/ V/ T  |. l
               
9 d. a4 P0 h4 J+ a                int numberOfChildren = ListChildren->Size();
: d5 Z' \7 |! s* e8 Q                cout << " Number of all children under the root = " << numberOfChildren << endl << flush;
! I& B  Y! j/ j3 Y8 ]
' {# E" A, Y- F( D! p+ ^* H" _% e                /* -----------------------------------------------------------*/9 O4 D1 |% E( b+ y
                /*  4. For each child, get its partNumber, and InstanceName   */
; M) O2 ~# ]+ k. V' {1 Q# R# g                /* -----------------------------------------------------------*/& h9 ?0 ~" [% P( D* v5 b
                CATIProduct_var spChild = NULL_var;1 V8 _  L5 ]# M- o
                for (int i=1;i<=numberOfChildren;i++)$ X* h4 Q4 }" ^9 p
                {  Q" S( Z) h$ Q  m& U0 a9 W
                        spChild = (*ListChildren);
! P- M" y$ J+ Q$ c4 [0 g/** @anchor err_3 spChild not tested before use ( if !! ) */
1 ~, l' |8 y: t( J: s                        if ( NULL_var == spChild ) return 4;
- E# {/ ~, \" C5 R- x                        CATUnicodeString partNumber = spChild -> GetPartNumber();
# i9 _1 a- W( l7 \% M                        CATUnicodeString instanceName (" ");1 ^/ q: {5 {0 m1 |
                        rc = spChild -> GetPrdInstanceName ( instanceName ) ;+ |( d' [0 M0 ?' A6 n0 x. F
                        if  ( FAILED(rc) ) return 4;
- S6 Y* u' g9 x2 O; k* f                       
& x, O/ B+ [0 I# P' u. h                        cout << " child number : " << i << endl << flush;
) m2 p2 Q' e6 `' i8 x0 [+ x                        cout << " has as part number : " << partNumber.CastToCharPtr()  << endl << flush;
  a* \; q9 y; r0 V4 J, u3 x5 J+ z( Z                        cout << " and as instanceName : " << instanceName.CastToCharPtr() << endl << endl << flush;
3 l( Q/ P5 y; `" V                }
1 O/ v( `. o5 r& h                delete ListChildren;3 y# ]. A* V; w- I/ D6 t* |# L
                ListChildren=NULL;9 A- T  \5 w: D5 k- G" e" [
        }       
7 a( ~) w7 f) m, j. l, V7 o9 n        /* -------------------------------------------- */
! I  P8 G1 r  Z2 k/ ^; Z        /*   Ends the session                        */: B% ^8 @, ]8 M5 M4 T7 W
        /* -------------------------------------------- */[/mw_shl_code]# a$ r% X6 U8 o0 {/ e
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了