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

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

admin 楼主

2018-1-15 14:21:37

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

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

x
/ m. [8 m2 }! k8 F; O
3 q: C: k' \% g, Y
个人认为,比较常见吧,如何遍历得到几何体,通过几何体获取到拓扑体,通过体获取到几何元素,通过几何元素获取到单元,单元再到几何进行判断面的种类,对于BrepAccess的获取需要借用 全局函数 CATBrepAccess !9 v6 z% W  T/ t1 f7 h' ~! t5 r
3 g9 [  w7 x$ F& s1 j

6 C+ N3 ]8 m! G0 A, C
" |, M$ H* b5 y8 X[mw_shl_code=c,true]# l6 z# H* K1 W, o8 Q2 K. [
        //get the main body
3 U. O; e* Q6 T5 _: l        3 o$ }. ?$ @' g0 f
        ----   -----
2 `  g# N  W& Z, A% Y  }$ M2 M{
% N9 n1 W3 x" p8 f% y" M1 _        CATIPartRequest_var spPrtRequest = spPrtPart;
, \" c! Z& v- N6 `; p        if (NULL_var == spPrtRequest)# x& ~: @+ ]. T- {
        {- {$ _' j& z; r( l, K$ g
                printMessage("NULL_var == spPrtRequest");
$ M" p$ ~  C6 f9 g$ k6 M1 Q                return;6 H! u4 [$ d! k  D0 @
        }$ n' z" O$ B, ]5 ~% ]
        CATBaseUnknown_var spMainBody;
  c; _- R7 N1 I" z- `; u1 U0 L9 s+ Z% a6 }  _/ g- ?! q4 T
        rc = spPrtRequest->GetMainBody("",spMainBody);: ?( I# K! B3 N' [! k. y
        if (FAILED(rc))( P: A2 G( a7 A9 e+ I6 x$ R
        {
# P) z3 I7 d+ D$ S# o                printMessage("Failed spPrtRequest");2 o: L( B+ s) J. I* N
                return;
) ~9 E1 `$ i6 {& g1 D        }
0 }* L# ?6 N( D( f* F+ [; d4 @& }8 I
        CATIAlias_var spAliasBody = spMainBody;
- _# C6 f1 [& x% E, w( [- v- W
. c) y0 c; h' V        printMessage("Main Body" + spAliasBody->GetAlias());
* g& X# j0 Z) ]% N, b. y8 [# c
1 O' `% f* s( x  b+ a        CATIBodyRequest_var spBodyRequest = spMainBody;
1 G. k" }2 ~. c! A        if (NULL_var == spBodyRequest)
* X# f  V1 E* v1 ^! ~        {7 s; a! `: y% X
                printMessage("NULL_var == spBodyRequest");
; @# y* V9 x+ t& R- k; J6 V                return;- U% z5 h8 R5 ^) y" d4 U
        }
* W6 w5 x* d# h        CATLISTV(CATBaseUnknown_var) ListResult;$ b9 I4 h6 m! h' J% ?
        rc = spBodyRequest->GetResults("",ListResult);
2 c7 o( R( G) {4 x' A/ @* c        if (FAILED(rc)|| 0 == ListResult.Size())
8 ~0 h& a' X% `& ^: J  [        {' [6 n, n6 }9 d) P
                printMessage("ListResult failed spBodyRequest");) x! I) y/ E# T
                return;/ L+ ^3 F- z- M" g2 `
        }" ~4 N8 |/ S0 n8 k8 x4 J+ x4 I
        CATIGeometricalElement_var spFeatureResultGeomElement = ListResult[1];  G2 t# X; @2 U( B
7 l5 V8 ~6 C6 b: o. P" u! C, A( A
        if (NULL_var == spFeatureResultGeomElement)
2 ]/ V, s: g5 L4 a0 g        {
3 |9 T- J* e1 Q. t/ q4 }# V                printMessage("NULL_var == spFeatureResultGeomElement");
, D) Z" ^4 {/ ~! u3 m- z  ?                return;. G  T- x% X7 q
        }
  ?$ a' u. u; u
4 C& D* h6 m; G        CATBody_var spTopoBody = spFeatureResultGeomElement->GetBodyResult();
$ g0 ?7 K* f% N( t        if (NULL_var == spTopoBody)
! v+ p: z8 I$ h7 E        {
3 Y0 B, I8 A% z& E$ A                printMessage("NULL_var == spTopoBody");* U+ o4 R; E! p- \8 t, }. y% h
                return;
' M3 c' m5 F7 c  M        }
1 D* H9 b! v2 J7 P3 Q. I. t  j5 Z, e  w- |+ R% Q+ \1 o

