Skip to content

Commit 85617f9

Browse files
authored
Geometry_Engine: BooleanDifference secured against single-dimensional regions (#3369)
2 parents 73e24bc + b5763bb commit 85617f9

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

Geometry_Engine/Compute/BooleanDifference.cs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,9 +102,13 @@ public static List<Polyline> BooleanDifference(this Polyline region, List<Polyli
102102

103103
List<Polyline> allRegions = new List<Polyline> { region };
104104
Plane p = region.FitPlane();
105+
if (p == null)
106+
return new List<Polyline>();
107+
105108
foreach (Polyline refRegion in refRegions)
106109
{
107-
if (p.IsCoplanar(refRegion.FitPlane()))
110+
Plane refPlane = refRegion.FitPlane();
111+
if (refPlane != null && p.IsCoplanar(refPlane))
108112
allRegions.Add(refRegion);
109113
}
110114

@@ -268,9 +272,13 @@ public static List<PolyCurve> BooleanDifference(this ICurve region, IEnumerable<
268272

269273
List<ICurve> allRegions = new List<ICurve> { region };
270274
Plane p = region.IFitPlane();
275+
if (p == null)
276+
return new List<PolyCurve>();
277+
271278
foreach (ICurve refRegion in refRegionsList)
272279
{
273-
if (p.IsCoplanar(refRegion.IFitPlane()))
280+
Plane refPlane = refRegion.IFitPlane();
281+
if (refPlane != null && p.IsCoplanar(refPlane))
274282
allRegions.Add(refRegion);
275283
}
276284

0 commit comments

Comments
 (0)