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

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

admin 楼主

2018-1-15 14:21:37

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

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

x
: W$ X& \; i- g/ x1 Q& q  s" R

/ A! {0 P' m4 o  ^: ?/ k个人认为,比较常见吧,如何遍历得到几何体,通过几何体获取到拓扑体,通过体获取到几何元素,通过几何元素获取到单元,单元再到几何进行判断面的种类,对于BrepAccess的获取需要借用 全局函数 CATBrepAccess !
, L! D/ h/ J, w: W
5 }) W" m  J0 F- M! s. N% U: k7 P  j3 I1 T/ i5 R

9 }* @8 M8 o7 K) E4 J[mw_shl_code=c,true]9 b0 |+ `8 j$ Q
        //get the main body
0 J4 i6 Z( y# Q9 C8 {: j        . k  C, D0 `4 \/ k
        ----   -----
% N$ s. \) s4 g$ D% a{3 D9 S9 n+ ^5 c. p* p
        CATIPartRequest_var spPrtRequest = spPrtPart;* p" `# V0 u5 g+ I& j; {$ E2 y) T
        if (NULL_var == spPrtRequest)
: j8 V6 O7 n! M8 b5 p9 e        {
2 G& i6 G1 F& N% r1 O$ C" c                printMessage("NULL_var == spPrtRequest");
! G; O0 x9 R' }) }                return;4 ?3 x- C8 ^- e
        }
, Z2 F  H. Y1 E, ?9 V! }        CATBaseUnknown_var spMainBody;5 u: u- ]2 h5 r, a) q7 x
  k3 M1 t. e+ \4 B: ]
        rc = spPrtRequest->GetMainBody("",spMainBody);6 E& \  c* C/ r7 J, V+ I
        if (FAILED(rc)), O% O3 n  _3 f  Z; Y* r; x$ ~- o0 |
        {
& p. ~# v& y3 {                printMessage("Failed spPrtRequest");
! F4 S8 c" p5 ^2 Q5 c( n# Y                return;& G: `- r1 W5 Q. G# r6 e
        }
+ ^# Y$ ]2 q! b* f2 ?7 G0 Q% M5 I, h. f' V/ F, A* l
        CATIAlias_var spAliasBody = spMainBody;
5 ?8 K# J; a4 U$ q# N* B; Y+ C% M% v, b% c' x3 Z( C* W
        printMessage("Main Body" + spAliasBody->GetAlias());
- @8 J$ _" g+ F8 O) k# ^5 t
' b( G, ~) x9 D2 M0 S        CATIBodyRequest_var spBodyRequest = spMainBody;
% y' \  I1 P: I, O% u  b3 y9 T        if (NULL_var == spBodyRequest)
' {; B- l; x  t% a/ V        {
' D: I" ?( K+ {( o                printMessage("NULL_var == spBodyRequest");
) n, M7 e5 ]2 x' a                return;* T* B! U' R- R" X
        }" j: w7 d/ @4 Z- K$ u4 r
        CATLISTV(CATBaseUnknown_var) ListResult;
6 v# t8 c9 V: E7 G        rc = spBodyRequest->GetResults("",ListResult);( f  k/ L2 }) {' ?" u
        if (FAILED(rc)|| 0 == ListResult.Size())
) g+ X* ]: g/ W  g        {3 z- _7 r( J6 C6 k2 m. x
                printMessage("ListResult failed spBodyRequest");
& k# J1 [2 |# |- \* k: F9 V                return;
6 f  ^) t8 O& d% F        }7 C, W$ f# z3 o- E. I9 {
        CATIGeometricalElement_var spFeatureResultGeomElement = ListResult[1];
4 @$ e" o7 `  J  D
; P# x8 e) v2 T. f        if (NULL_var == spFeatureResultGeomElement)" v$ C& |" x. U: Y) {6 _
        {9 R0 |% }* e5 `4 f
                printMessage("NULL_var == spFeatureResultGeomElement");
: G4 |) F  G. W4 `, Z$ r                return;
5 n, u: W$ z6 b! ?        }
+ ?% n9 p$ T% @" Z0 L
/ l/ G6 g! f2 U' o        CATBody_var spTopoBody = spFeatureResultGeomElement->GetBodyResult();+ b& _5 c5 Y, H$ M7 P
        if (NULL_var == spTopoBody)
2 O) R+ ~, t0 R2 t- d& t        {
& Q. {$ C3 l0 C! h- r+ R) \* _3 r/ e                printMessage("NULL_var == spTopoBody");
9 Z) }9 g# ~5 @& m, F- D                return;4 H5 b( q+ {0 x4 ^  L: q
        }
  s. p. H9 S. x4 D+ b) b, g3 L1 ], C' b

