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

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

admin 楼主

2018-1-10 10:12:25

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

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

x
" x% K4 f. b- \1 ]
Catia二次开发源码分享: 获取装配所有组件列表5 X  b, C/ `7 j8 W+ M0 c6 S/ C

0 L# \5 Q0 k. d) h7 o0 Z* T6 _
; y$ B- M# H7 M8 d& R* |; `[mw_shl_code=c,true]/* ----------------------------*/
9 D' r% i) q' ]! ?, r" ~  M6 p. r        /* 2. Retrieves Root Product   */6 G  F0 Z8 y9 _  G
        /* ----------------------------*/1 ]3 N% c# b: j6 d9 I& F0 H! B
        % P; M8 C- x+ O5 l8 H
        // Begin navigation throUGh the document => start with the RootProduct.. H8 o" _0 \( g3 i
        CATIDocRoots* piDocRootsOnDoc = NULL;
/ T' T. J5 g7 e% l- D3 N        rc = pDoc->QueryInterface(IID_CATIDocRoots,
& I, i9 v( c. Q# i( N) ]                                      (void**) &piDocRootsOnDoc);
& w- m) E: C0 |& W8 Q        if ( FAILED(rc) ) return 3;$ O9 r1 F* N% h6 D
       
/ f5 b4 L) c3 |1 V* n/ x' q% M        // get the root product which is the first element of root elements
+ X" f7 U0 U! ~$ v        CATListValCATBaseUnknown_var* pRootProducts =
5 `9 q' |3 m8 U) X( N) g; W8 l                piDocRootsOnDoc->GiveDocRoots();" G4 O/ u6 i4 ^" u. H" s7 d8 H; {
        CATIProduct_var spRootProduct = NULL_var;
7 u( Y( O" t. v8 \% \        ( W/ o* A8 P0 l
        if (pRootProducts && pRootProducts->Size())! E+ b+ a( d6 U, N8 M# y# p
        {  
  d6 n# }, H' l' B* ?2 h                spRootProduct = (*pRootProducts)[1];
: Q. C* e9 H' t+ j                delete pRootProducts;
$ Z/ |/ e3 c% E7 w8 q) Z3 ]2 _' d                pRootProducts = NULL;
& A* M- y# y2 h1 T5 J2 Z        }. q& Y; a4 i7 K, W  l
/** @anchor err_1 piDocRootsOnDoc not set to NULL after release */ " B6 z, B! s7 u" t/ k: E' P% H8 _
        piDocRootsOnDoc->Release();! ^5 `: Q: m2 o5 o
        piDocRootsOnDoc = NULL;' I; }  T8 q( s- s3 f
       
! ^5 C$ D2 |) k7 s+ ]  O        // Get CATIProduct handle on the root product.
/ e- ]  E% Q6 m6 J        CATIProduct *piProductOnRoot = NULL;0 z  }2 N6 T: z* W6 r2 z9 [5 N% w
        rc = spRootProduct->QueryInterface(IID_CATIProduct,
0 f# l+ q1 `& z; u1 N- I                                               (void**) &piProductOnRoot);
% j# P/ U; ~4 i! e1 o( s        if ( FAILED(rc) ) return 3;: O  H* p/ H# d0 e2 m* W: q7 X8 F

/ {: W+ b: O0 y        /* ---------------------------------------*// f+ B  @: ?/ M8 r. ^3 D
        /* 3. Retrieves children under the root   */: ^. z, |. w9 o: v3 @) i
        /* ---------------------------------------*/) H( `& x& s& ]/ [5 s! x8 {$ M' e5 E6 C2 b
       
3 m3 U* R! y' m4 H0 X5 z" s- M1 S        int nbOfDirecTChidren = piProductOnRoot -> GetChildrenCount() ;4 h: @9 A1 p; q3 h3 E% g
        cout << " Number of direct children under the root = " << nbOfDirectChidren << endl << flush;
3 d3 D; ^; L8 ^4 x7 L$ i       
. H1 [9 x5 k& P0 P        // then on a root product, get all the children agregated to it.2 O) s+ z! v4 @; [1 O
        CATListValCATBaseUnknown_var*   ListChildren =" Y# ?1 j; ?2 R6 v
                piProductOnRoot->GetAllChildren();. e1 i1 l8 p6 n8 M6 f
/** @anchor err_2 piProductOnRoot not set to NULL after release */
1 F9 p( C2 p* e0 y7 |; y; C        piProductOnRoot -> Release();
/ d1 O; H& o- M7 A8 R        piProductOnRoot = NULL;0 C* J" M6 ?* X8 k; X
        if(NULL != ListChildren)& E) j. `- S& s& j3 ^; d
        {5 y! {( w" d" ?1 @4 S( s
                % }6 P% F1 |& W( m" T) c
                int numberOfChildren = ListChildren->Size();
) c8 Y8 R# Z1 k9 p- W                cout << " Number of all children under the root = " << numberOfChildren << endl << flush;! Z% {& p" X! c3 @3 d% `
1 H; K, c- E. `+ L& S. d
                /* -----------------------------------------------------------*/, J7 M' L9 W- |+ c
                /*  4. For each child, get its partNumber, and InstanceName   */
8 L/ t  D) m5 U& c- M, i# q                /* -----------------------------------------------------------*/2 T4 a: b3 b: n
                CATIProduct_var spChild = NULL_var;) O, \" k. T1 ^- R" K; v8 m
                for (int i=1;i<=numberOfChildren;i++). c$ v! U4 v: h1 ?5 \
                {3 T, Z) H3 }: \0 W4 c) ~' `1 I
                        spChild = (*ListChildren);. V2 O  b! u9 c& |+ O# Z7 z
/** @anchor err_3 spChild not tested before use ( if !! ) */
- J9 W/ ?% S8 Y9 s                        if ( NULL_var == spChild ) return 4;* h. u" u/ f9 D$ ^+ j7 H
                        CATUnicodeString partNumber = spChild -> GetPartNumber();
9 a( A: s4 d( {! _3 k                        CATUnicodeString instanceName (" ");
: @; ^' V# P8 D! i; ]' |2 q: c- d* g                        rc = spChild -> GetPrdInstanceName ( instanceName ) ;
9 B) z2 l$ w/ `" K                        if  ( FAILED(rc) ) return 4;
0 a3 P, d  e# O% @                       
8 }, k# H, j2 C- z7 O* ?. N; c                        cout << " child number : " << i << endl << flush;& U: y5 W7 z  _5 c
                        cout << " has as part number : " << partNumber.CastToCharPtr()  << endl << flush;# z9 I7 M  f9 q$ a
                        cout << " and as instanceName : " << instanceName.CastToCharPtr() << endl << endl << flush;
, ~' {6 G" m) i$ H- w                }
' c2 t7 {. t' h/ O& K3 A$ l: c3 E# P                delete ListChildren;, ]  l* n: c! ~; K1 [' a  |
                ListChildren=NULL;: M/ t! o- e5 x) T: K4 T4 d* p+ d/ S
        }          J* E+ W, P1 N6 e3 F
        /* -------------------------------------------- */
2 I1 Q7 i9 K4 i        /*   Ends the session                        */, L9 Q" q! h% z3 S1 l
        /* -------------------------------------------- */[/mw_shl_code]% t; z# Z5 g" o
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了