You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
WebCAD/__test__/Polyline/rectOffset.test.ts

72 lines
3.6 KiB

import { IsRect } from "../../src/Common/CurveUtils";
import { Polyline } from "../../src/DatabaseServices/Entity/Polyline";
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();
}
});
});