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

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

[复制链接]

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

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

admin 楼主

2018-1-10 10:12:25

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

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

x
6 T  G, o5 U+ C
Catia二次开发源码分享: 获取装配所有组件列表) I+ R3 g  F. u
" U7 k# e, V  y. G  D" S, G

+ o9 G9 }  o4 t* l' V[mw_shl_code=c,true]/* ----------------------------*/5 v- F3 Z1 r* |( x3 N1 ]) H
        /* 2. Retrieves Root Product   */& M' q, ^3 l3 R; _' p
        /* ----------------------------*/. k. C- D9 [+ m
       
% U6 L4 D1 K$ r3 F$ ~/ x& G+ G) }        // Begin navigation throUGh the document => start with the RootProduct., G$ Z6 o3 r: z" Q: y
        CATIDocRoots* piDocRootsOnDoc = NULL;
) x' l+ H* \# l* Q        rc = pDoc->QueryInterface(IID_CATIDocRoots,0 T# i2 a6 o  w6 x% ~% I. V
                                      (void**) &piDocRootsOnDoc);
- B; k) x- K0 f        if ( FAILED(rc) ) return 3;% x  a* U6 \% v
       
6 V, A- j5 l+ L% i! n        // get the root product which is the first element of root elements
7 M: [* I4 A1 A: Q        CATListValCATBaseUnknown_var* pRootProducts = 1 k6 |7 m8 K, ]
                piDocRootsOnDoc->GiveDocRoots();  B5 [% M  W2 x$ O0 o5 J
        CATIProduct_var spRootProduct = NULL_var;
9 O$ F& Z# g) x  x! A4 ^; r+ W& _* y       
/ _. V3 i4 W/ v' [        if (pRootProducts && pRootProducts->Size())
$ z' k2 s/ a4 [) F3 m) ]2 i0 @        {  
" _* O# D. F8 u( i& r% @                spRootProduct = (*pRootProducts)[1];
! P/ F$ A% t9 v7 }8 h3 B- s                delete pRootProducts;( A2 y; L$ I9 y, h4 b& y7 S
                pRootProducts = NULL;
0 M' f4 n# R) z8 z        }& F' G7 P" a3 e' L2 |$ H
/** @anchor err_1 piDocRootsOnDoc not set to NULL after release */ 5 {6 V) n% w( r1 Z$ |& L: h
        piDocRootsOnDoc->Release();
. \: `8 \% W, X( ~% b! a2 a) D4 |$ [        piDocRootsOnDoc = NULL;
; L9 G" R4 _3 A4 R/ Z% ^$ ~) v        . r7 I, q1 O6 ~8 [" `
        // Get CATIProduct handle on the root product.% }1 Q. J4 v* h
        CATIProduct *piProductOnRoot = NULL;
; }/ @% W# z- J4 _        rc = spRootProduct->QueryInterface(IID_CATIProduct,
. ]$ A% V& v9 }! o' J/ Y2 u                                               (void**) &piProductOnRoot);
; ?% c7 }5 S! H: y6 l        if ( FAILED(rc) ) return 3;5 h' x6 H( g+ y4 i4 X

4 A3 {# O6 R0 u        /* ---------------------------------------*/
; d9 ~0 K2 [% @5 t) g) U! `        /* 3. Retrieves children under the root   */1 G( G0 }4 F6 u( e6 v+ q
        /* ---------------------------------------*/
! ^7 ]2 V7 I, _6 D4 r4 |. j' {       
! J- `! k) l- d4 X7 N$ a# r        int nbOfDirecTChidren = piProductOnRoot -> GetChildrenCount() ;
+ _, U5 V1 T: }; O/ W        cout << " Number of direct children under the root = " << nbOfDirectChidren << endl << flush;$ `" h% }  f& x( l
       
# ^: W7 F% L* o+ ~" ?% g0 b7 P        // then on a root product, get all the children agregated to it.  p. Z( z; H- Z0 v1 X
        CATListValCATBaseUnknown_var*   ListChildren =
7 b5 D8 |; d$ J8 f6 N5 R0 N                piProductOnRoot->GetAllChildren();
9 a& E4 v3 c. o1 Y6 Y/ f: D) d/** @anchor err_2 piProductOnRoot not set to NULL after release */ 4 h) H/ Q; C- X! O' [7 ?  g0 A
        piProductOnRoot -> Release();7 Z  S/ ^2 W3 @- r+ c
        piProductOnRoot = NULL;
: O  e9 h$ [4 f, c        if(NULL != ListChildren)
! x* ]. O3 W) O, {+ x9 W        {
, t& Q' J0 ]4 E3 A                ) Q. G6 V$ C. k
                int numberOfChildren = ListChildren->Size();  i/ P5 ~3 S% I  l5 }0 @
                cout << " Number of all children under the root = " << numberOfChildren << endl << flush;: t8 D1 V+ d$ \1 L

/ d* b0 f6 u' d3 r                /* -----------------------------------------------------------*/6 B) W' P* l1 n# F
                /*  4. For each child, get its partNumber, and InstanceName   */! a7 X- c8 E. y" x
                /* -----------------------------------------------------------*/
1 C+ d0 g1 `# s9 }6 \2 D                CATIProduct_var spChild = NULL_var;
+ F5 L& [' d6 g+ Y8 c7 q: i3 f                for (int i=1;i<=numberOfChildren;i++), ^: [* q' f$ ?, Y
                {! r/ v. u- n5 C( Y6 G
                        spChild = (*ListChildren);1 Q% U/ b" q! g& V( Z( w
/** @anchor err_3 spChild not tested before use ( if !! ) */ 4 j. h% n5 b( }* R0 Q  z
                        if ( NULL_var == spChild ) return 4;
( N3 b# ^# ~7 I2 G: i                        CATUnicodeString partNumber = spChild -> GetPartNumber();4 ]- H2 z/ K7 E+ Q0 W" K( m
                        CATUnicodeString instanceName (" ");
% ~- N% V; u7 A  Z  b3 h: u! C- q                        rc = spChild -> GetPrdInstanceName ( instanceName ) ;
2 }& q2 Y) x5 k3 ]7 o                        if  ( FAILED(rc) ) return 4;
" k+ z3 G' N' m5 e2 ?                        , o# N1 I. f& L! t
                        cout << " child number : " << i << endl << flush;/ ^) y7 j, M# d/ Z
                        cout << " has as part number : " << partNumber.CastToCharPtr()  << endl << flush;' m: o& N7 S% w/ H2 H3 D
                        cout << " and as instanceName : " << instanceName.CastToCharPtr() << endl << endl << flush;6 T6 Y  _" s/ z9 m8 p. ?/ j
                }
; m% j7 I* _. G8 p5 e                delete ListChildren;
( G& f, {' Z1 C- `                ListChildren=NULL;5 j+ h9 K/ z# P; A4 b
        }       
5 _' U* C" ~* G' l! e        /* -------------------------------------------- */
) O. p# q3 z8 M% O% v        /*   Ends the session                        */4 g0 V' w0 `9 I' L9 K
        /* -------------------------------------------- */[/mw_shl_code]* C' V! j+ Z. V4 K# m# Z- \
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了