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

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

[复制链接]

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

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

admin 楼主

2018-1-10 10:12:25

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

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

x

/ ^. o% W5 L% x9 M& I3 q+ A  ]Catia二次开发源码分享: 获取装配所有组件列表
! n( ~( Y1 S' o! D" ~, F+ m, `* R$ ~% j7 j

; H9 W4 }! |6 I" Q& ~[mw_shl_code=c,true]/* ----------------------------*/" `) H" T) i7 c- z. f
        /* 2. Retrieves Root Product   */
1 ]/ t, |1 ], u, `0 X* K3 @        /* ----------------------------*/0 u( D1 n/ M& F; K" D+ M; m% A
        6 ^: a3 h4 B$ {# k; C; p
        // Begin navigation throUGh the document => start with the RootProduct.  N& m4 ~. L/ e) @
        CATIDocRoots* piDocRootsOnDoc = NULL;
- [3 K! H9 A, H" F/ A        rc = pDoc->QueryInterface(IID_CATIDocRoots,
' E" y! T7 Q$ C1 I3 U9 S                                      (void**) &piDocRootsOnDoc);$ F! |5 b" U0 l8 S' m
        if ( FAILED(rc) ) return 3;
8 S; M' A6 w! R: z' u       
: F. W" t/ _2 H5 R) ~        // get the root product which is the first element of root elements) f' ?% n% Y3 d0 r+ ~
        CATListValCATBaseUnknown_var* pRootProducts = / `# _. s* f5 z% D0 `( b- T
                piDocRootsOnDoc->GiveDocRoots();
( u& S$ ]+ [7 J3 [3 D& {* n        CATIProduct_var spRootProduct = NULL_var;
9 g0 V9 k( v' w        : A1 _  b6 M+ l; n0 u  ]) `/ I: ~" \
        if (pRootProducts && pRootProducts->Size()), L3 q  [2 V" }6 F% E9 W4 W" q, w
        {  
0 X- |  [9 S+ O) [$ p0 N) f- P                spRootProduct = (*pRootProducts)[1];
, N/ D2 k& Q3 m1 A" H7 y- w                delete pRootProducts;
7 k! b# {. q( s$ A) B& b2 k                pRootProducts = NULL;# N; `# V7 s) {
        }
5 a; i7 ~" W0 m: m2 U! @! `7 K/** @anchor err_1 piDocRootsOnDoc not set to NULL after release */ 5 e- b1 C/ Q* o. X& @6 g
        piDocRootsOnDoc->Release();# J+ {5 @3 Q0 s) H% s+ y
        piDocRootsOnDoc = NULL;
- n$ x. G5 A" q3 B/ V' _& |7 A6 a        ( _' W) m$ x- M6 X( o' a, Q
        // Get CATIProduct handle on the root product.
7 L2 C/ {' F0 K* C- m( {$ V' M5 M/ \        CATIProduct *piProductOnRoot = NULL;
8 q* x3 M9 e% W" Y* o6 m1 o1 F        rc = spRootProduct->QueryInterface(IID_CATIProduct,
6 d) ?, m  c3 ^5 b; `) _- J                                               (void**) &piProductOnRoot);+ L1 h4 \4 V; G, f2 \: t% `/ v, g
        if ( FAILED(rc) ) return 3;# S3 I$ ?. L6 E. [5 q. Y5 ^
# Y9 _. g) `) \# _1 @/ ]$ n
        /* ---------------------------------------*/
8 ^9 k+ @8 W+ c( V7 S9 B' T7 }        /* 3. Retrieves children under the root   */! s2 U* m! K& o* w( i
        /* ---------------------------------------*/( }0 N5 J! J$ s
       
" A1 a4 u" n8 Z8 n        int nbOfDirecTChidren = piProductOnRoot -> GetChildrenCount() ;
2 W( f0 S' a; e4 G5 S        cout << " Number of direct children under the root = " << nbOfDirectChidren << endl << flush;/ @* }; L- m+ t
        # V1 U3 B+ ]% `8 d+ i, X  d
        // then on a root product, get all the children agregated to it.* z& a4 s' {( h5 `1 K, d5 i
        CATListValCATBaseUnknown_var*   ListChildren =
* N  Y% g! `9 m" K* Y( ?: D+ I                piProductOnRoot->GetAllChildren();* q% `. J# j, a) z0 ~4 _+ N
/** @anchor err_2 piProductOnRoot not set to NULL after release */ # e. S7 K, P3 M  L- {0 @2 H. @
        piProductOnRoot -> Release();  n4 V# Z% S: R& a1 y3 u  x: ^/ }
        piProductOnRoot = NULL;
) N: E# b4 |" O0 F! C% E        if(NULL != ListChildren)
0 p/ O+ _) h' K7 E        {
2 }0 _4 Y0 t, m9 e" _0 y, |' I3 g               
: m- R0 F6 Y& d/ @0 I                int numberOfChildren = ListChildren->Size();! A: K) `" _% B7 @
                cout << " Number of all children under the root = " << numberOfChildren << endl << flush;* w4 D  j) q- A3 \* r+ J
0 _, F) t/ L3 R
                /* -----------------------------------------------------------*/2 Z4 G/ E9 r0 ]2 }/ x, O3 P
                /*  4. For each child, get its partNumber, and InstanceName   */
6 ?5 X' n6 q0 G                /* -----------------------------------------------------------*/
) n% ~  F) o* `# U; q, L* U                CATIProduct_var spChild = NULL_var;7 w8 Y  n) p+ d4 E, C6 f2 R
                for (int i=1;i<=numberOfChildren;i++)
9 ]; a( M7 P5 N" u* j' {: I  X                {
1 f/ v! ^  a, Q$ s* X                        spChild = (*ListChildren);( m/ H& P3 l9 g! N. I
/** @anchor err_3 spChild not tested before use ( if !! ) */   `- L0 z: e! s; W
                        if ( NULL_var == spChild ) return 4;
" s% \3 g9 P" |5 U" }6 l# g1 c                        CATUnicodeString partNumber = spChild -> GetPartNumber();% G3 q& y/ l; p2 h& N
                        CATUnicodeString instanceName (" ");
3 T2 t  I' Q+ O/ X/ J% Y                        rc = spChild -> GetPrdInstanceName ( instanceName ) ;
4 U  r: _& ]1 }                        if  ( FAILED(rc) ) return 4;% N' b. U( @+ w0 A
                       
0 S) c+ ?; l. N# R                        cout << " child number : " << i << endl << flush;
4 t% b- @0 ~. ^4 R7 c4 z+ X                        cout << " has as part number : " << partNumber.CastToCharPtr()  << endl << flush;. w; L7 x4 N( q# r7 o6 f- ^5 ^
                        cout << " and as instanceName : " << instanceName.CastToCharPtr() << endl << endl << flush;
1 u8 m# a/ T* O+ L& q( G4 c6 o                }
4 ?/ s  W# F$ K: c                delete ListChildren;0 N2 _. o( @7 ?6 z
                ListChildren=NULL;0 E: E0 d# A) i9 f: Q! z7 e
        }        / @& ~7 H* q8 l9 H7 m
        /* -------------------------------------------- */3 ^2 {" y* F8 {. I  E$ z
        /*   Ends the session                        */
" P4 x$ }# c* ~- ?. i( @; [4 e        /* -------------------------------------------- */[/mw_shl_code]
0 h2 f' w! d. K+ N2 U
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了