Пример #1
0
        private static void ExecOptions(AbstractTriangleMesh mesh)
        {
            while (true)
            {
                if (mesh.GetType() == typeof(IFLTriangleMesh))
                {
                    Console.WriteLine("-------------------");
                    Console.WriteLine("Press (C) to convert mesh to laced ring or (E) to exit program");
                    String line = Console.ReadLine();

                    if (line.ToLower() == "c")
                    {
                        Console.WriteLine("-------------------");
                        Console.WriteLine("Start converting mesh");
                        IConverter<LRTriangleMesh> converter = Converter.GetSpecificConverter<IFLTriangleMesh, LRTriangleMesh>((IFLTriangleMesh)mesh);
                        mesh = converter.Convert();
                        Console.WriteLine("-------------------");
                        Console.WriteLine("Mesh successfully converted ");
                    }
                    else if (line.ToLower() == "e")
                    {
                        Environment.Exit(0);
                    }
                    else
                    {
                        Console.WriteLine("-------------------");
                        Console.WriteLine("Command not recognized");
                    }
                }
                else if (mesh.GetType() == typeof(LRTriangleMesh))
                {
                    Console.WriteLine("-------------------");
                    Console.WriteLine("Press (S) to save mesh or (E) to exit program");
                    String line = Console.ReadLine();

                    if (line.ToLower() == "s")
                    {
                        Console.WriteLine("-------------------");
                        Console.WriteLine("Path were mesh should be saved:");
                        String path = Console.ReadLine();
                        Console.WriteLine("Filename:");
                        String fileName = Console.ReadLine();
                        Console.WriteLine("-------------------");
                        Console.WriteLine("Start writting mesh");
                        MeshWriter.WriteMesh(Path.Combine(path + fileName), mesh);
                        Console.WriteLine("-------------------");
                        Console.WriteLine("Mesh successfully written");
                    }
                    else if (line.ToLower() == "e")
                    {
                        Environment.Exit(0);
                    }
                    else
                    {
                        Console.WriteLine("-------------------");
                        Console.WriteLine("Command not recognized");
                    }
                }
            }
        }
Пример #2
0
        private static void ExecOptions(AbstractTriangleMesh mesh)
        {
            while (true)
            {
                if (mesh.GetType() == typeof(IFLTriangleMesh))
                {
                    Console.WriteLine("-------------------");
                    Console.WriteLine("Press (C) to convert mesh to laced ring or (E) to exit program");
                    String line = Console.ReadLine();

                    if (line.ToLower() == "c")
                    {
                        Console.WriteLine("-------------------");
                        Console.WriteLine("Start converting mesh");
                        IConverter <LRTriangleMesh> converter = Converter.GetSpecificConverter <IFLTriangleMesh, LRTriangleMesh>((IFLTriangleMesh)mesh);
                        mesh = converter.Convert();
                        Console.WriteLine("-------------------");
                        Console.WriteLine("Mesh successfully converted ");
                    }
                    else if (line.ToLower() == "e")
                    {
                        Environment.Exit(0);
                    }
                    else
                    {
                        Console.WriteLine("-------------------");
                        Console.WriteLine("Command not recognized");
                    }
                }
                else if (mesh.GetType() == typeof(LRTriangleMesh))
                {
                    Console.WriteLine("-------------------");
                    Console.WriteLine("Press (S) to save mesh or (E) to exit program");
                    String line = Console.ReadLine();

                    if (line.ToLower() == "s")
                    {
                        Console.WriteLine("-------------------");
                        Console.WriteLine("Path were mesh should be saved:");
                        String path = Console.ReadLine();
                        Console.WriteLine("Filename:");
                        String fileName = Console.ReadLine();
                        Console.WriteLine("-------------------");
                        Console.WriteLine("Start writting mesh");
                        MeshWriter.WriteMesh(Path.Combine(path + fileName), mesh);
                        Console.WriteLine("-------------------");
                        Console.WriteLine("Mesh successfully written");
                    }
                    else if (line.ToLower() == "e")
                    {
                        Environment.Exit(0);
                    }
                    else
                    {
                        Console.WriteLine("-------------------");
                        Console.WriteLine("Command not recognized");
                    }
                }
            }
        }
