Skip to content

Commit 8823375

Browse files
Merge pull request #130 from Geode-solutions/feat/add-inspection-before-remesh-to-ensure-model-validity
feat(ModelInspection): add function to compute only auto intersection…
2 parents babec87 + 785b65a commit 8823375

File tree

19 files changed

+1319
-543
lines changed

19 files changed

+1319
-543
lines changed

bindings/python/src/inspector/topology/brep_topology.hpp

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,6 @@ namespace geode
4141
.def_readwrite( "unique_vertices_linked_to_multiple_corners",
4242
&BRepCornersTopologyInspectionResult::
4343
unique_vertices_linked_to_multiple_corners )
44-
.def_readwrite(
45-
"unique_vertices_linked_to_multiple_internals_corner",
46-
&BRepCornersTopologyInspectionResult::
47-
unique_vertices_linked_to_multiple_internals_corner )
4844
.def_readwrite(
4945
"unique_vertices_linked_to_not_internal_nor_boundary_corner",
5046
&BRepCornersTopologyInspectionResult::
@@ -64,10 +60,10 @@ namespace geode
6460
.def_readwrite( "lines_not_linked_to_a_unique_vertex",
6561
&BRepLinesTopologyInspectionResult::
6662
lines_not_linked_to_a_unique_vertex )
67-
.def_readwrite(
68-
"unique_vertices_linked_to_not_internal_nor_boundary_line",
63+
.def_readwrite( "unique_vertices_linked_to_line_with_wrong_"
64+
"relationship_to_surface",
6965
&BRepLinesTopologyInspectionResult::
70-
unique_vertices_linked_to_not_internal_nor_boundary_line )
66+
unique_vertices_linked_to_line_with_wrong_relationship_to_surface )
7167
.def_readwrite(
7268
"unique_vertices_linked_to_a_line_with_invalid_embeddings",
7369
&BRepLinesTopologyInspectionResult::
@@ -92,18 +88,10 @@ namespace geode
9288
.def_readwrite( "surfaces_not_linked_to_a_unique_vertex",
9389
&BRepSurfacesTopologyInspectionResult::
9490
surfaces_not_linked_to_a_unique_vertex )
95-
.def_readwrite(
96-
"unique_vertices_linked_to_not_internal_nor_boundary_surface",
97-
&BRepSurfacesTopologyInspectionResult::
98-
unique_vertices_linked_to_not_internal_nor_boundary_surface )
9991
.def_readwrite(
10092
"unique_vertices_linked_to_a_surface_with_invalid_embbedings",
10193
&BRepSurfacesTopologyInspectionResult::
10294
unique_vertices_linked_to_a_surface_with_invalid_embbedings )
103-
.def_readwrite(
104-
"unique_vertices_linked_to_a_single_and_invalid_surface",
105-
&BRepSurfacesTopologyInspectionResult::
106-
unique_vertices_linked_to_a_single_and_invalid_surface )
10795
.def_readwrite(
10896
"unique_vertices_linked_to_several_and_invalid_surfaces",
10997
&BRepSurfacesTopologyInspectionResult::
@@ -119,8 +107,8 @@ namespace geode
119107
pybind11::class_< BRepBlocksTopologyInspectionResult >(
120108
module, "BRepBlocksTopologyInspectionResult" )
121109
.def( pybind11::init<>() )
122-
.def_readwrite( "blocks_not_meshed",
123-
&BRepBlocksTopologyInspectionResult::blocks_not_meshed )
110+
.def_readwrite( "some_blocks_not_meshed",
111+
&BRepBlocksTopologyInspectionResult::some_blocks_not_meshed )
124112
.def_readwrite( "blocks_not_linked_to_a_unique_vertex",
125113
&BRepBlocksTopologyInspectionResult::
126114
blocks_not_linked_to_a_unique_vertex )
@@ -131,6 +119,23 @@ namespace geode
131119
.def_readwrite( "unique_vertices_with_incorrect_block_cmvs_count",
132120
&BRepBlocksTopologyInspectionResult::
133121
unique_vertices_with_incorrect_block_cmvs_count )
122+
.def_readwrite( "unique_vertices_linked_to_surface_with_wrong_"
123+
"relationship_to_blocks",
124+
&BRepBlocksTopologyInspectionResult::
125+
unique_vertices_linked_to_surface_with_wrong_relationship_to_blocks )
126+
.def_readwrite(
127+
"unique_vertices_linked_to_a_single_and_invalid_surface",
128+
&BRepBlocksTopologyInspectionResult::
129+
unique_vertices_linked_to_a_single_and_invalid_surface )
130+
.def_readwrite( "unique_vertex_linked_to_multiple_invalid_surfaces",
131+
&BRepBlocksTopologyInspectionResult::
132+
unique_vertex_linked_to_multiple_invalid_surfaces )
133+
.def_readwrite( "blocks_with_not_closed_boundary_surfaces",
134+
&BRepBlocksTopologyInspectionResult::
135+
blocks_with_not_closed_boundary_surfaces )
136+
.def_readwrite( "model_boundaries_dont_form_a_closed_surface",
137+
&BRepBlocksTopologyInspectionResult::
138+
model_boundaries_dont_form_a_closed_surface )
134139
.def( "string", &BRepBlocksTopologyInspectionResult::string )
135140
.def( "inspection_type",
136141
&BRepBlocksTopologyInspectionResult::inspection_type );

bindings/python/src/inspector/topology/section_topology.hpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,10 @@ namespace geode
6464
.def_readwrite( "lines_not_linked_to_a_unique_vertex",
6565
&SectionLinesTopologyInspectionResult::
6666
lines_not_linked_to_a_unique_vertex )
67-
.def_readwrite(
68-
"unique_vertices_linked_to_not_internal_nor_boundary_line",
67+
.def_readwrite( "unique_vertices_linked_to_line_with_wrong_"
68+
"relationship_to_surface",
6969
&SectionLinesTopologyInspectionResult::
70-
unique_vertices_linked_to_not_internal_nor_boundary_line )
70+
unique_vertices_linked_to_line_with_wrong_relationship_to_surface )
7171
.def_readwrite(
7272
"unique_vertices_linked_to_a_line_with_invalid_embeddings",
7373
&SectionLinesTopologyInspectionResult::

bindings/python/tests/test-py-brep.py

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ def corners_topological_validity(result, verbose):
3838
nb_issues += result.corners_not_meshed.nb_issues()
3939
nb_issues += result.unique_vertices_liked_to_not_boundary_line_corner.nb_issues()
4040
nb_issues += result.unique_vertices_linked_to_multiple_corners.nb_issues()
41-
nb_issues += result.unique_vertices_linked_to_multiple_internals_corner.nb_issues()
4241
nb_issues += (
4342
result.unique_vertices_linked_to_not_internal_nor_boundary_corner.nb_issues()
4443
)
@@ -58,7 +57,7 @@ def lines_topological_validity(result, verbose):
5857
)
5958
nb_issues += result.unique_vertices_linked_to_a_single_and_invalid_line.nb_issues()
6059
nb_issues += (
61-
result.unique_vertices_linked_to_not_internal_nor_boundary_line.nb_issues()
60+
result.unique_vertices_linked_to_line_with_wrong_relationship_to_surface.nb_issues()
6261
)
6362
nb_issues += (
6463
result.unique_vertices_linked_to_several_lines_but_not_linked_to_a_corner.nb_issues()
@@ -77,16 +76,9 @@ def surfaces_topological_validity(result, verbose):
7776
nb_issues += (
7877
result.unique_vertices_linked_to_a_line_but_is_not_on_a_surface_border.nb_issues()
7978
)
80-
nb_issues += (
81-
result.unique_vertices_linked_to_a_single_and_invalid_surface.nb_issues()
82-
)
83-
nb_issues += (
84-
result.unique_vertices_linked_to_not_internal_nor_boundary_surface.nb_issues()
85-
)
8679
nb_issues += (
8780
result.unique_vertices_linked_to_several_and_invalid_surfaces.nb_issues()
8881
)
89-
9082
print("BRep Surfaces Topology check: ", nb_issues, " issues.")
9183
if verbose:
9284
print(result.string(), "\n")
@@ -97,11 +89,20 @@ def blocks_topological_validity(result, verbose):
9789
nb_issues = 0
9890
for issue in result.blocks_not_linked_to_a_unique_vertex.issues_map():
9991
nb_issues += issue[1].nb_issues()
100-
nb_issues += result.blocks_not_meshed.nb_issues()
92+
nb_issues += result.some_blocks_not_meshed.nb_issues()
10193
nb_issues += (
10294
result.unique_vertices_part_of_two_blocks_and_no_boundary_surface.nb_issues()
10395
)
10496
nb_issues += result.unique_vertices_with_incorrect_block_cmvs_count.nb_issues()
97+
nb_issues += (
98+
result.unique_vertices_linked_to_a_single_and_invalid_surface.nb_issues()
99+
)
100+
nb_issues += (
101+
result.unique_vertices_linked_to_surface_with_wrong_relationship_to_blocks.nb_issues()
102+
)
103+
nb_issues += result.unique_vertex_linked_to_multiple_invalid_surfaces.nb_issues()
104+
nb_issues += result.model_boundaries_dont_form_a_closed_surface.nb_issues()
105+
nb_issues += result.blocks_with_not_closed_boundary_surfaces.nb_issues()
105106
print("BRep Blocks Topology check: ", nb_issues, " issues.")
106107
if verbose:
107108
print(result.string(), "\n")
@@ -211,9 +212,9 @@ def check_a1(verbose):
211212
else:
212213
print("model_A1 topology is invalid.")
213214
nb_model_issues = launch_topological_validity_checks(result.topology, verbose)
214-
if nb_model_issues != 267:
215+
if nb_model_issues != 5165:
215216
raise ValueError(
216-
"[Test] model model_A1 should have 267 unique vertices with topological problems."
217+
"[Test] model model_A1 should have 5615 unique vertices with topological problems."
217218
)
218219
nb_component_meshes_issues = launch_component_meshes_validity_checks(
219220
result.meshes, verbose
@@ -235,9 +236,9 @@ def check_a1_valid(verbose):
235236
else:
236237
print("model_A1_valid topology is invalid.")
237238
nb_model_issues = launch_topological_validity_checks(result.topology, verbose)
238-
if nb_model_issues != 267:
239+
if nb_model_issues != 5165:
239240
raise ValueError(
240-
"[Test] model model_A1_valid should have 267 topological problems."
241+
"[Test] model model_A1_valid should have 5165 topological problems."
241242
)
242243
nb_component_meshes_issues = launch_component_meshes_validity_checks(
243244
result.meshes, verbose
@@ -259,9 +260,9 @@ def check_model_mss(verbose):
259260
else:
260261
print("model mss topology is invalid.")
261262
nb_model_issues = launch_topological_validity_checks(result.topology, verbose)
262-
if nb_model_issues != 17:
263+
if nb_model_issues != 36:
263264
raise ValueError(
264-
"[Test] model mss.og_strm should have 34 topological problems."
265+
"[Test] model mss.og_strm should have 36 topological problems."
265266
)
266267
nb_component_meshes_issues = launch_component_meshes_validity_checks(
267268
result.meshes, verbose
@@ -282,9 +283,9 @@ def check_model_D(verbose):
282283
else:
283284
print("model_D topology is invalid.")
284285
nb_model_issues = launch_topological_validity_checks(result.topology, verbose)
285-
if nb_model_issues != 5:
286+
if nb_model_issues != 0:
286287
raise ValueError(
287-
"[Test] model model_D.og_brep should have 5 topological problems (blocks not meshed)."
288+
"[Test] model model_D.og_brep should have 0 topological problems (blocks not meshed)."
288289
)
289290
nb_component_meshes_issues = launch_component_meshes_validity_checks(
290291
result.meshes, verbose

0 commit comments

Comments
 (0)