예제 #1
0
        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);
        }