Skip to content

Commit

Permalink
Merge pull request #420 from CadQuery/tessellate-fix
Browse files Browse the repository at this point in the history
Fix tessellate
  • Loading branch information
jmwright authored Aug 4, 2020
2 parents cc1f8f3 + 5120642 commit 5f67eb8
Showing 1 changed file with 20 additions and 4 deletions.
24 changes: 20 additions & 4 deletions cadquery/occ_impl/shapes.py
Original file line number Diff line number Diff line change
Expand Up @@ -799,20 +799,25 @@ def intersect(self, *toIntersect: "Shape") -> "Shape":

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():

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 += [
Expand All @@ -822,7 +827,18 @@ def tessellate(

# 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()
Expand Down

0 comments on commit 5f67eb8

Please sign in to comment.