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-国产软件践行者

[二次开发源码] NX二次开发源码分享: NXOpen C++获取面的面积和周长

[复制链接]

2018-9-11 21:23:07 4044 1

admin 发表于 2018-8-23 08:19:35 |阅读模式

admin 楼主

2018-8-23 08:19:35

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

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

x

5 S2 {* G+ Y( J; C2 [+ Q6 U+ @
, U+ R8 I' s4 t. pNX二次开发源码分享: NXOpen C++获取面的面积和周长
7 c$ u! o2 }( w! }% v& X+ L1 u
$ _1 @3 h; {! U6 s* H
4 I5 k% Z9 m. u, C0 V! T! g. e

/ g0 L4 Q( {0 y2 Z* g0 W% j+ k
; ^4 T" I" D' K0 a

1 X" c0 h  X. G' o[mw_shl_code=cpp,true]double MyClass::MeasureFaceArea(TaggedObject* face_tag)2 O4 R1 B; p5 a9 ]0 E5 A! M6 k
{* I1 c5 l# n. J' K; \7 [3 S
    char str[256];
9 S/ M4 b3 ~. l6 V% K5 x        
: ~% B: |1 B( m2 M6 m    Unit *unit1(dynamic_cast<Unit *>(workPart->UniTCollection()->FindObject("SquareMilliMeter")));
$ Z, ?7 V) r: q$ ^    Unit *unit2(dynamic_cast<Unit *>(workPart->UnitCollection()->FindObject("MilliMeter")));" b! w" A) {$ N# @( l3 t

1 [, U$ ^6 h' Z" B    //FaceCollector issue is fixed in NX9
5 ?/ r9 ^7 ?- L) M" x! O5 I) O    NXObject *nullNXObject(NULL);8 b9 f( e1 [, t& Q) `5 N% _
    MeasureFaceBuilder *measureFaceBuilder1;1 I1 x8 I4 ?% J% g9 ^. x) B
    measureFaceBuilder1 = workPart->MeasureManager()->CreateMeasureFaceBuilder(nullNXObject);0 N% d, \. N$ ~( d
        
+ m! F- ~5 \) l    Face *face1 = dynamic_cast<Face *>(face_tag);
3 m1 Q: u; `" s/ h# d; \/ G( V% O    vector<Face *> faces1(1);% D$ ]/ d% N6 w! q$ E% s+ ?  [3 }
    faces1[0] = face1;5 H+ c# l% b) I; b. O4 A
    FaceDumbRule *faceDumbRule1;
+ h( B7 y3 g8 d& r  m, B    faceDumbRule1 = workPart->ScRuleFactory()->CreateRuleFaceDumb(faces1);
5 y( t! q5 A* }3 f   
# Q0 m2 x9 Z' ~% Z( X    std::vector<SelectionIntentRule *> rules1(1);
8 [8 L0 W; G" f) \5 ^    rules1[0] = faceDumbRule1;
) y0 X' m, h4 g5 t& [    measureFaceBuilder1->FaceCollector()->ReplaceRules(rules1, false);1 |4 B: X" Q: }% j2 F$ d
    NXOpen::NXObject *nxObjct1 = measureFaceBuilder1->Commit();: _# I9 r5 X- N. `! t' y
- g6 K8 j2 J) V- F6 g
    NXOpen::ScCollector *scCollector1 = measureFaceBuilder1->FaceCollector();5 @1 J6 f% ?' q; v2 u
0 O" [4 g7 E# `2 p( p6 x
    MeasureFaces *measureFaces1;( C7 P3 d5 _; q
    measureFaces1 = workPart->MeasureManager()->NewFaceProperties(unit1, unit2, 0.99, scCollector1);
9 s2 m0 `* Q+ G1 o3 j& z
: ^1 S) `# ^8 \# e/ P    double face_area = measureFaces1->Area();
1 }3 a! p3 U+ o1 }  H! l    sprintf_s(str, sizeof(str), "Selected Face Area: = %f",face_area);7 h+ j' m; p$ @! T; i6 }* e
    print(str);+ z0 J5 F* C/ k' o. K# ~! B  W
    ( g' Q+ Z# p" x1 j' E8 t
    double face_perimeter = measureFaces1->Perimeter();; r4 @' y/ f. ~; t. Y
    sprintf_s(str, sizeof(str), "Selected Face Perimeter: = %f",face_perimeter);6 a9 Q* S+ L6 C3 f6 |# _* X
    print(str);6 X6 \) p. p2 G/ R- w3 i! |/ y

+ C* g) I9 Y5 a( K    delete measureFaces1;   / z4 D6 }+ [7 G5 g9 E$ _& B' Y
    delete faceDumbRule1;
' N# c; j% t8 E    measureFaceBuilder1->Destroy();
6 z6 y6 a( Y/ {6 @0 [    return face_area;) @# H- U( C! T/ k+ V9 |: y
}
  v, z3 I* o' g[/mw_shl_code]( N  b4 H' F% {$ L, M; e
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

全部回复1

rkc_555 发表于 2018-9-11 21:23:07

rkc_555 沙发

2018-9-11 21:23:07

这个方法我试过了,我8.5的版本好像不行,计算的面积为0,可以直接创建measureFaces对象,用另一个重载函数,只要两行代码就能计算出面积
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了