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

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

[复制链接]

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

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

admin 楼主

2018-1-10 10:12:25

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

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

x

' \1 Q6 _- M8 XCatia二次开发源码分享: 获取装配所有组件列表
: g+ V/ E  S% l& `
9 W9 D9 `+ a3 n- ?) l
0 o1 a3 {0 k/ ~[mw_shl_code=c,true]/* ----------------------------*/' R4 _( [2 ]# C7 U
        /* 2. Retrieves Root Product   */( g# F' C6 S# ]& r  `( ?
        /* ----------------------------*/
3 v7 G) _: \+ |        ; X0 m5 t# L& l; Y) J
        // Begin navigation throUGh the document => start with the RootProduct.0 ^4 z, J0 x9 U; z, L
        CATIDocRoots* piDocRootsOnDoc = NULL;0 j$ o* i9 G. I) S: S& O
        rc = pDoc->QueryInterface(IID_CATIDocRoots,! G8 s" Y7 u' y( O/ V, p& w7 |/ p
                                      (void**) &piDocRootsOnDoc);7 F3 ?4 ~4 ~$ e0 [9 \. L
        if ( FAILED(rc) ) return 3;2 [6 ~& U' A5 K  E. i5 M8 V
        9 b+ o% z& Q8 O3 b  ]+ b) c3 Y+ s
        // get the root product which is the first element of root elements
& t- Q* e/ E9 K+ C' ~1 c5 t# H0 z        CATListValCATBaseUnknown_var* pRootProducts =
" I( ~6 T) E5 r9 ]                piDocRootsOnDoc->GiveDocRoots();! ~9 [7 @. l" p
        CATIProduct_var spRootProduct = NULL_var;2 P/ t3 f& q4 o2 V, O6 `* L" T. v
       
0 C. M* q. a0 I  ]        if (pRootProducts && pRootProducts->Size())
1 a, `1 u4 `$ C2 J8 ~6 J0 k4 f$ v        {  
5 p% N" K# M5 s6 @" h& t8 v) Y( J                spRootProduct = (*pRootProducts)[1];0 e+ f! h( y! {0 o
                delete pRootProducts;
& l1 T9 e+ H8 m0 A0 |/ d) Q                pRootProducts = NULL;/ @! _8 A- Y+ a' V4 X
        }0 d8 m/ E* e. j! m$ H
/** @anchor err_1 piDocRootsOnDoc not set to NULL after release */ . R4 s! Z  Y3 F
        piDocRootsOnDoc->Release();
0 C- k' ~  I! i+ l* F) Z; \2 X        piDocRootsOnDoc = NULL;
0 b, k* B" P; o5 ^       
/ `# ]/ u4 l- \/ y% P$ d/ Q        // Get CATIProduct handle on the root product.
" }) A9 O$ x, {6 o        CATIProduct *piProductOnRoot = NULL;
2 p3 g% a' P$ X4 F, I% P        rc = spRootProduct->QueryInterface(IID_CATIProduct,  a8 l3 [% N5 ?; V1 Z) w
                                               (void**) &piProductOnRoot);
' a  X6 s; W& c' s7 l, g/ ?        if ( FAILED(rc) ) return 3;/ i& V  s1 c: z# U+ n* v
1 Y) m4 I% g  b# [' ~
        /* ---------------------------------------*/
0 n, t1 ]0 U& ]& a& J1 f4 c5 T        /* 3. Retrieves children under the root   */9 a* D7 V9 [& ?/ f3 [! P% w- u
        /* ---------------------------------------*/
* ~3 t. [! j; N) H8 B6 D( ?( o4 V3 V        1 B$ P( f" H3 H0 e
        int nbOfDirecTChidren = piProductOnRoot -> GetChildrenCount() ;
$ y5 N. {; ~3 ~, v" \        cout << " Number of direct children under the root = " << nbOfDirectChidren << endl << flush;+ @  }! L% z7 k1 ]
       
, K0 c; I/ h# `7 }' C        // then on a root product, get all the children agregated to it.7 N3 `6 P9 o6 g1 \& r* W8 z; r
        CATListValCATBaseUnknown_var*   ListChildren =
! J& T" c$ q) ?2 w& K                piProductOnRoot->GetAllChildren();
- y/ `* e! `, m9 b1 I% D) w( y/** @anchor err_2 piProductOnRoot not set to NULL after release */
6 X1 t  Q$ ]2 N2 ?, y3 l        piProductOnRoot -> Release();. |1 n3 |; b$ Q; K) r2 u" v
        piProductOnRoot = NULL;
8 d- H! t# Q, v3 t* T        if(NULL != ListChildren). O3 Y+ `( u2 ^
        {# |, v: E6 `2 i
                ! x/ g) L6 G9 k
                int numberOfChildren = ListChildren->Size();
! R: O  r7 Z: c, t% T, s                cout << " Number of all children under the root = " << numberOfChildren << endl << flush;
& y8 g) t- w7 n( M- k6 N
2 H4 r& |& d* p6 E1 Z                /* -----------------------------------------------------------*// z7 S8 S# k4 O5 J
                /*  4. For each child, get its partNumber, and InstanceName   */
+ \' s0 Z& @- L, `, Y: j  o  o                /* -----------------------------------------------------------*/8 h) A- ]# G9 B9 F
                CATIProduct_var spChild = NULL_var;3 ]* z. C6 Z; [6 `2 T; j
                for (int i=1;i<=numberOfChildren;i++)$ @5 S! V' u3 b- o" a/ K
                {1 i% c) E8 L1 L; J- N/ @4 m
                        spChild = (*ListChildren);4 W5 J: O4 i, O& p& Q
/** @anchor err_3 spChild not tested before use ( if !! ) */
) o) d: k  ^* m% _                        if ( NULL_var == spChild ) return 4;& ^; @0 V, _, }* x! y. e5 ~
                        CATUnicodeString partNumber = spChild -> GetPartNumber();  D; g. a0 `/ h1 j
                        CATUnicodeString instanceName (" ");
* Y0 B  z& A- N8 o* {                        rc = spChild -> GetPrdInstanceName ( instanceName ) ;
& H6 A* ]5 z0 f7 P/ T/ b" V* ~                        if  ( FAILED(rc) ) return 4;6 Q5 n" o! `/ _* G7 R# X# A' [
                        " N+ E- }  e( l# G9 ]( I
                        cout << " child number : " << i << endl << flush;
5 J: {6 q$ N. \( \                        cout << " has as part number : " << partNumber.CastToCharPtr()  << endl << flush;
; A( T: I# |# X' ~" f                        cout << " and as instanceName : " << instanceName.CastToCharPtr() << endl << endl << flush;" A1 X  O' b5 H0 ?" E5 c  }
                }
& K) _) y+ F. r) _& t                delete ListChildren;
: w9 _* o  H7 U/ }7 y                ListChildren=NULL;+ `+ H0 n1 @: X. C: y! x( b
        }        1 y* F/ I7 G% U2 e4 z8 M$ U* d4 f0 c
        /* -------------------------------------------- */0 v2 Z: |# E7 x, p! D
        /*   Ends the session                        */
6 Q6 y3 P# \4 I. m) [$ ~) J7 A        /* -------------------------------------------- */[/mw_shl_code]' c: y, P1 s% P3 y% 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二次开发专题模块培训报名开始啦

    我知道了