private bool GetIntersectionCurves(Brep shell, Brep neck, out List <ICurve> intersectionCurves) { var neckSurfs = neck.ConvertToSurfaces(); var shellSurfs = shell.ConvertToSurfaces(0.0001); intersectionCurves = new List <ICurve>(); foreach (var surf in shellSurfs) { var notAdded = true; foreach (var nSurf in neckSurfs) { surf.IntersectWith(nSurf, 0.0001, out var foundCurves); if (foundCurves != null && foundCurves.Length > 0) { intersectionCurves.AddRange(foundCurves); if (notAdded) { _intersectedSurfaces.Add(surf); } notAdded = false; } } } return(intersectionCurves.Count > 0); }