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

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

admin 楼主

2018-8-23 08:19:35

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

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

x

6 a0 m$ X8 R3 D" ^! w5 l% s! M. V/ m3 p  P, Z$ d
NX二次开发源码分享: NXOpen C++获取面的面积和周长
. p, g) F; h3 b& b" e5 w- r$ j
3 |2 U) v: x. S
' `4 }/ z9 T, G. X

/ d4 o2 b8 G: S2 `4 ]

4 Z: a6 q! w7 R. {3 s7 L+ o8 ?8 ^7 V1 `$ n& q' _- T; z
[mw_shl_code=cpp,true]double MyClass::MeasureFaceArea(TaggedObject* face_tag)- y( M1 M2 g1 F
{4 i' {- t6 K3 i0 b/ y
    char str[256];
; {3 ]0 p$ r# t+ n! e        5 {1 u4 [( I+ I( x2 C
    Unit *unit1(dynamic_cast<Unit *>(workPart->UniTCollection()->FindObject("SquareMilliMeter")));/ K0 h& J; \' K
    Unit *unit2(dynamic_cast<Unit *>(workPart->UnitCollection()->FindObject("MilliMeter")));
* t* z; @3 `7 v4 ^! p" ^8 Z. A4 r1 N4 H9 W0 U. m
    //FaceCollector issue is fixed in NX9
3 Q% p8 x0 s+ Z    NXObject *nullNXObject(NULL);
$ x# i; [/ S, C# G    MeasureFaceBuilder *measureFaceBuilder1;
  s, D. {3 X: m. N0 v' [/ C    measureFaceBuilder1 = workPart->MeasureManager()->CreateMeasureFaceBuilder(nullNXObject);
6 P" X6 I. J3 O0 ?1 w$ X        8 P- i4 k& X) p  h" B
    Face *face1 = dynamic_cast<Face *>(face_tag);$ E0 i( K( J' B! A: |
    vector<Face *> faces1(1);* _0 y0 j  F1 k" P* e- ^* Z2 H: @& p* N
    faces1[0] = face1;
  @! v0 C8 m7 V4 k7 `5 }  _. G    FaceDumbRule *faceDumbRule1;
( |( a2 T6 K. n4 G+ G- D0 H    faceDumbRule1 = workPart->ScRuleFactory()->CreateRuleFaceDumb(faces1);
( b  Y; q* o# R( b1 M) p9 n7 `   
7 K; v* P! w7 z/ Y8 U    std::vector<SelectionIntentRule *> rules1(1);( n8 N8 c8 b+ N  \- ]
    rules1[0] = faceDumbRule1;
* o1 h) K( o' x    measureFaceBuilder1->FaceCollector()->ReplaceRules(rules1, false);5 m. {- g& R' V5 R- C
    NXOpen::NXObject *nxObjct1 = measureFaceBuilder1->Commit();
) t4 c- F; ~9 O7 m9 @; I7 _  K" L5 d+ \" y4 R
    NXOpen::ScCollector *scCollector1 = measureFaceBuilder1->FaceCollector();
/ O* l$ k- _$ h4 K
4 h+ ^. U/ G8 K: c5 X    MeasureFaces *measureFaces1;- I# n5 F6 [7 {: }: y) f
    measureFaces1 = workPart->MeasureManager()->NewFaceProperties(unit1, unit2, 0.99, scCollector1);8 L4 o" ~. q) v9 J$ X3 [; d9 q
& q/ U9 b% I$ H( s) E6 c2 I
    double face_area = measureFaces1->Area();0 Z  ^4 D) U1 d" r: h9 J
    sprintf_s(str, sizeof(str), "Selected Face Area: = %f",face_area);
- Q1 d3 G) |1 ?' B! W: e  }6 n    print(str);, ~, ~" p! ?5 j2 b1 c
    8 T! G  M/ C: _0 i& ~% l
    double face_perimeter = measureFaces1->Perimeter();" e" U0 T! S5 I* _: v! S6 W
    sprintf_s(str, sizeof(str), "Selected Face Perimeter: = %f",face_perimeter);+ _; E1 @1 D5 |- x
    print(str);
: G8 {) f* X9 f- U7 f8 W2 W; B. Z' X, Y, G
    delete measureFaces1;   
8 h+ U6 T' Z0 y4 X6 ]; y" B% u& r    delete faceDumbRule1;
9 b- M# ~  k9 B& ]  L    measureFaceBuilder1->Destroy();
! y! s  d  f- L* z# w2 \    return face_area;
4 G7 I/ O8 z, F}3 G6 F+ F6 A6 e
[/mw_shl_code]
. X4 D; p( v. 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二次开发专题模块培训报名开始啦

    我知道了