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

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

admin 楼主

2018-1-15 14:21:37

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

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

x

' i1 ]9 Y) w* x& |
* V( ~7 H, J6 s" `9 u个人认为,比较常见吧,如何遍历得到几何体,通过几何体获取到拓扑体,通过体获取到几何元素,通过几何元素获取到单元,单元再到几何进行判断面的种类,对于BrepAccess的获取需要借用 全局函数 CATBrepAccess !. E" g" U" d6 A# i* o) w7 y7 x

5 D5 o$ H6 j* v5 I" Q
1 S8 |; Z" O! C: s5 e) t  ^, I7 V5 Z/ I5 x" R6 Y( `
[mw_shl_code=c,true]
# ^; F( E& c7 v  y        //get the main body
' a3 j% _4 U+ [" p0 ~0 D4 w3 F       
0 w, J( E! ?1 I! c        ----   -----
/ o. c) w7 \3 w{) g5 \. H3 ]; k1 _) s: ]! W8 c5 r
        CATIPartRequest_var spPrtRequest = spPrtPart;
  b9 z$ G) x' q& l# b- x        if (NULL_var == spPrtRequest)
5 H+ p. j5 Y7 w1 v- |3 F        {
5 p: X; o& d. h$ M2 H& v                printMessage("NULL_var == spPrtRequest");
: K/ O$ p( R- a; o4 `                return;$ Y3 e' p9 e0 z
        }
5 ?4 c4 i+ ^  E6 d" S) U% E        CATBaseUnknown_var spMainBody;
- z: ^5 p! p5 W0 `: w  @0 U  x: i+ E9 l2 J8 \$ R- ^# M& y
        rc = spPrtRequest->GetMainBody("",spMainBody);
. J) l& S7 d& I$ l6 V. r& ?        if (FAILED(rc))
' b; j# R1 |# m% F        {# r/ W. T) J4 I8 }' I* N0 n
                printMessage("Failed spPrtRequest");/ i5 U+ `4 j: P: j
                return;5 t. J! F- k7 z
        }
