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

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

[复制链接]

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

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

admin 楼主

2018-1-10 10:12:25

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

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

x

% [* x4 I1 r: E& @Catia二次开发源码分享: 获取装配所有组件列表% t# |$ h# t7 Y- Q+ j1 ~

( B" |3 v' a# C  U4 O6 d6 Q4 u* G
4 x* c4 W/ I) J- |& [2 f8 p3 a2 t! z[mw_shl_code=c,true]/* ----------------------------*/" W9 r* M. }% D5 G- J
        /* 2. Retrieves Root Product   */2 c6 C0 |8 u2 }
        /* ----------------------------*/2 v" z' B; Q6 ]+ O, ^$ u) T# \
       
5 p; f) j$ U! o1 K        // Begin navigation throUGh the document => start with the RootProduct.
, U; j7 c9 h6 u% D6 @( ~        CATIDocRoots* piDocRootsOnDoc = NULL;
1 y. I1 m- A. m1 o        rc = pDoc->QueryInterface(IID_CATIDocRoots,9 o: r6 S1 l# C2 Z
                                      (void**) &piDocRootsOnDoc);, p: e7 J% S: i# v+ v4 Y9 x; ~
        if ( FAILED(rc) ) return 3;
% E0 E. C3 |; }. N        6 m7 G/ j, ~0 J
        // get the root product which is the first element of root elements/ p. q2 ]3 C+ K2 S6 A
        CATListValCATBaseUnknown_var* pRootProducts = 1 {$ P! ~+ s3 r. R, R0 h
                piDocRootsOnDoc->GiveDocRoots();  v) _+ N: E* R# I& n6 W! a
        CATIProduct_var spRootProduct = NULL_var;: o. s( R8 S3 [% l! m3 X
       
1 Q/ n1 `1 I. x% H. l* A' _( }        if (pRootProducts && pRootProducts->Size())5 w* c  V' W+ ^0 l
        {  2 r9 m: O4 q6 b$ Y3 Y  ?) R5 U* A
                spRootProduct = (*pRootProducts)[1];
/ l! l6 G+ d! b5 C                delete pRootProducts;6 B7 Q1 R: S. r2 G" C
                pRootProducts = NULL;
6 F9 W0 P# z$ B. C% z* c5 E# M- P        }. s7 n, W+ D  ?8 [* o
/** @anchor err_1 piDocRootsOnDoc not set to NULL after release */ # B- q0 x& z$ W9 m1 L/ z5 l" T9 E
        piDocRootsOnDoc->Release();3 c1 `# v: h; e7 k, @8 k
        piDocRootsOnDoc = NULL;3 d& M- z# F$ M2 g
        ; O& H" U' j  [, ^9 C$ ]
        // Get CATIProduct handle on the root product.
! I, _5 [5 Z1 \" B, f& y        CATIProduct *piProductOnRoot = NULL;
. J" ]# |$ x: i        rc = spRootProduct->QueryInterface(IID_CATIProduct,
; j0 J/ a# v* Y: f7 n5 d                                               (void**) &piProductOnRoot);
; F6 i6 x3 |- |1 m& u- E        if ( FAILED(rc) ) return 3;7 F( l0 e, H3 z4 q5 M: @

# z2 Z& f$ `: ~/ y9 T/ U        /* ---------------------------------------*/& a* T% E, ?( A9 H4 L- n3 ~$ x+ D
        /* 3. Retrieves children under the root   */: W# G* I$ \( {: H- J
        /* ---------------------------------------*/* X& f% A' Z! l$ B5 N. g% d
        % _  W; L3 h: I; R: u! }
        int nbOfDirecTChidren = piProductOnRoot -> GetChildrenCount() ;
6 ]0 R" ~& I. P$ h6 r5 s+ ^        cout << " Number of direct children under the root = " << nbOfDirectChidren << endl << flush;
1 T( \1 B& J" U% a) g        . g1 u# W% C9 P- l" [3 p8 h
        // then on a root product, get all the children agregated to it./ i- I' ?3 C* G+ C: G7 p
        CATListValCATBaseUnknown_var*   ListChildren =! e9 i" q3 `$ Y
                piProductOnRoot->GetAllChildren();
) s8 c+ b5 t+ o, y/** @anchor err_2 piProductOnRoot not set to NULL after release */
0 o% a3 B7 q  x        piProductOnRoot -> Release();' x, c. I1 F, H- |3 L
        piProductOnRoot = NULL;
8 U* N+ c8 @( t7 H' X        if(NULL != ListChildren)
  j7 c4 w+ J' b        {! m3 t7 ?  S+ n
                * K$ S3 t0 k# Z4 L' `
                int numberOfChildren = ListChildren->Size();/ }4 \4 x) H# g5 V# I. v: C- k
                cout << " Number of all children under the root = " << numberOfChildren << endl << flush;
. Z$ k+ K& p4 V4 L
  N' f) e* E; G' V                /* -----------------------------------------------------------*/
# D; Q# }2 I' ?$ W! f$ ~/ B; Y* C$ [                /*  4. For each child, get its partNumber, and InstanceName   */& j% P  a. P# p3 C/ C1 X6 E
                /* -----------------------------------------------------------*/' l' C. R0 |6 J9 K9 @& E
                CATIProduct_var spChild = NULL_var;! t) D6 ?$ p2 k
                for (int i=1;i<=numberOfChildren;i++), f  [. u) j* s2 C. [! t
                {1 Q) R( ^1 k( Y" y! ~
                        spChild = (*ListChildren);
9 T* {$ `7 J8 C  D/** @anchor err_3 spChild not tested before use ( if !! ) */
1 k( z0 A: P' w% U9 M4 \7 t7 q                        if ( NULL_var == spChild ) return 4;- ?! `- q5 K" _% Z" j! d& i) H
                        CATUnicodeString partNumber = spChild -> GetPartNumber();
7 n- p2 S! i2 B1 J9 [2 {                        CATUnicodeString instanceName (" ");1 Y$ z+ r) C3 O# \/ h' c
                        rc = spChild -> GetPrdInstanceName ( instanceName ) ;
) s8 M4 [! k" S& ?. w. J                        if  ( FAILED(rc) ) return 4;( r8 r8 Q; F' o. c* F; g3 o. M
                        9 ?- c( d( b( I" T
                        cout << " child number : " << i << endl << flush;
, m# d2 \$ }8 I                        cout << " has as part number : " << partNumber.CastToCharPtr()  << endl << flush;
* J$ x0 X& N' y+ i2 |  n& C                        cout << " and as instanceName : " << instanceName.CastToCharPtr() << endl << endl << flush;8 D& I/ h1 N% z* M3 a2 O( G
                }; ^4 z' p. q! F, _  q
                delete ListChildren;
- B* Q% b1 \' ?( K                ListChildren=NULL;
6 Y7 i2 {  x& U* i4 w- B        }        + S) R1 J, q7 [+ I+ L! ~( i: o; E
        /* -------------------------------------------- */
+ N" F% `+ t/ s- A+ P- e        /*   Ends the session                        */
/ r* m0 G% q+ Q3 I6 f$ D! P+ x8 i        /* -------------------------------------------- */[/mw_shl_code]1 ?! d0 N3 x) q& P- ]
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了