public void PutGFile(string filename, GFile geometry) { string extension = Path.GetExtension(filename).Substring(2); int index = extension.Length > 0 ? Int32.Parse(extension) : 0; while (Segments.Count < index) { Segments.Add(null); } Segments.Insert(index, geometry); }
public static Geometry GetPrimitive(string designID) { if (PrimitiveCache.ContainsKey(designID)) { Geometry result = PrimitiveCache[designID]; if (result == null) { result = new Geometry(); foreach (string geofile in Directory.EnumerateFiles(Path.Combine(PartDBPath, "Primitives", "LOD0")).Where(s => Path.GetFileNameWithoutExtension(s) == designID)) { using (FileStream stream = new FileStream(geofile, FileMode.Open, FileAccess.Read, FileShare.Read)) using (BinaryReader reader = new BinaryReader(stream)) { GFile geo = new GFile(reader); result.PutGFile(geofile, geo); } } PrimitiveCache[designID] = result; } return(result); } return(null); }