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

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

[复制链接]

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

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

admin 楼主

2018-1-10 10:12:25

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

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

x
8 T4 j: x0 Y6 {8 I* G
Catia二次开发源码分享: 获取装配所有组件列表
5 Z7 i/ R4 w6 g4 @8 G& b5 c/ ?0 \/ D( u1 [

% S- d3 `0 [! W( X! s" P[mw_shl_code=c,true]/* ----------------------------*/
0 F+ I% M+ _; J! Y        /* 2. Retrieves Root Product   */
) S& k5 n8 b. W5 S+ S% W- ]        /* ----------------------------*/
' x3 M- {: l* V+ F        - T( c' q3 p5 s3 O5 D
        // Begin navigation throUGh the document => start with the RootProduct.
+ q$ z/ h  L8 d2 C- o! o" P        CATIDocRoots* piDocRootsOnDoc = NULL;
) ]% N! r5 r+ t        rc = pDoc->QueryInterface(IID_CATIDocRoots,
' U/ m3 I  @5 [9 R# X                                      (void**) &piDocRootsOnDoc);
% C& b/ J# a$ i1 G        if ( FAILED(rc) ) return 3;0 b9 q& ]9 F& M. e' v: T
        8 F9 ]$ t* m5 Q" `* l+ o- ^! ^
        // get the root product which is the first element of root elements
4 v+ {5 f1 t: k" o        CATListValCATBaseUnknown_var* pRootProducts = " S6 [) P- C; A" r8 I, V( [! n
                piDocRootsOnDoc->GiveDocRoots();# v. Q# l0 a+ @1 X  \
        CATIProduct_var spRootProduct = NULL_var;
6 a/ v8 U6 [5 [# \. T' q        2 s- I$ B2 t( i8 w" F
        if (pRootProducts && pRootProducts->Size())( S1 v- Q; G' P* ?7 U+ H6 W
        {  ( e1 l3 P: f8 U/ r8 x& T0 H
                spRootProduct = (*pRootProducts)[1];
3 T: \; e. R8 o" H                delete pRootProducts;
2 u# U8 [( }& I                pRootProducts = NULL;
- O& R6 L9 E' C5 |# R4 e+ ~* S$ r        }. |1 [  z' V3 @9 T) m* k
/** @anchor err_1 piDocRootsOnDoc not set to NULL after release */
" m( r' i# X! T% \9 p' l        piDocRootsOnDoc->Release();
" \! ~, b$ Z: n        piDocRootsOnDoc = NULL;: C5 F& R& C# l) u3 Y: S( A
          ?4 }: K4 N/ {  o5 e: i
        // Get CATIProduct handle on the root product.
8 ^/ l( F0 d2 Z        CATIProduct *piProductOnRoot = NULL;* X: D+ o" M; Z2 T4 s5 d7 j
        rc = spRootProduct->QueryInterface(IID_CATIProduct,
0 T& R; i$ g" k. P                                               (void**) &piProductOnRoot);# B' |  u6 ]9 J$ s0 z/ t' J. T6 y5 v
        if ( FAILED(rc) ) return 3;. K. K. Q5 N! i; e/ A
! `; ]; K' \% Q% y( s- O& Z
        /* ---------------------------------------*/6 Q8 _/ y# u* |- F6 i& f
        /* 3. Retrieves children under the root   */
7 Z9 r# c1 Y* l        /* ---------------------------------------*/, m3 L3 R  N( i0 Q" @; n: Z' R+ Q( M
       
+ m0 W# \' n% ~  G5 z  ?        int nbOfDirecTChidren = piProductOnRoot -> GetChildrenCount() ;4 H' V1 u% T% e
        cout << " Number of direct children under the root = " << nbOfDirectChidren << endl << flush;0 X& T" k* r' Y9 }7 i5 W
        + h7 X, E2 m! K$ R
        // then on a root product, get all the children agregated to it.. b' m3 M( l- U: [8 {  D
        CATListValCATBaseUnknown_var*   ListChildren =
# [6 V+ Y2 Z8 a  n' X8 q5 b* r                piProductOnRoot->GetAllChildren();/ b/ H. x% [2 j1 z7 G
/** @anchor err_2 piProductOnRoot not set to NULL after release */ * u0 o; Q' m1 f& D$ p
        piProductOnRoot -> Release();
3 {' D3 Y' ]# z- t7 u6 P7 A3 l        piProductOnRoot = NULL;5 q5 Y) C" h) ^
        if(NULL != ListChildren)" x0 _- W+ [* a8 |  r( C
        {6 F) N8 x4 g- i  V" S
                7 W# Z& M$ f( a8 _$ E
                int numberOfChildren = ListChildren->Size();* F+ T& @( N& C% y
                cout << " Number of all children under the root = " << numberOfChildren << endl << flush;
) f5 r3 |0 |  I2 }/ y0 i! \" R: y; G& D0 X
                /* -----------------------------------------------------------*/' ~7 ]' t. d3 Y
                /*  4. For each child, get its partNumber, and InstanceName   */
! C2 u0 G$ R' e) ~4 o+ Q; o5 K0 z: f                /* -----------------------------------------------------------*/3 `3 u, T- l* h! d! G8 ~# O/ ~- z
                CATIProduct_var spChild = NULL_var;
7 @1 u8 s  g7 a! U. L                for (int i=1;i<=numberOfChildren;i++)
: w) {5 h1 }5 }- @                {# Y. U( k2 ~: N3 U9 M' [
                        spChild = (*ListChildren);
5 u0 M# D, B' Z( }$ p7 p  w/** @anchor err_3 spChild not tested before use ( if !! ) */ 0 }/ Q8 Q) u: S' t
                        if ( NULL_var == spChild ) return 4;
/ U0 K9 j: D: @6 R5 ^+ k$ h2 @                        CATUnicodeString partNumber = spChild -> GetPartNumber();
- g7 L9 l0 U/ W                        CATUnicodeString instanceName (" ");
! B' g3 p  ^/ A, H4 R7 E- a/ O  n                        rc = spChild -> GetPrdInstanceName ( instanceName ) ;. b8 F" U6 d* S1 E
                        if  ( FAILED(rc) ) return 4;
3 z+ h8 j4 z9 J# L0 J  {" P, ~                       
. s3 J  v$ H7 \9 V7 n9 a9 k                        cout << " child number : " << i << endl << flush;
7 E6 \- G8 w9 W2 \. \4 p8 z                        cout << " has as part number : " << partNumber.CastToCharPtr()  << endl << flush;3 G8 K7 X! X) R- k: X( }
                        cout << " and as instanceName : " << instanceName.CastToCharPtr() << endl << endl << flush;  `: z9 q' G+ Z0 X" L4 f
                }
, V4 S9 M$ x- t5 Z                delete ListChildren;, N3 }. h2 S+ d9 U* P( e& u
                ListChildren=NULL;9 X6 g5 m. U  p2 q2 o. j
        }       
# _: L3 c) [3 \/ M3 |& s        /* -------------------------------------------- */9 H5 X& J+ n9 \  R3 J( p, m! V# _. `
        /*   Ends the session                        */& o3 y) o. i$ o; _
        /* -------------------------------------------- */[/mw_shl_code]
& J! v# W. ]9 d" B0 g& a
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了