Skip to content

Commit

Permalink
Improvements to stl_check() and stl_repair().
Browse files Browse the repository at this point in the history
  • Loading branch information
ingojahn committed Apr 29, 2024
1 parent 6f7fe74 commit f75cfa3
Showing 1 changed file with 13 additions and 3 deletions.
16 changes: 13 additions & 3 deletions hypervehicle/components/component.py
Original file line number Diff line number Diff line change
Expand Up @@ -369,6 +369,7 @@ def stl_check(self, projecteArea=True, matchingLines=True):
else:
print(f" FAIL")
pass_flag = False

if matchingLines:
print(f" Matching Lines Check")
reversed_triangles = (np.cross(mesh.v1 - mesh.v0,
Expand All @@ -389,19 +390,25 @@ def stl_check(self, projecteArea=True, matchingLines=True):
undirected_edges = {frozenset((edge[:3], edge[3:])) for edge in
directed_edges}
edge_check = len(directed_edges) == 3 * mesh.data.size
print(f" len(directed_edges) == 3 * mesh.data.size:{edge_check}")
print(f" len(directed_edges) == 3 * mesh.data.size")
if edge_check:
print(f" {len(directed_edges)} == {3*mesh.data.size}")
print(f" PASS")
else:
print(f" {len(directed_edges)} != {3*mesh.data.size}")
print(f" FAIL")
print(f" The number of edges should be N_cells*3")
print(f" len(directed_edges)={len(directed_edges)}")
print(f" mesh.data.size={mesh.data.size}")
pass_flag = False
pair_check = len(directed_edges) == 2 * len(undirected_edges)
print(f" len(directed_edges) == 2 * len(undirected_edges):{pair_check}")
print(f" len(directed_edges) == 2 * len(undirected_edges)")
if pair_check:
print(f" {len(directed_edges)} == {2 * len(undirected_edges)}")
print(f" PASS")
return pass_flag
else:
print(f" {len(directed_edges)} != {2 * len(undirected_edges)}")
print(f" FAIL")
print(f" All edges should be in pairs")
print(f" len_directed:{len(directed_edges)}")
Expand Down Expand Up @@ -469,8 +476,11 @@ def find_groups(vector, small_distance):
# find intersecting sets and take average
for ix in iix:
for iy in iiy:
common0 = set(ix) & set(iy)
if len(common0) == 0:
continue # jumpt to next loop iteration if only one entry
for iz in iiz:
common = list(set(ix) & set(iy) & set(iz))
common = list(common0 & set(iz))
if common:
vectors[common] = np.mean(vectors[common], axis=0)
mesh.v0 = vectors[0:N_faces,:]
Expand Down

0 comments on commit f75cfa3

Please sign in to comment.