示例#1
0
 public static Dictionary<string, object> GetSurfaces(Slicer slicer)
 {
     List<Solid[]> SliceResults = new List<Solid[]>(); // Container for Solid Results
     return new Dictionary<string, object>
     {
         { "Primary", slicer.GenerateSurfaces(slicer.CutPlanesPrimary) },
         { "Secondary", slicer.GenerateSurfaces(slicer.CutPlanesSecondary)},
         { "Tertiary", slicer.GenerateSurfaces(slicer.CutPlanesTertiary)}
     };
 }
示例#2
0
        public static Dictionary<string, object> GetPrimaryResults(Slicer slicer)
        {
            List<Surface[]> Surfaces = new List<Surface[]>();
            List<PolyCurve[]> Profiles = new List<PolyCurve[]>();
            List<Solid[]> Slices = new List<Solid[]>();

            for (int i = 0; i < slicer.CutPlanesPrimary.Count; i++)
            {
                Geometry[] geometry = slicer.Solid.Intersect(slicer.CutPlanesPrimary[i]);
                List<PolyCurve> profiles = new List<PolyCurve>();
                List<Surface> surfaces = new List<Surface>();
                List<Solid> slices = new List<Solid>();
                for (int j = 0; j < geometry.Length; j++)
                {
                    if ((geometry[j] is Point) ^ (geometry[j] is Curve)) { continue; }
                    else
                    {
                        surfaces.Add((Surface)geometry[j]);
                        profiles.Add(PolyCurve.ByJoinedCurves(((Surface)geometry[j]).PerimeterCurves()));
                        slices.Add(((Surface)geometry[j]).Thicken(slicer.Thickness));
                    }
                }
                Profiles.Add(profiles.ToArray());
                Surfaces.Add(surfaces.ToArray());
                Slices.Add(slices.ToArray());
            }

            return new Dictionary<string, object>
            {
                { "Profiles", Profiles },
                { "Surfaces", Surfaces},
                { "Slices", Slices }
            };
        }
示例#3
0
 public static Dictionary<string, object> GetSlices(Slicer slicer)
 {
     return new Dictionary<string, object>
     {
         { "Primary", slicer.GenerateSlices(slicer.GenerateSurfaces(slicer.CutPlanesPrimary)) },
         { "Secondary", slicer.GenerateSlices(slicer.GenerateSurfaces(slicer.CutPlanesSecondary))},
         { "Tertiary", slicer.GenerateSlices(slicer.GenerateSurfaces(slicer.CutPlanesTertiary))}
     };
 }
示例#4
0
        public static Dictionary<string, object> GetPrimaryInscribedResults(Slicer slicer)
        {
            Plane[][] Shifted = slicer.ShiftCutPlanes(slicer.CutPlanesPrimary, slicer.Thickness);
            List<Surface[]> Surfaces = new List<Surface[]>();
            List<PolyCurve[]> Profiles = new List<PolyCurve[]>();
            List<Solid[]> Slices = new List<Solid[]>();

            for (int i = 0; i < slicer.CutPlanesPrimary.Count; i++)
            {
                Geometry[] Up = slicer.Solid.Intersect(Shifted[0][i]);
                Geometry[] Down = slicer.Solid.Intersect(Shifted[1][i]);
                List<Solid> solidsUp = new List<Solid>();
                List<Solid> solidsDown = new List<Solid>();

                for (int j = 0; j < Up.Length; j++)
                {
                    if ((Up[j] is Point) ^ (Up[j] is Curve)) { continue; }
                    else { solidsUp.Add(((Surface)Up[j].Translate(slicer.CutPlanesPrimary[i].Normal.Scale(-slicer.Thickness / 2.0))).Thicken(slicer.Thickness)); }
                }
                for (int j = 0; j < Down.Length; j++)
                {
                    if ((Down[j] is Point) ^ (Down[j] is Curve)) { continue; }
                    else { solidsDown.Add(((Surface)Down[j].Translate(slicer.CutPlanesPrimary[i].Normal.Scale(slicer.Thickness / 2.0))).Thicken(slicer.Thickness)); }
                }

                Solid solidUp = Solid.ByUnion(solidsUp);
                Solid solidDown = Solid.ByUnion(solidsDown);
                Geometry[] results = slicer.CutPlanesPrimary[i].IntersectAll(solidUp.Intersect(solidDown));

                List<Surface> surfaces = new List<Surface>();
                List<Solid> slices = new List<Solid>();
                List<PolyCurve> profiles = new List<PolyCurve>();
                for (int j = 0; j < results.Length; j++)
                {
                    if ((results[j] is Point) ^ (results[j] is Curve)) { continue; }
                    else
                    {
                        surfaces.Add((Surface) results[j]);
                        profiles.Add(PolyCurve.ByJoinedCurves(((Surface) results[j]).PerimeterCurves()));
                        slices.Add(((Surface) results[j]).Thicken(slicer.Thickness));
                    }
                }
                Surfaces.Add(surfaces.ToArray());
                Slices.Add(slices.ToArray());
                Profiles.Add(profiles.ToArray());
            }

            return new Dictionary<string, object>
            {
                { "Profiles", Profiles },
                { "Surfaces", Surfaces},
                { "Slices", Slices }
            };
        }