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

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

[复制链接]

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

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

admin 楼主

2018-1-10 10:12:25

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

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

x
, R8 M  f% G% @' `4 O  n- a7 T$ U6 R& ^
Catia二次开发源码分享: 获取装配所有组件列表3 |8 N  l3 h! V6 S
4 @9 g$ Z& Z% {
9 y* x6 k! `) W8 V2 |
[mw_shl_code=c,true]/* ----------------------------*/. f$ ?( d0 ^, c% y1 Q
        /* 2. Retrieves Root Product   */
8 {3 }/ l" G- Z4 Y& g, \' t* u        /* ----------------------------*/5 t  z/ T7 Z6 O3 s" f$ k7 ^. @7 J7 |
       
! V1 X1 K3 o9 J" h        // Begin navigation throUGh the document => start with the RootProduct.# S7 w  G$ f# r7 P  i
        CATIDocRoots* piDocRootsOnDoc = NULL;
! R; l7 Q# ^+ m" Q1 ~        rc = pDoc->QueryInterface(IID_CATIDocRoots,
; {2 @7 H, V, c6 ^                                      (void**) &piDocRootsOnDoc);
% @1 N0 e# _; l        if ( FAILED(rc) ) return 3;
: ]: M1 s7 p. W! B( @       
  X: _4 g4 Y* \, j4 e        // get the root product which is the first element of root elements# F  r* v- J0 ]( Y: R2 w
        CATListValCATBaseUnknown_var* pRootProducts = 3 P% N+ ^6 c# n# y7 ]
                piDocRootsOnDoc->GiveDocRoots();: I/ [- ^" M( T
        CATIProduct_var spRootProduct = NULL_var;. h- U1 ~, ^& T
        6 y# `2 P+ k+ W( A  m- Y$ ~, @
        if (pRootProducts && pRootProducts->Size())3 f0 d0 _) P+ J1 z3 {* K$ O1 ~# a
        {  
% C0 W  Y; Z8 C% J" A, z                spRootProduct = (*pRootProducts)[1];
9 z2 i1 e) o% R! d                delete pRootProducts;
$ ?  h4 q* @/ V2 o5 X- _                pRootProducts = NULL;
" _  f; D% w" ?' S; L: b- P: ]        }, J+ j0 l5 J* c0 Y, M
/** @anchor err_1 piDocRootsOnDoc not set to NULL after release */ ) x/ v" y) i. R/ b) h& p
        piDocRootsOnDoc->Release();! p! y; C: E; |7 k* N5 x& F
        piDocRootsOnDoc = NULL;
7 w# v+ N, ?, a6 a        " K3 g2 ^) d. p! T4 K
        // Get CATIProduct handle on the root product.' j6 m1 |: Q: g3 ^/ I
        CATIProduct *piProductOnRoot = NULL;( v# C- W' a# F$ ?
        rc = spRootProduct->QueryInterface(IID_CATIProduct,
' r! M" c. l7 d: F                                               (void**) &piProductOnRoot);
0 G5 E' J+ ^" K4 S' R        if ( FAILED(rc) ) return 3;
& m* E2 y* Q$ d+ |' L* K; `  ^9 D. G1 y. }% U  c
        /* ---------------------------------------*/
6 a6 o: l! o. d        /* 3. Retrieves children under the root   */
/ B; `  h, ?+ ]2 J9 O- R        /* ---------------------------------------*/4 F! z- j3 O0 k
       
) C  s0 o! @5 S        int nbOfDirecTChidren = piProductOnRoot -> GetChildrenCount() ;  A& S: ^0 A8 W9 {* d
        cout << " Number of direct children under the root = " << nbOfDirectChidren << endl << flush;
1 D# C6 c* T( R       
0 p1 c* H3 L4 z+ p( ~        // then on a root product, get all the children agregated to it.
) N/ D+ P- B$ n3 i1 r        CATListValCATBaseUnknown_var*   ListChildren =; `9 E9 t! H4 h1 |  _
                piProductOnRoot->GetAllChildren();
2 w) ^3 p. d, [1 I' J  Y' ?/** @anchor err_2 piProductOnRoot not set to NULL after release */
1 c) b+ }2 `  ]8 `  ?        piProductOnRoot -> Release();
! y. s" q% R  p, y( B! }        piProductOnRoot = NULL;
' G% D$ n/ R4 o! ^        if(NULL != ListChildren)
  [9 C5 l6 |) e, n        {
) l/ h0 t2 ]* L9 o                + U! V+ i6 u+ T! Z6 q  p
                int numberOfChildren = ListChildren->Size();
: z8 h; H: R; J4 K5 W- @% }                cout << " Number of all children under the root = " << numberOfChildren << endl << flush;
/ K9 z6 B2 T5 C: ?& g, U; s
- k. q% M2 ]% r/ F1 W                /* -----------------------------------------------------------*/2 X4 T, h- n+ o) [* x& _. s) l! C1 n
                /*  4. For each child, get its partNumber, and InstanceName   */
- a- `% o; \$ ~+ V                /* -----------------------------------------------------------*/
- \% Z# y( O: ]6 @% x                CATIProduct_var spChild = NULL_var;- x+ Z2 ?: A; y
                for (int i=1;i<=numberOfChildren;i++)
6 w$ J- }# Q, L2 i' z, {1 Q                {( l; D! y5 ^0 R: ]# Q5 z
                        spChild = (*ListChildren);
3 U5 {1 [% r$ k- u2 }+ h; h/** @anchor err_3 spChild not tested before use ( if !! ) */ $ G, w7 W+ Q2 [4 n2 C5 a
                        if ( NULL_var == spChild ) return 4;# d* v5 `8 u# t/ |4 {
                        CATUnicodeString partNumber = spChild -> GetPartNumber();
; H- a. s6 V: j2 s                        CATUnicodeString instanceName (" ");
6 v* p) `; D' _+ v; {* \                        rc = spChild -> GetPrdInstanceName ( instanceName ) ;7 Y* T" p  c/ v8 d
                        if  ( FAILED(rc) ) return 4;
8 t! y+ r! o( Y: [% @" ~/ s$ W                       
5 O! i, ^1 j7 {8 T                        cout << " child number : " << i << endl << flush;" E- T! x$ t& J: Z2 R
                        cout << " has as part number : " << partNumber.CastToCharPtr()  << endl << flush;
% s  ?3 G4 O  _2 a9 u                        cout << " and as instanceName : " << instanceName.CastToCharPtr() << endl << endl << flush;
1 p% V0 o1 \: k  Y1 t" I8 S                }
  T% q& e: ^2 W6 Z" I                delete ListChildren;
1 N; L% u. T) d, _8 L# I8 h$ x                ListChildren=NULL;- M+ I* b3 ^9 v, `* }7 R
        }        ' p  W0 j9 a0 @/ A( T! ~" V
        /* -------------------------------------------- */' i6 B+ k3 _  U% {. O: a) p. ~
        /*   Ends the session                        */& u4 O3 r  ~3 d2 K- M9 G8 o
        /* -------------------------------------------- */[/mw_shl_code]
  ~9 \$ r+ t$ k0 w% Q9 c
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了