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

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

[复制链接]

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

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

admin 楼主

2018-1-10 10:12:25

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

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

x
. ~; S8 m( a; V# y) R& ^
Catia二次开发源码分享: 获取装配所有组件列表
" e; {8 p2 ~( f1 V6 b, d' _3 v0 R  k8 E) P# Y0 W9 v3 [% \
& k) t. D$ O( a% N# h
[mw_shl_code=c,true]/* ----------------------------*/8 e+ ]) N1 w1 W4 N; c. e
        /* 2. Retrieves Root Product   */. T8 h# C* O! m' a6 S" U- `
        /* ----------------------------*/
9 e& [1 Z: p0 |       
- n5 \4 \, Y* s9 l, S; G5 n: N        // Begin navigation throUGh the document => start with the RootProduct.
1 n3 C" {/ g" |8 i3 W! H6 p        CATIDocRoots* piDocRootsOnDoc = NULL;0 M1 G* |) x8 W/ j8 q
        rc = pDoc->QueryInterface(IID_CATIDocRoots,# f9 F. h1 ?1 ]1 ?/ t* [6 V' D9 h# e
                                      (void**) &piDocRootsOnDoc);
" x$ W) W$ [/ l  ^$ o8 Y        if ( FAILED(rc) ) return 3;( O- R- P8 I) |
       
, t- m. m3 V' }) j* m* O! m        // get the root product which is the first element of root elements
( q6 |6 k2 Y  A1 q) l5 G        CATListValCATBaseUnknown_var* pRootProducts =
" a. V1 Y5 S3 E( @$ y                piDocRootsOnDoc->GiveDocRoots();
# T/ S2 V: s8 j        CATIProduct_var spRootProduct = NULL_var;
$ B6 ^" u2 F  ~2 v# Z4 z! o        + e8 C; f) U8 E( k4 |
        if (pRootProducts && pRootProducts->Size())$ _& K  j& B& o2 D
        {  5 \- C& V4 r6 A; d
                spRootProduct = (*pRootProducts)[1];
3 ?4 e8 d- x" a& q) w                delete pRootProducts;
% \1 s: T4 z4 e1 o  z                pRootProducts = NULL;) M  K  s" d5 F3 l$ M
        }
( i; e. O, @7 l8 [/** @anchor err_1 piDocRootsOnDoc not set to NULL after release */
4 a" ]1 z. D# ]$ Q        piDocRootsOnDoc->Release();2 S6 y. N# B* m& E, W
        piDocRootsOnDoc = NULL;
# l8 i; Z+ X; _. a3 C        & ~8 q6 Z+ X5 e* F# d7 w: V
        // Get CATIProduct handle on the root product.2 ]* g2 Y( ]8 P+ z  s1 m
        CATIProduct *piProductOnRoot = NULL;1 D9 [1 k8 P' u+ }
        rc = spRootProduct->QueryInterface(IID_CATIProduct,/ [9 r; b8 [* \7 T; R
                                               (void**) &piProductOnRoot);
, ?! L; ?4 D! [& o        if ( FAILED(rc) ) return 3;% {; \$ z4 ?7 @# N; {: N

& d4 w3 {  ]3 W: j        /* ---------------------------------------*/
# ~6 ^3 e# Z, r; s        /* 3. Retrieves children under the root   */
$ W9 ?. U$ g, c( C+ t$ r( t        /* ---------------------------------------*/
9 ?7 l3 l: N, d$ H+ g% T. E       
3 b9 D' b) |, K        int nbOfDirecTChidren = piProductOnRoot -> GetChildrenCount() ;# c. x4 |9 U7 b) ?% I4 E0 ]* Z
        cout << " Number of direct children under the root = " << nbOfDirectChidren << endl << flush;
; A4 P9 t1 U3 \0 `- }) m       
& Y" D# V7 N6 Y1 b; f8 B        // then on a root product, get all the children agregated to it.
1 ?: E7 g; s5 n( f0 m& k2 P1 R( u        CATListValCATBaseUnknown_var*   ListChildren =6 _0 h+ B: j- B1 |' P; A& R
                piProductOnRoot->GetAllChildren();4 a6 s# I9 {7 d
/** @anchor err_2 piProductOnRoot not set to NULL after release */
( j/ v5 g0 F4 C2 p0 e        piProductOnRoot -> Release();
: f$ K, P  c5 `1 f        piProductOnRoot = NULL;
4 d( {: C/ F  D" n6 _        if(NULL != ListChildren)7 _1 `: z0 c# d1 r5 j
        {
) E8 x% ?; ~5 W- a% D# K  G                ) W0 p2 S( a4 m7 l/ f5 D3 J
                int numberOfChildren = ListChildren->Size();
2 e0 D& a; H& \( T                cout << " Number of all children under the root = " << numberOfChildren << endl << flush;
7 c( t& O# z' ?' Z6 u1 J
* r3 x1 L% B1 u0 G3 h" C                /* -----------------------------------------------------------*// K0 Z" [" J2 Y5 d+ p6 G
                /*  4. For each child, get its partNumber, and InstanceName   */+ m, F' P7 z2 K8 u. M- a
                /* -----------------------------------------------------------*/8 C& `5 X; N* g
                CATIProduct_var spChild = NULL_var;" |3 Y/ F& J1 Y  H
                for (int i=1;i<=numberOfChildren;i++)) a# \  v: t" P+ ]- n
                {
6 c4 ~) \* q5 N5 G( E: H% |; s                        spChild = (*ListChildren);
' @; h0 a7 r* q% i0 B/** @anchor err_3 spChild not tested before use ( if !! ) */
, E. f1 f0 d; Y, Q% V6 i4 y1 ?: ^5 k                        if ( NULL_var == spChild ) return 4;! r- |' I' c% u
                        CATUnicodeString partNumber = spChild -> GetPartNumber();# j8 N3 p& u; j3 l
                        CATUnicodeString instanceName (" ");: W. V8 S* A4 }1 m9 M
                        rc = spChild -> GetPrdInstanceName ( instanceName ) ;
' q2 K" `0 y9 l2 V1 _                        if  ( FAILED(rc) ) return 4;+ @5 q! w2 J+ p; F5 R
                       
- D. ^; r& k1 B: h# g                        cout << " child number : " << i << endl << flush;
; i% V+ E' v" K3 T3 Q# H                        cout << " has as part number : " << partNumber.CastToCharPtr()  << endl << flush;' {3 i2 Z$ h: B7 X
                        cout << " and as instanceName : " << instanceName.CastToCharPtr() << endl << endl << flush;) d( O6 i2 _3 Z, X5 L
                }
) [; Q3 v3 X: X; d! i2 ?                delete ListChildren;7 {* c5 ^" g5 W$ H: T: ?
                ListChildren=NULL;
% C: X7 i2 n- f% H- P; t7 p, Q+ \5 a        }        , L9 {1 y4 P! b/ T0 v2 @: U; q/ Q
        /* -------------------------------------------- */  g/ ?+ G. K2 I* j3 v8 G) M
        /*   Ends the session                        */; E7 h5 S! r5 ~+ }
        /* -------------------------------------------- */[/mw_shl_code]
0 }0 w7 z' L# o& P
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了