public static void TestWritingGeometry(IGeometry g, string outputFolder, string fileName) { // Try writing to an OBJ: using DMesh, using Helix, using my OBJ writer // Try writing to a G3D // Time the different writing // Try conversions back from the different forms. and the reading. // TestGeometries.OutputIGeometryStats(g); var baseFileName = Path.GetFileName(fileName); var outputFileName = Path.Combine(outputFolder, baseFileName); Console.WriteLine("Testing Ara 3D native writer"); TestWritingFile(outputFileName + ".ara.obj", f => g.WriteObj(f, false)); var g3dFileName = outputFileName + ".ara.g3d"; TestWritingFile(g3dFileName, g.WriteG3D); Console.WriteLine("Testing G3 Sharp writer"); TestWritingFile(outputFileName + ".g3.obj", f => g.ToG3Sharp().WriteFile(f)); TestWritingFile(outputFileName + ".g3.stl", f => g.ToG3Sharp().WriteFileBinary(f)); // TODO: test writing using Helix // Check that reading the G3D back-in yields the same IGeometry var g2 = Util.TimeIt(() => G3DExtensions.ReadFromFile(g3dFileName).ToIGeometry(), "Reading time for G3D"); TestGeometries.CompareGeometries(g, g2); }
public static void TestWritingProceduralGeometries() { var i = 0; var outputFolder = Path.Combine(TestOutputFolder, "procedural"); foreach (var g in TestGeometries.AllGeometries) { TestWritingGeometry(g, outputFolder, i.ToString()); var g1 = G3Sharp.LoadGeometry(Path.Combine(outputFolder, $"{i}.ara.obj")); TestGeometries.BasicCompareGeometries(g.ToTriMesh(), g1); var g2 = G3Sharp.LoadGeometry(Path.Combine(outputFolder, $"{i}.g3.obj")); TestGeometries.BasicCompareGeometries(g.ToTriMesh(), g2); // STL files are odd, because they don't share vertices, // var g3 = G3Sharp.LoadGeometry(Path.Combine(outputFolder, $"{i}.g3.stl")); // TestGeometries.BasicCompareGeometries(g.ToTriMesh(), g3, true); i++; } }