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

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

admin 楼主

2018-1-15 14:21:37

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

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

x

" Y0 U4 v; j! _& E) E" l# b% s" B) Y; z( F: ?
个人认为,比较常见吧,如何遍历得到几何体,通过几何体获取到拓扑体,通过体获取到几何元素,通过几何元素获取到单元,单元再到几何进行判断面的种类,对于BrepAccess的获取需要借用 全局函数 CATBrepAccess !9 R+ O& l: S  k5 o: d

( E. ^# A; e/ V' O- ^7 I+ R5 M, s7 [( {# D2 _) S
! D; ?1 K7 w! M; h0 b5 S
[mw_shl_code=c,true]) y+ O+ M  k+ M2 i$ k: {
        //get the main body
; g1 I$ ^) l. ^+ I: U3 a" c       
% y4 r3 C& L& b2 e" J        ----   -----, d& g/ \& o* |2 m: f- ^8 [
{
. Y7 S3 l) `0 h8 S% ^4 u        CATIPartRequest_var spPrtRequest = spPrtPart;
$ P; I* g" Q7 V) O* {8 S( \        if (NULL_var == spPrtRequest)2 h" P0 B: e% {) ?$ ~
        {
% t! h5 y0 m! x& @7 z5 Z                printMessage("NULL_var == spPrtRequest");  I4 h( u  J# c0 b$ j1 v$ P
                return;9 H5 _2 M3 v9 n6 Y' ]6 P
        }
% Q6 N1 e  P4 w: h        CATBaseUnknown_var spMainBody;
+ F4 p9 m% c$ D. Y9 W( s) i
- C9 f- ~7 Z+ S. ?        rc = spPrtRequest->GetMainBody("",spMainBody);0 u7 {% o% r  \7 s5 L( \  ~! o
        if (FAILED(rc))
6 d* n) N; }+ L2 m        {
# [9 O6 \2 H; l, J, d. f6 r# N. V* G, \                printMessage("Failed spPrtRequest");
& D& p' a2 c4 V, @6 T' f9 w# b                return;$ P# [, k$ J% Y; }2 O' H
        }
! k5 d: ?0 p) z  G) i9 G4 A
8 q' t  n: i6 n# J        CATIAlias_var spAliasBody = spMainBody;
! i/ r+ w* @$ I8 [5 s- m! `
7 m. _. I3 y0 s* i3 M        printMessage("Main Body" + spAliasBody->GetAlias());
* s; n2 R) Q$ [2 n4 {
7 t% Z) K3 J1 W; U: y' A        CATIBodyRequest_var spBodyRequest = spMainBody;
% W: _; w! q" s9 O; ?4 P1 A% a. o        if (NULL_var == spBodyRequest)
3 S3 U$ A2 F! ?2 a2 T        {3 D2 y4 L6 {/ L6 `* c
                printMessage("NULL_var == spBodyRequest");# q" l! ]# i* Y" f, N
                return;: B0 t5 p$ S; z# b# R
        }
7 P5 R  {; S% v0 z% x& [        CATLISTV(CATBaseUnknown_var) ListResult;
" e. F, d! D; d        rc = spBodyRequest->GetResults("",ListResult);
/ p! m. u9 L' V" j, S; @9 g        if (FAILED(rc)|| 0 == ListResult.Size())7 ]# v- N# X) V$ A/ N
        {% `( `+ E; O* T7 A/ `
                printMessage("ListResult failed spBodyRequest");8 s8 l3 p+ p3 {4 a) J2 W
                return;) ^6 _$ W& _' Z6 A2 i5 `& l2 y
        }- B8 I3 \' E7 F- P# t( d
        CATIGeometricalElement_var spFeatureResultGeomElement = ListResult[1];
! l! c, E7 s. g/ C5 c* u
) ^' D9 `) @# b5 N3 Q) P        if (NULL_var == spFeatureResultGeomElement)6 [" ?  ^6 K. M3 a
        {
) S' w) x4 V* D9 J. z) y                printMessage("NULL_var == spFeatureResultGeomElement");
- M  X4 k& G& ^- Q& q$ Y% ]: y                return;( w+ `/ y3 M5 U5 h9 \
        }) n/ R! n, O; w, n" b& a5 {$ @7 z
4 J9 f, c2 `3 z4 r! z& P: U  k
        CATBody_var spTopoBody = spFeatureResultGeomElement->GetBodyResult();
$ p3 p' c0 }7 K4 O5 j        if (NULL_var == spTopoBody)
5 D, @7 P8 g  T        {3 O. c& ^2 k' [3 S3 X
                printMessage("NULL_var == spTopoBody");3 H  A- P3 P, t. j
                return;
* y+ y3 o/ G/ L( p# H6 ?        }
( {  t" G, e& X2 F* V8 X5 _/ ?# Y" e/ p! x
" Q, v  Z# P6 [2 i2 a. h5 ^6 _
        CATLISTP(CATCell) cells;
, ^# e3 J4 X8 `! O: M- Y7 w8 m% T        spTopoBody->GetAllCells(cells,2); //get all the faces
( `6 ]2 a% t9 v# C
. c7 O, w1 |; q/ b- y3 g3 `! Y        char msg[256];# r4 b. [" ~& P! h7 Z& T
        sprintf_s(msg,sizeof(msg),"Face Number :%d",cells.Size());& h; F9 O- R* _) R) P& }' I
        printMessage(msg);
1 P* }( k  h, y2 w" Y3 m6 A
* _; V: U9 Q$ R3 g6 R7 c        for (int i = 1; i <= cells.Size();i++)
$ }' R% o" ~' {2 ~        {) v0 n8 m, e) o8 \& a7 Q+ m# {
                CATCell_var pCell = cells;2 g4 _" D" Q# @, h
                if (NULL_var!=pCell)
5 ]) `0 @5 n( F5 r% m                {$ b: X' p% ^4 Q- `
                        CATGeometry *pGeometry = pCell->GetGeometry();' `( m7 _6 _/ W7 Z1 {; w9 ]) O. x
                        if (NULL!=pGeometry && pGeometry->IsATypeOf(CATPlaneType)) //plane face
