Example #1
0
        static void Main(string[] args)
        {
            /*
             * Konstanten
             */
            Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
            string inputFile                 = @"Galgen.txt";
            int    randBreite                = 3;
            string currentPath               = Directory.GetParent(Directory.GetCurrentDirectory()).Parent.FullName;
            string path                      = currentPath + "\\";
            string fileName                  = @"Bahnplanung.txt";
            int    infillDensity             = 10;         //actual Infill Percentage might differ up to 5%
            string infillType                = "3DInfill"; //3DInfill oder HexInfill oder LineInfill oder Line3DInfill
            int    offset                    = 0;          //shifts axis aligned infill along the z axis
            double robotGeschwindigkeit      = 30.0;
            double extrusionsGeschwindigkeit = 36.0;

            /*
             * Konstanten
             */

            Console.WriteLine("Lese Modell ein...");
            Voxelmodell v = Input(path + inputFile);

            Console.WriteLine("Modell eingelesen!");

            Console.WriteLine("Verbreitere Rand...");
            v.randVerbreiterung(randBreite);
            Console.WriteLine("Rand verbreitert!");

            Console.WriteLine("Füge das Infill ein...");
            v.InsertInfill(infillDensity, infillType, offset);
            Console.WriteLine("Infill eingefügt!");

            Console.WriteLine("Plane die Bahn...");
            List <Bahn> bahn = new List <Bahn>();

            if (File.Exists(path + fileName))
            {
                File.Delete(path + fileName);
            }

            for (int i = 0; i < v.getSchichtenAnzahl(); i++)
            {
                bahn.Add(new Bahn());
            }

            Parallel.For(0, v.getSchichtenAnzahl(), j =>
            {
                Console.WriteLine("Processing Tool path for layer:" + j);
                bahn[j].SetBahn(bahn[j].Bahnplanung((v.getListeAtIndex(j)), j + 1));
            });
            bahn.Sort((x, y) => x.GetLayerIndex().CompareTo(y.GetLayerIndex()));
            for (int i = 1; i < bahn.Count + 1; i++)
            {
                bahn[i - 1].Textoutput(robotGeschwindigkeit, extrusionsGeschwindigkeit, path, fileName);
            }
            Console.WriteLine("Bahn geplant!");
        }
        /// <summary>
        /// Testet Randverbreiterung; Funktioniert nicht mit null Werten...
        /// </summary>
        /// <param name="voxelmodell"></param>
        public static void randverbreiterungtesten(Voxelmodell voxelmodell)
        {
            Voxelmodell voxelmodell1 = voxelmodell;

            voxelmodell1.randVerbreiterung(1);
            using (StreamWriter file = new StreamWriter(Path.Combine(Directory.GetCurrentDirectory(), "randverbreiterung1.txt")))
            {
                file.WriteLine("#Randverbreiterung mit 1");
                foreach (Voxel v in voxelmodell1.getVoxelmatrix())
                {
                    if (v != null)
                    {
                        file.WriteLine(v.getKoords()[0].ToString() + " " + v.getKoords()[1].ToString() + " " + v.getKoords()[2].ToString() + " " + Convert.ToInt16(v.getModellrand()).ToString());
                    }
                }
            }
            Voxelmodell voxelmodell2 = voxelmodell;

            voxelmodell1.randVerbreiterung(2);
            using (StreamWriter file = new StreamWriter(Path.Combine(Directory.GetCurrentDirectory(), "randverbreiterung2.txt")))
            {
                file.WriteLine("#Randverbreiterung mit 1");
                foreach (Voxel v in voxelmodell1.getVoxelmatrix())
                {
                    if (v != null)
                    {
                        file.WriteLine(v.getKoords()[0].ToString() + " " + v.getKoords()[1].ToString() + " " + v.getKoords()[2].ToString() + " " + Convert.ToInt16(v.getModellrand()).ToString());
                    }
                }
            }
            Voxelmodell voxelmodell3 = voxelmodell;

            voxelmodell1.randVerbreiterung(3);
            using (StreamWriter file = new StreamWriter(Path.Combine(Directory.GetCurrentDirectory(), "randverbreiterung3.txt")))
            {
                file.WriteLine("#Randverbreiterung mit 1");
                foreach (Voxel v in voxelmodell1.getVoxelmatrix())
                {
                    if (v != null)
                    {
                        file.WriteLine(v.getKoords()[0].ToString() + " " + v.getKoords()[1].ToString() + " " + v.getKoords()[2].ToString() + " " + Convert.ToInt16(v.getModellrand()).ToString());
                    }
                }
            }
        }
        static void Main(string[] args)
        {
            /*
             * Konstanten
             */
            Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
            string inputFile                 = @"Galgen.txt";
            int    randBreite                = 3;
            string currentPath               = Directory.GetParent(Directory.GetCurrentDirectory()).Parent.FullName;
            string path                      = currentPath + "\\";
            string fileName                  = @"Bahnplanung.txt";
            int    infillDensity             = 20;
            string infillType                = "3DInfill"; //3DInfill oder HexInfill oder LineInfill oder Line3DInfill
            int    offset                    = 0;          //für LineInfill
            double robotGeschwindigkeit      = 30.0;
            double extrusionsGeschwindigkeit = 36.0;

            /*
             * Konstanten
             */

            Console.WriteLine("Lese Modell ein...");
            Voxelmodell v = Input(path + inputFile);

            Console.WriteLine("Modell eingelesen!");

            Console.WriteLine("Verbreitere Rand...");
            v.randVerbreiterung(randBreite);
            Console.WriteLine("Rand verbreitert!");

            Console.WriteLine("Füge das Infill ein...");
            v.InsertInfill(infillDensity, infillType, offset);
            Console.WriteLine("Infill eingefügt!");

            Console.WriteLine("Plane die Bahn...");
            Bahn bahn = new Bahn();

            if (File.Exists(path + fileName))
            {
                File.Delete(path + fileName);
            }
            for (int i = 0; i < v.getSchichtenAnzahl(); i++)
            {
                Console.WriteLine("Plane die Bahn für Schicht " + i + "/" + v.getSchichtenAnzahl());
                bahn.Bahnplanung(v.getListeAtIndex(i), robotGeschwindigkeit, extrusionsGeschwindigkeit, path, fileName, (i + 1));
            }
            Console.WriteLine("Bahn geplant!");
        }