TopoDS_Face 和 TopoDS_Edge 是 opencascade 中常用的几何体表示方式,为面和边提供了统一的表达,其面积和长度计算应该也很常用。
TopoDS_Face 面积计算(注意面积有可能为负):
#include <GProp_GProps.hxx>
#include <BRepGProp.hxx>
double FaceArea(TopoDS_Face aimFace)
{
// 定义变量来存储属性
GProp_GProps props;
// 计算面的属性
BRepGProp::SurfaceProperties(aimFace, props);
// 获取面的面积
return props.Mass();
}
TopoDS_Edge 长度计算:
#include <GProp_GProps.hxx>
#include <BRepGProp.hxx>
double EdgeLength(TopoDS_Edge aimEdge)
{
// 定义变量来存储属性
GProp_GProps props;
// 计算边的属性
BRepGProp::LinearProperties(aimEdge, props);
// 获取边的长度
return props.Mass();
}