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

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

admin 楼主

2018-1-15 14:21:37

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

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

x
& k* a1 U! h! @1 D: P* h

1 ?0 d5 A& G2 a; D- C% N个人认为,比较常见吧,如何遍历得到几何体,通过几何体获取到拓扑体,通过体获取到几何元素,通过几何元素获取到单元,单元再到几何进行判断面的种类,对于BrepAccess的获取需要借用 全局函数 CATBrepAccess !
$ `% `% P- w; S9 z
" I1 M( ]5 k/ z% ?- \9 O2 K7 U2 ~4 p
5 k& T0 w, k3 j2 P2 ^' e3 _6 S) O2 T3 P6 K* z7 r
[mw_shl_code=c,true]2 d! x1 l/ k- v8 d  U" Q3 ?
        //get the main body
. W5 ?5 |; H$ d; ^        6 ?5 F' j. x3 ?* v2 h4 x; q; _0 G
        ----   -----; @  f9 z% F* y' [) a3 O8 T# c
{& \" ~: s* a% }
        CATIPartRequest_var spPrtRequest = spPrtPart;
- u5 Y& U  E4 w- {        if (NULL_var == spPrtRequest)
3 @, L( A. a; c        {
& a$ O% {- g3 e6 Y5 F" u                printMessage("NULL_var == spPrtRequest");/ o+ i6 E( H% `8 W& C
                return;/ _  K7 D7 P( ~2 \  j1 x1 g
        }) n$ T' m1 |% w- ]2 a. F
        CATBaseUnknown_var spMainBody;) U8 _5 A. r7 ?# g! T$ H. R# o( I
+ Y! L) ~" k9 E& K. V
        rc = spPrtRequest->GetMainBody("",spMainBody);# A$ y% m" @9 b' J2 B0 f7 s7 q+ N7 R
        if (FAILED(rc))
0 M8 w% K+ |1 }2 c+ l/ Z        {* ]" }  X, H5 R! b+ @9 W. m! Y
                printMessage("Failed spPrtRequest");
% G( M( m' c& K/ h2 X& Y                return;& i7 F$ j: \. w7 [, `, I2 @. K
        }
3 m+ `" ], |% g: B2 T! E- K7 }+ a5 r: \; b7 J2 ^% j0 `" ]$ A
        CATIAlias_var spAliasBody = spMainBody;; e- Z& }1 t1 m  i- ~
6 V6 n8 ~$ i" x6 t; Y
        printMessage("Main Body" + spAliasBody->GetAlias());
1 w4 B+ O0 D3 F' S) n2 i( A8 p4 c& h
        CATIBodyRequest_var spBodyRequest = spMainBody;
4 D* C, v4 R" k; i0 i7 V- T+ ]        if (NULL_var == spBodyRequest)" K8 `' {/ @- e. T! G# o
        {" p5 x5 }# X; @" C7 X( c
                printMessage("NULL_var == spBodyRequest");! v8 ]! W  E$ O; B  i7 l
                return;
2 X* I8 [: `8 o7 L) c. W' ^        }
& l$ L4 D' F* c3 j5 ?" @        CATLISTV(CATBaseUnknown_var) ListResult;' e; T- v) i  A; r& H) d) W: w4 f+ M
        rc = spBodyRequest->GetResults("",ListResult);
7 J! W& _9 N1 s3 z        if (FAILED(rc)|| 0 == ListResult.Size())
! Y2 }# K9 P  m; [8 P. F( {: ]        {+ x: a2 k# E- N6 ^. y, S  a
                printMessage("ListResult failed spBodyRequest");
2 o2 Z% m" e  j+ R                return;
1 N" l1 l" M6 ]6 y7 m1 ?7 Q        }6 \7 s+ m* Y7 l9 X' b
        CATIGeometricalElement_var spFeatureResultGeomElement = ListResult[1];
$ s% ~. {! V! ?* u0 b* R2 `
4 }' ^! E5 v/ j, A2 s1 ?        if (NULL_var == spFeatureResultGeomElement)  x' i$ ?; f! r+ G, m
        {' s7 L% Y3 h# v- e5 Z
                printMessage("NULL_var == spFeatureResultGeomElement");
# M4 N2 I) [* w* }: A+ I3 P                return;
+ M+ G+ M; a" s- A        }
7 B' t) R$ X5 w- g5 H/ T
% n$ r1 g6 C/ q( |% V( D. v        CATBody_var spTopoBody = spFeatureResultGeomElement->GetBodyResult();
4 j' a/ n; M# |3 |! s5 z# C        if (NULL_var == spTopoBody)& T- [6 D2 x9 m$ x6 T2 D7 A1 F
        {( f8 {! T% J; \& t& E$ B$ f1 Z" _
                printMessage("NULL_var == spTopoBody");9 p! w* i% `7 t1 W, q7 N  d
                return;
% }+ ^! x- @8 a: l% M' }        }7 b  C0 P" B" {8 k. b8 g% }2 o2 R  j

