示例#1
0
        private void sleeperbutton_Click(object sender, EventArgs e)
        {
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                try
                {
                    this.pictureBox5.Load(openFileDialog1.FileName);
                    pictureBox5.Load();

                    string           filename = Path.GetFileNameWithoutExtension(openFileDialog1.FileName);
                    Weichengenerator parent   = (Weichengenerator)this.Owner;
                    parent.updatesleeper(filename, openFileDialog1.FileName);
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Error loading image" + ex.Message);
                }
            }
        }
示例#2
0
        internal static void BuildStraight()
        {
            {
                string name;
                double gaugeoffset        = Weichengenerator.gaugeoffset;
                string launchpath         = Weichengenerator.path;
                string texture_format     = Weichengenerator.texture_format;
                string ballast_texture    = Weichengenerator.ballast_texture;
                string ballast_file       = Weichengenerator.ballast_file;
                string sleeper_texture    = Weichengenerator.sleeper_texture;
                string sleeper_file       = Weichengenerator.sleeper_file;
                string railtop_texture    = Weichengenerator.railtop_texture;
                string railtop_file       = Weichengenerator.railtop_file;
                string railside_texture   = Weichengenerator.railside_texture;
                string railside_file      = Weichengenerator.railside_file;
                string embankment_texture = Weichengenerator.embankment_texture;
                string embankment_file    = Weichengenerator.embankment_file;
                bool   EingabeOK;



                name = launchpath + "\\Output\\Tracks\\straight.csv";

                //Create Output directory
                if (!System.IO.Directory.Exists(launchpath + "\\Output\\Tracks"))
                {
                    System.IO.Directory.CreateDirectory(launchpath + "\\Output\\Tracks");
                }

                //Main Textures
                const string outputtype = "Tracks";
                Weichengenerator.ConvertAndMove(launchpath, ballast_texture, texture_format, ballast_file, outputtype);
                Weichengenerator.ConvertAndMove(launchpath, sleeper_texture, texture_format, sleeper_file, outputtype);

                //Embankment Texture
                if (Weichengenerator.noembankment == false)
                {
                    Weichengenerator.ConvertAndMove(launchpath, embankment_texture, texture_format, embankment_file, outputtype);
                }

                //Rail Textures
                if (Weichengenerator.norailtexture == false)
                {
                    Weichengenerator.ConvertAndMove(launchpath, railside_texture, texture_format, railside_file, outputtype);
                    Weichengenerator.ConvertAndMove(launchpath, railtop_texture, texture_format, railtop_file, outputtype);
                }

                //Create Output directory
                if (!System.IO.Directory.Exists(launchpath + "\\Output\\Tracks"))
                {
                    System.IO.Directory.CreateDirectory(launchpath + "\\Output\\Tracks");
                }


                //Write Out to CSV
                using (var sw = new StreamWriter(name))
                {
                    if (Weichengenerator.norailtexture == false)
                    {
                        sw.WriteLine("CreateMeshBuilder\r\nAddVertex,{0:f4},0,25\r\nAddVertex,{1:f4},0,25\r\nAddVertex,{1:f4},0,0\r\nAddVertex,{0:f4},0,0\r\nAddFace,1,0,3,2\r\nGenerateNormals\r\nLoadTexture,railTop.{2}\r\nSetTextureCoordinates,0,0,0\r\nSetTextureCoordinates,1,1,0\r\nSetTextureCoordinates,2,1,1\r\nSetTextureCoordinates,3,0,1", -0.72 - gaugeoffset, -0.78 - gaugeoffset, texture_format);

                        sw.WriteLine("\r\nCreateMeshBuilder\r\nAddVertex,{0:f4},0,25\r\nAddVertex,{1:f4},0,25\r\nAddVertex,{1:f4},0,0\r\nAddVertex,{0:f4},0,0\r\nAddFace,0,1,2,3\r\nGenerateNormals\r\nLoadTexture,railTop.{2}\r\nSetTextureCoordinates,0,0,0\r\nSetTextureCoordinates,1,1,0\r\nSetTextureCoordinates,2,1,1\r\nSetTextureCoordinates,3,0,1", 0.72 + gaugeoffset, 0.78 + gaugeoffset, texture_format);

                        sw.WriteLine("\r\nCreateMeshBuilder\r\nAddVertex,{0:f4},0,0\r\nAddVertex,{0:f4},0,25\r\nAddVertex,{0:f4},-0.15,25\r\nAddVertex,{0:f4},-0.15,0\r\nAddFace2,0,1,2,3\r\nGenerateNormals\r\nLoadTexture,railside.{1}\r\nSetTextureCoordinates,0,0,0\r\nSetTextureCoordinates,1,1,0\r\nSetTextureCoordinates,2,1,1\r\nSetTextureCoordinates,3,0,1", -0.74 - gaugeoffset, texture_format);

                        sw.WriteLine("\r\nCreateMeshBuilder\r\nAddVertex,{0:f4},0,0\r\nAddVertex,{0:f4},0,25\r\nAddVertex,{0:f4},-0.15,25\r\nAddVertex,{0:f4},-0.15,0\r\nAddFace2,0,1,2,3\r\nGenerateNormals\r\nLoadTexture,railside.{1}\r\nSetTextureCoordinates,0,0,0\r\nSetTextureCoordinates,1,1,0\r\nSetTextureCoordinates,2,1,1\r\nSetTextureCoordinates,3,0,1", 0.74 + gaugeoffset, texture_format);
                    }
                    else
                    {
                        sw.WriteLine("CreateMeshBuilder\r\nAddVertex,{0:f4},0,25\r\nAddVertex,{1:f4},0,25\r\nAddVertex,{1:f4},0,0\r\nAddVertex,{0:f4},0,0\r\nAddFace,1,0,3,2\r\nGenerateNormals\r\nSetColor,180,190,200", -0.72 - gaugeoffset, -0.78 - gaugeoffset);

                        sw.WriteLine("\r\nCreateMeshBuilder\r\nAddVertex,{0:f4},0,25\r\nAddVertex,{1:f4},0,25\r\nAddVertex,{1:f4},0,0\r\nAddVertex,{0:f4},0,0\r\nAddFace,0,1,2,3\r\nGenerateNormals\r\nSetColor,180,190,200", 0.72 + gaugeoffset, 0.78 + gaugeoffset);

                        sw.WriteLine("\r\nCreateMeshBuilder\r\nAddVertex,{0:f4},0,0\r\nAddVertex,{0:f4},0,25\r\nAddVertex,{0:f4},-0.15,25\r\nAddVertex,{0:f4},-0.15,0\r\nAddFace2,0,1,2,3\r\nGenerateNormals\r\nSetColor,85,50,50,", -0.74 - gaugeoffset);

                        sw.WriteLine("\r\nCreateMeshBuilder\r\nAddVertex,{0:f4},0,0\r\nAddVertex,{0:f4},0,25\r\nAddVertex,{0:f4},-0.15,25\r\nAddVertex,{0:f4},-0.15,0\r\nAddFace2,0,1,2,3\r\nGenerateNormals\r\nSetColor,85,50,50", 0.74 + gaugeoffset);
                    }

                    sw.WriteLine("\r\nCreateMeshBuilder\r\nAddVertex,{0:f4}, -0.15,25\r\nAddVertex,{1:f4},-0.15,25\r\nAddVertex,{1:f4},-0.15,0\r\nAddVertex,{0:f4},-0.15,0\r\nAddFace,0,1,2,3\r\nGenerateNormals\r\nLoadTexture,{2}.{3}\r\nSetTextureCoordinates,0,0.01,0\r\nSetTextureCoordinates,1,0.99,0\r\nSetTextureCoordinates,2,0.99,15\r\nSetTextureCoordinates,3,0.01,15", -1.3 - gaugeoffset, 1.3 + gaugeoffset, sleeper_file, texture_format);

                    sw.WriteLine("\r\nCreateMeshBuilder\r\nAddVertex,{0:f4},-0.4,25\r\nAddVertex,{1:f4},-0.15,25\r\nAddVertex,{1:f4},-0.15,0\r\nAddVertex,{0:f4},-0.4,0\r\nAddFace,0,1,2,3\r\nGenerateNormals\r\nLoadTexture,{2}.{3}\r\nSetTextureCoordinates,2,0,0\r\nSetTextureCoordinates,3,1,0\r\nSetTextureCoordinates,0,1,10\r\nSetTextureCoordinates,1,0,10", -2.8 - gaugeoffset, -1.3 - gaugeoffset, ballast_file, texture_format);

                    sw.WriteLine("\r\nCreateMeshBuilder\r\nAddVertex,{0:f4},-0.4,25\r\nAddVertex,{1:f4},-0.15,25\r\nAddVertex,{1:f4},-0.15,0\r\nAddVertex,{0:f4},-0.4,0\r\nAddFace,1,0,3,2\r\nGenerateNormals\r\nLoadTexture,{2}.{3}\r\nSetTextureCoordinates,2,0,0\r\nSetTextureCoordinates,3,1,0\r\nSetTextureCoordinates,0,1,10\r\nSetTextureCoordinates,1,0,10", 2.8 + gaugeoffset, 1.3 + gaugeoffset, ballast_file, texture_format);


                    if (Weichengenerator.noembankment == false)
                    {
                        sw.WriteLine("\r\nCreateMeshBuilder\r\nAddVertex,{0:f4},-0.35,25\r\nAddVertex,{1:f4},-0.3,25\r\nAddVertex,{1:f4},-0.3,0\r\nAddVertex,{0:f4},-0.35,0\r\nAddFace,1,0,3,2\r\nGenerateNormals\r\nLoadTexture,{2}.{3}\r\nSetTextureCoordinates,2,0,0\r\nSetTextureCoordinates,3,1,0\r\nSetTextureCoordinates,0,1,3\r\nSetTextureCoordinates,1,0,3", -2.5 - gaugeoffset, -3.6 - gaugeoffset, embankment_file, texture_format);

                        sw.WriteLine("\r\nCreateMeshBuilder\r\nAddVertex,{0:f4},-0.35,25\r\nAddVertex,{1:f4},-0.3,25\r\nAddVertex,{1:f4},-0.3,0\r\nAddVertex,{0:f4},-0.35,0\r\nAddFace,0,1,2,3\r\nGenerateNormals\r\nLoadTexture,{2}.{3}\r\nSetTextureCoordinates,2,0,0\r\nSetTextureCoordinates,3,1,0\r\nSetTextureCoordinates,0,1,3\r\nSetTextureCoordinates,1,0,3", 2.5 + gaugeoffset, 3.6 + gaugeoffset, embankment_file, texture_format);
                    }
                }
            }
        }
