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

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

[复制链接]

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

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

admin 楼主

2018-1-10 10:12:25

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

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

x
3 H- t2 z. @. C0 k- ~$ E+ j' V7 j
Catia二次开发源码分享: 获取装配所有组件列表
6 `/ h/ }2 Z: v
) Y3 X& [/ P- W! G' _
5 Q, U5 _$ l% z  j) H( g. Y7 Z[mw_shl_code=c,true]/* ----------------------------*/* p3 ]. l4 P& k' ^, E; _4 J+ v% C
        /* 2. Retrieves Root Product   */
3 M, V+ e' f+ s        /* ----------------------------*/
5 n* z" d6 r; ^# S6 L/ f! I        ' o! Z; h9 h" I6 j8 D
        // Begin navigation throUGh the document => start with the RootProduct.. M. ~1 p- Z& Y& \$ D  e1 ^
        CATIDocRoots* piDocRootsOnDoc = NULL;
) k, D% T- C; E& Z" x. j# x        rc = pDoc->QueryInterface(IID_CATIDocRoots,
$ _7 o, K) S0 i" o0 d) H                                      (void**) &piDocRootsOnDoc);
# ?7 S* k' r7 m" F* D        if ( FAILED(rc) ) return 3;& {& j& M: [$ O' p' B1 m3 o# [% u
       
7 H9 g, h, {) \. {! w; D        // get the root product which is the first element of root elements
5 Y' w* N  v5 s& I* r8 g# ~        CATListValCATBaseUnknown_var* pRootProducts =
8 U4 C  `% S+ s$ d: S* X4 r                piDocRootsOnDoc->GiveDocRoots();, b8 X8 z2 x: d2 V
        CATIProduct_var spRootProduct = NULL_var;0 N/ k; Z  v  {, @- p
       
" k& |8 e( H" C  X/ F* T+ g        if (pRootProducts && pRootProducts->Size())
' ?7 S* W/ ?* C) {. d+ Y7 t4 D0 G        {  
2 ^8 @$ z: r2 n% x5 R: {  f, l                spRootProduct = (*pRootProducts)[1];' U1 E3 i& E* C# J% ?# M: g
                delete pRootProducts;
3 S' ]7 k3 G7 C7 \% k2 p7 E) ^' H                pRootProducts = NULL;3 {' o* w3 p. |9 y% C
        }& \8 j0 V+ {3 H* o( ~& r% e0 X# q
/** @anchor err_1 piDocRootsOnDoc not set to NULL after release */
$ o5 N, f' `" L, [* O! A+ t8 a& p4 K        piDocRootsOnDoc->Release();
* x' o/ [& b& m4 `: T3 K        piDocRootsOnDoc = NULL;1 ?' X) H) I( R" ?
       
( B: l0 _% n8 n4 d2 t& p! w: T        // Get CATIProduct handle on the root product.
. [  p& a! C6 e7 e        CATIProduct *piProductOnRoot = NULL;
: I/ c% s& I% Y$ h, I        rc = spRootProduct->QueryInterface(IID_CATIProduct,
- s0 H5 v3 G9 b  {; M( C                                               (void**) &piProductOnRoot);
4 `7 T5 m% G! M* V2 t! E        if ( FAILED(rc) ) return 3;: z  I* q$ S0 y& [2 k$ s
3 L: ?+ Y- O3 l
        /* ---------------------------------------*/
/ g3 [1 \2 x) r6 J. H        /* 3. Retrieves children under the root   */
! l$ M! D1 k. E" q; x; G7 G/ O* s        /* ---------------------------------------*/% [! U1 [* n6 c
       
5 E6 l" S& r2 S        int nbOfDirecTChidren = piProductOnRoot -> GetChildrenCount() ;+ C8 @: w( n4 b. F3 v, ]1 r
        cout << " Number of direct children under the root = " << nbOfDirectChidren << endl << flush;
0 y( g+ G% O7 q8 h6 G        / c+ W; ]% }) @0 l4 Y
        // then on a root product, get all the children agregated to it.* P. U( W0 F# @+ T
        CATListValCATBaseUnknown_var*   ListChildren =
* K  s  N! X' k3 r                piProductOnRoot->GetAllChildren();
* W+ l2 p6 ^+ X7 Q. ]1 l/** @anchor err_2 piProductOnRoot not set to NULL after release */ - c, F: N: N7 d" H1 e3 J
        piProductOnRoot -> Release();# T" c0 ~; H- ^2 z; @& Z1 J( [
        piProductOnRoot = NULL;# k5 g( ~0 d. ~4 m2 e
        if(NULL != ListChildren)' G) H, y) ]* @
        {
+ {0 [3 }! V1 E               
" h4 j3 J8 q7 y2 R6 l# L                int numberOfChildren = ListChildren->Size();9 X2 y" h. }# ]$ @8 X
                cout << " Number of all children under the root = " << numberOfChildren << endl << flush;/ I1 q. _; s* \, |6 i( y5 \
9 S  Z  {: }2 _3 S, [6 @
                /* -----------------------------------------------------------*/
) f+ e2 o; W# [7 ?/ L1 W                /*  4. For each child, get its partNumber, and InstanceName   */1 P! ^1 V8 g) l2 s5 S. e
                /* -----------------------------------------------------------*/
% B" _0 G" x+ h6 E% T                CATIProduct_var spChild = NULL_var;/ e9 `, c& _' U9 x
                for (int i=1;i<=numberOfChildren;i++)
1 M* M" F6 q7 J* e1 U                {4 P. f% ]7 B% |5 ^  l4 A
                        spChild = (*ListChildren);
/ T1 A% L  \) ~  w: o7 j/** @anchor err_3 spChild not tested before use ( if !! ) */
  ]% G; G9 \$ w1 e                        if ( NULL_var == spChild ) return 4;
* \1 Z6 _8 o/ {: m                        CATUnicodeString partNumber = spChild -> GetPartNumber();, Q+ R8 \9 X0 X8 n! g& b
                        CATUnicodeString instanceName (" ");$ x- t/ @# e/ r7 {3 }3 Q
                        rc = spChild -> GetPrdInstanceName ( instanceName ) ;
+ T1 b+ w. W5 P                        if  ( FAILED(rc) ) return 4;
1 T5 I. a: m3 y+ c8 M                       
$ d: x" A8 [; w                        cout << " child number : " << i << endl << flush;
- y: g8 q/ F) c; m0 c) p1 X* i- y. ~                        cout << " has as part number : " << partNumber.CastToCharPtr()  << endl << flush;2 ~7 X8 Q+ T+ u4 ^
                        cout << " and as instanceName : " << instanceName.CastToCharPtr() << endl << endl << flush;
7 i% I) j+ [8 P: Z' Q                }
9 ]- l/ o  U! b: T. b( R                delete ListChildren;
8 f5 h$ p& Z1 b4 L7 s! x                ListChildren=NULL;
9 C; W, z' N/ ~+ S+ T        }       
) a6 w) l2 C4 T. |. i        /* -------------------------------------------- *// i2 T1 c, ~. V! R( [5 e% a5 o
        /*   Ends the session                        */, [) ?$ P9 S/ K, Y) T6 V0 j
        /* -------------------------------------------- */[/mw_shl_code]! [! o% f1 s. o" ^
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了