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

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

admin 楼主

2018-1-15 14:21:37

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

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

x
( s, s) S8 e  C# W
+ C" n% b0 P( ~  Q! U
个人认为,比较常见吧,如何遍历得到几何体,通过几何体获取到拓扑体,通过体获取到几何元素,通过几何元素获取到单元,单元再到几何进行判断面的种类,对于BrepAccess的获取需要借用 全局函数 CATBrepAccess !
) o( _, D+ [) K3 c1 w( }
9 N9 s# \/ I+ d+ n4 @; Q( |) C3 Y$ k+ n5 k8 e/ r9 a& C3 x
/ r" R8 G* u5 s; D
[mw_shl_code=c,true]' e0 K+ i$ h$ f9 o$ @3 ~# D
        //get the main body2 R, l( _* u0 @- Z
        ' G- R$ c% Q+ H/ P8 P
        ----   -----
. _+ M3 }  b+ X! g2 I# [$ d# F{
% j8 ~  A3 a: t! n3 L7 E* H0 z        CATIPartRequest_var spPrtRequest = spPrtPart;9 \: s# |% C# _" s7 i
        if (NULL_var == spPrtRequest), m$ M4 ]) J! g4 \$ z' x
        {
2 v. @. G. c: _9 P3 u, y1 C+ }9 r                printMessage("NULL_var == spPrtRequest");
* R5 i) B. ^/ }                return;  l) F( |- [& W
        }
- S( h1 F9 ?) g; w5 T6 y        CATBaseUnknown_var spMainBody;
" N) e$ a* l/ ]' w2 i
. u8 B* b' ?# F; `) S        rc = spPrtRequest->GetMainBody("",spMainBody);" a' f% m, \3 c! o# }
        if (FAILED(rc))1 Q8 K0 m. q) l6 P
        {. v5 u' }" e1 c" W) Z" D" c
                printMessage("Failed spPrtRequest");
8 y, `1 v3 M! U; E                return;1 i$ i' n2 G" B
        }
. k; R- L- b- a8 \! S+ D  Q3 ^8 M7 e6 H9 j- H
        CATIAlias_var spAliasBody = spMainBody;
/ W7 B/ x9 H; x& `8 F$ `* n3 Z$ d  u* E7 f* D+ L
        printMessage("Main Body" + spAliasBody->GetAlias());
' f. m& |2 ]4 ]3 @& j& ]" m3 a/ I
        CATIBodyRequest_var spBodyRequest = spMainBody;1 c  D( n6 K+ \5 U3 S7 r
        if (NULL_var == spBodyRequest)( s# z! F5 J* r( g1 `( Q
        {
! B, N, v0 A7 _9 U! q; s                printMessage("NULL_var == spBodyRequest");
4 ]. z4 @+ b6 u* U, t8 C1 |# B                return;* m. n6 S, ?! K0 p
        }4 O1 D+ S, l& I7 G& W0 K
        CATLISTV(CATBaseUnknown_var) ListResult;
6 r: X' B3 f0 H: U        rc = spBodyRequest->GetResults("",ListResult);- j# K5 t& f  z+ D% Z, {2 U2 V
        if (FAILED(rc)|| 0 == ListResult.Size())4 U- l9 m/ j/ m& R
        {
5 u* C; z, p- n" v0 j6 T                printMessage("ListResult failed spBodyRequest");
. a* k+ {6 C: P3 H4 v& H                return;
8 u: U& i8 |. H, o        }
; x( g% L0 ^) a& K8 {  i6 Z, j        CATIGeometricalElement_var spFeatureResultGeomElement = ListResult[1];
8 ^6 b) |& ^# U1 |1 c# N; |
! }% g( z% j9 G# {5 i        if (NULL_var == spFeatureResultGeomElement)
$ m+ a' p6 ?% j- K6 h) M0 v3 j! {- }/ p6 K        {+ [/ R+ n- \9 `1 x2 p' }
                printMessage("NULL_var == spFeatureResultGeomElement");0 A! M  t7 J) z1 J4 ^! T
                return;5 @2 U7 {+ U9 H/ s0 C+ U" f
        }
% Z: ^5 n5 P& C1 f2 G2 F2 V
# [9 J4 [; z3 v! B2 k* z        CATBody_var spTopoBody = spFeatureResultGeomElement->GetBodyResult();
3 E0 ~: O# r+ E9 n; P+ R        if (NULL_var == spTopoBody)( H  N8 ]' h  o* d2 @' Y
        {
- ^0 ^0 G' w/ S5 p8 Y4 y                printMessage("NULL_var == spTopoBody");
1 I# B- g, B  T. S3 W" p" w                return;# Y7 r6 L$ e2 n! T. G9 |  W4 y
        }
