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

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

admin 楼主

2018-1-15 14:21:37

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

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

x

% u7 p6 t: B3 D# J/ Y" E9 z- C. c" L& L  H0 N' m
个人认为,比较常见吧,如何遍历得到几何体,通过几何体获取到拓扑体,通过体获取到几何元素,通过几何元素获取到单元,单元再到几何进行判断面的种类,对于BrepAccess的获取需要借用 全局函数 CATBrepAccess !; i4 m) u1 U) a: F5 C
1 Q. h% D/ P) M3 l

2 b( L  x- a& w' B  R: I, }2 r# Z# n9 m
[mw_shl_code=c,true]
; P/ n1 X! \8 D+ ^& D" U, K1 I& c        //get the main body
! |5 c* Q9 I+ E$ K& U2 C& _        4 [- s3 e8 B( ~" ^% F" @& L  Z
        ----   -----
  a0 e" {, r/ ^+ G) \* G6 t% a. q{2 Q$ f5 Y, y# k
        CATIPartRequest_var spPrtRequest = spPrtPart;
! E7 B. g  Y7 |( p) B9 }        if (NULL_var == spPrtRequest)
; a( E8 a" i+ s* B- q" f: z& O        {8 j' ]" S$ D8 W
                printMessage("NULL_var == spPrtRequest");
4 V* d4 P5 M; c! ?1 m4 t9 y                return;
; `" Z! b$ ^  G5 n" O* A+ u        }7 E/ @: p$ H- V* v
        CATBaseUnknown_var spMainBody;
  Y' N2 C. Q) X; N5 |( ?& w
, m0 t: `( j0 ?6 C/ R4 e        rc = spPrtRequest->GetMainBody("",spMainBody);
3 y5 G" x! V7 I, X) L" w8 h        if (FAILED(rc))" j0 y  g& r6 Q/ H5 R
        {  \0 C! N8 f/ p% Q" Z8 @' g
                printMessage("Failed spPrtRequest");
+ u! S, r$ l3 F# v7 C: D                return;
1 c8 O3 e6 E/ K1 C8 W6 A        }
' ]4 x% a- R+ D& n6 j* G8 B
) k* G+ t. z3 t. [& Z        CATIAlias_var spAliasBody = spMainBody;
2 f+ I9 h% m' T# J- [2 s7 c# U( ~$ n' t$ c% x+ o* P
        printMessage("Main Body" + spAliasBody->GetAlias());
0 i. K/ Y* A, |6 ?, X2 Z+ \3 g9 l' w" u5 V
        CATIBodyRequest_var spBodyRequest = spMainBody;, U2 l$ n  c! y4 [1 j8 Y  m, ]& _
        if (NULL_var == spBodyRequest)4 x7 h7 v% X! l
        {% J: k. g. o) |0 C/ t) E
                printMessage("NULL_var == spBodyRequest");/ s# [* o4 Z) y& X1 _" l5 W
                return;
6 c( [& b( Q* z1 v) m' S$ A5 V6 W% h8 s        }  W9 C6 F, C( b1 d
        CATLISTV(CATBaseUnknown_var) ListResult;
$ Y  D0 p! b: Z! T6 G# s+ S        rc = spBodyRequest->GetResults("",ListResult);
; I0 r/ y' j' ]5 @, U+ L        if (FAILED(rc)|| 0 == ListResult.Size())+ V  U! o6 B5 c: d2 ?% S
        {! l" C5 t# L$ P# O" e
                printMessage("ListResult failed spBodyRequest");/ ]7 n# I' a7 s/ c
                return;& h  c8 i) [$ y/ x1 q( ?( w" }
        }! T8 M: D) Z# S/ p  r. e8 M5 b
        CATIGeometricalElement_var spFeatureResultGeomElement = ListResult[1];+ ]& F3 m% x( M$ h. V

+ J1 M$ c% P: o2 p        if (NULL_var == spFeatureResultGeomElement)
# j. B. Z1 `7 L! Z5 M9 B" E        {
: k3 b/ l6 G) |  z: d                printMessage("NULL_var == spFeatureResultGeomElement");- Y# B; k# z' I9 g1 E* S1 H( M
                return;
& q( i# u+ n2 K% J! N/ Y( v5 A8 C9 H        }% j/ F: t$ _& R3 C" A! g* V
2 m. I6 `8 I4 c# f) w
        CATBody_var spTopoBody = spFeatureResultGeomElement->GetBodyResult();" M" d/ J: u* r3 n8 U
        if (NULL_var == spTopoBody)
# w: m9 Y9 N& q' Q        {9 ^4 O* ~" S# r' ^) g
                printMessage("NULL_var == spTopoBody");
/ ?; D3 C/ y; o* m0 s7 M                return;2 o! @! b+ I6 ]9 J4 a# O
        }
! a9 V, J1 w+ ~9 l5 O9 _, S
9 K2 F( T/ |% G$ T' ~& y& X; O: {
2 N! J( @% v" y        CATLISTP(CATCell) cells;
/ `6 j4 O. J! n        spTopoBody->GetAllCells(cells,2); //get all the faces, p! c7 E1 r: O7 V6 ~! C2 V

" u$ ?8 G( [) V  J        char msg[256];
& i3 }5 }+ m! _% D        sprintf_s(msg,sizeof(msg),"Face Number :%d",cells.Size());8 g* L+ y6 I1 I, c8 `  q
        printMessage(msg);. v( T( f6 M! w) `. s# S% I
0 W/ h# b# J1 T6 |
        for (int i = 1; i <= cells.Size();i++)4 U+ p, @6 \6 g  Y) U6 N0 G4 x
        {
" h3 ~0 n7 g. j  W                CATCell_var pCell = cells;
8 L8 K2 }3 ]- a1 A; ?. |* a                if (NULL_var!=pCell)
! T7 D& c9 e" r6 ?& @                {1 H: q- z& x/ f4 x" A) @
                        CATGeometry *pGeometry = pCell->GetGeometry();
