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

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

[复制链接]

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

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

admin 楼主

2018-1-10 10:12:25

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

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

x
$ d; I+ M# A/ L: C$ y2 }! x
Catia二次开发源码分享: 获取装配所有组件列表
. z3 C1 l$ a+ s% Z% H% h8 _/ x3 Z: f+ h. b5 ~. S4 d
* p+ q( P1 Z0 D5 p( f
[mw_shl_code=c,true]/* ----------------------------*/
( j6 s# T6 P4 X) _        /* 2. Retrieves Root Product   */7 G3 d5 @, F& Z" X. x0 E
        /* ----------------------------*/! i1 I+ h! C) U% p, F
       
/ T6 u* B6 P6 P( A7 N& ^        // Begin navigation throUGh the document => start with the RootProduct.
( u4 r) X- f6 Q; D        CATIDocRoots* piDocRootsOnDoc = NULL;
7 i& O: }$ f" X% h2 E/ v! ?4 i        rc = pDoc->QueryInterface(IID_CATIDocRoots,
* u& Y6 i0 w$ B7 x' y                                      (void**) &piDocRootsOnDoc);3 U1 @6 Z' g6 c/ H- F
        if ( FAILED(rc) ) return 3;
/ [  @; E) o6 D! {6 D8 o. W/ h        * Q7 g/ d- }8 Z) N0 b2 n, O1 N* P
        // get the root product which is the first element of root elements; {9 K0 n+ ?9 @4 @5 v, |
        CATListValCATBaseUnknown_var* pRootProducts = $ V1 w8 c3 A$ L: }" K
                piDocRootsOnDoc->GiveDocRoots();
* q* w/ ?+ w. ?' D, \' D  W        CATIProduct_var spRootProduct = NULL_var;9 f9 T' [5 J: V' c) O' t* M
       
- \4 f- Y1 y) {: T8 K5 x. u3 [& }5 i        if (pRootProducts && pRootProducts->Size())5 P. s" L% c0 U" [% B8 @6 s
        {  + E6 w& q2 B9 O2 U8 S
                spRootProduct = (*pRootProducts)[1];
! P/ C3 X+ d4 {9 J5 g                delete pRootProducts;7 y& m$ y( u% p' E. u+ s- b
                pRootProducts = NULL;' J5 h: H- ^* t$ }
        }$ e# R: w6 x( h/ H2 k
/** @anchor err_1 piDocRootsOnDoc not set to NULL after release */
/ a+ C" e3 C1 A* ?        piDocRootsOnDoc->Release();
7 N! z8 P- U1 h6 g0 Y: e6 g        piDocRootsOnDoc = NULL;
) t- q- z$ N5 a) M+ _8 N        6 Z7 m( x1 G. F7 o
        // Get CATIProduct handle on the root product.
: O$ h2 y: j, K" D* s/ `        CATIProduct *piProductOnRoot = NULL;
, k( `) U1 S! D6 \5 b' R        rc = spRootProduct->QueryInterface(IID_CATIProduct,
) R$ E: ?- U. v% F                                               (void**) &piProductOnRoot);6 x2 [* `: q: D
        if ( FAILED(rc) ) return 3;
! I! K/ B& H* P( ~1 R
+ r% T3 _' K0 q3 A0 A        /* ---------------------------------------*/7 ~. X: l& {- H: t; _
        /* 3. Retrieves children under the root   */0 L+ d& l* [- P8 ~" T+ _6 K/ g/ B! R
        /* ---------------------------------------*/# \' ~6 |* @  F/ `# d
       
' i  A, x( }* E/ {+ X4 b        int nbOfDirecTChidren = piProductOnRoot -> GetChildrenCount() ;
" `, A5 B: F$ W$ G* D) H4 L  W) z        cout << " Number of direct children under the root = " << nbOfDirectChidren << endl << flush;: t8 F3 n* [& M. q
        / P5 O* d) L. i' i: e
        // then on a root product, get all the children agregated to it.
; T: s3 w+ _+ U$ [0 S        CATListValCATBaseUnknown_var*   ListChildren =
6 {% ?( z& O' w# W8 g8 O: g                piProductOnRoot->GetAllChildren();* h( ^8 v8 O, B) ~! J! A
/** @anchor err_2 piProductOnRoot not set to NULL after release */
2 q& f; Q* K# }  S( S! V        piProductOnRoot -> Release();
, y! n4 i$ b0 {( C  ?- q' k        piProductOnRoot = NULL;: h, G, z" w" V
        if(NULL != ListChildren). ~2 ]( o) T  _: ]' a5 o" D, J5 K: T
        {. R* t$ G4 u" @
               
) M  h8 M+ k0 y- j                int numberOfChildren = ListChildren->Size();
7 c; ]: Y% S8 H- M2 y1 x                cout << " Number of all children under the root = " << numberOfChildren << endl << flush;$ [7 V* H+ u4 b9 S8 G6 L7 y! N

3 f8 i6 [' H1 i" @* D7 B7 A1 c! n                /* -----------------------------------------------------------*/
- i3 r, _7 m  |                /*  4. For each child, get its partNumber, and InstanceName   */
6 c0 v) Q7 v; E4 D                /* -----------------------------------------------------------*/, N$ Y) \% H+ W9 s/ a
                CATIProduct_var spChild = NULL_var;( v/ B' ?) [9 p/ z9 {
                for (int i=1;i<=numberOfChildren;i++)
" @* ^% o6 u# N' ^" T% U  W                {
1 X! H" D2 I( c8 g; _3 Z) H                        spChild = (*ListChildren);
4 s0 A: c& _: X& j# v/** @anchor err_3 spChild not tested before use ( if !! ) */ 1 W. c0 ^& ~/ |$ D: T; Y+ f! J2 F
                        if ( NULL_var == spChild ) return 4;: }  U& u# h- U7 r$ o4 |
                        CATUnicodeString partNumber = spChild -> GetPartNumber();+ G% S/ S) p6 O/ G7 u+ N
                        CATUnicodeString instanceName (" ");
' W" a( R6 E) ]. X! v6 U: q                        rc = spChild -> GetPrdInstanceName ( instanceName ) ;1 T7 Y! x7 y% @4 I
                        if  ( FAILED(rc) ) return 4;+ o1 N3 {# D: p  r9 Z6 L
                        1 r9 N% M; s4 Q& {& n
                        cout << " child number : " << i << endl << flush;
" q  v' `$ t* A& t* l3 p+ J                        cout << " has as part number : " << partNumber.CastToCharPtr()  << endl << flush;
2 M: L# l! d! A7 m, a                        cout << " and as instanceName : " << instanceName.CastToCharPtr() << endl << endl << flush;
' x! K; M1 Y, t- {: u; A                }# I7 Y8 i+ O) l; Q
                delete ListChildren;
/ C1 \2 N0 X# W" g, k                ListChildren=NULL;
, E. t$ \( ]  ^3 `9 k        }        : O$ |# G* }  S4 c- Y  o
        /* -------------------------------------------- */' i8 E( _/ v8 c9 I- Y% I6 G1 d
        /*   Ends the session                        */9 B$ s' L5 G+ e+ B0 s
        /* -------------------------------------------- */[/mw_shl_code]
" L. u( D9 k/ W* y: V, B0 h% ?
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了