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

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

admin 楼主

2018-8-23 08:19:35

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

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

x
% A: y, m, J3 }7 j, H8 A. F5 ^
# t8 Q  i8 `6 A
NX二次开发源码分享: NXOpen C++获取面的面积和周长( m* o/ e6 a# C. W
0 c0 ^0 H5 c- g$ [9 v: V. V
; r+ W+ X) p: A

, [. N% W' R" R

/ f( m  B" f, R- b7 J
8 d: u9 o* T. {; ^8 s' s[mw_shl_code=cpp,true]double MyClass::MeasureFaceArea(TaggedObject* face_tag)* _! l) p" z5 ]- @# T& X# o
{
5 F# J8 D) v( Z7 \  v6 k5 C+ u" M    char str[256];3 H- u+ M/ C: W+ K
        
7 J) n3 ?( G* a, ^6 A    Unit *unit1(dynamic_cast<Unit *>(workPart->UniTCollection()->FindObject("SquareMilliMeter")));/ l3 e) I* w7 C$ f. x1 h1 A3 ]) x9 z
    Unit *unit2(dynamic_cast<Unit *>(workPart->UnitCollection()->FindObject("MilliMeter")));/ `: w" B7 ~! m9 @$ ~2 m  l
; k0 s5 J; h8 C4 B
    //FaceCollector issue is fixed in NX9# G8 y; b3 Z% V# o' \
    NXObject *nullNXObject(NULL);
+ H" M* I, |; z0 p  [& P    MeasureFaceBuilder *measureFaceBuilder1;8 R; l$ g$ y& x9 _
    measureFaceBuilder1 = workPart->MeasureManager()->CreateMeasureFaceBuilder(nullNXObject);0 _: d5 s1 o6 e0 I1 I9 k
        # M0 j7 J: z3 t! S0 Q/ E8 z+ ]" A: G
    Face *face1 = dynamic_cast<Face *>(face_tag);
# s9 D8 ]3 l8 _1 [+ J4 X) Y  x    vector<Face *> faces1(1);
  C3 T5 z$ x7 q' k+ S/ u5 w    faces1[0] = face1;  R' e) ^% E% Z) @' E& ?) P- f8 v
    FaceDumbRule *faceDumbRule1;0 j' |0 S6 ?5 z0 Z. y
    faceDumbRule1 = workPart->ScRuleFactory()->CreateRuleFaceDumb(faces1);/ l5 \8 }& a1 x) |" j" H1 O+ J
   
, e! m8 j. }/ B$ s: l1 L    std::vector<SelectionIntentRule *> rules1(1);
4 a; c8 T; G7 B/ Y    rules1[0] = faceDumbRule1;/ ~2 f/ l4 j" q3 h
    measureFaceBuilder1->FaceCollector()->ReplaceRules(rules1, false);4 n: W4 B% H' P( l# D
    NXOpen::NXObject *nxObjct1 = measureFaceBuilder1->Commit();' W5 a) j4 y; ]

8 C$ B/ [: R! u4 X5 d    NXOpen::ScCollector *scCollector1 = measureFaceBuilder1->FaceCollector();
: A+ q7 @7 Z: e8 X6 T/ w, B0 s
* R/ m; P* v6 L3 R- L& N8 k    MeasureFaces *measureFaces1;
5 R# J1 T! [# d, \    measureFaces1 = workPart->MeasureManager()->NewFaceProperties(unit1, unit2, 0.99, scCollector1);
6 s. @! m6 W5 [1 h- y* m  E) u* T9 w+ `( N: i
    double face_area = measureFaces1->Area();
* e6 \, T9 i0 K0 `4 m; Q. a5 \    sprintf_s(str, sizeof(str), "Selected Face Area: = %f",face_area);
! I8 v8 z$ X# V% M1 j    print(str);
1 l; `9 F* A3 V, ?% ]( p1 \! y2 B    1 n. C4 O. @5 {4 p
    double face_perimeter = measureFaces1->Perimeter();
& q( A6 F1 ~! |( J3 v1 Q7 r  }% B    sprintf_s(str, sizeof(str), "Selected Face Perimeter: = %f",face_perimeter);
3 E$ W; _! z6 _$ @  P9 o" I0 S    print(str);
: M0 ?2 n7 @6 Q8 ~
# ~7 T( _: A, {/ r    delete measureFaces1;   - f; l1 _3 C4 r) T; U/ K
    delete faceDumbRule1;' _+ g4 g5 Z6 e. p- K/ E
    measureFaceBuilder1->Destroy();
! b- y+ \/ r) \- t    return face_area;+ f( Z, E+ O7 k, @- w
}
: M) B5 i$ k( V[/mw_shl_code]4 f. ]: S8 M# y6 l. R2 _6 ^
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了