diff --git a/__test__/EdgeSealing/SmoothEdge.test.ts b/__test__/EdgeSealing/SmoothEdge.test.ts index d07fed29e..4b91a8750 100644 --- a/__test__/EdgeSealing/SmoothEdge.test.ts +++ b/__test__/EdgeSealing/SmoothEdge.test.ts @@ -46,4 +46,16 @@ describe("见光面封边测试", () => SetSmoothEdges(brs, smoothOption); expect(brs[0].BoardProcessOption.highSealed.filter(s => s.size === 0).length).toBe(3); }); + + test('数据引用错误', () => + { + let data = + { "file": [2, "Board", 10, 2, 550, 0, 1, 11, 71, [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 2868.1795148086776, 591.2820512820513, 0, 1], 552, 0, 1, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2868.1795148086776, 591.2820512820513, 0, 1], 0, 0, 1, 3, 2000, 600, 18, true, "Polyline", 10, 2, 0, 0, 0, 7, 71, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 0, 0, 1, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 0, 0, 1, 2, 4, [0, 0], 0, [600, 0], 0, [600, 2000], 0, [0, 2000], 0, true, 0, 3, 0, 0, 0, 0, 0, 11, 1, "左侧板", "主卧", "下柜", "", "", "", 0, 0, "三合一", 2, 0, "1", "1", "1", "1", "", "", "", 4, "三合一", "三合一", "三合一", "三合一", true, true, 0, 0, 0, 0, 0, 0, 0, 0, true, 0, 0, null, "Board", 10, 2, 554, 0, 1, 3, 71, [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 2868.1795148086776, 609.2820512820513, 1920, 1], 553, 0, 1, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2904.1795148086776, 591.2820512820513, 1920, 1], 0, 0, 1, 3, 80, 132.93133103098535, 18, true, "Polyline", 10, 2, 0, 0, 0, 7, 71, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 36, 0, 0, 1], 0, 0, 1, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 36, 0, 0, 1], 0, 0, 1, 2, 4, [-36, 0], 0, [96.93133103098535, 0], 0, [96.93133103098535, 80], 0, [-36, 80], 0, true, 0, 3, 0, 0, 0, 0, 0, 11, 2, "背板", "主卧", "下柜", "", "", "", 0, 1, "三合一", 2, 0, "1", "1", "1", "1", "", "", "", 4, "三合一", "三合一", "三合一", "三合一", false, true, 0, 0, 0, 0, 0, 0, 0, 0, true, 0, 0, null], "basePt": { "x": 2868.1795148086776, "y": 591.2820512820513, "z": 0 }, "ucs": [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] }; + let [br1, br2] = LoadBoardsFromFileData(data) as [Board, Board]; + + br1.Subtract([br2]); + SetSmoothEdges([br1, br2], smoothOption); + + expect(br1.BoardProcessOption.highSealed).toMatchSnapshot(); + }); }); diff --git a/__test__/EdgeSealing/__snapshots__/SmoothEdge.test.ts.snap b/__test__/EdgeSealing/__snapshots__/SmoothEdge.test.ts.snap new file mode 100644 index 000000000..642fa5c54 --- /dev/null +++ b/__test__/EdgeSealing/__snapshots__/SmoothEdge.test.ts.snap @@ -0,0 +1,24 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`见光面封边测试 数据引用错误 1`] = ` +Array [ + Object { + "size": 1, + }, + Object { + "size": 1, + }, + Object { + "size": 0, + }, + Object { + "size": 1, + }, + Object { + "size": 1, + }, + Object { + "size": 1, + }, +] +`; diff --git a/src/GraphicsSystem/CalcEdgeSealing.ts b/src/GraphicsSystem/CalcEdgeSealing.ts index 40d5c3ebf..02fc872c8 100644 --- a/src/GraphicsSystem/CalcEdgeSealing.ts +++ b/src/GraphicsSystem/CalcEdgeSealing.ts @@ -264,7 +264,10 @@ export function GetBoardHighSeal(br: Board, sealcus: Curve[]): IHighSealedItem[] ]; } - let highSeals = br.BoardProcessOption.highSealed.filter(d => d.size !== null && d.size !== undefined); + let highSeals: IHighSealedItem[] = []; + for (let d of br.BoardProcessOption.highSealed) + if (d.size != null) + highSeals.push({ ...d }); //若未设置高级封边,把上下左右封边存入高级封边 if (sealcus.length !== highSeals.length || !br.IsSpecialShape)