Merge pull request #420 from CadQuery/tessellate-fix

Fix tessellate
This commit is contained in:
Jeremy Wright
2020-08-04 16:19:44 -04:00
committed by GitHub

View File

@ -799,13 +799,13 @@ class Shape(object):
def tessellate(
self, tolerance: float
) -> Tuple[List[Vector], List[Tuple[int, ...]]]:
) -> Tuple[List[Vector], List[Tuple[int, int, int]]]:
if not BRepTools.Triangulation_s(self.wrapped, tolerance):
BRepMesh_IncrementalMesh(self.wrapped, tolerance, True)
vertices = []
triangles = []
vertices: List[Vector] = []
triangles: List[Tuple[int, int, int]] = []
offset = 0
for f in self.Faces():
@ -813,6 +813,11 @@ class Shape(object):
loc = TopLoc_Location()
poly = BRep_Tool.Triangulation_s(f.wrapped, loc)
Trsf = loc.Transformation()
reverse = (
True
if f.wrapped.Orientation() == TopAbs_Orientation.TopAbs_REVERSED
else False
)
# add vertices
vertices += [
@ -822,7 +827,18 @@ class Shape(object):
# add triangles
triangles += [
tuple(el + offset for el in t.Get()) for t in poly.Triangles()
(
t.Value(1) + offset - 1,
t.Value(3) + offset - 1,
t.Value(2) + offset - 1,
)
if reverse
else (
t.Value(1) + offset - 1,
t.Value(2) + offset - 1,
t.Value(3) + offset - 1,
)
for t in poly.Triangles()
]
offset += poly.NbNodes()