FreeCAD

Форк
0
/
MeshPart.cpp 
103 строки · 2.9 Кб
1
#include <gtest/gtest.h>
2
#include <BRepPrimAPI_MakeBox.hxx>
3
#include <TopoDS_Solid.hxx>
4
#include <TopExp_Explorer.hxx>
5
#include <TopAbs_ShapeEnum.hxx>
6
#include <QObject>
7

8
QT_WARNING_PUSH
9
QT_WARNING_DISABLE_CLANG("-Wextra-semi")
10
QT_WARNING_DISABLE_CLANG("-Woverloaded-virtual")
11
#include <SMESH_Version.h>
12
#include <SMESH_Gen.hxx>
13
#include <SMESH_Mesh.hxx>
14
#include <StdMeshers_LocalLength.hxx>
15
#include <StdMeshers_Regular_1D.hxx>
16
#include <StdMeshers_MEFISTO_2D.hxx>
17
#include <StdMeshers_QuadranglePreference.hxx>
18
QT_WARNING_POP
19

20
// NOLINTBEGIN
21
TEST(SMesh, testMefisto)
22
{
23
    TopoDS_Solid box = BRepPrimAPI_MakeBox(10.0, 10.0, 10.0).Solid();
24

25
    SMESH_Gen* gen = new SMESH_Gen();
26
#if SMESH_VERSION_MAJOR >= 9
27
    SMESH_Mesh* mesh = gen->CreateMesh(true);
28

29
    StdMeshers_LocalLength* hyp1d = new StdMeshers_LocalLength(0, gen);
30
    hyp1d->SetLength(1.0);
31
    StdMeshers_Regular_1D* algo1d = new StdMeshers_Regular_1D(1, gen);
32

33
    StdMeshers_QuadranglePreference* hyp2d = new StdMeshers_QuadranglePreference(2, gen);
34
    StdMeshers_MEFISTO_2D* algo2d = new StdMeshers_MEFISTO_2D(3, gen);
35
#else
36
    SMESH_Mesh* mesh = gen->CreateMesh(0, true);
37

38
    StdMeshers_LocalLength* hyp1d = new StdMeshers_LocalLength(0, 0, gen);
39
    hyp1d->SetLength(1.0);
40
    StdMeshers_Regular_1D* algo1d = new StdMeshers_Regular_1D(1, 0, gen);
41

42
    StdMeshers_QuadranglePreference* hyp2d = new StdMeshers_QuadranglePreference(2, 0, gen);
43
    StdMeshers_MEFISTO_2D* algo2d = new StdMeshers_MEFISTO_2D(3, 0, gen);
44
#endif
45

46
    mesh->ShapeToMesh(box);
47
    mesh->AddHypothesis(box, 0);
48
    mesh->AddHypothesis(box, 1);
49
    mesh->AddHypothesis(box, 2);
50
    mesh->AddHypothesis(box, 3);
51

52
    bool success = gen->Compute(*mesh, box);
53
    EXPECT_EQ(success, true);
54

55
    EXPECT_EQ(mesh->NbNodes(), 1244);
56
    EXPECT_EQ(mesh->NbTriangles(), 2484);
57
    EXPECT_EQ(mesh->NbQuadrangles(), 0);
58

59
    delete hyp1d;
60
    delete algo1d;
61
    delete hyp2d;
62
    delete algo2d;
63
    delete mesh;
64
    delete gen;
65
}
66

67
TEST(SMesh, testStdMeshers)
68
{
69
    TopoDS_Solid box = BRepPrimAPI_MakeBox(10.0, 10.0, 10.0).Solid();
70

71
    TopExp_Explorer exp = TopExp_Explorer(box, TopAbs_EDGE);
72
    const TopoDS_Shape& edge = exp.Current();
73

74
    SMESH_Gen* gen = new SMESH_Gen();
75
#if SMESH_VERSION_MAJOR >= 9
76
    SMESH_Mesh* mesh = gen->CreateMesh(true);
77

78
    StdMeshers_LocalLength* hyp1d = new StdMeshers_LocalLength(0, gen);
79
    hyp1d->SetLength(0.1);
80
    StdMeshers_Regular_1D* algo1d = new StdMeshers_Regular_1D(1, gen);
81
#else
82
    SMESH_Mesh* mesh = gen->CreateMesh(0, true);
83

84
    StdMeshers_LocalLength* hyp1d = new StdMeshers_LocalLength(0, 0, gen);
85
    hyp1d->SetLength(0.1);
86
    StdMeshers_Regular_1D* algo1d = new StdMeshers_Regular_1D(1, 0, gen);
87
#endif
88

89
    mesh->ShapeToMesh(box);
90
    mesh->AddHypothesis(edge, 0);
91
    mesh->AddHypothesis(edge, 1);
92

93
    bool success = gen->Compute(*mesh, box);
94
    EXPECT_EQ(success, true);
95

96
    EXPECT_EQ(mesh->NbNodes(), 107);
97

98
    delete hyp1d;
99
    delete algo1d;
100
    delete mesh;
101
    delete gen;
102
}
103
// NOLINTEND
104

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.