示例#3
0
        internal static void BuildCurve()
        {
            {
                var    LiRe   = 1;
                var    LiRe_T = 1;
                string name;
                MathFunctions.Transform trans;
                double radius             = Weichengenerator.radius;
                double segmente           = Weichengenerator.segmente;
                double gaugeoffset        = Weichengenerator.gaugeoffset;
                string launchpath         = Weichengenerator.path;
                string texture_format     = Weichengenerator.texture_format;
                string ballast_texture    = Weichengenerator.ballast_texture;
                string ballast_file       = Weichengenerator.ballast_file;
                string sleeper_texture    = Weichengenerator.sleeper_texture;
                string sleeper_file       = Weichengenerator.sleeper_file;
                string railtop_texture    = Weichengenerator.railtop_texture;
                string railtop_file       = Weichengenerator.railtop_file;
                string railside_texture   = Weichengenerator.railside_texture;
                string railside_file      = Weichengenerator.railside_file;
                string embankment_texture = Weichengenerator.embankment_texture;
                string embankment_file    = Weichengenerator.embankment_file;

                /*
                 * Curves
                 */
                //Initialise


                //Left or right definition
                if (radius < 0)
                {
                    LiRe   = -1;
                    radius = radius * -1;
                }


                if (LiRe == -1)
                {
                    name = launchpath + "\\Output\\Tracks\\L" + radius + ".csv";
                }
                else
                {
                    name = launchpath + "\\Output\\Tracks\\R" + radius + ".csv";
                }

                //Create Output directory
                if (!System.IO.Directory.Exists(launchpath + "\\Output\\Tracks"))
                {
                    System.IO.Directory.CreateDirectory(launchpath + "\\Output\\Tracks");
                }


                //Main Textures
                const string outputtype = "Tracks";
                Weichengenerator.ConvertAndMove(launchpath, ballast_texture, texture_format, ballast_file, outputtype);
                Weichengenerator.ConvertAndMove(launchpath, sleeper_texture, texture_format, sleeper_file, outputtype);

                //Embankment Texture
                if (Weichengenerator.noembankment == false)
                {
                    Weichengenerator.ConvertAndMove(launchpath, embankment_texture, texture_format, embankment_file, outputtype);
                }

                //Rail Textures
                if (Weichengenerator.norailtexture == false)
                {
                    Weichengenerator.ConvertAndMove(launchpath, railside_texture, texture_format, railside_file, outputtype);
                    Weichengenerator.ConvertAndMove(launchpath, railtop_texture, texture_format, railtop_file, outputtype);
                }


                trans = new MathFunctions.Transform(1, radius, LiRe, 0);


                //Write out to CSV
                using (var sw = new StreamWriter(name))
                {
                    //Railtop Left

                    var a = -1;
                    sw.WriteLine("\r\nCreateMeshBuilder ;Railtop Links");
                    var height = 0.0;
                    for (var i = 0; i <= segmente; i++, a++)
                    {
                        if (i == segmente)
                        {
                            height += 0.01;
                        }
                        sw.WriteLine("AddVertex,{0:f4},{1:f2},{2:f4},", trans.X((-0.72 - gaugeoffset), (25.3 / segmente) * i), height, trans.Z(-0.72, (25.3 / segmente) * i));
                        sw.WriteLine("AddVertex,{0:f4},{1:f2},{2:f4},", trans.X((-0.78 - gaugeoffset), (25.3 / segmente) * i), height, trans.Z(-0.78, (25.3 / segmente) * i));
                    }

                    Constructors.AddFace(sw, a, -LiRe_T);
                    if (Weichengenerator.norailtexture == false)
                    {
                        sw.WriteLine("GenerateNormals,");
                        sw.WriteLine("LoadTexture,railTop.{0},", texture_format);

                        Constructors.SetTexture(sw, a, 1, 1);
                    }
                    else
                    {
                        sw.WriteLine("SetColor,180,190,200,");
                    }

                    //Rail Top Right
                    height = 0.0;
                    a      = -1;
                    sw.WriteLine("\r\nCreateMeshBuilder ;Railtop Rechts");
                    for (var i = 0; i <= segmente; i++, a++)
                    {
                        if (i == segmente)
                        {
                            height += 0.01;
                        }
                        sw.WriteLine("AddVertex,{0:f4},{1:f2},{2:f4},", trans.X((0.78 + gaugeoffset), (25.3 / segmente) * i), height, trans.Z(0.78, (25.3 / segmente) * i));
                        sw.WriteLine("AddVertex,{0:f4},{1:f2},{2:f4},", trans.X((0.72 + gaugeoffset), (25.3 / segmente) * i), height, trans.Z(0.72, (25.3 / segmente) * i));
                    }

                    Constructors.AddFace(sw, a, -LiRe_T);

                    sw.WriteLine("GenerateNormals,");
                    if (Weichengenerator.norailtexture == false)
                    {
                        sw.WriteLine("LoadTexture,railTop.{0},", texture_format);
                        Constructors.SetTexture(sw, a, 1, 1);
                    }
                    else
                    {
                        sw.WriteLine("SetColor,180,190,200,");
                    }



                    //Railside Left
                    height = 0.0;
                    a      = -1;
                    sw.WriteLine("\r\nCreateMeshBuilder ;Railside Links");
                    for (var i = 0; i <= segmente; i++, a++)
                    {
                        if (i == segmente)
                        {
                            height += 0.01;
                        }
                        sw.WriteLine("AddVertex,{0:f4},{1:f2},{2:f4},", trans.X((-0.74 - gaugeoffset), (25.3 / segmente) * i), height, trans.Z(-0.74, (25.3 / segmente) * i));
                        sw.WriteLine("AddVertex,{0:f4},{1:f2},{2:f4},", trans.X((-0.74 - gaugeoffset), (25.3 / segmente) * i), height - 0.15, trans.Z(-0.74, (25.3 / segmente) * i));
                    }

                    Constructors.AddFace2(sw, a);

                    sw.WriteLine("GenerateNormals,");
                    if (Weichengenerator.norailtexture == false)
                    {
                        sw.WriteLine("LoadTexture,railside.{0},", texture_format);
                        Constructors.SetTexture(sw, a, 1, 3);
                    }
                    else
                    {
                        sw.WriteLine("SetColor,85,50,50,");
                    }

                    //Right Rail Side
                    height = 0.0;
                    a      = -1;
                    sw.WriteLine("\r\nCreateMeshBuilder ;Railside Rechts");
                    for (var i = 0; i <= segmente; i++, a++)
                    {
                        if (i == segmente)
                        {
                            height += 0.01;
                        }
                        sw.WriteLine("AddVertex,{0:f4},{1:f2},{2:f4},", trans.X((0.74 + gaugeoffset), (25.3 / segmente) * i), height, trans.Z(0.74, (25.3 / segmente) * i));
                        sw.WriteLine("AddVertex,{0:f4},{1:f2},{2:f4},", trans.X((0.74 + gaugeoffset), (25.3 / segmente) * i), height - 0.15, trans.Z(0.74, (25.3 / segmente) * i));
                    }

                    Constructors.AddFace2(sw, a);

                    sw.WriteLine("GenerateNormals,");
                    if (Weichengenerator.norailtexture == false)
                    {
                        sw.WriteLine("LoadTexture,railside.{0},", texture_format);
                        Constructors.SetTexture(sw, a, 1, 3);
                    }
                    else
                    {
                        sw.WriteLine("SetColor,85,50,50,");
                    }

                    //Sleepers
                    height = 0.0;
                    a      = -1;
                    sw.WriteLine("\r\nCreateMeshBuilder ;Schwellen");
                    for (var i = 0; i <= segmente; i++, a++)
                    {
                        if (i == segmente)
                        {
                            height += 0.01;
                        }
                        sw.WriteLine("AddVertex,{0:f4},{1:f2},{2:f4},", trans.X((-1.3 - gaugeoffset), (25.3 / segmente) * i), height - 0.15, trans.Z(-1.3, (25.3 / segmente) * i));
                        sw.WriteLine("AddVertex,{0:f4},{1:f2},{2:f4},", trans.X((1.3 + gaugeoffset), (25.3 / segmente) * i), height - 0.15, trans.Z(1.3, (25.3 / segmente) * i));
                    }

                    Constructors.AddFace(sw, a, LiRe_T);

                    sw.WriteLine("GenerateNormals,");
                    sw.WriteLine("LoadTexture,{0}.{1},", sleeper_file, texture_format);
                    Constructors.SetTexture(sw, a, 15, 2);

                    //Ballast Left
                    height = 0.0;
                    a      = -1;
                    sw.WriteLine("\r\nCreateMeshBuilder ;Boeschung Links");
                    for (var i = 0; i <= segmente; i++, a++)
                    {
                        if (i == segmente)
                        {
                            height += 0.01;
                        }
                        sw.WriteLine("AddVertex,{0:f4},{1:f2},{2:f4},", trans.X((-2.8 - gaugeoffset), (25.3 / segmente) * i), height - 0.4, trans.Z(-2.8, (25.3 / segmente) * i));
                        sw.WriteLine("AddVertex,{0:f4},{1:f2},{2:f4},", trans.X((-1.3 - gaugeoffset), (25.3 / segmente) * i), height - 0.15, trans.Z(-1.3, (25.3 / segmente) * i));
                    }

                    Constructors.AddFace(sw, a, LiRe_T);

                    sw.WriteLine("GenerateNormals,");
                    sw.WriteLine("LoadTexture,{0}.{1},", ballast_file, texture_format);
                    Constructors.SetTexture(sw, a, 10, 2);

                    //Ballast Right
                    height = 0.0;
                    a      = -1;
                    sw.WriteLine("\r\nCreateMeshBuilder ;Boeschung Rechts");
                    for (var i = 0; i <= segmente; i++, a++)
                    {
                        if (i == segmente)
                        {
                            height += 0.01;
                        }
                        sw.WriteLine("AddVertex,{0:f4},{1:f2},{2:f4},", trans.X((1.3 + gaugeoffset), (25.3 / segmente) * i), height - 0.15, trans.Z(1.3, (25.3 / segmente) * i));
                        sw.WriteLine("AddVertex,{0:f4},{1:f2},{2:f4},", trans.X((2.8 + gaugeoffset), (25.3 / segmente) * i), height - 0.4, trans.Z(2.8, (25.3 / segmente) * i));
                    }

                    Constructors.AddFace(sw, a, LiRe_T);

                    sw.WriteLine("GenerateNormals,");
                    sw.WriteLine("LoadTexture,{0}.{1},", ballast_file, texture_format);
                    Constructors.SetTexture(sw, a, 10, 1);

                    if (Weichengenerator.noembankment == false)
                    {
                        //Grass Left
                        height = 0.0;
                        a      = -1;
                        sw.WriteLine("\r\nCreateMeshBuilder ;Grass Links");
                        for (var i = 0; i <= segmente; i++, a++)
                        {
                            if (i == segmente)
                            {
                                height += 0.01;
                            }
                            sw.WriteLine("AddVertex,{0:f4},{1:f2},{2:f4},", trans.X((-3.6 - gaugeoffset), (25.3 / segmente) * i), height - 0.3, trans.Z(-3.6, (25.3 / segmente) * i));
                            sw.WriteLine("AddVertex,{0:f4},{1:f2},{2:f4},", trans.X((-2.5 - gaugeoffset), (25.3 / segmente) * i), height - 0.35, trans.Z(-2.5, (25.3 / segmente) * i));
                        }

                        Constructors.AddFace(sw, a, LiRe_T);

                        sw.WriteLine("GenerateNormals,");
                        sw.WriteLine("LoadTexture,{0}.{1},", embankment_file, texture_format);
                        Constructors.SetTexture(sw, a, 3, 1);

                        //Grass Right
                        height = 0.0;
                        a      = -1;
                        sw.WriteLine("\r\nCreateMeshBuilder ;Grass Rechts");
                        for (var i = 0; i <= segmente; i++, a++)
                        {
                            if (i == segmente)
                            {
                                height += 0.01;
                            }
                            sw.WriteLine("AddVertex,{0:f4},{1:f2},{2:f4},", trans.X((2.5 + gaugeoffset), (25.3 / segmente) * i), height - 0.35, trans.Z(2.5, (25.3 / segmente) * i));
                            sw.WriteLine("AddVertex,{0:f4},{1:f4},{2:f4},", trans.X((3.6 + gaugeoffset), (25.3 / segmente) * i), height - 0.3, trans.Z(3.6, (25.3 / segmente) * i));
                        }

                        Constructors.AddFace(sw, a, LiRe_T);

                        sw.WriteLine("GenerateNormals,");
                        sw.WriteLine("LoadTexture,{0}.{1},", embankment_file, texture_format);
                        Constructors.SetTexture(sw, a, 3, 2);
                    }
                }
            }
        }