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-15 14:21:37 1958 0

admin 发表于 2018-1-15 14:21:37 |阅读模式

admin 楼主

2018-1-15 14:21:37

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

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

x

$ Q$ f* @8 P+ C5 ^" \+ n. H% |/ R7 L1 F2 ~9 I
个人认为,比较常见吧,如何遍历得到几何体,通过几何体获取到拓扑体,通过体获取到几何元素,通过几何元素获取到单元,单元再到几何进行判断面的种类,对于BrepAccess的获取需要借用 全局函数 CATBrepAccess !2 f- n3 {! J: N# {# S0 T; `

( u! R$ w5 d& e0 ^
; @1 B5 S5 N* {4 k+ ~2 G
9 x1 X! i' C9 l$ Q; ~* q. s% B[mw_shl_code=c,true]
1 z6 b; I, Q& D% N, y1 w        //get the main body$ k' C- [& A  H3 ?
       
% @4 }0 q$ k1 r- G6 u        ----   -----* m  A) O' m+ A2 I9 I
{
; U+ A  U1 z8 b8 d- q# L        CATIPartRequest_var spPrtRequest = spPrtPart;, g" O6 @  F8 ?& j  Y0 o# e4 ?1 S
        if (NULL_var == spPrtRequest)
  G- T2 \2 i2 Z        {6 }1 S  W4 q& @% P( ]; A% `
                printMessage("NULL_var == spPrtRequest");
2 j+ d, f. [% `8 s                return;
1 d3 K& K5 s# @8 M- s        }
. ~5 j) C- l. {# q/ w+ j$ \; _        CATBaseUnknown_var spMainBody;
( n) Z/ R- {3 w4 _! I3 o  L" w$ G% t7 S; N! u
        rc = spPrtRequest->GetMainBody("",spMainBody);5 X0 r9 ?% d% M
        if (FAILED(rc))2 |& O: S' E& V
        {  t$ h. B/ j& T5 {/ W
                printMessage("Failed spPrtRequest");- d$ \, }- r- B7 _. `
                return;; _5 B) a# J) s: Y7 i: r( [
        }' P) Z4 ^! q0 j6 ~2 T) i
6 e2 y2 F( ~, x1 r
        CATIAlias_var spAliasBody = spMainBody;9 _) `4 V1 A+ `

3 N0 t( O* R  M+ p        printMessage("Main Body" + spAliasBody->GetAlias());
' i& s& T0 J/ _4 H
! Z* c& l) [, K0 g( ?0 m5 f/ G        CATIBodyRequest_var spBodyRequest = spMainBody;: d6 c- c! z" Z8 m4 e9 F
        if (NULL_var == spBodyRequest)
' O1 x; X( P" ]: ^! h4 {        {
' Y$ B( v" v4 T* s/ ]$ K                printMessage("NULL_var == spBodyRequest");
* A) p- W1 ^. W                return;
$ v5 z3 p6 D5 t5 I8 o2 K4 N        }) z. e0 \0 t7 S* Q- a8 G
        CATLISTV(CATBaseUnknown_var) ListResult;
3 @! n3 w7 q" X9 E: G! B1 r9 v0 r        rc = spBodyRequest->GetResults("",ListResult);7 I1 q3 m5 I  D; i2 ^
        if (FAILED(rc)|| 0 == ListResult.Size())% ~- p6 L0 ?7 x3 e6 f
        {
5 E. e6 p6 E$ g) G, q                printMessage("ListResult failed spBodyRequest");& V3 Q# l5 X+ o/ B- x( S
                return;
" b# f! w0 ^: G& k. R' W7 H) P        }
: D0 j9 F% e; d" @, w        CATIGeometricalElement_var spFeatureResultGeomElement = ListResult[1];
* W/ ]. T" s" z0 p) o1 ]; X& f  P$ }/ ]/ y$ D
        if (NULL_var == spFeatureResultGeomElement)- J1 q+ s* k2 W, n" _
        {
$ ~" L( p! i5 _                printMessage("NULL_var == spFeatureResultGeomElement");! h# U( @9 E, E: K
                return;( @5 ~7 G% b  ~
        }
% @  R4 P; P" x; y3 M  M) o& Q; b# G+ N8 w, `8 b8 {9 s
        CATBody_var spTopoBody = spFeatureResultGeomElement->GetBodyResult();. Z5 R+ o+ x* E  a% }/ e5 l
        if (NULL_var == spTopoBody)
, a6 N( U, ?1 _+ {5 p6 G  A        {
7 ]) b5 u5 K: H! K0 H* g                printMessage("NULL_var == spTopoBody");2 H+ L6 Q4 K5 Q) G0 _: y
                return;/ P9 V0 y0 _. Z/ _6 Y# |
        }1 r2 P# V4 x" B
4 E3 T9 m2 _8 D" e) M3 P

' k  W% H4 A, X6 h        CATLISTP(CATCell) cells;$ N& h/ ?- `; e9 h/ a, k. f2 d
        spTopoBody->GetAllCells(cells,2); //get all the faces3 x& w. n+ `. _
) v6 j/ b: l/ I2 `* R& }9 W
        char msg[256];. q6 f5 s- Q% X( y/ \! }! c
        sprintf_s(msg,sizeof(msg),"Face Number :%d",cells.Size());
1 |, ?) @6 T; E$ l1 b- t        printMessage(msg);8 U8 s# ^) K) T
7 w' z. u, `/ p" D/ o
        for (int i = 1; i <= cells.Size();i++); U" c. h: |7 }( T# k% X, a( m+ \
        {
8 }! W" I: ^& U# C                CATCell_var pCell = cells;, s2 |7 l; a# K( O
                if (NULL_var!=pCell)" c2 g0 C7 L, e9 a
                {
6 }" t' Q" ]5 D* I) j  X' P                        CATGeometry *pGeometry = pCell->GetGeometry();# ^+ V0 L# N4 e' m8 Y9 x% D
                        if (NULL!=pGeometry && pGeometry->IsATypeOf(CATPlaneType)) //plane face) J7 [2 s( r, `. E/ m8 L$ F# O
                        {( _0 L& ^7 D0 O7 B- |6 O  c
7 ?& B* U/ S5 h, B) n
                                //CATMathPoint CenterPoint;
. G% }7 @( \0 T! M3 a7 g, X4 |7 g1 z                                //pGeometry->GetBoundingBox().GetBoxCenter(CenterPoint);
; v2 {) R* y: X) m) W( c$ W                                //sprintf_s(msg,sizeof(msg),"Face center :%f,%f,%f",CenterPoint.GetX(),CenterPoint.GetY(),CenterPoint.GetZ());
5 U0 i) s" o" G/ [                                //printMessage(msg);/ v: F2 r' Q2 W  S7 `( @
                                 
* `- U1 ~" N5 ]9 }: M" v                                CATIBRepAccess_var spBrepAccess = CATBRepDecode(pCell, spFeatureResultGeomElement);2 ^6 h( E+ b5 n8 L7 C7 ?2 M
                            if (spBrepAccess != NULL_var)
3 G) h' F6 t  G, k7 X% E                            {' q9 `$ ]% _9 ]$ s
                                        //assign color                                - P/ C+ }  [3 ^2 P+ m2 v% A) }! q
                                        CATIVisProperties * pVisProperties = NULL;/ S/ R; G& N. h2 Z# ]% ^9 D/ X# v+ a
                                        rc = spBrepAccess->QueryInterface(IID_CATIVisProperties,(void **) &pVisProperties);7 Z: u2 q( `- Y& ]9 \
                                        if (SUCCEEDED(rc))
9 _: y3 A) t$ J                                        {1 v4 x. }2 p8 ~3 a3 r
                                                CATVisPropertiesValues ivalues;5 ]- V1 f. `/ ~1 V
                                                ivalues.SetColor(0,0,255);
: m  t4 u/ Q- c$ k& a                                                pVisProperties->SetPropertiesAtt(ivalues,CATVPColor,CATVPMesh );2 w. {' P5 F! n, i
                                        }
" ~  V$ z6 C0 \% Y1 A% a+ Y- q7 M                                        pVisProperties->Release();* E# G8 [9 N  m. i% n% |+ V
                                        pVisProperties = NULL;
1 a5 K" c9 X4 O+ N; A! H" W. b                               
* Q( L' X* }5 I3 ]  I                                 }
9 T6 C$ k2 T  y) p4 y' ~$ n  w. z- X6 ^
                           }
! {* ]4 w7 @: q0 H: A                                //get alias name and persistentTag to add in the list. D( \* M- H0 C! g. \, F
                       
4 r9 P, K- y1 c                               
- m, L! \0 T$ w                       
9 i9 o& h. w3 o9 C  y8 i1 O2 \                        }/ I7 Y  h+ s2 J% U8 f

9 h2 _( A! b7 d" S                }
( `9 [6 r+ d; ?# Q/ T+ q4 [9 H) ?( s+ o/ _2 q
        // End of User Code, X$ G/ R+ G* m- L
}
' t$ C: c4 b: O. ]% R, Z[/mw_shl_code]
+ `& i- r7 M: n7 }5 d
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了