PLM之家精品课程培训

PLM之家精品课程培训

联系电话:18301858168   |   QQ咨询:939801026
NX二次开发培训

NX二次开发培训

UFUN/NXOpen C++和实战案例

适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术。
公众号二维码

关注公众号

点击扫描二维码免费在线高清教程

课程详情
Catia二次开发培训

Catia二次开发培训

市场需求大,掌握核心技术前景广阔

Catia二次开发的市场需求大,人才稀缺。掌握开发技能潜力巨大,随着经验积累将在汽车、航空等领域有所作为。
B站二维码

在线原创B站视频

点击关注工业软件传道士主页

课程详情
Teamcenter培训

Teamcenter培训

全方位培训,从基础应用到高级开发全覆盖

涵盖用户应用基础培训、管理员基础培训、管理员高级培训及二次开发培训等全方位内容,由多年经验讲师打造。
QQ群二维码

加入同行交流

点击扫描二维码加入QQ群

课程详情
×

PLM之家plmhome公众号

课程涵盖: PLM之家所有原创视频

×

关注B站视频

所有高清视频一览无余,全部在线播放学习

×

加入PLM之家QQ群

同行交流,疑问解答,更多互助

PLM之家PLMHome-国产软件践行者

Catia 二次开发源码分享: 获取所有的平面并着色

[复制链接]

2018-1-15 14:21:37 2022 0

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

admin 楼主

2018-1-15 14:21:37

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

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

x
# f. B+ ~5 V4 z9 T) A+ o

( O+ G9 r5 W/ \! q- j) e个人认为,比较常见吧,如何遍历得到几何体,通过几何体获取到拓扑体,通过体获取到几何元素,通过几何元素获取到单元,单元再到几何进行判断面的种类,对于BrepAccess的获取需要借用 全局函数 CATBrepAccess !
  v5 p5 f6 @2 N6 |1 x, G) M* z- [0 h3 E. x1 g' m2 a" m, g* }- K) T

8 w$ \7 {9 h% @% w
1 ^5 R9 T9 H- e% ]  e. B/ A[mw_shl_code=c,true]
+ n* d0 o) Z0 m8 Y7 D        //get the main body. z0 n  f- F1 L. i0 Z
        + j3 H" ?( k# R  |8 d8 t
        ----   -----# r; k6 N; @9 `( U  A
{
) e+ d4 T0 L9 @) J' c9 J5 T2 N        CATIPartRequest_var spPrtRequest = spPrtPart;/ _9 S. ]/ ^2 J0 ]+ b; }
        if (NULL_var == spPrtRequest)
+ G# k$ ]& x- Q' a4 M        {
' w9 o# t( o0 F: K' B0 j                printMessage("NULL_var == spPrtRequest");" P9 j2 X* W: E/ m) ^
                return;
- z, p- S: J% _7 Z$ U7 |        }
% b/ _4 P8 q7 @! F        CATBaseUnknown_var spMainBody;( H& @) p/ S, U' m: |5 X& M0 A
1 \- k; c+ u; y/ n8 O- `4 V: ]4 r
        rc = spPrtRequest->GetMainBody("",spMainBody);
+ V' J# m0 f2 [. I: `, [5 X        if (FAILED(rc))
# o* n0 Q$ p2 J1 V' @# o        {
( d% I2 R# I, m# X                printMessage("Failed spPrtRequest");
2 n4 i/ D9 Y+ N8 a. w/ k5 Z                return;, e. V$ D+ \8 y! t- t2 I
        }
8 d& ~+ a' b9 ^( v5 \3 o+ {" r- q8 b8 Y% T
        CATIAlias_var spAliasBody = spMainBody;
, ^2 T* N' k; [; t2 f- R% B5 Z# k7 d& Y0 d  J
        printMessage("Main Body" + spAliasBody->GetAlias());
' v5 |  G) I- c# I& W" [2 L' F
        CATIBodyRequest_var spBodyRequest = spMainBody;
# T+ B1 C; F( X2 o3 \) f3 x        if (NULL_var == spBodyRequest)/ b$ t# V8 {" h, J0 [8 P3 F6 E- _
        {% X" ~3 ^5 b* Y1 O  V6 P
                printMessage("NULL_var == spBodyRequest");
3 G; g/ j& G- }7 S7 K9 o                return;
7 c. m% ^1 ]- K        }7 y$ P' n  o  H/ a; f; d0 i
        CATLISTV(CATBaseUnknown_var) ListResult;7 E' @8 O3 Q7 g' _8 c. g
        rc = spBodyRequest->GetResults("",ListResult);
