Пример #1
0
        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);
        }
Пример #2
0
        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++;
            }
        }