import { IsRect, Polyline } from "../../src/api"; import { RectOffset } from "../../src/GraphicsSystem/ToolPath/OptimizeToolPath"; import { LoadEntityFromFileData } from "../Utils/LoadEntity.util"; describe("矩形偏移", () => { test("常规矩形", () => { let d = { "file": [1, "Polyline", 8, 2, 102, false, 1, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1327.419794987397, 40.97675544794174, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1875.419794987397, -2248.0232597250492, 0, 1], 0, 2, 5, [0, 0], 0, [25, 0], 0, [25, 9.99998482700903], 0, [0, 9.99998482700903], 0, [0, 0], 0, false], "basePt": { "x": -1327.419794987397, "y": 40.97675544794174, "z": 0 }, "ucs": [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] }; let pl = LoadEntityFromFileData(d)[0] as Polyline; let rectInfo = IsRect(pl); let maxDist = Math.min(rectInfo.size.x, rectInfo.size.y) / 2; for (let d of [maxDist / 2, -maxDist / 2, maxDist]) { let l = RectOffset(pl, rectInfo, d); if (l) { expect(l.Length).toMatchSnapshot(); expect(l.OCS.toArray()).toMatchSnapshot(); } else expect(l).toBeUndefined(); } }); test("旋转矩形", () => { let d = { "file": [1, "Polyline", 8, 2, 106, false, 1, 7, 0, [0.7789093282833541, 0.6271365547575537, 0, 0, -0.6271365547575537, 0.7789093282833541, 0, 0, 0, 0, 1, 0, -1281.8810060380358, 34.63108438909671, 0, 1], 0, 0, true, [0.7789093282833541, 0.6271365547575537, 0, 0, -0.6271365547575537, 0.7789093282833541, 0, 0, 0, 0, 1, 0, -273.2077345817363, -2091.963211877024, 0, 1], 0, 2, 5, [0, 0], 0, [25, 0], 0, [25, 9.99998482700903], 0, [0, 9.99998482700903], 0, [0, 0], 0, false], "basePt": { "x": -1288.152362070074, "y": 34.63108438909671, "z": 0 }, "ucs": [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] }; let pl = LoadEntityFromFileData(d)[0] as Polyline; let rectInfo = IsRect(pl); let maxDist = Math.min(rectInfo.size.x, rectInfo.size.y) / 2; for (let d of [maxDist / 2, -maxDist / 2, maxDist]) { let l = RectOffset(pl, rectInfo, d); if (l) { expect(l.Length).toMatchSnapshot(); expect(l.OCS.toArray()).toMatchSnapshot(); } else expect(l).toBeUndefined(); } }); test("其他视图旋转矩形", () => { let d = { "file": [1, "Polyline", 8, 2, 113, false, 1, 7, 0, [0.7789093282833541, 0, 0.6271365547575537, 0, -0.6271365547575537, 0, 0.7789093282833541, 0, 0, -1, 0, 0, -1062.1715399995587, 0, 0.21291538503150775, 1], 0, 0, true, [0.7789093282833541, 0, 0.6271365547575537, 0, -0.6271365547575537, 0, 0.7789093282833541, 0, 0, -1, 0, 0, -53.4982685432592, 0, -2126.381380881089, 1], 0, 2, 5, [0, 0], 0, [25, 0], 0, [25, 9.99998482700903], 0, [0, 9.99998482700903], 0, [0, 0], 0, false], "basePt": { "x": -1068.442896031597, "y": 0, "z": 0.21291538503150775 }, "ucs": [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1] }; let pl = LoadEntityFromFileData(d)[0] as Polyline; let rectInfo = IsRect(pl); let maxDist = Math.min(rectInfo.size.x, rectInfo.size.y) / 2; for (let d of [maxDist / 2, -maxDist / 2, maxDist]) { let l = RectOffset(pl, rectInfo, d); if (l) { expect(l.Length).toMatchSnapshot(); expect(l.OCS.toArray()).toMatchSnapshot(); } else expect(l).toBeUndefined(); } }); });