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

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

[复制链接]

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

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

admin 楼主

2018-1-10 10:12:25

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

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

x
) F5 ?% l( |. _+ f' N% ^
Catia二次开发源码分享: 获取装配所有组件列表
: g& J% P" ], d8 b+ D2 U3 B
* c9 b7 V( v; q0 L+ d3 Z
- W0 E2 K* r! {# E[mw_shl_code=c,true]/* ----------------------------*/2 q! \/ U' H( k6 v( y; s2 {
        /* 2. Retrieves Root Product   */6 o0 i6 u! V7 u$ v& t" {) B5 \
        /* ----------------------------*/
& z( ?6 k) n& w" ~4 J          B/ ^6 T* \$ S& q7 S+ P- g
        // Begin navigation throUGh the document => start with the RootProduct.+ T7 a; k$ o& T& \, m2 ?
        CATIDocRoots* piDocRootsOnDoc = NULL;1 C' J4 D! I* V) U) d* U
        rc = pDoc->QueryInterface(IID_CATIDocRoots,% m& O* A. E  `4 C- a
                                      (void**) &piDocRootsOnDoc);& w; t5 h" L. y* h) f( v
        if ( FAILED(rc) ) return 3;
, d# q9 `/ W2 V        * |. E% C9 U* D* Z
        // get the root product which is the first element of root elements: y$ f& f& J1 X& Z
        CATListValCATBaseUnknown_var* pRootProducts = 6 d0 G( [* Y7 B4 i) W) n( X; L
                piDocRootsOnDoc->GiveDocRoots();" Q5 m- W: k7 x0 M4 f
        CATIProduct_var spRootProduct = NULL_var;: ]  Y7 E9 r4 ?
       
$ L/ }) S& i$ s        if (pRootProducts && pRootProducts->Size())
5 O& H6 m) h1 s) ]6 c& p        {  2 T5 Q3 A9 Q# N" R$ U- A
                spRootProduct = (*pRootProducts)[1];
, D1 Q4 K2 Q$ _" a) P: `$ c$ P                delete pRootProducts;7 l. V3 y! l/ G9 L* }3 G, s
                pRootProducts = NULL;
: ?/ e/ e* ^  G8 a8 e        }6 ?3 P7 J+ c! P
/** @anchor err_1 piDocRootsOnDoc not set to NULL after release */
3 V1 W, H# p8 s5 x6 u5 d        piDocRootsOnDoc->Release();
: k3 ?( v" o! L! K6 u        piDocRootsOnDoc = NULL;
9 R% z6 B& ~% [4 s) C        2 P8 ]( f9 o6 X9 x% ~
        // Get CATIProduct handle on the root product.
( H6 X3 O" z7 L. D        CATIProduct *piProductOnRoot = NULL;) b. Y& a! B! T) P/ V
        rc = spRootProduct->QueryInterface(IID_CATIProduct,& ~5 j9 F. q- s# a6 r: u/ m
                                               (void**) &piProductOnRoot);
' `' [  m! u# j  D1 |        if ( FAILED(rc) ) return 3;
$ U# G; G5 A* [. M, _" g3 Q
& @' `( S' g. ]- k/ v$ q# P. R% B        /* ---------------------------------------*/
  m) v- v$ o! K! ~( b) ^        /* 3. Retrieves children under the root   */
* v4 y! {# R& J9 p$ ^% O        /* ---------------------------------------*/% z7 |& V  J! {) e+ P
       
* B& f& ]/ k1 {        int nbOfDirecTChidren = piProductOnRoot -> GetChildrenCount() ;
) b& q2 @5 ~, X  c        cout << " Number of direct children under the root = " << nbOfDirectChidren << endl << flush;+ |$ h; T( v  |& z  F1 n
       
% F: P' m) u" o2 T- E* B        // then on a root product, get all the children agregated to it.9 j1 l8 }8 G4 d9 y
        CATListValCATBaseUnknown_var*   ListChildren =
* u, ?8 P) ^8 j                piProductOnRoot->GetAllChildren();7 ]) T2 T0 h4 c; {/ k8 }/ j: e
/** @anchor err_2 piProductOnRoot not set to NULL after release */
, a/ b* m3 c# s) A: ~# i  ?' P2 V        piProductOnRoot -> Release();
9 w4 _7 B% z' e0 L" O6 `) R        piProductOnRoot = NULL;
, W& ?' `4 A4 K$ l1 ^. [) R        if(NULL != ListChildren)
& v' O) {: N- t        {1 d( W- }: k3 H: f3 d$ ~2 i
               
5 P4 D& ^6 O% D/ p" z/ j                int numberOfChildren = ListChildren->Size();
: _( q; M; n7 e5 l) J                cout << " Number of all children under the root = " << numberOfChildren << endl << flush;
) G% u7 d6 q" s, _0 ^" [# t/ v3 a6 y; A( M
                /* -----------------------------------------------------------*/7 W, {. K# e& p+ n. J& g+ D6 r
                /*  4. For each child, get its partNumber, and InstanceName   */
$ _3 P3 E- d# ?2 k* o# z7 E2 _                /* -----------------------------------------------------------*/' D' ^* ?2 `! N/ Q. q2 ~) v; v
                CATIProduct_var spChild = NULL_var;
' v! r6 j: L7 {: r5 f) U                for (int i=1;i<=numberOfChildren;i++)
) k6 e0 S3 R. P                {8 B( [$ }$ |' t: n  z
                        spChild = (*ListChildren);" w& k* L6 \5 u
/** @anchor err_3 spChild not tested before use ( if !! ) */ " b% v% X4 E' t9 D9 k* Q1 x2 d
                        if ( NULL_var == spChild ) return 4;1 a1 ]9 i! `' e: y% s  h7 r( c
                        CATUnicodeString partNumber = spChild -> GetPartNumber();+ J- `) B/ c- q& d0 a+ Y
                        CATUnicodeString instanceName (" ");
9 A5 }# B; _8 |* X6 q/ _; d                        rc = spChild -> GetPrdInstanceName ( instanceName ) ;( R6 I" w) p' t
                        if  ( FAILED(rc) ) return 4;4 G8 E7 w" k1 @3 D2 J- \% F5 j0 h
                        5 ]4 B) ~: ]# ?$ m7 J  N
                        cout << " child number : " << i << endl << flush;1 G1 }9 \" ?' G5 \+ E9 r% q
                        cout << " has as part number : " << partNumber.CastToCharPtr()  << endl << flush;
: [+ ~: W6 S% I8 a  V5 i                        cout << " and as instanceName : " << instanceName.CastToCharPtr() << endl << endl << flush;4 {+ z' L* U4 f, c8 b- h
                }
3 a, c- `  t8 E* i! ~% E                delete ListChildren;. R7 z! r' ?( @; z4 ]; w/ n
                ListChildren=NULL;5 X: ]+ d/ m2 q) n
        }        - l& x! ]: ~# m4 F& t3 @
        /* -------------------------------------------- */
% A6 Z- S6 c  L# l, a; t  _        /*   Ends the session                        */4 ^0 k3 e! M5 `6 n0 N+ M
        /* -------------------------------------------- */[/mw_shl_code], V; q  w9 _* L2 M& _
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了