Skip to content

Commit e65175b

Browse files
committed
only send contours with an area
1 parent 0b8d453 commit e65175b

File tree

1 file changed

+12
-8
lines changed

1 file changed

+12
-8
lines changed

Lib/booleanOperations/booleanOperationManager.py

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -35,15 +35,19 @@ def clipExecute(subjectContours, clipContours, operation, subjectFillType="nonZe
3535
pc = pyclipper.Pyclipper()
3636

3737
for i, subjectContour in enumerate(subjectContours):
38-
try:
39-
pc.AddPath(subjectContour, pyclipper.PT_SUBJECT)
40-
except pyclipper.ClipperException:
41-
raise InvalidSubjectContourError("contour %d is invalid for clipping" % i)
38+
# ignore paths with no area
39+
if pyclipper.Area(subjectContour):
40+
try:
41+
pc.AddPath(subjectContour, pyclipper.PT_SUBJECT)
42+
except pyclipper.ClipperException:
43+
raise InvalidSubjectContourError("contour %d is invalid for clipping" % i)
4244
for j, clipContour in enumerate(clipContours):
43-
try:
44-
pc.AddPath(clipContour, pyclipper.PT_CLIP)
45-
except pyclipper.ClipperException:
46-
raise InvalidClippingContourError("contour %d is invalid for clipping" % j)
45+
# ignore paths with no area
46+
if pyclipper.Area(clipContour):
47+
try:
48+
pc.AddPath(clipContour, pyclipper.PT_CLIP)
49+
except pyclipper.ClipperException:
50+
raise InvalidClippingContourError("contour %d is invalid for clipping" % j)
4751

4852
try:
4953
solution = pc.Execute(_operationMap[operation],

0 commit comments

Comments
 (0)