PLM之家精品课程培训,联系电话:18301858168 QQ: 939801026

  • NX二次开培训

    NX二次开培训

    适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术对于老鸟也值得借鉴!.

    NX CAM二次开发培训报名 NX二次开发基础培训报名
  • PLM之家Catia CAA二次开发培训

    Catia二次开发培训

    Catia二次开发的市场大,这方面开发人才少,难度大。所以只要你掌握了开发,那么潜力巨大,随着时间的积累,你必将有所用武之地!

  • PLM之Teamcenter最佳学习方案

    Teamcenter培训

    用户应用基础培训,管理员基础培训,管理员高级培训,二次开发培训应有尽有,只要你感兴趣肯学习,专业多年经验大师级打造!

  • PLM之Tecnomatix制造领域培训

    Tecnomatix培训

    想了解制造领域数字化吗?想了解工厂,生产线设计吗?数字化双胞胎,工业4.0吗?我们的课程虚位以待!

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

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

[复制链接]

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

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

admin 楼主

2018-1-10 10:12:25

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

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

x

! C9 e- W- ?( R" k) k. `Catia二次开发源码分享: 获取装配所有组件列表8 G& x* [" i/ l3 K* ]& \

; i. j" c# d) {8 |( N! }" m, A9 o$ ^- |! T; @, V* D) i$ o
[mw_shl_code=c,true]/* ----------------------------*/9 e" n! j3 Q0 l5 Z. b; y6 Q1 o
        /* 2. Retrieves Root Product   */9 r  w+ P. ]3 W& Y
        /* ----------------------------*/- |( A8 B& c& q5 X, a
       
2 c0 A5 m* Q3 d' E$ X- P        // Begin navigation throUGh the document => start with the RootProduct.+ V9 W2 \9 w& i' I5 ~
        CATIDocRoots* piDocRootsOnDoc = NULL;
) ]  a' y8 z& g& r  t, b1 t4 X        rc = pDoc->QueryInterface(IID_CATIDocRoots,
4 V) n9 W  l  ^                                      (void**) &piDocRootsOnDoc);# F  E* [3 A* @$ i
        if ( FAILED(rc) ) return 3;
