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

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

[复制链接]

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

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

admin 楼主

2018-1-10 10:12:25

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

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

x

/ L4 Q5 n* ~* D7 ^) ?Catia二次开发源码分享: 获取装配所有组件列表
( x0 R6 O) A8 h- B5 f. q, v' ^& ~7 y# ~2 z6 X' l  f. E" ?9 D

% f/ g2 H+ x& L[mw_shl_code=c,true]/* ----------------------------*/& q! `& Q. ^( _/ V! e1 t( U
        /* 2. Retrieves Root Product   */
  R+ S5 ~$ E5 i, T( l        /* ----------------------------*/
. w$ C7 O- r% L       
( C9 Y( Z$ Q- ?2 \        // Begin navigation throUGh the document => start with the RootProduct.
$ q5 e  T- M6 q+ l  ~        CATIDocRoots* piDocRootsOnDoc = NULL;$ a# q% F9 B; t4 {
        rc = pDoc->QueryInterface(IID_CATIDocRoots," X( U2 q! a! z0 ?- x) z
                                      (void**) &piDocRootsOnDoc);
* j3 c8 E% w: q        if ( FAILED(rc) ) return 3;& W, _7 p% O  A4 J( Q1 }9 `7 Y
       
/ P9 ~5 Q, V, z& m- V' p        // get the root product which is the first element of root elements  h" u6 o0 G/ R6 M) M" y8 _2 n
        CATListValCATBaseUnknown_var* pRootProducts = 2 _9 X. \+ {8 o3 t; ]. T; i
                piDocRootsOnDoc->GiveDocRoots();% |5 s3 U( W8 i  |
        CATIProduct_var spRootProduct = NULL_var;5 x! M6 D0 J* i- q8 t
        : U4 g# b! H0 c  J1 `2 N9 ^
        if (pRootProducts && pRootProducts->Size())9 B; `$ ?) O3 U/ x$ M
        {  
2 O% F- d/ ~" t+ h0 k' h                spRootProduct = (*pRootProducts)[1];' F0 j; O0 n, r6 y
                delete pRootProducts;2 E& p5 X' u4 N6 ^
                pRootProducts = NULL;+ X0 G; n+ }, O7 D6 m* y
        }
9 q5 M) z9 ~# \$ w* c/** @anchor err_1 piDocRootsOnDoc not set to NULL after release */ # A6 D" W: C3 i
        piDocRootsOnDoc->Release();% W3 Z) F  `: I) V
        piDocRootsOnDoc = NULL;0 C. D, e' i' g4 c4 f, \
        % J$ M( n8 p7 g0 r, P( v
        // Get CATIProduct handle on the root product.
# n3 h5 f; `' X# K        CATIProduct *piProductOnRoot = NULL;+ i' m8 p2 G+ j- u
        rc = spRootProduct->QueryInterface(IID_CATIProduct,7 x8 {8 u/ E4 s) \. z
                                               (void**) &piProductOnRoot);
* g1 e5 M, n8 g        if ( FAILED(rc) ) return 3;. n' s6 r& G; m: ?8 `2 H
7 U2 ?9 D: v. M
        /* ---------------------------------------*/8 v: f9 J/ V2 F8 ^& S" y& O6 c6 V- V
        /* 3. Retrieves children under the root   */: H" w- H0 X$ u! K
        /* ---------------------------------------*/
) ?* |' y; E% O9 R. P$ `( q$ {# R        # }2 y4 g3 c. `3 G% B9 Z: _
        int nbOfDirecTChidren = piProductOnRoot -> GetChildrenCount() ;" t" q' ~4 S4 Z. }
        cout << " Number of direct children under the root = " << nbOfDirectChidren << endl << flush;( h$ T8 e- p0 B! `
       
# R# ^+ G* f* W% u& J" ?; l        // then on a root product, get all the children agregated to it.
" K% i; l. h- l        CATListValCATBaseUnknown_var*   ListChildren =
0 r* L5 v2 Q2 J$ r                piProductOnRoot->GetAllChildren();+ ]& b- t/ F9 E
/** @anchor err_2 piProductOnRoot not set to NULL after release */ " p; t6 X' C6 b( D
        piProductOnRoot -> Release();( x/ m; D/ a' R/ X3 H( M1 A7 U
        piProductOnRoot = NULL;( u* U# t$ f0 Q9 [! W4 ]
        if(NULL != ListChildren)
" i8 ~. c% T; W+ U        {
( w( z7 W0 Y+ |  n3 i& L' C7 G                # M; z. c, z$ I* {" |1 N2 |
                int numberOfChildren = ListChildren->Size();4 m$ ~& G' U. D: c8 ^
                cout << " Number of all children under the root = " << numberOfChildren << endl << flush;, ^% w- n! t4 W0 {9 [4 P0 u0 H

) z/ i' R5 l0 Q! H3 \                /* -----------------------------------------------------------*/9 m6 ^" b# {+ D3 s/ G1 m5 [$ u
                /*  4. For each child, get its partNumber, and InstanceName   */7 ~; f6 E' I3 I) }. |. |4 B% Z9 h
                /* -----------------------------------------------------------*/7 I4 U& i) y0 K
                CATIProduct_var spChild = NULL_var;! v1 N6 @1 l( ^" f
                for (int i=1;i<=numberOfChildren;i++)
- D# x- a! }$ v+ T( g                {" a) h7 H6 f9 y) x3 _6 l) w
                        spChild = (*ListChildren);
& ]/ a" d- |4 b$ ^7 x/** @anchor err_3 spChild not tested before use ( if !! ) */ 7 J7 ^; H3 B! c% E- }* p# X
                        if ( NULL_var == spChild ) return 4;
  G/ j% J9 H2 K' a+ j% P/ {                        CATUnicodeString partNumber = spChild -> GetPartNumber();, }! G, W, T4 c1 D; Z, a. ]
                        CATUnicodeString instanceName (" ");
5 N! S% S/ ?' O7 Q  D" {, V. L* R                        rc = spChild -> GetPrdInstanceName ( instanceName ) ;
. x9 Q3 M7 h+ S% `' @                        if  ( FAILED(rc) ) return 4;
. _1 R: q! _; o8 j* g( x                        7 j+ \' [6 D1 r" t1 z
                        cout << " child number : " << i << endl << flush;
6 ?0 N5 t" U$ M                        cout << " has as part number : " << partNumber.CastToCharPtr()  << endl << flush;
9 O# B8 Y1 u2 i: r0 k5 j0 p$ C                        cout << " and as instanceName : " << instanceName.CastToCharPtr() << endl << endl << flush;
& z' q, i5 G1 c2 |                }
4 ?) f: S6 A- ^                delete ListChildren;
, A* F; b8 V0 D6 Y                ListChildren=NULL;9 G5 a6 @& G* {( v( y9 K# T
        }       
4 j0 w6 ]/ R5 v7 D        /* -------------------------------------------- *// F; B' N$ _- ?) T1 I
        /*   Ends the session                        */
$ H9 ?" R- @$ S6 {4 j        /* -------------------------------------------- */[/mw_shl_code]8 z' g  Z5 y9 g0 v/ ?
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了