1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
|
#include <BRepTools.hxx>
#include <BRep_Tool.hxx>
#include <TopoDS.hxx>
#include <TopoDS_Shape.hxx>
#include <TopoDS_Face.hxx>
#include <BRep_Builder.hxx>
#include <Geom_Surface.hxx>
#include <BRepPrimAPI_MakeTorus.hxx>
#include <BRepPrimAPI_MakeBox.hxx>
#include <BRepPrimAPI_MakeSphere.hxx>
#include <TopExp_Explorer.hxx>
#include <BRep_Tool.hxx>
#include <TopLoc_Location.hxx>
#include <Poly_Triangulation.hxx>
#include <BRepMesh_IncrementalMesh.hxx>
#include <BRepBuilderAPI_NurbsConvert.hxx>
#include <gtest/gtest.h>
TEST(BRepMeshTestSuite, testMeshBox)
{
BRepPrimAPI_MakeBox box(10.,10.,10.);
box.Build();
ASSERT_TRUE(box.IsDone());
// compute mesh
BRepMesh_IncrementalMesh m(box.Shape(), 7E-3, true);
m.Perform();
ASSERT_TRUE(m.IsDone());
}
TEST(BRepMeshTestSuite, testMeshSphere)
{
BRepPrimAPI_MakeSphere sphere(50.);
sphere.Build();
ASSERT_TRUE(sphere.IsDone());
// compute mesh
BRepMesh_IncrementalMesh m(sphere.Shape(), 7E-3, true);
m.Perform();
ASSERT_TRUE(m.IsDone());
}
int nbTriangle(const TopoDS_Face & s)
{
BRepMesh_IncrementalMesh m(s, 7E-3, true);
m.Perform();
TopLoc_Location l;
const Handle(Poly_Triangulation) & pt = BRep_Tool::Triangulation(s, l);
return pt.IsNull() ? 0 : pt->NbTriangles();
}
TEST(BRepMeshTestSuite, testMeshTorus)
{
for(int radius = 1; radius < 20; radius+=3) {
BRepPrimAPI_MakeTorus torus(radius,1.);
torus.Build();
ASSERT_TRUE(torus.IsDone());
TopExp_Explorer ex(torus.Shape(), TopAbs_FACE);
const TopoDS_Face & primTorus = (const TopoDS_Face &)ex.Current();
ASSERT_NE(nbTriangle(primTorus),0);
BRepBuilderAPI_NurbsConvert converter;
converter.Perform(primTorus);
ASSERT_TRUE(converter.IsDone());
TopoDS_Face nurbsTorus = TopoDS::Face(converter.ModifiedShape(primTorus));
ASSERT_NE(nbTriangle(nurbsTorus),0);
}
}
int main(int argc, char **argv){
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
|