, I/ O8 w7 d" R* D9 E
' e0 E/ @* G' W  R2 G" {* S
- r) O' J( c- w3 ^' i7 U        CATLISTP(CATCell) cells;+ j* u* S( ]; ^  b1 u
        spTopoBody->GetAllCells(cells,2); //get all the faces: t0 [% }  b; M9 q+ F7 h+ T
  p$ |# W0 U0 l/ m* ]3 `: t
        char msg[256];( L0 G; J6 K( Z0 t0 t
        sprintf_s(msg,sizeof(msg),"Face Number :%d",cells.Size());& s9 Y+ W5 x2 P
        printMessage(msg);6 Y! O6 X9 y$ P3 p0 _
+ S+ M+ v$ o5 V
        for (int i = 1; i <= cells.Size();i++)9 ?3 ^! N0 |6 a/ f
        {) i8 R; `. ]' t% ~
                CATCell_var pCell = cells;& w$ s8 [  O# S- A6 X
                if (NULL_var!=pCell)7 E8 l! K% {" U4 L! s! g9 U
                {
) W. Q; ~* w1 q, @3 d                        CATGeometry *pGeometry = pCell->GetGeometry();; g/ M- y5 O  Y* X$ W8 x3 F! A
                        if (NULL!=pGeometry && pGeometry->IsATypeOf(CATPlaneType)) //plane face" r$ O! {/ i7 Y* q( p
                        {' U' X' ^9 L& i& U
% M, f0 d& f: @5 o
                                //CATMathPoint CenterPoint;
% L4 k3 a* i$ r; Q1 ^                                //pGeometry->GetBoundingBox().GetBoxCenter(CenterPoint);; z5 e1 a( I, G! [, Q
                                //sprintf_s(msg,sizeof(msg),"Face center :%f,%f,%f",CenterPoint.GetX(),CenterPoint.GetY(),CenterPoint.GetZ());
+ m0 T* \8 y  U# O6 c8 d                                //printMessage(msg);
" Q% P: ^& L6 F% o                                 
. Q  q9 L  h" D+ t4 \& Z0 F+ e                                CATIBRepAccess_var spBrepAccess = CATBRepDecode(pCell, spFeatureResultGeomElement);
  ?# l+ Z( G  X6 U1 b                            if (spBrepAccess != NULL_var)
- g4 a0 E4 m1 V; ~                            {
/ M! E: K) D" ]2 N. P; M                                        //assign color                               
; s" L3 c, S8 a1 n                                        CATIVisProperties * pVisProperties = NULL;+ Z  H  }' U2 a, f- y' F' X; e' \
                                        rc = spBrepAccess->QueryInterface(IID_CATIVisProperties,(void **) &pVisProperties);+ o; D5 J" L9 j
                                        if (SUCCEEDED(rc))% R' C5 m, q7 D" d' p0 Q2 u
                                        {( V7 E: L( A$ L* C0 x* @' S: X
                                                CATVisPropertiesValues ivalues;
7 K6 Q: N5 S$ V' F$ O                                                ivalues.SetColor(0,0,255);
/ P+ ^6 |2 z, j; S1 k                                                pVisProperties->SetPropertiesAtt(ivalues,CATVPColor,CATVPMesh );
" }6 R: P9 p4 ?0 p( [                                        }' N# n9 {% c" f0 M
                                        pVisProperties->Release();8 p" u* F5 ]3 F) D9 @2 Y
                                        pVisProperties = NULL;
# u7 `' G* Y3 E2 B                               
' a) F7 }% q* g$ K$ x% M! p3 R                                 }1 B0 N# m) L' R
- o5 C5 k9 w& x. A! {% \/ ?
                           }
+ k4 b. t' ~: b7 o! m7 K- r                                //get alias name and persistentTag to add in the list
1 q+ l8 q( ~: ^( N5 Q4 m                        - A6 k+ \) y# I( X9 l8 \  K6 n
                                2 j. P; ~* c1 ~
                       
4 ?, ^) I3 W3 L4 T% n$ d0 E                        }
/ r$ M; I1 @: e. \+ x* E  S( k$ Q, \+ C) u- ]6 t  ^3 J
                }9 i/ l5 ^5 L& a  f3 R

" L2 Q  Q0 D( c' \; P  v  P7 o        // End of User Code
' D, a  p- X. ?9 R& |( x$ v8 V9 N/ G}
- A$ M, [8 A# C1 y; P% T[/mw_shl_code]
% ^' n" ?7 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二次开发专题模块培训报名开始啦

    我知道了