% Q% {+ h3 J3 s( ]  t7 J                        {
( J/ u2 U1 w5 o) S
: j0 _" R0 J5 p' }( q                                //CATMathPoint CenterPoint;7 U3 [  A9 }0 S; k! r9 r$ p
                                //pGeometry->GetBoundingBox().GetBoxCenter(CenterPoint);' f( T7 p* G9 q
                                //sprintf_s(msg,sizeof(msg),"Face center :%f,%f,%f",CenterPoint.GetX(),CenterPoint.GetY(),CenterPoint.GetZ());
0 ^& `& q8 r. n! i% N                                //printMessage(msg);5 H& x3 F7 W+ a
                                 - F% ~0 t$ w5 d; p
                                CATIBRepAccess_var spBrepAccess = CATBRepDecode(pCell, spFeatureResultGeomElement);
; M& a0 w  \  |+ A2 S7 x                            if (spBrepAccess != NULL_var)9 _5 |* C1 M3 w. Y
                            {4 r9 `. V* W6 ]& g0 Y7 h* d
                                        //assign color                               
3 J( E3 H  y- J5 C3 H                                        CATIVisProperties * pVisProperties = NULL;
0 i. U8 d0 p: k6 e) T                                        rc = spBrepAccess->QueryInterface(IID_CATIVisProperties,(void **) &pVisProperties);+ u. e- S% R- n$ O% u
                                        if (SUCCEEDED(rc))' q% z- Y. F0 P
                                        {& _; ?" R, X% T* o: \3 U# n2 y
                                                CATVisPropertiesValues ivalues;
' m6 u5 N% d9 e3 [  d/ t& Z                                                ivalues.SetColor(0,0,255);* |3 s: ^9 v: v4 _8 X  N
                                                pVisProperties->SetPropertiesAtt(ivalues,CATVPColor,CATVPMesh );3 s! r5 S9 f% `1 t" g# A
                                        }! w7 i7 G8 }# a5 |
                                        pVisProperties->Release();0 i3 ?( ?, H6 K: S/ {! K; L
                                        pVisProperties = NULL;; c8 M' G! Y# ^! v+ i* W2 q
                               
( P0 @# |- p5 X5 z3 ]+ I) S                                 }
5 f+ n1 R9 i, G# C: s1 K; d
3 H7 o1 J5 W$ s% `                           }
# J) L) f" t# F# A# J                                //get alias name and persistentTag to add in the list
. p1 g/ B! P7 C: y, W+ W" _                       
% Z6 U% V6 ~6 _* Q$ e                               
6 E/ e$ X7 E* K                       
7 b8 |3 r: q) _3 F) Z& E                        }$ d* `- e; _; G1 f' j+ u  x! Z
) G1 w/ U$ ~) h% P9 s' r$ T. S
                }. [& l  D9 e# D

+ [5 h  z( N6 c" w        // End of User Code- f, m1 n' u5 S$ w$ Q  q- G
}
+ Y: Y7 p2 p6 A  g[/mw_shl_code]% p0 L8 q! a4 {5 Q
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了