# [& R' v' c9 o  K       
$ k) L$ C- m- S+ M; q  `        // get the root product which is the first element of root elements8 }6 e+ Y) x* E. t5 q* s
        CATListValCATBaseUnknown_var* pRootProducts = # F% {8 l1 O# S6 F! V
                piDocRootsOnDoc->GiveDocRoots();
+ @5 l3 M* o+ B" I. E+ |3 o        CATIProduct_var spRootProduct = NULL_var;
& s2 f+ @' J5 G; c' J        ! K: h* z' Q7 U5 k) Z0 h
        if (pRootProducts && pRootProducts->Size())
& n( Y5 W; k+ B$ G, a: w( G1 ^        {  * t; K2 ]$ O4 |; ]" z* f
                spRootProduct = (*pRootProducts)[1];' }( f7 a* `5 `' |
                delete pRootProducts;
/ I) {' n- L% Q% I: `$ t1 x                pRootProducts = NULL;
: p4 u; Y+ G+ S) T9 S  y( A* |        }
9 p! i- p9 L( b. w7 ?/** @anchor err_1 piDocRootsOnDoc not set to NULL after release */ * E7 w, s3 n+ k' a
        piDocRootsOnDoc->Release();. i8 ~+ m8 i; Z7 a
        piDocRootsOnDoc = NULL;
( V3 A7 w7 _3 Q' K: H       
( M+ {$ s; E. `8 _5 ~        // Get CATIProduct handle on the root product.
9 [) T" u7 @3 `& t) B% T$ r        CATIProduct *piProductOnRoot = NULL;
9 c7 U( @& J3 O& |2 s4 g5 J0 j        rc = spRootProduct->QueryInterface(IID_CATIProduct,! q, z5 @8 D( D0 P! W* _: l" o. B
                                               (void**) &piProductOnRoot);
+ R* Z3 l; B$ d& D0 s7 s# w7 u        if ( FAILED(rc) ) return 3;
( J7 S8 Y. I4 Q9 `5 c9 l' O* K% F3 _0 {* U
        /* ---------------------------------------*/
1 X3 |8 Q, U! j0 O8 k; ]        /* 3. Retrieves children under the root   */& J+ B8 i; c- A  [  q
        /* ---------------------------------------*/7 J' S+ L! P: `! N5 X9 y
        1 Y* s- T" T! _% {, G3 F7 N; P% F' r. c
        int nbOfDirecTChidren = piProductOnRoot -> GetChildrenCount() ;1 [; s; _+ q5 P3 w: J; |
        cout << " Number of direct children under the root = " << nbOfDirectChidren << endl << flush;
3 r/ M9 b7 N8 `! A! e+ ]: U4 v       
# ~$ {% y8 }0 e5 g% ]        // then on a root product, get all the children agregated to it.1 |' S, P" [+ F- y$ X9 W
        CATListValCATBaseUnknown_var*   ListChildren =
  l, }4 Y8 y+ L) X1 j+ \8 j- q  q; e                piProductOnRoot->GetAllChildren();& i5 O' m! Z6 K9 d
/** @anchor err_2 piProductOnRoot not set to NULL after release */ 3 |8 u" z0 F- F& r
        piProductOnRoot -> Release();) N7 K! C3 \- J' }: p
        piProductOnRoot = NULL;+ E4 X: h- K6 g
        if(NULL != ListChildren)
& ]) r" A( p; l4 E, P: D        {
6 G. L' r9 Y" j1 R) t               
8 C8 l9 f! H5 C                int numberOfChildren = ListChildren->Size();/ t1 k8 O4 e) w' p& k8 Q; i) F
                cout << " Number of all children under the root = " << numberOfChildren << endl << flush;
' h+ C" D( {7 g! Z+ V, H4 |' b* c* S! ^, y- s$ }3 f
                /* -----------------------------------------------------------*/
* k( a* Q1 y. u7 x                /*  4. For each child, get its partNumber, and InstanceName   */
) Z* Q  `+ {; j6 D: o                /* -----------------------------------------------------------*/8 ~$ d; e# x2 D% v
                CATIProduct_var spChild = NULL_var;6 e! c- `! ?4 d! ~, _9 v8 s1 P
                for (int i=1;i<=numberOfChildren;i++)* C6 d' J) y3 e' o: w
                {# ~: w. M/ H( Y# N
                        spChild = (*ListChildren);
: Y! Y. ]. m9 g/** @anchor err_3 spChild not tested before use ( if !! ) */ 9 a0 s4 r; b1 k8 a# }% n, |3 T: o
                        if ( NULL_var == spChild ) return 4;
" h, r  a4 ?9 L2 Y                        CATUnicodeString partNumber = spChild -> GetPartNumber();8 [: x5 C; k* m+ U' g
                        CATUnicodeString instanceName (" ");$ r0 Q" Z( _1 n6 ?" L$ \( l
                        rc = spChild -> GetPrdInstanceName ( instanceName ) ;1 q1 w9 a5 u9 ?/ G( u# l# B
                        if  ( FAILED(rc) ) return 4;
, p/ D7 x4 a' G( t7 O                       
3 W0 a6 h( n& r- k: M9 ], t2 z4 @                        cout << " child number : " << i << endl << flush;
; T* A& T5 L0 E0 S  G7 u' u                        cout << " has as part number : " << partNumber.CastToCharPtr()  << endl << flush;
0 L: `3 E, e# n9 B                        cout << " and as instanceName : " << instanceName.CastToCharPtr() << endl << endl << flush;% U- M/ g- @! X% w9 _) T' `) f& q" @
                }; V  @) x; T* \2 x
                delete ListChildren;5 s' ~7 r5 p/ j  J
                ListChildren=NULL;! B& H+ G( a* {. E
        }       
1 J$ b: g4 X3 p        /* -------------------------------------------- */
3 j, r# C3 I; _( E+ Y( N        /*   Ends the session                        */
0 C- L% }/ K9 U* Y' E4 G0 g1 Z        /* -------------------------------------------- */[/mw_shl_code]
/ K8 S; o6 w& ]# [2 ^! W
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了