Fix handling of circles on outline layer
This commit is contained in:
parent
2eb88e8127
commit
34fae0a7c2
2 changed files with 10 additions and 0 deletions
|
|
@ -212,6 +212,10 @@ class Arc(GraphicPrimitive):
|
|||
#: Line width of this arc.
|
||||
width : float
|
||||
|
||||
@property
|
||||
def is_circle(self):
|
||||
return math.isclose(self.x1, self.x2) and math.isclose(self.y1, self.y2)
|
||||
|
||||
def flip(self):
|
||||
return replace(self, x1=self.x2, y1=self.y2, x2=self.x1, y2=self.y1,
|
||||
cx=(self.x1 + self.cx) - self.x2, cy=(self.y1 + self.cy) - self.y2, clockwise=not self.clockwise)
|
||||
|
|
|
|||
|
|
@ -1140,6 +1140,12 @@ class LayerStack:
|
|||
|
||||
joins = {}
|
||||
for cur in lines:
|
||||
# Special case: An arc may describe a complete circle, in which case we have to return it as-is since it
|
||||
# is the only primitive that can join itself.
|
||||
if isinstance(cur, gp.Arc) and cur.is_circle:
|
||||
yield [cur]
|
||||
continue
|
||||
|
||||
for (i, x, y) in [(0, cur.x1, cur.y1), (1, cur.x2, cur.y2)]:
|
||||
x_left = bisect.bisect_left (by_x, x, key=lambda elem: elem[0] + tol)
|
||||
x_right = bisect.bisect_right(by_x, x, key=lambda elem: elem[0] - tol)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue