예제 #1
0
 private static bool OnlyHasInfill(SliceVolumeStorage layerData, int layerToCheck)
 {
     return(layerData.layers[layerToCheck].parts.Count == 1 &&
            layerData.layers[layerToCheck].parts[0].SolidBottomOutlines.Count == 0 &&
            layerData.layers[layerToCheck].parts[0].SolidTopOutlines.Count == 0 &&
            layerData.layers[layerToCheck].parts[0].SolidInfillOutlines.Count == 0 &&
            layerData.layers[layerToCheck].parts[0].InfillOutlines.Count == 1);
 }
예제 #2
0
        private static void GenerateLayers(SliceVolumeStorage layerData, int extrusionWidth, int bottomLayers, int topLayers)
        {
            int numLayers = layerData.layers.Count;

            for (int i = 0; i < numLayers; i++)
            {
                TopsAndBottoms.GenerateTopAndBottom(i, layerData, extrusionWidth, bottomLayers, topLayers);
            }
        }
예제 #3
0
        private static void GenerateLayers(SliceVolumeStorage layerData, int extrusionWidth, int bottomLayers, int topLayers)
        {
            int            numLayers = layerData.layers.Count;
            ConfigSettings config    = new ConfigSettings {
                numberOfBottomLayers = bottomLayers, numberOfTopLayers = topLayers
            };

            for (int i = 0; i < numLayers; i++)
            {
                TopsAndBottoms.GenerateTopAndBottom(i, layerData, extrusionWidth, config);
            }
        }
예제 #4
0
        private static SliceVolumeStorage CreateLayerData(Polygons inset0Outline, int numLayers)
        {
            SliceVolumeStorage layerData = new SliceVolumeStorage();

            layerData.layers = new List <SliceLayer>();
            for (int i = 0; i < numLayers; i++)
            {
                SliceLayer layer = new SliceLayer();
                layer.parts = new List <SliceLayerPart>();
                SliceLayerPart part = new SliceLayerPart();
                part.Insets = new List <Polygons>();
                part.Insets.Add(inset0Outline);
                part.BoundingBox = new Aabb(inset0Outline);
                layer.parts.Add(part);
                layerData.layers.Add(layer);
            }
            return(layerData);
        }
예제 #5
0
        public void CorrectNumberOfTops()
        {
            // 3 top layers and no bottom layers
            {
                // A simple cube that should have enough bottom layers
                string             inset0OutlineString = "x:0, y:0,x:10000, y:0,x:10000, y:10000,x:0, y:10000,|";
                Polygons           inset0Outline       = PolygonsHelper.CreateFromString(inset0OutlineString);
                int                numLayers           = 10;
                SliceVolumeStorage layerData           = CreateLayerData(inset0Outline, numLayers);
                GenerateLayers(layerData, 400, 0, 3);
                Assert.IsTrue(OnlyHasTop(layerData, 9));
                Assert.IsTrue(OnlyHasSolidInfill(layerData, 8));
                Assert.IsTrue(OnlyHasSolidInfill(layerData, 7));
                Assert.IsTrue(OnlyHasInfill(layerData, 6));
            }

            // 3 top layers and 1 bottom layer
            {
                string             inset0OutlineString = "x:0, y:0,x:10000, y:0,x:10000, y:10000,x:0, y:10000,|";
                Polygons           inset0Outline       = PolygonsHelper.CreateFromString(inset0OutlineString);
                int                numLayers           = 10;
                SliceVolumeStorage layerData           = CreateLayerData(inset0Outline, numLayers);
                GenerateLayers(layerData, 400, 3, 1);
                Assert.IsTrue(OnlyHasBottom(layerData, 0));
                Assert.IsTrue(OnlyHasSolidInfill(layerData, 1));
                Assert.IsTrue(OnlyHasSolidInfill(layerData, 2));
                Assert.IsTrue(OnlyHasInfill(layerData, 3));
            }

            // 3 top layers and 3 bottom layers
            {
                string             inset0OutlineString = "x:0, y:0,x:10000, y:0,x:10000, y:10000,x:0, y:10000,|";
                Polygons           inset0Outline       = PolygonsHelper.CreateFromString(inset0OutlineString);
                int                numLayers           = 10;
                SliceVolumeStorage layerData           = CreateLayerData(inset0Outline, numLayers);
                GenerateLayers(layerData, 400, 3, 3);
                Assert.IsTrue(OnlyHasBottom(layerData, 0));
                Assert.IsTrue(OnlyHasSolidInfill(layerData, 1));
                Assert.IsTrue(OnlyHasSolidInfill(layerData, 2));
                Assert.IsTrue(OnlyHasInfill(layerData, 3));
            }
        }
 private static bool OnlyHasTop(SliceVolumeStorage layerData, int layerToCheck)
 {
     return layerData.layers[layerToCheck].parts.Count == 1
         && layerData.layers[layerToCheck].parts[0].SolidBottomOutlines.Count == 0
         && layerData.layers[layerToCheck].parts[0].SolidTopOutlines.Count == 1
         && layerData.layers[layerToCheck].parts[0].SolidInfillOutlines.Count == 0
         && layerData.layers[layerToCheck].parts[0].InfillOutlines.Count == 0;
 }
 private static void GenerateLayers(SliceVolumeStorage layerData, int extrusionWidth, int bottomLayers, int topLayers)
 {
     int numLayers = layerData.layers.Count;
     for (int i = 0; i < numLayers; i++)
     {
         TopsAndBottoms.GenerateTopAndBottom(i, layerData, extrusionWidth, bottomLayers, topLayers);
     }
 }
 private static SliceVolumeStorage CreateLayerData(Polygons inset0Outline, int numLayers)
 {
     SliceVolumeStorage layerData = new SliceVolumeStorage();
     layerData.layers = new List<SliceLayer>();
     for (int i = 0; i < numLayers; i++)
     {
         SliceLayer layer = new SliceLayer();
         layer.parts = new List<SliceLayerPart>();
         SliceLayerPart part = new SliceLayerPart();
         part.Insets = new List<Polygons>();
         part.Insets.Add(inset0Outline);
         part.BoundingBox = new Aabb(inset0Outline);
         layer.parts.Add(part);
         layerData.layers.Add(layer);
     }
     return layerData;
 }
 private static void GenerateLayers(SliceVolumeStorage layerData, int extrusionWidth, int bottomLayers, int topLayers)
 {
     int numLayers = layerData.layers.Count;
     ConfigSettings config = new ConfigSettings {numberOfBottomLayers = bottomLayers, numberOfTopLayers = topLayers};
     for (int i = 0; i < numLayers; i++)
     {
         TopsAndBottoms.GenerateTopAndBottom(i, layerData, extrusionWidth, config);
     }
 }