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

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

[复制链接]

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

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

admin 楼主

2018-1-10 10:12:25

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

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

x
1 X8 x% V0 ~" b- I! n: K
Catia二次开发源码分享: 获取装配所有组件列表
3 l7 Z$ n( c* h: m' Z4 n6 u3 K4 k) [! i6 c6 f
1 E5 p) c6 C* `" b( O
[mw_shl_code=c,true]/* ----------------------------*/- q/ N# d3 q  x4 l' h. {
        /* 2. Retrieves Root Product   */
3 Y9 `, F! ^# p5 c! d% |        /* ----------------------------*/
; k- D; I+ b& u8 M8 D0 `) a4 ]       
4 E9 ]! M; A- J% l3 r7 k        // Begin navigation throUGh the document => start with the RootProduct.3 T: ^3 T! X/ Y, E/ M
        CATIDocRoots* piDocRootsOnDoc = NULL;
8 S( f2 [& ^5 A- S9 v5 [- d$ Z        rc = pDoc->QueryInterface(IID_CATIDocRoots,
* o: W' G7 O5 n) r- A                                      (void**) &piDocRootsOnDoc);
8 V- w  o" [6 _- Z' V3 c" ]        if ( FAILED(rc) ) return 3;
' i% ^* d' m9 ^. Y        8 i) K1 g  b: x9 ]4 Y0 U
        // get the root product which is the first element of root elements. c# \# _6 W  y7 A. C  C/ b
        CATListValCATBaseUnknown_var* pRootProducts =
5 C0 f) T. ~& s" ?2 K                piDocRootsOnDoc->GiveDocRoots();
' l9 Z4 Q) D9 F/ E6 O        CATIProduct_var spRootProduct = NULL_var;# U3 _7 M3 N; D8 R7 @$ x3 ?
        , R4 R6 i& w4 p8 P' }1 @# e
        if (pRootProducts && pRootProducts->Size())& L* ]' E, w9 i7 r3 v- K& _
        {  . f1 R8 M1 I) r/ @' f7 P
                spRootProduct = (*pRootProducts)[1];* m: j8 {! R8 k; q
                delete pRootProducts;( J( i+ R/ c! @6 O5 J% i' @
                pRootProducts = NULL;% f& k- E5 u$ y( c5 H: X
        }9 p- u" r( S& \  A+ g' `
/** @anchor err_1 piDocRootsOnDoc not set to NULL after release */
4 r! R/ S- F- M$ b9 K# a        piDocRootsOnDoc->Release();3 q( S0 s8 o2 a3 A
        piDocRootsOnDoc = NULL;
5 c- l" }* E0 X0 ~; I( s5 }       
1 i3 D. N/ K: r- Q+ T7 A0 l4 W& u        // Get CATIProduct handle on the root product.1 p1 n6 N, d- V% U
        CATIProduct *piProductOnRoot = NULL;4 B- r' y" L' G5 ~8 Q! {
        rc = spRootProduct->QueryInterface(IID_CATIProduct,
3 X0 `4 `2 @. r: Z' q                                               (void**) &piProductOnRoot);% o; f; v4 k2 O
        if ( FAILED(rc) ) return 3;
$ j5 I' D4 b& ~& K% |2 D8 W% W1 l$ H; _
, O. e. {$ D3 v: s* R) G: a        /* ---------------------------------------*/5 J, I7 I: A* B6 y& F
        /* 3. Retrieves children under the root   */
1 ?; S8 p' f. t7 R        /* ---------------------------------------*/; s8 r4 ?- k7 r4 a3 F7 L
       
+ y/ a2 i4 Z8 [+ l  _0 ~        int nbOfDirecTChidren = piProductOnRoot -> GetChildrenCount() ;! \" M) g; @+ O; J
        cout << " Number of direct children under the root = " << nbOfDirectChidren << endl << flush;
# }, y: y4 ]% r" _# ]/ }       
  b" j. I* f8 R+ N- Q0 e2 }: N9 m% ]1 y' f        // then on a root product, get all the children agregated to it.& q' Z4 b* O7 ~9 \
        CATListValCATBaseUnknown_var*   ListChildren =/ O- c' i6 d2 p, U% M. P7 k
                piProductOnRoot->GetAllChildren();! ?5 w* P6 S/ {! N3 ?
/** @anchor err_2 piProductOnRoot not set to NULL after release */
4 h1 t8 T6 m! w" M% P/ e" Q' e        piProductOnRoot -> Release();7 c$ L# D9 o+ \+ b
        piProductOnRoot = NULL;8 j1 j, x: \9 o8 D- a* y
        if(NULL != ListChildren)
4 C; e4 p# X& r. b* k0 S% r* t; h& a        {
6 q4 i- Z2 T0 y# r               
8 _* D* _+ ^7 r4 s                int numberOfChildren = ListChildren->Size();( d% d8 ]1 j& Q: }# p
                cout << " Number of all children under the root = " << numberOfChildren << endl << flush;
8 J2 [$ g# }8 E& T/ f- E: A# f' v* r$ i6 f8 }$ d% Z
                /* -----------------------------------------------------------*/
: ]6 z6 Y7 y* G! t+ `7 d  s                /*  4. For each child, get its partNumber, and InstanceName   */& l/ }7 A# ~: h. B0 o
                /* -----------------------------------------------------------*/6 O( @6 O+ K: |% Y* y  u, m- w
                CATIProduct_var spChild = NULL_var;$ M4 K8 r% e5 E+ {0 H  b, X5 w
                for (int i=1;i<=numberOfChildren;i++). b2 [$ s# {$ t; ]# J; f4 V
                {+ f" m5 T, y$ j: r, u% D
                        spChild = (*ListChildren);  K+ z0 [. A. o' V5 l
/** @anchor err_3 spChild not tested before use ( if !! ) */
- D$ u$ B1 t1 S: `# X, ?                        if ( NULL_var == spChild ) return 4;5 j# B) N% Q5 z3 @1 j
                        CATUnicodeString partNumber = spChild -> GetPartNumber();0 S  r2 {2 m& `. j  ?, `# i
                        CATUnicodeString instanceName (" ");
( X. L6 P9 L/ ?& S' e6 @                        rc = spChild -> GetPrdInstanceName ( instanceName ) ;) s4 i) c) ?/ S9 H" X
                        if  ( FAILED(rc) ) return 4;
5 F8 A* G1 F+ j' B; \( r: D+ f                        ' L5 T. F/ H' S1 l" S8 U
                        cout << " child number : " << i << endl << flush;
, T2 p6 D8 C- t8 p, D2 r                        cout << " has as part number : " << partNumber.CastToCharPtr()  << endl << flush;2 m2 S  x8 ^6 Q, {/ Z$ `
                        cout << " and as instanceName : " << instanceName.CastToCharPtr() << endl << endl << flush;
# x1 B$ Q3 J, Q; P( x                }
, b+ E; Y  U/ z: N                delete ListChildren;4 L  H% s( ?/ [
                ListChildren=NULL;
, n# S2 p3 {1 m. }        }       
2 H6 C/ F) z4 k1 R" W% a        /* -------------------------------------------- */9 ?6 R% g$ c! p* R; d- H+ P
        /*   Ends the session                        */! V5 R" ?8 o' ^0 x  ~! y& Z' p( x# t- I
        /* -------------------------------------------- */[/mw_shl_code]/ d, K7 B2 a" ?5 S, m% r" D9 R4 v
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了