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"); } } } }
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"); } } } }
static void Main(string[] args) { Console.WriteLine("----- LR Console Application -----"); AbstractTriangleMesh mesh = LoadMesh(); ExecOptions(mesh); }
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"); }
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"); }
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("-------------------"); } } }
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"); }