PLM之家PLMHome-国产软件践行者

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

[复制链接]

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

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

admin 楼主

2018-1-10 10:12:25

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

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

x

! Y, d3 j; q0 Q$ z. l: Q. \: r! i: aCatia二次开发源码分享: 获取装配所有组件列表
; R1 M4 m) t! t8 {' o" c5 L/ F. c' R; B6 i! L

( [- y, |! q3 B- _# f[mw_shl_code=c,true]/* ----------------------------*/
& L1 V% t/ R% G9 U$ S9 h) @7 O/ r        /* 2. Retrieves Root Product   */9 j/ s( \1 {% y* Y8 Y  ^
        /* ----------------------------*/
7 |  N4 N  r+ O3 G7 g/ y2 \1 e       
$ I; {, ~5 q6 ?7 m. J# z        // Begin navigation throUGh the document => start with the RootProduct.
* S6 u& c" ~; f+ E* m        CATIDocRoots* piDocRootsOnDoc = NULL;
2 g2 w  z! K+ i8 z# p; f        rc = pDoc->QueryInterface(IID_CATIDocRoots,5 M% t! S2 y" E, A0 q$ y
                                      (void**) &piDocRootsOnDoc);$ b: ~4 W8 k% O2 ^6 O$ }
        if ( FAILED(rc) ) return 3;
: }: o1 y5 j8 U) U6 j+ `6 V7 \; N# A       
# z+ |0 i2 ?1 T) y7 z        // get the root product which is the first element of root elements8 z, ?  V1 @9 K* M: Y
        CATListValCATBaseUnknown_var* pRootProducts =
/ H1 Q& J/ K* _2 [  ]                piDocRootsOnDoc->GiveDocRoots();5 W: v+ T- {8 M+ H$ E
        CATIProduct_var spRootProduct = NULL_var;4 {6 o3 t; B, o2 N! e! E$ L" C8 ?6 M
       
$ k! B& x7 p# m2 z, M0 H        if (pRootProducts && pRootProducts->Size())
. w. T7 f% X7 Q        {  & x& {) i" f& v, u/ G
                spRootProduct = (*pRootProducts)[1];
4 m9 V+ \' R: w* F7 M                delete pRootProducts;; Q' {. u+ s4 K7 d
                pRootProducts = NULL;
1 G/ f& a* ~0 n7 V4 s. F        }, J/ g3 N: p0 F  L" p
/** @anchor err_1 piDocRootsOnDoc not set to NULL after release */ / ?. `8 @1 T: n( t+ K
        piDocRootsOnDoc->Release();! ]# P$ M9 Q1 j" @$ m
        piDocRootsOnDoc = NULL;
2 O. ^* ?. {# W- W        6 T, g! j* C0 u$ p! \, m
        // Get CATIProduct handle on the root product.
$ |" X6 O1 M# w0 z- S) o        CATIProduct *piProductOnRoot = NULL;
% E- j$ h1 _) ~1 t" t        rc = spRootProduct->QueryInterface(IID_CATIProduct,
* j6 x! g  C+ u- X4 q, m- V                                               (void**) &piProductOnRoot);, x0 {* ~0 I2 ^- i: e$ j
        if ( FAILED(rc) ) return 3;
$ k# o4 S4 A. |+ b# s* N5 N# L/ P& p( X% U5 f
        /* ---------------------------------------*/
% E  F* K0 `& s- @        /* 3. Retrieves children under the root   */, B% E, M% u# P
        /* ---------------------------------------*/
. U1 `8 s8 v0 y: e( o- O6 C        5 P$ Y& Y2 d4 P
        int nbOfDirecTChidren = piProductOnRoot -> GetChildrenCount() ;
7 H; Y  N. t$ [; s( [! T4 {8 g/ q' y; f        cout << " Number of direct children under the root = " << nbOfDirectChidren << endl << flush;
* ^2 W( C7 V2 l3 M       
. s* w1 [& O6 k1 }' B        // then on a root product, get all the children agregated to it.( j6 C% {5 O& b
        CATListValCATBaseUnknown_var*   ListChildren =& [8 c) I0 Y2 [# \" t
                piProductOnRoot->GetAllChildren();  |) K! D$ @5 _. `" m
/** @anchor err_2 piProductOnRoot not set to NULL after release */ 7 I' Y6 S! Z# z3 x- _
        piProductOnRoot -> Release();0 G. e0 L  M; V
        piProductOnRoot = NULL;
9 I# K* A+ m& s9 w2 O        if(NULL != ListChildren)& ~9 f, h& V; O- |
        {& H' K: i8 {" ]
                1 J: w/ B( h3 x  z
                int numberOfChildren = ListChildren->Size();
9 ~8 {, k+ b. O, x! V                cout << " Number of all children under the root = " << numberOfChildren << endl << flush;- E$ Q' i2 S- n) A5 J% y3 N
& f1 e9 W1 C! ]7 ]: o
                /* -----------------------------------------------------------*/( W7 |2 d  A* L2 G3 B2 V
                /*  4. For each child, get its partNumber, and InstanceName   */
# V& j& A3 ]4 E, ^) g                /* -----------------------------------------------------------*/, x: S4 `0 M6 Y5 @8 u' G1 g# C- y
                CATIProduct_var spChild = NULL_var;
, B- O8 X% u4 q- h7 n0 T+ i$ z5 W6 H6 Q9 e                for (int i=1;i<=numberOfChildren;i++)
3 X  I- t2 ]0 s3 u# o. F3 Y                {2 g' P# G& P) [$ o/ L/ m; U/ u- k
                        spChild = (*ListChildren);
9 e- V" s1 B5 o/** @anchor err_3 spChild not tested before use ( if !! ) */ ' k2 q: _6 Y0 T4 q
                        if ( NULL_var == spChild ) return 4;
* ^' j) {  G4 c7 l                        CATUnicodeString partNumber = spChild -> GetPartNumber();- }7 R" G" |6 C
                        CATUnicodeString instanceName (" ");
7 x. w6 e: N; Z. l3 m1 X                        rc = spChild -> GetPrdInstanceName ( instanceName ) ;
* l# L4 B# j( i  J: Q                        if  ( FAILED(rc) ) return 4;2 M& D$ Y9 i* q1 [5 g) o
                       
- @6 ?6 @8 m# U4 }) R4 \% u; k% }                        cout << " child number : " << i << endl << flush;' d3 r2 G4 ^! m# @
                        cout << " has as part number : " << partNumber.CastToCharPtr()  << endl << flush;
& m6 e+ `: Y; b. w" w, X                        cout << " and as instanceName : " << instanceName.CastToCharPtr() << endl << endl << flush;, b; B! T! ~; b8 h; n: k( g" W2 M
                }
& O0 L0 g3 Y. C. e                delete ListChildren;
0 ~' D* {9 @, W; }                ListChildren=NULL;- q. S, S- {; j& V4 h
        }        * U' F! _# B9 Z9 ^  Y) h
        /* -------------------------------------------- */
9 Z7 B* J5 f+ N- H; @7 W4 a' w3 n        /*   Ends the session                        */0 }3 M2 }( w( H) Q: B, x
        /* -------------------------------------------- */[/mw_shl_code]
2 u" M. m' C* W# M# `. a5 F$ ]
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了