0 u8 l' f" `2 L+ ]7 I                        if (NULL!=pGeometry && pGeometry->IsATypeOf(CATPlaneType)) //plane face
4 z- i) C0 S$ {* c: w                        {1 t2 q0 X# S6 l3 r5 ]9 |' m- U( z
' ~, ]4 f6 |2 t* W7 B/ t9 \9 ?
                                //CATMathPoint CenterPoint;5 ~; K. d2 v0 ^$ V1 ~: I. s
                                //pGeometry->GetBoundingBox().GetBoxCenter(CenterPoint);
, c- \2 Z: c( _& M7 p                                //sprintf_s(msg,sizeof(msg),"Face center :%f,%f,%f",CenterPoint.GetX(),CenterPoint.GetY(),CenterPoint.GetZ());1 u' P4 n  R7 a
                                //printMessage(msg);& y% h) s! i# s# o! K
                                 ; m) |# M& J+ F: l- u* ]7 P; s+ L% P
                                CATIBRepAccess_var spBrepAccess = CATBRepDecode(pCell, spFeatureResultGeomElement);
5 {$ C1 L. y- H" u8 ?                            if (spBrepAccess != NULL_var)
* H0 N  X& ?) z, [0 Q. b                            {
' U5 w& B" x" j) F) N                                        //assign color                               
9 t4 k( h. q  U) q- }                                        CATIVisProperties * pVisProperties = NULL;8 A2 Z/ |, G' q
                                        rc = spBrepAccess->QueryInterface(IID_CATIVisProperties,(void **) &pVisProperties);# b9 v3 v* m8 Q" Z. e+ W: `- w2 a( o
                                        if (SUCCEEDED(rc))' c/ h  [5 G  Z6 L9 P
                                        {2 E$ g. a$ |* V: E
                                                CATVisPropertiesValues ivalues;" F- d$ R! Q  V6 \" H8 A- K. h0 E6 P
                                                ivalues.SetColor(0,0,255);# ?( L/ g$ U' B
                                                pVisProperties->SetPropertiesAtt(ivalues,CATVPColor,CATVPMesh );
+ Z- G, V1 c1 w. J" l. l9 k                                        }( \$ u  B7 c% a6 J6 m* @2 h
                                        pVisProperties->Release();
) G8 t) [3 u0 X6 Y9 r/ ?: L                                        pVisProperties = NULL;
# y+ P1 I2 V5 Z                               
  y# G: N8 Y; f                                 }- I1 E& \) @) U1 w# z4 Q

& ]* B2 r4 R7 o" Y/ o                           }) ~/ Z# a  c0 w0 s) A$ I! `& w
                                //get alias name and persistentTag to add in the list2 k" h( `+ m! K+ J4 f  w' \) K
                        # Q- R% ^, N  n6 k& S
                               
4 s$ R$ l7 m, W  b0 N6 X+ u* j( Q                        % e& |: Y$ q1 X$ W/ I: ^8 \
                        }
0 A5 q; R: c. w: i6 r' c3 @
2 ^: n0 M1 @; I                }' S0 H( e( d( p+ f% U- Z- Y

2 U4 v  {9 O- P. A        // End of User Code5 T( X# Q# k2 _
}
7 x# C7 X) E- z: l& K[/mw_shl_code]
3 n# `' a+ ~0 O; I4 _
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了