( @" U) Y$ [9 S1 q        if (FAILED(rc)|| 0 == ListResult.Size())
2 `& [' l- D0 s* `1 |        {& n8 ?9 I7 {0 ?% ^: ~3 x; R1 o( A( D& ^
                printMessage("ListResult failed spBodyRequest");+ [6 b  T/ _, @( V. m& q
                return;
7 m$ j* `4 r! r6 N9 T        }
% t1 C/ f! P. r1 X        CATIGeometricalElement_var spFeatureResultGeomElement = ListResult[1];
) p' d; K( M2 w( l' G; z+ W7 u9 I+ l
        if (NULL_var == spFeatureResultGeomElement)6 i0 e* y$ S/ _0 C( k
        {) j# N  B3 k" m! `. M) Y' g' S
                printMessage("NULL_var == spFeatureResultGeomElement");
; g/ J8 V) z2 h                return;
4 x& f; _3 G- Q# Z' L! k& G4 ^        }
3 Z( y' g* ^- [* S# y
5 Y7 S) _/ K1 o- i+ I( }        CATBody_var spTopoBody = spFeatureResultGeomElement->GetBodyResult();
& z; z8 a9 D- M# ~        if (NULL_var == spTopoBody), g6 J  e2 U# Y4 H9 i1 `. _
        {; J5 C6 z! o+ `9 n. l2 o4 b
                printMessage("NULL_var == spTopoBody");4 |/ J5 _: \4 ^& H
                return;* h: `) h9 I( L9 h; q7 \
        }) j, E" r1 w0 k( b' v
$ L3 b- e" ?; t! |  S# h

6 U0 z5 e" W; N+ z3 r$ n! B        CATLISTP(CATCell) cells;+ C5 N( w0 X! J4 k/ h! Y
        spTopoBody->GetAllCells(cells,2); //get all the faces/ k" ?( ?3 ]1 [& f4 [5 y" C
; s" R; Y- i( C: n. h6 m
        char msg[256];1 `5 B# y& X& ?' _- A/ w8 i; S
        sprintf_s(msg,sizeof(msg),"Face Number :%d",cells.Size());, w; p3 N% i: p$ |  l2 s
        printMessage(msg);
) Z8 }2 E6 ^3 U: r$ `7 G) ^4 Z: X2 D8 G/ a' D, _+ m0 [( R
        for (int i = 1; i <= cells.Size();i++)0 ]& i/ a7 l" D
        {
8 F* t8 K1 f1 w2 ~                CATCell_var pCell = cells;, t6 Z2 f5 D! n* k' E& m
                if (NULL_var!=pCell)
7 w# {1 V% J" U  j                {
* Z! a# F. O) L9 r5 U4 B4 X1 h  ]                        CATGeometry *pGeometry = pCell->GetGeometry();  d( B7 E  {+ }1 h3 c/ S
                        if (NULL!=pGeometry && pGeometry->IsATypeOf(CATPlaneType)) //plane face
7 J( U0 |. l1 i5 Y  `5 c) X! b                        {3 I( L) M6 D6 y7 ]+ T+ J# x: @) E
: u2 N; d4 u! d! U  C
                                //CATMathPoint CenterPoint;8 F1 }" R0 X# `
                                //pGeometry->GetBoundingBox().GetBoxCenter(CenterPoint);
/ U! y) m; ]( q* G                                //sprintf_s(msg,sizeof(msg),"Face center :%f,%f,%f",CenterPoint.GetX(),CenterPoint.GetY(),CenterPoint.GetZ());. d, u8 L1 p% s5 V
                                //printMessage(msg);
' w8 w3 R' `  V2 E3 d                                 , p7 K8 Y5 w) f1 o' @6 F
                                CATIBRepAccess_var spBrepAccess = CATBRepDecode(pCell, spFeatureResultGeomElement);9 `1 G4 c$ r5 y( W) i
                            if (spBrepAccess != NULL_var)/ o7 B! B8 m; `' A
                            {
& t+ E1 m. `  _1 N7 L$ U                                        //assign color                               
% L. y8 j' M# m$ f6 o) }; D                                        CATIVisProperties * pVisProperties = NULL;
5 m) G7 w* P$ A: e2 A8 {- c                                        rc = spBrepAccess->QueryInterface(IID_CATIVisProperties,(void **) &pVisProperties);. N8 T& X; j9 }# {' o* E
                                        if (SUCCEEDED(rc))5 V) I! w1 l# i. _: u- B! x% F' `. y
                                        {% m# J' q; B9 n1 o7 P" F* {" }, N" a
                                                CATVisPropertiesValues ivalues;% f) c: I* x  e/ M) \
                                                ivalues.SetColor(0,0,255);
- D* O8 z. n3 S2 A$ u" ^; d                                                pVisProperties->SetPropertiesAtt(ivalues,CATVPColor,CATVPMesh );4 T  U7 m% u. _0 t; q  l# p
                                        }8 b/ \/ \1 \0 C  ~$ x5 ~0 L! b
                                        pVisProperties->Release();
& w' `: k6 R3 F, q. Y                                        pVisProperties = NULL;# X: Q+ r* U3 @0 _* b5 U
                               
6 X8 R( P9 @: D- n1 ~. P: ~  W* \& O                                 }3 g/ C  B% }1 V2 d4 H

" S, y. I2 U  \                           }
$ }$ j" N8 w, f, U8 k" v( g. L                                //get alias name and persistentTag to add in the list" P. J2 N% s4 S
                       
( E2 Z6 J4 |- Z7 J5 S) y7 N$ a                               
, W0 J+ l- H( @9 b% ]6 X                        . @' Q" M7 f5 P- m0 S2 S0 X  w
                        }
* O! D. p% v# w4 Y7 |& V, N2 O8 c3 z# |
                }
& A0 t1 e9 g1 R: J0 w
, ?+ Y% W& B4 H- h        // End of User Code
. d& A1 V) D+ L/ H9 h2 b}
% h! ~( ?$ l' O! X" {; N[/mw_shl_code]. X! ?6 ?+ y, x- F) W! D" c/ \
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了