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 2312 0

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

admin 楼主

2018-1-10 10:12:25

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

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

x

& d7 j! R! X2 s9 d- y7 z% m9 PCatia二次开发源码分享: 获取装配所有组件列表
3 O; X4 Y( w9 w4 l& Y9 j% s- l! M
# ]1 T* h! U. u( a) i% c& R& `: t" Y5 F# @, ^1 \, P. g2 j
[mw_shl_code=c,true]/* ----------------------------*/' r2 C( o* o& o1 C2 n: Y
        /* 2. Retrieves Root Product   */  j  l8 p# |: R, S1 o. r# V# d% S
        /* ----------------------------*/; p6 i2 R$ S2 o1 P- N( t( u2 D, q
        " y7 k# e2 e# n9 d
        // Begin navigation throUGh the document => start with the RootProduct.! E& P! I3 j% M. e
        CATIDocRoots* piDocRootsOnDoc = NULL;/ V4 j, |  `4 d9 M. X
        rc = pDoc->QueryInterface(IID_CATIDocRoots,7 G6 S3 R3 h  C+ V6 Q
                                      (void**) &piDocRootsOnDoc);
! b$ O( \, _# z( C5 g& l        if ( FAILED(rc) ) return 3;
7 F7 y; U' @, {7 u. P; Y- a! L       
( c8 S( H, _8 h5 c$ h" n5 o7 B        // get the root product which is the first element of root elements
7 ^$ k" t3 v& J" U        CATListValCATBaseUnknown_var* pRootProducts =
: ?8 g+ n. U1 [2 k3 X                piDocRootsOnDoc->GiveDocRoots();
4 f7 P# V$ S$ q- S# t9 |        CATIProduct_var spRootProduct = NULL_var;
& O7 s: u+ \- n! f3 C3 @+ c       
7 y% A! ?6 m) B) q        if (pRootProducts && pRootProducts->Size())
2 A; J6 `) w- h8 |# i        {  
! _& |2 n' B( U* a. P& Z                spRootProduct = (*pRootProducts)[1];: \6 Q  |9 ~4 ~/ r! ~
                delete pRootProducts;3 `6 u5 S5 B" q4 |0 u9 k
                pRootProducts = NULL;
( ?6 Z/ @7 R' ?        }" b% z% b1 E* w0 A. g4 M2 ^: P
/** @anchor err_1 piDocRootsOnDoc not set to NULL after release */ 3 D6 L5 ?% S9 S
        piDocRootsOnDoc->Release();: f- g& S. f6 s3 Y
        piDocRootsOnDoc = NULL;, C( z0 ]% A1 I
       
4 ?* B1 V, m) U2 V' p' I        // Get CATIProduct handle on the root product.
( z- Q& m! @5 T  k: B5 r        CATIProduct *piProductOnRoot = NULL;- g, y' ^. v9 [9 A7 V' m
        rc = spRootProduct->QueryInterface(IID_CATIProduct,+ W  O7 _/ q1 x8 Z$ t# v  D1 P8 @- L; f
                                               (void**) &piProductOnRoot);
2 I# Q# ~" ~6 ?1 g9 R6 h9 d        if ( FAILED(rc) ) return 3;; O  \5 g$ D% D% p' _
+ w' o9 k8 F6 T1 O7 r
        /* ---------------------------------------*/; k; C$ Z$ W: c/ ~
        /* 3. Retrieves children under the root   */3 J+ Z, @! H4 j4 p! U% A9 A, i
        /* ---------------------------------------*/
: l/ a6 o4 e  E6 H0 o4 v9 e7 R        $ a2 M: p) a* h" m  b8 `) I) Y
        int nbOfDirecTChidren = piProductOnRoot -> GetChildrenCount() ;
; K  q5 Y" w& G6 ?& o% s4 v        cout << " Number of direct children under the root = " << nbOfDirectChidren << endl << flush;  R; k' d) C7 m4 u9 @1 ~
        , y9 m# I6 t- V4 y: R, b0 T
        // then on a root product, get all the children agregated to it.
5 \/ R/ }* O1 F( ]        CATListValCATBaseUnknown_var*   ListChildren =
5 O/ Z  F' I, B+ z5 [8 H# A7 p4 E# F. E                piProductOnRoot->GetAllChildren();( F9 g# [/ O1 h& `; K$ u$ o
/** @anchor err_2 piProductOnRoot not set to NULL after release */
6 _8 W; U  y6 W$ L# I+ Y        piProductOnRoot -> Release();0 W) M" b3 B9 G6 b
        piProductOnRoot = NULL;- k% k2 G: G8 q" |; x- A+ H. I
        if(NULL != ListChildren)
% `3 e9 a/ a& q        {
5 }2 Z, d- @3 o/ n/ `4 ?8 ~* h               
$ y' J4 X2 u; W# ~- c9 K                int numberOfChildren = ListChildren->Size();+ }0 [3 a$ c) }( |  F
                cout << " Number of all children under the root = " << numberOfChildren << endl << flush;
4 C2 g: Q1 z- W9 s2 q# h' c1 K1 k  ^. H
                /* -----------------------------------------------------------*/
8 V9 @! Y# m7 g: z                /*  4. For each child, get its partNumber, and InstanceName   */; L% \5 U1 V( J4 i
                /* -----------------------------------------------------------*/
9 r; x0 ~( p; j0 r; Z) {# l2 ]                CATIProduct_var spChild = NULL_var;$ I; K0 \9 Q1 A3 R9 B
                for (int i=1;i<=numberOfChildren;i++)5 x6 e* m6 I6 b# T5 Q( e
                {
# @6 @' G0 I- F; s3 f' T. v( e                        spChild = (*ListChildren);& ?& u4 ]6 S; t+ i2 W. Z
/** @anchor err_3 spChild not tested before use ( if !! ) */ " [) i$ @: o( G$ t" a! Y
                        if ( NULL_var == spChild ) return 4;
+ _" J6 ~& R) Z9 b- q                        CATUnicodeString partNumber = spChild -> GetPartNumber();* D0 z3 e0 ]' I2 N
                        CATUnicodeString instanceName (" ");1 G9 A& S  f! ]
                        rc = spChild -> GetPrdInstanceName ( instanceName ) ;
; j% A+ v) q3 X( |8 C  s5 i                        if  ( FAILED(rc) ) return 4;
% M- \; S4 T& s& ]6 f& K                       
  L0 i9 e1 R- G                        cout << " child number : " << i << endl << flush;
# b) u3 b- o( G& |4 Y! Q! `                        cout << " has as part number : " << partNumber.CastToCharPtr()  << endl << flush;
1 ~" j6 R3 f+ D1 W                        cout << " and as instanceName : " << instanceName.CastToCharPtr() << endl << endl << flush;
. R1 @, h, u4 ^+ Z9 t                }# x9 i5 F7 k" W( J
                delete ListChildren;+ ^; E' A% n" G
                ListChildren=NULL;& U. L1 t+ \  m- C  E
        }        : W" ~( ?  z$ `9 {  v: u+ s' S
        /* -------------------------------------------- */
, M  N2 w* f( a: K( w% y        /*   Ends the session                        */
* Q6 \% K4 J, {  p( _5 a        /* -------------------------------------------- */[/mw_shl_code]! U! z, y  L# a( F
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了