示例#1
0
        internal static void test_MeshMeshCut_CutInSingleTriangle()
        {
            Console.WriteLine($"test_MeshMeshCut_CutInSingleTriangle.");
            var shape = test_Bool.MakeBox(
                center: new Vector3d(5, 5, 0),
                size: new Vector3d(10, 10, 2)
                );
            var tool = test_Bool.MakeBox(
                center: new Vector3d(2.5, 7.5, 1),
                size: new Vector3d(.5, .5, .5)
                );

            MeshTransforms.Translate(shape, new Vector3d(1, 1, 1));
            MeshTransforms.Translate(tool, new Vector3d(1, 1, 1));
            var    error = false;
            DMesh3 ret;

            using (var c = new ConsoleColorController())
            {
                var meshCut = new MeshMeshCut();
                meshCut.Target  = shape;
                meshCut.CutMesh = tool;
                meshCut.Compute();
            }
        }
示例#2
0
        private static void TestWithCloseNumber(double closeEnough)
        {
            Console.WriteLine($"test_MeshMeshCut_rounding: {closeEnough}");
            var shape = test_Bool.MakeBox(
                center: new Vector3d(0, 0, 0),
                size: new Vector3d(2, 2, 2)
                );
            var tool = test_Bool.MakeBox(
                center: new Vector3d(0, 0, closeEnough),
                size: new Vector3d(1, 1, 1)
                );

            MeshTransforms.Translate(shape, new Vector3d(1, 1, 1));
            MeshTransforms.Translate(tool, new Vector3d(1, 1, 1));
            var    error = false;
            DMesh3 ret;

            using (var c = new ConsoleColorController())
            {
                var meshCut = new MeshMeshCut();
                meshCut.Target  = shape;
                meshCut.CutMesh = tool;
                meshCut.Compute();
                ret = meshCut.Target;

                if (!ret.IsClosed())
                {
                    error = TestUtil.ConsoleError("Mesh is not closed.", ret) || error;
                }
                meshCut.RemoveContained();
                if (ret.IsClosed())
                {
                    error = TestUtil.ConsoleError("Mesh should not be closed.", ret) || error;
                }

                if (ret.BoundaryEdgeIndices().Count() != 8)
                {
                    error = TestUtil.ConsoleError($"Mesh should have 8 open edges. It has {ret.BoundaryEdgeIndices().Count()}.", ret) || error;
                }
            }
            if (!error)
            {
                Console.WriteLine("ok");
            }
        }
示例#3
0
        private static void TestWithCloseNumber(double closeEnough)
        {
            Console.WriteLine("test_bool_rounding");
            var shape = MakeBox(
                center: new Vector3d(0, 0, 0),
                size: new Vector3d(2, 2, 2)
                );
            var tool = MakeBox(
                center: new Vector3d(0, 0, closeEnough),
                size: new Vector3d(1, 1, 1)
                );
            DMesh3 ret;

            using (var c = new ConsoleColorController())
            {
                ret = ComputeBoolean(shape, tool, MeshBoolean.boolOperation.Union, true);
            }
            if (IsNotNullAndClosed(ret))
            {
                TestUtil.ConsoleError("Test not implemented."); // even if it works we might want to test more
            }
        }