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

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

admin 楼主

2018-1-10 10:12:25

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

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

x
1 G8 y* [& w9 L- U! R( X- i9 [
Catia二次开发源码分享: 获取装配所有组件列表
6 v4 i. C9 d# `" J  z! L3 z$ X& o8 B9 H: T2 g& \3 ^

: s, O, z- c2 c2 w+ e8 a[mw_shl_code=c,true]/* ----------------------------*/# E& B! b) C- y3 U) I7 a  V
        /* 2. Retrieves Root Product   */
/ O( [8 J7 P# x, B! `        /* ----------------------------*/& n- y* f, n. f5 Q7 E/ E
        : n: Y: s' [" B- t
        // Begin navigation throUGh the document => start with the RootProduct.$ b. W% n" t" Z! H* [9 M
        CATIDocRoots* piDocRootsOnDoc = NULL;
+ a$ M1 l3 E/ Y2 `) j. C        rc = pDoc->QueryInterface(IID_CATIDocRoots,
! D- }2 g7 J( Z; Z$ z! r3 U                                      (void**) &piDocRootsOnDoc);4 O, f9 q' |' a8 u% B' [( i
        if ( FAILED(rc) ) return 3;$ R% c; Z+ t& N" t' q) U) V$ b
       
2 S( v8 w' i8 L        // get the root product which is the first element of root elements
4 v; v+ @1 x/ E! \        CATListValCATBaseUnknown_var* pRootProducts =
& g* `9 b) ]- B" r- Y& m. h                piDocRootsOnDoc->GiveDocRoots();. S. D0 ^* `6 L  h$ O. m
        CATIProduct_var spRootProduct = NULL_var;1 R2 x* {, v8 a' l) [3 Y
        ; s5 Q8 ~& B5 \6 w$ s7 h( m
        if (pRootProducts && pRootProducts->Size())
8 E. F1 H7 n8 Q. B. v* c) ^        {  
" a, |  W  `- J0 l                spRootProduct = (*pRootProducts)[1];
. r$ y! p2 S1 U) D* n% p) Y; m( c                delete pRootProducts;& {, A) m  n0 q
                pRootProducts = NULL;  @2 ~% J# i1 [3 @, }7 Z
        }
' g- w$ N( c; o; P: s/** @anchor err_1 piDocRootsOnDoc not set to NULL after release */
: H2 w: L; E# O) Q, \( Z        piDocRootsOnDoc->Release();
" P, m! R6 W" ~0 z. H& F$ F        piDocRootsOnDoc = NULL;
$ r1 {) v) B4 r        7 E+ `+ j+ e( P4 \1 k, ^1 O9 g
        // Get CATIProduct handle on the root product.
" r1 C6 i1 P% K        CATIProduct *piProductOnRoot = NULL;8 n8 N; p" U/ o# k) z7 R# a- l! j
        rc = spRootProduct->QueryInterface(IID_CATIProduct,
) W& m' F  L1 Y# c! A                                               (void**) &piProductOnRoot);  P6 d" j) }6 {4 G
        if ( FAILED(rc) ) return 3;
8 L2 A( n- n6 o( g8 z$ k7 B0 Z" u% K3 B& n% s! l4 K# o! D
        /* ---------------------------------------*/
/ @& z$ d& q7 B8 k' R        /* 3. Retrieves children under the root   */
, q4 k4 R6 n9 K        /* ---------------------------------------*/+ l) B, I! Z& `
       
7 _0 }" J+ c$ o; v0 ]$ S9 I% d! w        int nbOfDirecTChidren = piProductOnRoot -> GetChildrenCount() ;
9 W% H4 p0 g& L  U& ?4 M5 s+ l        cout << " Number of direct children under the root = " << nbOfDirectChidren << endl << flush;
  t5 r8 d4 u: I- `3 x) O       
) z/ I0 ^: h2 P5 |* F4 J" \, c        // then on a root product, get all the children agregated to it.4 \+ u, G/ Q& l& }/ t0 l. K
        CATListValCATBaseUnknown_var*   ListChildren =; \4 y9 N6 L; J; P
                piProductOnRoot->GetAllChildren();
# E. a- J0 ]$ V- S' [& n6 o4 V# v/** @anchor err_2 piProductOnRoot not set to NULL after release */
- c) b# Y( Q( f) D        piProductOnRoot -> Release();( b" H) f6 X( E/ v3 }" Q
        piProductOnRoot = NULL;8 S$ e$ }$ N0 l, w
        if(NULL != ListChildren)- q3 K  F8 P% i
        {* O- T* V) u" C+ m" O4 g/ E
                1 A  {" s) }0 ^" u' e
                int numberOfChildren = ListChildren->Size();
. V, A1 O7 k* \( O' ~  {5 E5 A                cout << " Number of all children under the root = " << numberOfChildren << endl << flush;
$ Q( H2 G% V6 b
: r% b: m. ~9 l- i% E0 C                /* -----------------------------------------------------------*/
1 Y5 C9 l. I2 P9 K8 Z+ R                /*  4. For each child, get its partNumber, and InstanceName   */
* j% h; K- K6 ]: C                /* -----------------------------------------------------------*/
7 U' W: P- T* c+ W                CATIProduct_var spChild = NULL_var;
. m( t( ^% P4 S2 a( f                for (int i=1;i<=numberOfChildren;i++)* p6 B1 T4 t0 {7 K
                {, w& d; \# ^3 P3 w8 K% A
                        spChild = (*ListChildren);' {6 H. s: b0 [1 X# q5 l
/** @anchor err_3 spChild not tested before use ( if !! ) */
* U% [0 _: J* W- X/ f                        if ( NULL_var == spChild ) return 4;
1 ~# r7 F/ h  q( n4 o" ?' t                        CATUnicodeString partNumber = spChild -> GetPartNumber();+ k' N, j3 y% w! W5 ?, z, ~6 s/ _( \
                        CATUnicodeString instanceName (" ");
+ j! v% [2 d6 l3 B                        rc = spChild -> GetPrdInstanceName ( instanceName ) ;9 N: Y& s. x7 L8 C4 i% |
                        if  ( FAILED(rc) ) return 4;3 R* b1 Z; r- X2 F6 X
                          t( X+ V8 Q& K" i! H  `. F4 R3 k, S0 a
                        cout << " child number : " << i << endl << flush;
) T3 }! D2 G2 e: ~. o                        cout << " has as part number : " << partNumber.CastToCharPtr()  << endl << flush;
2 a+ `* o: A" ^+ H                        cout << " and as instanceName : " << instanceName.CastToCharPtr() << endl << endl << flush;1 L: t0 n6 z8 O( Z+ @& Q6 j
                }
7 }7 K/ \& D4 R) @; O0 P7 t                delete ListChildren;/ g6 c1 T# K4 a$ ^- j
                ListChildren=NULL;
9 O  B% Z+ @# R/ D        }       
" x/ c: O% n4 d; x0 }/ u        /* -------------------------------------------- *// ~$ z  p% t8 I
        /*   Ends the session                        */
' ]  K. e( _7 F( M" B. G$ p8 S        /* -------------------------------------------- */[/mw_shl_code]4 q2 A2 ]) u' _; ?! M8 `! Y
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了