# x3 t7 i3 B# j1 t. X        CATLISTP(CATCell) cells;
5 q+ s7 O. m) Y        spTopoBody->GetAllCells(cells,2); //get all the faces) W2 {9 J! C" I0 z' b' A; i* V$ j
1 j+ L) Z% b' H
        char msg[256];
5 Q/ f9 S) _! G* v: L) ?        sprintf_s(msg,sizeof(msg),"Face Number :%d",cells.Size());
/ y. s6 Y. C' ^9 C( }        printMessage(msg);
3 n; N9 }5 c- w# e' Q, M# v- w. h" B5 B
        for (int i = 1; i <= cells.Size();i++)* C, }1 e& X5 T: z# H5 I* t
        {
, G+ V5 U; H. x" ~- ~9 F                CATCell_var pCell = cells;; M2 K: m) x: Z9 E
                if (NULL_var!=pCell)- t" `% @- R6 W! L
                {
- U( h( \$ O! t! V7 u' G/ o4 B                        CATGeometry *pGeometry = pCell->GetGeometry();
! q3 n3 Z5 `' U( k* Z; t                        if (NULL!=pGeometry && pGeometry->IsATypeOf(CATPlaneType)) //plane face
7 A& |4 L- U1 Q! ]* c' P& g; F                        {4 Y1 X8 ^2 y: V9 j( s

# F) J  {5 m! M# I2 E( _9 [- _                                //CATMathPoint CenterPoint;4 O' X0 s: m0 e$ O" ]
                                //pGeometry->GetBoundingBox().GetBoxCenter(CenterPoint);
1 v3 ?' _8 _5 [                                //sprintf_s(msg,sizeof(msg),"Face center :%f,%f,%f",CenterPoint.GetX(),CenterPoint.GetY(),CenterPoint.GetZ());( X1 a( _/ b  _/ a1 @1 c
                                //printMessage(msg);  i: i9 ~6 I. s/ N' D+ q
                                 
& q& q% x% n, D5 F* m, V                                CATIBRepAccess_var spBrepAccess = CATBRepDecode(pCell, spFeatureResultGeomElement);5 L  |8 X8 x8 v4 A# k$ P# ^
                            if (spBrepAccess != NULL_var)2 _) C6 b/ @2 p
                            {) F( }7 z  U# |, ?5 `
                                        //assign color                               
% p* r$ \7 g% F# |2 N8 v2 m                                        CATIVisProperties * pVisProperties = NULL;! Z, h3 N1 A& [1 Y
                                        rc = spBrepAccess->QueryInterface(IID_CATIVisProperties,(void **) &pVisProperties);
% }: F9 |7 i8 P' V5 H7 \/ V" R7 {                                        if (SUCCEEDED(rc))/ s7 ]& {' `/ ?9 h6 a" S1 p
                                        {3 Y) U% Q5 S; O& A
                                                CATVisPropertiesValues ivalues;: P6 S: o" h1 E6 a( Q
                                                ivalues.SetColor(0,0,255);8 C2 u, q4 R. D( I/ Q" R" s0 W6 m# E
                                                pVisProperties->SetPropertiesAtt(ivalues,CATVPColor,CATVPMesh );
/ ^( F6 ^% C7 r! x8 _* }                                        }# ]: o4 P$ g1 \2 M
                                        pVisProperties->Release();9 ?& T  Y* r" O% m5 g; ^. |
                                        pVisProperties = NULL;5 _# n+ I6 x5 E- w
                               
  y5 h+ L1 t# @! i                                 }; q9 w" d9 U! E" K7 ?) V* T
+ g' `7 M; q# q
                           }& b# [0 m& w$ Y
                                //get alias name and persistentTag to add in the list7 k  I7 C) U7 q- e" w
                        6 \2 }' c( [7 C8 H3 x" V
                               
2 s) o* p2 \! E                        2 }) T- }, N! s0 P' x# }: P$ m
                        }
1 f9 U; o$ I  q& L; _7 \* h! S( H2 G( J0 A8 o- ?3 k1 }1 |
                }
: g9 c' S3 O/ W6 {8 Q, p& J9 A: g5 T2 x) [/ N8 K
        // End of User Code
' m, k, @* \# h$ v}
" E0 Z' R' Q$ ]- E; O3 R6 V[/mw_shl_code]
5 E% D; ?, s- J7 }4 c0 L3 r
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了