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

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

[复制链接]

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

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

admin 楼主

2018-1-10 10:12:25

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

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

x

5 x3 T+ _1 N  k1 FCatia二次开发源码分享: 获取装配所有组件列表; s; k8 ^) i! d
# t8 O3 i0 o% z7 r

0 O, g% H4 A1 A$ M5 Q/ H9 ^9 V$ I[mw_shl_code=c,true]/* ----------------------------*/; M+ L) U9 ^' W
        /* 2. Retrieves Root Product   */3 z/ N: q! I6 c0 t7 u- x
        /* ----------------------------*/9 F- C& H% a. A- e7 g7 B
       
0 A5 ?3 r2 p3 Z2 B; \! A        // Begin navigation throUGh the document => start with the RootProduct.
6 w1 s( h* a; s6 M1 \% q        CATIDocRoots* piDocRootsOnDoc = NULL;
) K5 Q/ n* T$ M7 h. {- g        rc = pDoc->QueryInterface(IID_CATIDocRoots,
# ]+ `- J; w. y0 \: n/ |                                      (void**) &piDocRootsOnDoc);
3 t+ A) N* J! X+ ?* Q- E. X        if ( FAILED(rc) ) return 3;
; D' [" P4 w# _3 n) }0 i0 I        $ N8 p- O' z; _+ c; l( Y& w
        // get the root product which is the first element of root elements
1 o8 r+ b8 W7 u  N# }0 D" Z        CATListValCATBaseUnknown_var* pRootProducts = ( d  V% Y0 m  j  i7 B! K$ T
                piDocRootsOnDoc->GiveDocRoots();/ F) q8 z9 x1 B! V1 u9 b3 T
        CATIProduct_var spRootProduct = NULL_var;+ U3 z9 Q% q6 C1 ?
       
9 ?6 z  c2 ~/ h& d3 n        if (pRootProducts && pRootProducts->Size())
- m8 _2 o( `; C5 Y$ H: l! X7 U  c        {  
. m2 L; s% Z" k                spRootProduct = (*pRootProducts)[1];! f$ ^  n5 M1 ~
                delete pRootProducts;6 c8 t$ W, ^+ }) y/ i
                pRootProducts = NULL;, W$ `5 d1 p; n, M, j3 Q% I  @
        }( k8 ?. S+ }6 N5 f& U4 m* X
/** @anchor err_1 piDocRootsOnDoc not set to NULL after release */
2 Z3 c) _. ]" p. d4 O. k+ R        piDocRootsOnDoc->Release();! t& E5 V( h; I0 X' e0 K! F
        piDocRootsOnDoc = NULL;
6 ]0 V( F9 D% |* E       
5 _; z- z. N# v0 j- t$ H        // Get CATIProduct handle on the root product./ O' k$ t( u+ B* Z
        CATIProduct *piProductOnRoot = NULL;2 d' D* y7 u, f" o* D+ N/ S
        rc = spRootProduct->QueryInterface(IID_CATIProduct,
6 z. f2 w4 Q$ M8 Q! Q                                               (void**) &piProductOnRoot);
' ]: L) u# n$ J4 V2 H9 _        if ( FAILED(rc) ) return 3;- c/ z1 C, n, ]  _7 d
* m+ m1 l' x2 P" G; y2 d
        /* ---------------------------------------*/8 p1 f# `# x, B. N2 Q$ Y. ^
        /* 3. Retrieves children under the root   */7 ?& M! x  Q/ X, M% S% I
        /* ---------------------------------------*/. c, m1 [: i6 a
        4 P3 a) U* I7 Q% U
        int nbOfDirecTChidren = piProductOnRoot -> GetChildrenCount() ;5 u! U6 H7 g) W5 X$ e
        cout << " Number of direct children under the root = " << nbOfDirectChidren << endl << flush;& C# E; |& J8 `5 L6 A+ L
        9 g+ U' n! K% k; G+ R% n% k/ o
        // then on a root product, get all the children agregated to it.
: P/ c& X" [' @  @        CATListValCATBaseUnknown_var*   ListChildren =% h; u- P9 j2 ^4 x- N
                piProductOnRoot->GetAllChildren();
: N% m( I) O! P$ d3 o/** @anchor err_2 piProductOnRoot not set to NULL after release */
1 |& V2 ?; f4 K8 n4 r* `4 Q+ w- J        piProductOnRoot -> Release();
* h2 z$ }* y# J0 @& \        piProductOnRoot = NULL;
  c% n6 o) l$ G5 r        if(NULL != ListChildren)
  s" J; s7 u4 y6 P' N        {
1 j0 d2 S/ m, c1 h" s) R: x  }                2 d# x3 ~, X7 N0 y( C) y' `8 H2 j
                int numberOfChildren = ListChildren->Size();
( A& z! m0 `$ q2 T: t5 n                cout << " Number of all children under the root = " << numberOfChildren << endl << flush;; C% o! @4 W2 ^, b
+ h  ^) p( X+ c
                /* -----------------------------------------------------------*/# y$ H8 B( ^- r/ R% P- T. O' v& B! R
                /*  4. For each child, get its partNumber, and InstanceName   */
* W! t7 s; H8 f5 g8 ^: s  j                /* -----------------------------------------------------------*/
1 U4 ]$ N6 C* k/ ~                CATIProduct_var spChild = NULL_var;  @4 O* c" O* @8 C* S
                for (int i=1;i<=numberOfChildren;i++)% m! H+ S  {" k
                {% `& t/ X( j" O( {" v0 B  E% y
                        spChild = (*ListChildren);/ S9 u1 b+ u  v  _: m. S5 Z" O" S% \9 e
/** @anchor err_3 spChild not tested before use ( if !! ) */
& @. {  h% W, d' q, v                        if ( NULL_var == spChild ) return 4;
$ d0 B/ Z1 b: ]5 u/ c8 h2 t                        CATUnicodeString partNumber = spChild -> GetPartNumber();
$ A+ O4 A/ @3 P1 a0 y- g: w                        CATUnicodeString instanceName (" ");: g: _/ B5 A& k  ?5 w0 R- B
                        rc = spChild -> GetPrdInstanceName ( instanceName ) ;. P9 M) H$ f- [+ R
                        if  ( FAILED(rc) ) return 4;6 ~  J5 ~: N: O& T7 _( F
                       
+ d  f& s% V9 V5 l, y3 X1 p8 ~                        cout << " child number : " << i << endl << flush;/ Z: h4 w( F9 L1 h. M
                        cout << " has as part number : " << partNumber.CastToCharPtr()  << endl << flush;0 q6 a/ c$ ?. W! {
                        cout << " and as instanceName : " << instanceName.CastToCharPtr() << endl << endl << flush;
, v" ?/ k4 y6 h9 Y5 J6 V% e                }+ Q* ]9 q: g' b
                delete ListChildren;
( ]. o* c% T9 v& Z: U( v: p                ListChildren=NULL;
0 j/ T) Z! R: A3 f1 Q7 }8 Y/ p        }       
! H. u# `5 n3 t' I4 P        /* -------------------------------------------- */
2 o9 f. Z1 K4 c6 L. F) I* z        /*   Ends the session                        */
, Q1 C& H, I- P% g2 X7 {        /* -------------------------------------------- */[/mw_shl_code]7 H3 K+ z1 z7 }2 m- e0 d9 H2 ^6 k
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了