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

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

[复制链接]

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

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

admin 楼主

2018-1-10 10:12:25

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

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

x

% K: \/ K2 F+ V! aCatia二次开发源码分享: 获取装配所有组件列表
, V/ w: n1 ~9 \& d7 v
9 h0 G2 S* R" q$ [6 U4 |' e; a3 X( R2 x; t+ E& O! [
[mw_shl_code=c,true]/* ----------------------------*/( t6 N1 j, O4 G% J$ `" N9 y8 G+ h& @
        /* 2. Retrieves Root Product   */1 V! z" D: x  z: M6 S- ^  f, I
        /* ----------------------------*/
3 s$ V  J# w& C( j! f! [       
  l- s  G, N1 s) }% S3 G, v        // Begin navigation throUGh the document => start with the RootProduct.
& Q: ~; w+ K2 E! s8 w" r, H; l0 w7 b        CATIDocRoots* piDocRootsOnDoc = NULL;% h' e5 _! Y. P- q! X/ o
        rc = pDoc->QueryInterface(IID_CATIDocRoots,
  m9 c8 K: F& i; q1 \                                      (void**) &piDocRootsOnDoc);  _- Q2 b2 V7 B/ [9 m: B3 _- I
        if ( FAILED(rc) ) return 3;3 J5 L5 z' E' O  B3 ~" I/ q
       
' {- K. i4 _: ?0 `0 k: D, P        // get the root product which is the first element of root elements/ h& Q/ F% K3 y2 l1 g& d* p% Y
        CATListValCATBaseUnknown_var* pRootProducts =
. F1 ^* E% v7 l' S% m- D                piDocRootsOnDoc->GiveDocRoots();1 R- R5 I. ^+ [
        CATIProduct_var spRootProduct = NULL_var;7 C$ \5 n5 h% X1 e
        ) G& V! u( v* E7 ?$ S/ S
        if (pRootProducts && pRootProducts->Size()); T5 T  m" A( N8 K' Q- M
        {  0 b0 n! n: l) ~7 `4 O% v
                spRootProduct = (*pRootProducts)[1];
& z; E2 S# ]$ [% g" k                delete pRootProducts;
/ h; o. v7 y  O- P# U! n% |3 V                pRootProducts = NULL;
7 [% g( i0 ^; J( }+ A8 G2 H; h0 I        }
0 O! O0 @. `$ P6 l/** @anchor err_1 piDocRootsOnDoc not set to NULL after release */
6 |, p+ t1 ]; r6 h        piDocRootsOnDoc->Release();
9 b5 J9 q+ O8 n& z0 n3 P( z6 i        piDocRootsOnDoc = NULL;! H2 M; R# X5 }' h" w9 v
        ) W6 z' Q2 B- Z- l
        // Get CATIProduct handle on the root product.
0 f% f9 X& c: R        CATIProduct *piProductOnRoot = NULL;) [! m* z- v: g, y5 G
        rc = spRootProduct->QueryInterface(IID_CATIProduct,% H6 Y5 ?# T4 K* J# a5 z# s
                                               (void**) &piProductOnRoot);# e* \2 U  |& S7 f7 |& j2 [6 |# W1 S
        if ( FAILED(rc) ) return 3;
- U0 O! y& O4 M* {6 V5 f+ X1 ]8 W
% p; N$ M( a- ?9 |4 t8 K& A        /* ---------------------------------------*/
+ f- y1 ?. }0 c+ Z! _$ G" q+ m        /* 3. Retrieves children under the root   */
6 s9 s, b% Z& F, M. n8 S        /* ---------------------------------------*/% C6 p# T/ u( a0 i- N. B' z5 P& A
        ' Y3 D; T' H9 g( h) l2 t: T, B
        int nbOfDirecTChidren = piProductOnRoot -> GetChildrenCount() ;
4 {6 |7 u$ p6 r- }5 ^. D6 }        cout << " Number of direct children under the root = " << nbOfDirectChidren << endl << flush;3 s/ _/ P. q$ y! l& q: K4 Z
       
# v3 c) y: }; D, |1 ?        // then on a root product, get all the children agregated to it.0 Y7 d. Z! R' g/ k- n# u- J9 I8 a
        CATListValCATBaseUnknown_var*   ListChildren =, }+ H  u: A! x4 b# n3 o( g* C
                piProductOnRoot->GetAllChildren();
* w5 q" i2 J) W$ I& o0 R$ w/ P/** @anchor err_2 piProductOnRoot not set to NULL after release */ 0 ~+ _9 n' o8 a/ n8 |
        piProductOnRoot -> Release();- E2 \  m) }; `# C4 U# f: r
        piProductOnRoot = NULL;
/ Q7 R, d6 k: Y# ^6 |. U        if(NULL != ListChildren)9 }! i7 T7 A+ O/ l0 D: A6 c/ x
        {
' I1 x4 `& c( D- v                3 a% S0 a3 U4 P. m" b9 g; n
                int numberOfChildren = ListChildren->Size();& h: S" M9 ^+ g2 z5 g' M) [, B  m
                cout << " Number of all children under the root = " << numberOfChildren << endl << flush;
$ C: Q. Q$ K$ ?( O% v" P. _
: u6 `7 Q1 P# [) X2 p: N                /* -----------------------------------------------------------*/, K+ Z" {% P( c" g8 u8 Z& |
                /*  4. For each child, get its partNumber, and InstanceName   */
. w  ]  C2 D! t' R1 D; q# ^: l0 A$ r                /* -----------------------------------------------------------*/
5 T' K. ~' B) w4 X. t) [1 L                CATIProduct_var spChild = NULL_var;
7 V* y7 s1 c* K  m$ R; A9 `                for (int i=1;i<=numberOfChildren;i++)/ w( K( z0 V1 H9 n% W8 ~
                {
$ X2 h- L1 @# d4 i$ d  t; @                        spChild = (*ListChildren);
, n2 n& x  I) C. Z$ w/** @anchor err_3 spChild not tested before use ( if !! ) */ 3 {5 Q- U" l6 z  [3 X6 I: ]
                        if ( NULL_var == spChild ) return 4;) b3 S) x# y4 F: `4 c
                        CATUnicodeString partNumber = spChild -> GetPartNumber();
3 Z  `" i; C! z4 f2 M% ~                        CATUnicodeString instanceName (" ");
& q/ O& J- t: n( L$ k$ k                        rc = spChild -> GetPrdInstanceName ( instanceName ) ;
2 A7 i+ s8 F. l% X2 M3 ?$ t                        if  ( FAILED(rc) ) return 4;
- j$ W" z8 l$ I0 ~' |9 M                        ( N5 m! D* H6 \6 N
                        cout << " child number : " << i << endl << flush;3 |- |8 L) t7 F/ S# z$ A
                        cout << " has as part number : " << partNumber.CastToCharPtr()  << endl << flush;& j/ ^0 @6 F0 f: x1 d* l) l  t8 R
                        cout << " and as instanceName : " << instanceName.CastToCharPtr() << endl << endl << flush;7 ?: C+ B, R6 @$ p
                }/ {7 G3 o! z- ?; f# o0 I$ G7 N
                delete ListChildren;
6 v% k" y# J. c! ]  c- w' r                ListChildren=NULL;
% W2 J: z6 l; M, [        }        * C: d* U7 i. o
        /* -------------------------------------------- */+ ~4 Y+ q# w5 r& g
        /*   Ends the session                        */- K/ `! l8 S6 f1 R9 s$ f
        /* -------------------------------------------- */[/mw_shl_code]5 r$ f- ]4 j+ Z- T% 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二次开发专题模块培训报名开始啦

    我知道了