Пример #3
0
        static void Main(string[] args)
        {
            Console.WriteLine("----- LR Console Application -----");
            AbstractTriangleMesh mesh = LoadMesh();

            ExecOptions(mesh);
        }
Пример #4
0
        public static void WriteMesh(String filePath, AbstractTriangleMesh lrTriangleMesh)
        {
            if (lrTriangleMesh.GetType() == typeof(LRTriangleMesh))
            {
                LRWriter lrWriter = new LRWriter((LRTriangleMesh)lrTriangleMesh);
                lrWriter.Execute(filePath);
                return;
            }

            throw new NotImplementedException("There is no writer for this type of mesh");
        }
Пример #5
0
        public static void WriteMesh(String filePath, AbstractTriangleMesh lrTriangleMesh)
        {
            if (lrTriangleMesh.GetType() == typeof(LRTriangleMesh))
            {
                LRWriter lrWriter = new LRWriter((LRTriangleMesh)lrTriangleMesh);
                lrWriter.Execute(filePath);
                return;
            }

            throw new NotImplementedException("There is no writer for this type of mesh");
        }
Пример #6
0
        public static T LoadMesh <T>(String filePath) where T : AbstractTriangleMesh
        {
            if (typeof(T) == typeof(IFLTriangleMesh))
            {
                IFLLoader            iflLoader = new IFLLoader();
                AbstractTriangleMesh atm       = iflLoader.Execute(filePath);
                return((T)atm);
            }
            else if (typeof(T) == typeof(LRTriangleMesh))
            {
                LRLoader             lrLoader = new LRLoader();
                AbstractTriangleMesh atm      = lrLoader.Execute(filePath);
                return((T)atm);
            }

            throw new NotImplementedException("There is no loader for this type of mesh");
        }
Пример #7
0
        private static AbstractTriangleMesh LoadMesh()
        {
            while (true)
            {
                Console.WriteLine("Press (I) to load indexed face list, (L) to load laced ring or (E) to exit program");
                string line = Console.ReadLine();

                if (line.ToLower() == "i")
                {
                    Console.WriteLine("-------------------");
                    Console.WriteLine("Path to mesh:");
                    line = Console.ReadLine();
                    Console.WriteLine("-------------------");
                    Console.WriteLine("Start loading mesh");
                    AbstractTriangleMesh mesh = MeshLoader.LoadMesh <IFLTriangleMesh>(line);
                    Console.WriteLine("-------------------");
                    Console.WriteLine("Mesh successfully loaded");
                    return(mesh);
                }
                else if (line.ToLower() == "l")
                {
                    Console.WriteLine("-------------------");
                    Console.WriteLine("Path to mesh:");
                    line = Console.ReadLine();
                    Console.WriteLine("Start loading mesh");
                    AbstractTriangleMesh mesh = MeshLoader.LoadMesh <LRTriangleMesh>(line);
                    Console.WriteLine("-------------------");
                    Console.WriteLine("Mesh successfully loaded");
                    return(mesh);
                }
                else if (line.ToLower() == "e")
                {
                    Environment.Exit(0);
                }
                else
                {
                    Console.WriteLine("-------------------");
                    Console.WriteLine("Command not recognized");
                    Console.WriteLine("-------------------");
                }
            }
        }
Пример #8
0
        public static IConverter <M> GetSpecificConverter <T, M>(T inputMesh)
            where T : AbstractTriangleMesh
            where M : AbstractTriangleMesh
        {
            //Indexed face list to laced ring
            if (typeof(T) == typeof(IFLTriangleMesh) && typeof(M) == typeof(LRTriangleMesh))
            {
                AbstractTriangleMesh tempMesh = (AbstractTriangleMesh)inputMesh;
                IflToLrConverter     iflToLr  = new IflToLrConverter((IFLTriangleMesh)tempMesh);

                return((IConverter <M>)iflToLr);
            }
            //Indexed face list to corner table
            else if (typeof(T) == typeof(IFLTriangleMesh) && typeof(M) == typeof(CTTriangleMesh))
            {
                AbstractTriangleMesh tempMesh = (AbstractTriangleMesh)inputMesh;
                IflToCtConverter     iflToCt  = new IflToCtConverter((IFLTriangleMesh)tempMesh);

                return((IConverter <M>)iflToCt);
            }

            throw new ArgumentException("This conversion is not possible at this point");
        }