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

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

admin 楼主

2018-8-23 08:19:35

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

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

x

! a3 H9 ~$ x% t; e4 C: D' P. L1 [; |7 O
NX二次开发源码分享: NXOpen C++获取面的面积和周长+ Y1 |3 T8 M: ^: l! E9 }9 }

- ]& O1 @) [4 L7 V4 R
, ?! r$ J6 {5 _, t' ^8 _8 D& C& w

! ]* F# {& p7 ~! R" Q
% d+ ~- t7 F, B, w
& r) V0 A7 Z  w& L# c
[mw_shl_code=cpp,true]double MyClass::MeasureFaceArea(TaggedObject* face_tag)) `# e- B7 p2 C# f
{2 s% d# }. J" y& x/ E- E/ d9 _+ W1 r& d2 F
    char str[256];
1 x" c7 v3 `, G  h        ( Y' C2 H6 R3 u% h) d
    Unit *unit1(dynamic_cast<Unit *>(workPart->UniTCollection()->FindObject("SquareMilliMeter")));
* N$ I6 }+ R% C$ j    Unit *unit2(dynamic_cast<Unit *>(workPart->UnitCollection()->FindObject("MilliMeter")));
5 W* O& s$ ~* _- U. x; B
2 [" }, W# j/ k8 V    //FaceCollector issue is fixed in NX9: b' q: \( b% s4 t* ~
    NXObject *nullNXObject(NULL);. \" D6 {( _0 l, ~3 O/ B
    MeasureFaceBuilder *measureFaceBuilder1;
, b1 L$ {7 |/ n# ]1 V    measureFaceBuilder1 = workPart->MeasureManager()->CreateMeasureFaceBuilder(nullNXObject);7 e, S: J2 Q) ?
        
6 `' H5 s% y  k9 a    Face *face1 = dynamic_cast<Face *>(face_tag);
8 Q: A. g9 E; Y: y1 _* p' c    vector<Face *> faces1(1);1 Q7 G9 ^) G/ V$ o1 o+ r; L+ P
    faces1[0] = face1;9 K- W9 K* V4 i, Q& Y- N6 @
    FaceDumbRule *faceDumbRule1;
2 c7 x( X6 ~3 e9 ^5 M; u, q6 G    faceDumbRule1 = workPart->ScRuleFactory()->CreateRuleFaceDumb(faces1);5 ?6 J" P3 q# H% |- J
   
' d1 ?% u$ A- b6 R    std::vector<SelectionIntentRule *> rules1(1);
( u: D9 ^6 k; r( ^* w    rules1[0] = faceDumbRule1;
+ H# i; x' b% P    measureFaceBuilder1->FaceCollector()->ReplaceRules(rules1, false);
8 y, b- c4 d* }2 S    NXOpen::NXObject *nxObjct1 = measureFaceBuilder1->Commit();  u+ |6 L( ^. U; |5 x2 S

6 f& q. L0 w/ f: ~" ~% E. i7 W: E    NXOpen::ScCollector *scCollector1 = measureFaceBuilder1->FaceCollector();( a. ^1 m- t8 {* H! O% o
! W  x/ M, s4 l" d. e: P2 k% X8 S  h4 l
    MeasureFaces *measureFaces1;* g8 w/ y$ A7 z& C2 G! I
    measureFaces1 = workPart->MeasureManager()->NewFaceProperties(unit1, unit2, 0.99, scCollector1);
$ a" s1 V6 E8 s: t/ N
9 ^7 u  G  J: ]/ R8 p' ]/ W/ k' w    double face_area = measureFaces1->Area();
0 k' ~* |' B0 b8 ?    sprintf_s(str, sizeof(str), "Selected Face Area: = %f",face_area);
& |5 A+ i( u/ d- X, G    print(str);
7 s: _0 T! A3 g' G# \1 a( I   
0 j$ k8 w; z. w    double face_perimeter = measureFaces1->Perimeter();
' s2 C* ~0 Z$ A, N; J& W) z% W    sprintf_s(str, sizeof(str), "Selected Face Perimeter: = %f",face_perimeter);
& \! d6 Q! Z: c* C1 r7 k7 b- c    print(str);! O' `6 P5 T1 [( o7 {2 o$ p
* k1 H. C5 C8 A, i, O
    delete measureFaces1;   
$ G9 Q. a& |1 W1 P. J4 o. a    delete faceDumbRule1;
6 j% ], _- b* P2 v% r    measureFaceBuilder1->Destroy();
" F* r4 L$ {+ Q* L$ Y4 a    return face_area;
! ?0 l7 i4 {6 r2 D! t* C% u1 q}
3 i8 _- o- |+ h2 l; B% c[/mw_shl_code]
+ l& k& e" s; f& U* }, f* |
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了