" C" I. s3 t# \; L% U* Z; i( ^% ?, Q        CATLISTP(CATCell) cells;. S5 M7 H  S; p, j- j- o  Q
        spTopoBody->GetAllCells(cells,2); //get all the faces/ g7 V2 O. |) Y+ D/ b% D2 e5 Z
- m8 X! \6 U+ K$ p! v
        char msg[256];6 r6 [5 Q0 u1 }0 P
        sprintf_s(msg,sizeof(msg),"Face Number :%d",cells.Size());
" @: @& z! s5 D8 J        printMessage(msg);
7 C' {9 K, `8 D1 O8 c) }9 D0 _( e6 w/ N( x3 _6 T1 C1 s1 K( Y
        for (int i = 1; i <= cells.Size();i++)
2 I: v8 v0 N' n. g7 d1 l+ }& H        {
+ r+ n( K; `8 M$ t$ N1 G3 T                CATCell_var pCell = cells;
8 O% [& J2 t7 U: V$ m6 U- b7 G                if (NULL_var!=pCell)
$ C5 U$ o, V; h; C9 j2 g& R. O* v                {
$ R! o- ?( A0 X. y                        CATGeometry *pGeometry = pCell->GetGeometry();
) J# [  U/ |2 Z' F' V6 M* E# L$ z% n0 S                        if (NULL!=pGeometry && pGeometry->IsATypeOf(CATPlaneType)) //plane face
0 S( P/ C: e/ |4 O; a. y/ p% Q( P                        {
/ J: s) o8 |6 O( m9 J8 \2 z( s* y1 j! A( `* c$ H# m" z
                                //CATMathPoint CenterPoint;7 O+ s: }$ i+ G+ T
                                //pGeometry->GetBoundingBox().GetBoxCenter(CenterPoint);* ?5 R+ m8 `& n) f- {
                                //sprintf_s(msg,sizeof(msg),"Face center :%f,%f,%f",CenterPoint.GetX(),CenterPoint.GetY(),CenterPoint.GetZ());
1 O9 A) W& B, U6 R, h+ e# e% O- z0 F                                //printMessage(msg);4 _7 ]  Z0 s: @
                                 
  i: t$ }3 l- E4 Q! B  _3 H                                CATIBRepAccess_var spBrepAccess = CATBRepDecode(pCell, spFeatureResultGeomElement);1 Z; l6 F0 _# f0 M9 l* h
                            if (spBrepAccess != NULL_var)
4 i- f0 ~2 l7 j( R5 r                            {- W2 m7 @7 R5 C! b( \) g. ^% x3 f4 B  E
                                        //assign color                               
$ C+ o0 B( D( ~/ B9 ]: T                                        CATIVisProperties * pVisProperties = NULL;% i2 W( a5 O+ m' Q3 ?& k
                                        rc = spBrepAccess->QueryInterface(IID_CATIVisProperties,(void **) &pVisProperties);- w1 W$ ^: w  e7 q, v
                                        if (SUCCEEDED(rc))9 B) m! b2 P0 s7 m6 F+ E, o2 Y5 O
                                        {) J* t/ M1 d( W& r8 ^% f
                                                CATVisPropertiesValues ivalues;
1 G' x9 p- v/ R4 J4 \, ]) g                                                ivalues.SetColor(0,0,255);
& W- [: z9 N# B7 _) g5 c                                                pVisProperties->SetPropertiesAtt(ivalues,CATVPColor,CATVPMesh );0 ~* }- M4 N8 L
                                        }, R6 q( q) K5 j! s
                                        pVisProperties->Release();
6 @  u) g/ ?" B                                        pVisProperties = NULL;
5 m. f  Y9 L/ L! x& Y                                $ @, s$ H. y, q
                                 }6 X' |3 O5 s7 @  I$ w

; h8 u8 B! q, U/ a" R( ^1 ^% K                           }
* u$ U  v) p/ H5 g! |3 ]                                //get alias name and persistentTag to add in the list0 [; K1 e% x* s/ ]8 P* J8 m/ M
                       
9 i6 P! ]# ~8 {' L# X" y                                0 e+ f( Q( c1 ^& h
                        ' J* ^. M) T) M2 `) e
                        }0 d& |$ w; C1 X8 C" _5 y

/ f& A* R9 ]' S                }
# S# \- A' C6 Z/ [# J
7 Q7 x, X1 P: ?        // End of User Code" n$ p# q1 v; C6 x3 ~, v, B
}& h, D4 f; p: ~, U( l
[/mw_shl_code]
4 ^; h7 Z8 M  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二次开发专题模块培训报名开始啦

    我知道了