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 3740 1

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

admin 楼主

2018-8-23 08:19:35

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

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

x
2 f5 s# H: S- S* F. \9 \

- _9 d3 d8 d* [: HNX二次开发源码分享: NXOpen C++获取面的面积和周长
# \7 F& q7 \+ t
" g; S1 u. P/ A/ a. q- L

3 l* q1 ^, F: ]' {+ v) O0 v1 O/ n) w+ A2 X. c4 h
/ Z0 E. ]2 `4 s3 e2 Q# ?

6 I$ a8 [& }: Q[mw_shl_code=cpp,true]double MyClass::MeasureFaceArea(TaggedObject* face_tag)
' G6 o  u" F1 t( R% E{. E) u9 w5 {! X, V! w( s' Q- b
    char str[256];
3 E' T3 @' N7 x& l& }* B' g        $ r% }2 K; Z, v
    Unit *unit1(dynamic_cast<Unit *>(workPart->UniTCollection()->FindObject("SquareMilliMeter")));6 w/ Z2 N. q& O8 R" F
    Unit *unit2(dynamic_cast<Unit *>(workPart->UnitCollection()->FindObject("MilliMeter")));3 h0 r; T: V* C% v8 a

5 i4 }1 I2 m, Y6 M; o' T    //FaceCollector issue is fixed in NX9- b# t1 U" B+ k  a. l4 m( X% Q
    NXObject *nullNXObject(NULL);  _# \6 |! D# u4 m; u/ J
    MeasureFaceBuilder *measureFaceBuilder1;& J4 M2 s6 t6 Z2 \' ~2 k0 I/ }& B
    measureFaceBuilder1 = workPart->MeasureManager()->CreateMeasureFaceBuilder(nullNXObject);
3 G# A$ @; h" [! J        8 E& b. P) z6 V5 a4 _
    Face *face1 = dynamic_cast<Face *>(face_tag);$ W& [! w% _7 z: f4 g4 s, M
    vector<Face *> faces1(1);
% P" w9 @, d& c/ }: O& Z    faces1[0] = face1;/ w( i6 P( S! J4 p  E0 u
    FaceDumbRule *faceDumbRule1;
( W8 e% ~. s7 Q/ O    faceDumbRule1 = workPart->ScRuleFactory()->CreateRuleFaceDumb(faces1);# z3 i% u1 E  e5 d7 N
    , ]4 L% ~- {; u8 r2 q7 A
    std::vector<SelectionIntentRule *> rules1(1);' ~7 C! r( Q: ~
    rules1[0] = faceDumbRule1;/ y4 n9 {8 n+ a0 X: S/ r$ m* t$ ^
    measureFaceBuilder1->FaceCollector()->ReplaceRules(rules1, false);0 v, T4 u7 j' n
    NXOpen::NXObject *nxObjct1 = measureFaceBuilder1->Commit();
7 L3 x( M# @1 t5 R3 ^$ ?
1 X! u, K, e; t  e, m    NXOpen::ScCollector *scCollector1 = measureFaceBuilder1->FaceCollector();/ b# k9 q: P/ R$ }
- i3 x9 R& G  U# n
    MeasureFaces *measureFaces1;
, j: b, d2 F4 c& O- X9 `    measureFaces1 = workPart->MeasureManager()->NewFaceProperties(unit1, unit2, 0.99, scCollector1);
. u. T1 B& K" j4 D! F/ c! f9 ?$ H- U
    double face_area = measureFaces1->Area();, g; E0 F+ R/ _$ R4 B7 n
    sprintf_s(str, sizeof(str), "Selected Face Area: = %f",face_area);$ a; {# @- b( Z) I& z( a
    print(str);
& a& S4 n  V" y   
1 g# c9 Z, j, s' x' I    double face_perimeter = measureFaces1->Perimeter();
) X8 N: I# ^3 ?    sprintf_s(str, sizeof(str), "Selected Face Perimeter: = %f",face_perimeter);
7 K0 N0 G6 W: q1 `    print(str);
  e, F1 g: }8 v. W8 _/ W. |% t$ e/ }
    delete measureFaces1;   
% d, U8 ]8 E- V  k, c2 k+ K    delete faceDumbRule1;6 w0 e' }- q+ ~$ [7 W/ A2 h9 H# O
    measureFaceBuilder1->Destroy();
/ t# G2 e3 q4 `1 W) E5 Q' w    return face_area;
% k9 K# H7 `, R5 x7 r}
6 r4 S. h4 E9 D3 l$ D- z9 s[/mw_shl_code]
: }" F; A$ k# `5 k$ d6 V8 j
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了