. g) M& @3 d2 \& e
3 R9 J, y+ ^2 P1 E) l        CATIAlias_var spAliasBody = spMainBody;+ y" j& p# P% f" {0 c/ a  @

/ L$ R( k1 P; V' H        printMessage("Main Body" + spAliasBody->GetAlias());) |" X7 ^# m' e

" m* l6 M" G9 @% ^        CATIBodyRequest_var spBodyRequest = spMainBody;
3 Q" k* S2 y+ Y7 [+ Y5 {; |4 e. ^8 k        if (NULL_var == spBodyRequest)3 H" ?& @* g4 o( |
        {- n3 q/ r3 m9 ~; Y
                printMessage("NULL_var == spBodyRequest");
. M# [6 H/ F8 c5 Z- {" S. q4 V# S                return;! h! X  @9 t- ^& e
        }
0 E4 P& [& B; C' \& B        CATLISTV(CATBaseUnknown_var) ListResult;4 f  W. X: J" d
        rc = spBodyRequest->GetResults("",ListResult);% m7 K- |  r! n1 u# `6 W
        if (FAILED(rc)|| 0 == ListResult.Size())
0 f3 S6 s4 K8 o- F" p        {, a+ V' c- q" {$ u/ o
                printMessage("ListResult failed spBodyRequest");3 ]1 A' [& j/ `/ k" ^2 O
                return;
+ M! p+ _2 p9 I. D; _        }
5 w' ^  v$ w" B% q& a/ h4 \7 y        CATIGeometricalElement_var spFeatureResultGeomElement = ListResult[1];
% h# e2 T, k6 ?1 ^, a
9 ^7 K* \5 C! R        if (NULL_var == spFeatureResultGeomElement)2 v( U) g0 |$ F" e* s8 n
        {
4 Z) \  L- q0 r9 A; D: {8 Y                printMessage("NULL_var == spFeatureResultGeomElement");
1 m6 x, i& _2 q- {                return;
" E- H2 l' E/ C- P" o0 Z* ]5 q0 i        }
% z1 ^& C$ m0 e* v, p; o* H& y7 k
+ r$ e) j; g% W* I6 v        CATBody_var spTopoBody = spFeatureResultGeomElement->GetBodyResult();
4 ]4 }4 \& }+ u  J/ b        if (NULL_var == spTopoBody)) b2 a, R- P# p
        {0 [7 S; a, U. h/ r8 v+ l
                printMessage("NULL_var == spTopoBody");
( A% U3 \! ?  v0 u                return;
/ @- x: p5 @; `7 [; J; \8 B2 P        }
' K  Z' u% k+ _5 g9 f. I# h3 p/ {7 e6 k7 ~0 O4 x5 B4 B
9 k2 A5 f1 Z7 E
        CATLISTP(CATCell) cells;
* _/ ]# R6 V# K+ V* U. x        spTopoBody->GetAllCells(cells,2); //get all the faces
) g1 E$ o, f6 D$ q2 j4 O% k" R" i- A; @5 r5 ~& f: Y* x
        char msg[256];+ p* H7 t6 b1 ~& V/ \" {  g# d) {* L: J
        sprintf_s(msg,sizeof(msg),"Face Number :%d",cells.Size());
# t, L  H# R' \8 C        printMessage(msg);
2 c: m9 [9 i7 I3 U: ?/ s, B6 k6 g. n) f
        for (int i = 1; i <= cells.Size();i++)* o4 y/ z% Z; x: [0 `* |( g
        {: U' D6 [; b: H- C$ }4 N! B' [
                CATCell_var pCell = cells;' a( Q" t' K8 I. @: D
                if (NULL_var!=pCell), U, ?- a9 X+ ?
                {
& B1 r) _" X; ^                        CATGeometry *pGeometry = pCell->GetGeometry();
5 N! F0 F) J% d+ j4 |+ }' Q                        if (NULL!=pGeometry && pGeometry->IsATypeOf(CATPlaneType)) //plane face
1 M7 a$ `: y; {" Z6 z% W                        {
3 B' s! j5 n8 R. O! l( L7 _5 |4 j/ g) J+ n
                                //CATMathPoint CenterPoint;  o; n* z. X/ o" \$ R0 ?
                                //pGeometry->GetBoundingBox().GetBoxCenter(CenterPoint);
, b; [) O% a2 p  l5 ^% O3 {, ?                                //sprintf_s(msg,sizeof(msg),"Face center :%f,%f,%f",CenterPoint.GetX(),CenterPoint.GetY(),CenterPoint.GetZ());
( e! L* @9 c8 p4 w1 Z                                //printMessage(msg);
( b; z' b5 R$ g                                 
5 c$ \) q  s: t$ u4 k  _) [0 N& A                                CATIBRepAccess_var spBrepAccess = CATBRepDecode(pCell, spFeatureResultGeomElement);
( K( e1 o9 K! `& V9 G' P' r                            if (spBrepAccess != NULL_var)
" f2 H$ V! [& L/ ~# ]: G) N3 M                            {
4 e9 J$ g3 W) A8 G$ }& n) S0 B# D                                        //assign color                               
2 ~/ c( C& f4 V                                        CATIVisProperties * pVisProperties = NULL;; H4 E9 m9 ]$ n4 ]$ C" {
                                        rc = spBrepAccess->QueryInterface(IID_CATIVisProperties,(void **) &pVisProperties);
! u7 W; J' W0 v- n, J0 a                                        if (SUCCEEDED(rc))
7 |  q/ ^( U$ I& L  r                                        {* T0 n, V% `5 _% T! w; _
                                                CATVisPropertiesValues ivalues;, b* c7 {* ?3 M$ t) M
                                                ivalues.SetColor(0,0,255);2 V+ U3 C* q# E3 R' X& @0 q  U
                                                pVisProperties->SetPropertiesAtt(ivalues,CATVPColor,CATVPMesh );% F, G3 _: T% y. j+ U
                                        }
) Y. @: B8 ^; T                                        pVisProperties->Release();, F0 \3 Q+ x' q" e& S
                                        pVisProperties = NULL;( ^! n0 f& D2 T
                                0 |, P6 r# @" o. W; x- U
                                 }; N3 ?  i2 m" e" J4 p
  |8 |! ~" K, V: Z, ~- x& N' ]
                           }& O' ^4 t0 \$ c$ `' R8 i
                                //get alias name and persistentTag to add in the list
! ], k* F) H! T0 l                        7 y' [( G: z3 c# |& W
                               
4 a+ a! {4 A* n$ N                        - O1 T& C( }& _
                        }
" [4 Y/ Z& s$ _6 t
3 H6 S4 S, u) B2 v4 v( W                }
9 j, t6 w) J4 ~% V# W7 I' b/ p, G$ |" ?$ j$ j2 ?1 C9 l, H6 E7 {
        // End of User Code
$ {* R8 _5 _8 O9 ]}& e" d3 y  b3 _6 @* B$ ?
[/mw_shl_code]; a( @# Q# F& }5 p) t, {# G3 J6 \' |9 w
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了