, R' S# W: l+ W# U8 m% F& t
$ T- t& Y3 D& ]" R        CATLISTP(CATCell) cells;
( @: i, [5 B  I8 f7 a        spTopoBody->GetAllCells(cells,2); //get all the faces
" h5 `) x9 _9 O! L6 i4 H4 ?. L
  W9 Y1 [' R8 W) A% j        char msg[256];/ M, a- y+ l, X4 f1 L
        sprintf_s(msg,sizeof(msg),"Face Number :%d",cells.Size());
( r8 Y4 O, ^$ f        printMessage(msg);
* j& P% L1 A! B# _# a1 }4 ]; `  I6 O' v7 I
        for (int i = 1; i <= cells.Size();i++)) _% m5 f3 J" C1 f' ]
        {, c; u4 ^3 F: z4 t. {5 j6 C& w5 m
                CATCell_var pCell = cells;
) X: ?& G- m2 J$ ]! e/ `! Y                if (NULL_var!=pCell)
& B5 t5 _9 E+ \. f  y' N5 C; x                {' F5 H! E7 G! v0 R* W  ^+ J7 T
                        CATGeometry *pGeometry = pCell->GetGeometry();
: M% p8 b" Q5 M0 I' h/ l+ F                        if (NULL!=pGeometry && pGeometry->IsATypeOf(CATPlaneType)) //plane face
, c' V1 R. g) y3 |6 K* Q/ M                        {9 z( L; n& y7 X! ]6 h/ N$ z) k
1 I; ~' U' y0 J2 B
                                //CATMathPoint CenterPoint;. u* z9 y7 n/ h* ]5 l
                                //pGeometry->GetBoundingBox().GetBoxCenter(CenterPoint);
. H1 h4 d% R, h! f" M8 h                                //sprintf_s(msg,sizeof(msg),"Face center :%f,%f,%f",CenterPoint.GetX(),CenterPoint.GetY(),CenterPoint.GetZ());! B. {$ {6 o( r  c% Q4 I) L" i
                                //printMessage(msg);
, s$ L9 r( o! w9 B+ H                                 
' I0 {  \2 t! {( J# V                                CATIBRepAccess_var spBrepAccess = CATBRepDecode(pCell, spFeatureResultGeomElement);; B! W! n1 H2 g
                            if (spBrepAccess != NULL_var). q5 C. z' Z" |# @7 N3 n) C
                            {
- L6 F$ O, [) [5 M9 M+ z" x                                        //assign color                                5 o( ^. f6 Q* z' J. g, h
                                        CATIVisProperties * pVisProperties = NULL;# k( i1 l, D+ x. ^. V) P4 z
                                        rc = spBrepAccess->QueryInterface(IID_CATIVisProperties,(void **) &pVisProperties);
" a4 L9 A4 m& H0 k4 I                                        if (SUCCEEDED(rc))) M8 L3 k6 ~% e- Q. V$ t
                                        {1 j' U& g+ Q' \. E1 \& s2 \
                                                CATVisPropertiesValues ivalues;
9 }; F4 {& ?8 f0 b8 x6 d5 c4 K                                                ivalues.SetColor(0,0,255);
/ R7 U( ]4 [+ X- ?9 }7 E                                                pVisProperties->SetPropertiesAtt(ivalues,CATVPColor,CATVPMesh );
" I/ s3 f# a9 y# G9 N/ ]                                        }" C% T6 {! |# B! H9 O- L8 W
                                        pVisProperties->Release();
+ R  m. J) Q. q: v                                        pVisProperties = NULL;
& i5 V6 F4 l/ Z+ f" a$ h                                2 A1 E1 ]$ V8 B# M  \
                                 }
! p: o; w8 \2 Q0 w- a" S3 z* W$ X1 I; ]! h
                           }  m" r8 z( v: r  U, g+ o
                                //get alias name and persistentTag to add in the list
) a2 d  s# c. |( u4 }- u# C* l/ d                        % ~7 b! s! n, r: b
                                + [' _, Y+ z( ?: Y
                        # I4 E) z3 _$ c: ~% T+ k4 X* e, x
                        }
9 |( ~1 F0 Z( h% d; [9 x9 P1 B1 l  S# y
                }
) C5 R/ O/ T- k6 O: Q, k* m+ N* ]8 T* O$ E; H
        // End of User Code
0 D+ a: V, N6 z# p- O}
' E9 F# x1 S+ K: _: h! o[/mw_shl_code]
$ y3 t- U3 z% _+ k. P
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了