import { CuttingBoard } from "../../src/Add-on/BoardCutting/CuttingUtils"; import { Board } from "../../src/DatabaseServices/Entity/Board"; import "../Utils/jest.util"; import { LoadBoardsFromFileData } from "../Utils/LoadEntity.util"; test('板件与板件切割_分裂成多个', () => { let d = [3, "Board", 3, 2, 101, false, 1, 11, 0, [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, -331.4882673815591, 22.964750159997493, 0, 1], 2, 1200, 600, 18, true, "Polyline", 3, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 2, 4, [0, 0], 0, [600, 0], 0, [600, 1200], 0, [0, 1200], 0, true, 1, 2, 560.6466, 189.21820000000014, 18, false, "Polyline", 3, 2, 0, false, 0, 1, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1827.9668979500452, -289.76232632197764, 0, 1], 2, 4, [1827.9668979500452, 755.7998263219777], 0, [1827.9668979500452, 289.76232632197764], 0, [2017.1850979500452, 289.76232632197764], 0, [2017.1850979500452, 755.7998263219777], 0.9999999999999999, true, 0, 3, 0, 0, 0, [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, -331.4882673815591, 240.21531912679802, 487.0617703059633, 1], 3, 0, 0, 0, 2, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -331.4882673815591, 22.964750159997493, 0, 1], 1, "左侧板", "{\"roomName\":\"\",\"cabinetName\":\"\",\"boardName\":\"\",\"material\":\"\",\"color\":\"\",\"lines\":0,\"bigHoleDir\":0,\"drillType\":\"three\",\"composingFace\":2,\"highSealed\":[],\"sealedUp\":\"1\",\"sealedDown\":\"1\",\"sealedLeft\":\"1\",\"sealedRight\":\"1\",\"spliteHeight\":\"\",\"spliteWidth\":\"\",\"spliteThickness\":\"\",\"highDrill\":[\"three\",\"three\",\"three\",\"three\",\"three\",\"three\"]}", 0, 0, "Board", 3, 2, 103, false, 1, 2, 0, [0, 0.7071067811865476, 0.7071067811865475, 0, -1, 0, 0, 0, 0, -0.7071067811865475, 0.7071067811865476, 0, 150.8430102636048, -52.19811424968327, 170.47952541755785, 1], 2, 783.3533043634961, 1175.1597867537462, 18, true, "Polyline", 3, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 376.7045899568675, -325.59238647697345, 0, 1], 2, 4, [-376.7045899568675, 325.59238647697345], 0, [798.4551967968786, 325.59238647697345], 0, [798.4551967968786, 1108.9456908404695], 0, [-376.7045899568675, 1108.9456908404695], 0, true, 0, 3, 0, 0, 0, 2, [1, 0, 0, 0, 0, 0.7071067811865476, 0.7071067811865475, 0, 0, -0.7071067811865475, 0.7071067811865476, 0, 476.43539674057826, 214.17225581291558, 436.84989548015665, 1], 0, "层板", "{\"roomName\":\"\",\"cabinetName\":\"\",\"boardName\":\"\",\"material\":\"\",\"color\":\"\",\"lines\":0,\"bigHoleDir\":0,\"drillType\":\"three\",\"composingFace\":2,\"highSealed\":[],\"sealedUp\":\"1\",\"sealedDown\":\"1\",\"sealedLeft\":\"1\",\"sealedRight\":\"1\",\"spliteHeight\":\"\",\"spliteWidth\":\"\",\"spliteThickness\":\"\",\"highDrill\":[]}", 0, 0, "Board", 3, 2, 105, false, 1, 2, 0, [0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 150.8430102636048, -84.04268340053818, 746.0908003894185, 1], 2, 1200, 1446.4691198791304, 18, true, "Polyline", 3, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 2, 4, [0, 0], 0, [1446.4691198791304, 0], 0, [1446.4691198791304, 1200], 0, [0, 1200], 0, true, 0, 3, 0, 0, 0, 2, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 150.8430102636048, -84.04268340053818, 746.0908003894185, 1], 0, "", "{\"roomName\":\"\",\"cabinetName\":\"\",\"boardName\":\"\",\"material\":\"\",\"color\":\"\",\"lines\":0,\"bigHoleDir\":0,\"drillType\":\"three\",\"composingFace\":2,\"highSealed\":[],\"sealedUp\":\"1\",\"sealedDown\":\"1\",\"sealedLeft\":\"1\",\"sealedRight\":\"1\",\"spliteHeight\":\"\",\"spliteWidth\":\"\",\"spliteThickness\":\"\",\"highDrill\":[]}", 0, 0]; let brs = LoadBoardsFromFileData(d); let br = brs.shift(); let splitBrs = CuttingBoard(br, brs); splitBrs.push(br); for (let b of splitBrs) { expect(b.Width).toMatchNumberSnapshot(); expect(b.Height).toMatchNumberSnapshot(); expect(b.Thickness).toMatchNumberSnapshot(); } }); test('斜切割', () => { let d = { "file": [2, "Board", 3, 2, 101, false, 1, 11, 0, [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, -2215.328823760792, 499.71410406375077, -2294.099214285263, 1], 2, 1200, 600, 18, true, "Polyline", 3, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 2, 4, [0, 0], 0, [600, 0], 0, [600, 1200], 0, [0, 1200], 0, true, 0, 3, 0, 0, 0, 2, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -205.28537176904496, 177.69146652013302, 0, 1], 1, "左侧板", { "roomName": "", "cabinetName": "", "boardName": "", "material": "", "color": "", "lines": 0, "bigHoleDir": 0, "composingFace": 2, "highSealed": [], "sealedUp": "1", "sealedDown": "1", "sealedLeft": "1", "sealedRight": "1", "spliteHeight": "", "spliteWidth": "", "spliteThickness": "", "highDrill": ["三合一", "三合一", "三合一", "三合一"], "frontDrill": true, "backDrill": true, "drillType": "三合一" }, 0, 0, "Board", 3, 2, 102, false, 1, 2, 0, [0, 1, 0, 0, -0.9502295409734979, 0, -0.31155066917163815, 0, -0.31155066917163815, 0, 0.9502295409734979, 0, -1370.93197964564, 499.71410406375077, -1535.8828067472384, 1], 2, 1210.53726169844, 600, 18, true, "Polyline", 3, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 2, 4, [0, 0], 0, [600, 0], 0, [600, 1210.53726169844], 0, [0, 1210.53726169844], 0, true, 0, 3, 0, 0, 0, 2, [0.9502295409734979, 0, 0.31155066917163815, 0, 0, 1, 0, 0, -0.31155066917163815, 0, 0.9502295409734979, 0, 639.1114723461071, 177.69146652013302, 758.2164075380244, 1], 0, "层板", { "roomName": "", "cabinetName": "", "boardName": "", "material": "", "color": "", "lines": 0, "bigHoleDir": 0, "composingFace": 2, "highSealed": [], "sealedUp": "1", "sealedDown": "1", "sealedLeft": "1", "sealedRight": "1", "spliteHeight": "", "spliteWidth": "", "spliteThickness": "", "highDrill": ["三合一", "三合一", "三合一", "三合一"], "frontDrill": true, "backDrill": true, "drillType": "三合一" }, 0, 0], "basePt": { "x": -1847.3471649178755, "y": -8951.992136339191, "z": 0 } }; { let [br0, br1] = LoadBoardsFromFileData(d) as Board[]; let splitBrs = CuttingBoard(br0, [br1]); splitBrs.push(br0); for (let b of splitBrs) { expect(b.Width).toMatchNumberSnapshot(); expect(b.Height).toMatchNumberSnapshot(); expect(b.Thickness).toMatchNumberSnapshot(); } } { let [br1, br0] = LoadBoardsFromFileData(d) as Board[]; let splitBrs = CuttingBoard(br0, [br1]); splitBrs.push(br0); for (let b of splitBrs) { expect(b.Width).toMatchNumberSnapshot(); expect(b.Height).toMatchNumberSnapshot(); expect(b.Thickness).toMatchNumberSnapshot(); } } }); test("板件切割测试2", () => { let d = { "file": [2, "Board", 7, 2, 101, false, 1, 11, 0, [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 58.11138014527837, -95.6416464891041, 0, 1], 100, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 58.11138014527837, -95.6416464891041, 0, 1], 2, 2000, 600, 18, false, "Polyline", 7, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -4826.750873683377, -162.89849415409662, 174.3341404358351, 1], 2, 8, [77.4818401937041, 2000], 0, [0, 2000], 0, [0, 0], 0, [600, 0], 0, [600, 2000], 0, [479.4188861985467, 2000], 0, [479.4188861985467, 518.1598062953994], 0, [77.4818401937041, 518.1598062953994], 0, true, 2, 2, 1043.0992736077485, 77.4818401937041, 5, true, "Polyline", 7, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -742.8571428571431, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -200.48426150121168, 0, 0, 1], 2, 4, [0, 1785.9564164648916], 0, [0, 742.8571428571431], 0, [77.4818401937041, 742.8571428571433], 0, [77.4818401937041, 1785.9564164648914], 0, true, 0, 3, 0, 0, 0, [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 58.11138014527837, -95.64164648910412, 742.8571428571431, 1], 2, 892.2196473551638, 120.58111380145328, 5, true, "Polyline", 7, 2, 0, false, 0, 1, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -479.4188861985467, -851.4740554156175, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -601.4325065106937, -851.4740554156172, -13, 1], 2, 4, [600, 851.4740554156175], 0, [600, 1743.6937027707813], 0, [479.4188861985467, 1743.6937027707806], 0, [479.4188861985467, 851.4740554156178], 0, true, 0, 3, 0, 0, 0, [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 71.11138014527836, 383.7772397094426, 851.4740554156175, 1], 3, 0, 0, 0, 6, 1, "左侧板", "主卧", "下柜", "", "", "", 0, 0, "三合一", 2, 0, "1", "1", "1", "1", "", "", "", 8, "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", true, true, 0, 0, 0, 0, 0, "Board", 7, 2, 104, false, 1, 2, 0, [0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 976.5468710543694, -95.6416464891041, 991, 1], 103, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 976.5468710543694, -95.6416464891041, 991, 1], 2, 1164, 600, 18, true, "Polyline", 7, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 2, 4, [0, 0], 0, [600, 0], 0, [600, 1164], 0, [0, 1164], 0, true, 0, 3, 0, 0, 0, 6, 0, "层板", "主卧", "下柜", "", "", "", 0, 1, "三合一", 2, 0, "1", "1", "1", "1", "", "", "", 4, "三合一", "三合一", "三合一", "三合一", true, true, 0, 0, 0, 0, 0], "basePt": { "x": -187.45312894563062, "y": -95.6416464891041, "z": 0 } }; { let [br0, br1] = LoadBoardsFromFileData(d) as Board[]; let splitBrs = CuttingBoard(br0, [br1]); splitBrs.push(br0); for (let b of splitBrs) { expect(b.ContourCurve.Area).toMatchNumberSnapshot(); } } { let [br1, br0] = LoadBoardsFromFileData(d) as Board[]; let splitBrs = CuttingBoard(br0, [br1]); splitBrs.push(br0); for (let b of splitBrs) { expect(b.ContourCurve.Area).toMatchNumberSnapshot(); } } }); test("板件切割测试3", () => { let d = { "file": [2, "Board", 7, 2, 117, false, 1, 11, 0, [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, -187.63269733656165, 859.2801162227601, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -187.63269733656165, 859.2801162227601, 0, 1], 2, 2000, 600, 18, false, "Polyline", 7, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -6845.879202981199, -24.883966309060042, 232.44552058111347, 1], 2, 8, [77.4818401937041, 2000], 0, [0, 2000], 0, [0, 0], 0, [600, 0], 0, [600, 2000], 0, [479.4188861985467, 2000], 0, [479.4188861985467, 518.1598062953994], 0, [77.4818401937041, 518.1598062953994], 0, true, 3, 2, 753.1234866828088, 59.27360774818362, 15, true, "Polyline", 7, 2, 0, false, 0, 3, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -2432.929782082325, -796.2227602905568, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -509.443099273607, -934.2372881355934, 0, 1], 2, 4, [2432.929782082325, 796.2227602905568], 0, [2492.2033898305085, 796.2227602905568], 0, [2492.2033898305085, 1549.3462469733656], 0, [2432.929782082325, 1549.3462469733656], 0, true, 0, 3, 0, 0, 0, [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, -187.63269733656165, 1368.7232154963667, 934.2372881355934, 1], 2, 892.2196473551638, 120.58111380145328, 5, true, "Polyline", 7, 2, 0, false, 0, 2, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -479.4188861985467, -851.4740554156175, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1080.8513927092404, -1702.9481108312348, -25.999999999999993, 1], 2, 4, [600, 851.4740554156175], 0, [600, 1743.6937027707813], 0, [479.4188861985467, 1743.6937027707806], 0, [479.4188861985467, 851.4740554156178], 0, true, 0, 3, 0, 0, 0, [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, -174.6326973365616, 1338.6990024213064, 851.4740554156175, 1], 2, 1043.0992736077485, 77.4818401937041, 5, true, "Polyline", 7, 2, 0, false, 0, 1, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -742.8571428571431, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -200.48426150121168, -742.8571428571431, 0, 1], 2, 4, [0, 1785.9564164648916], 0, [0, 742.8571428571431], 0, [77.4818401937041, 742.8571428571433], 0, [77.4818401937041, 1785.9564164648914], 0, true, 0, 3, 0, 0, 0, [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, -187.63269733656165, 859.2801162227601, 742.8571428571431, 1], 3, 0, 0, 0, 6, 1, "左侧板", "主卧", "下柜", "", "", "", 0, 0, "三合一", 2, 0, "1", "1", "1", "1", "", "", "", 8, "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", true, true, 0, 0, 0, 0, 0, "Board", 7, 2, 118, false, 1, 2, 0, [0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 730.8027935725294, 859.2801162227601, 991, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 730.8027935725294, 859.2801162227601, 991, 1], 2, 1164, 600, 18, true, "Polyline", 7, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 2, 4, [0, 0], 0, [600, 0], 0, [600, 1164], 0, [0, 1164], 0, true, 0, 3, 0, 0, 0, 6, 0, "层板", "主卧", "下柜", "", "", "", 0, 1, "三合一", 2, 0, "1", "1", "1", "1", "", "", "", 4, "三合一", "三合一", "三合一", "三合一", true, true, 0, 0, 0, 0, 0], "basePt": { "x": -433.19720642747063, "y": 859.2801162227601, "z": 0 } }; { let [br0, br1] = LoadBoardsFromFileData(d) as Board[]; let splitBrs = CuttingBoard(br0, [br1]); splitBrs.push(br0); for (let b of splitBrs) { expect(b.Width).toMatchNumberSnapshot(); expect(b.Height).toMatchNumberSnapshot(); expect(b.Thickness).toMatchNumberSnapshot(); } } { let [br1, br0] = LoadBoardsFromFileData(d) as Board[]; let splitBrs = CuttingBoard(br0, [br1]); splitBrs.push(br0); for (let b of splitBrs) { expect(b.Width).toMatchNumberSnapshot(); expect(b.Height).toMatchNumberSnapshot(); expect(b.Thickness).toMatchNumberSnapshot(); } } }); test("切圆环", () => { let d = { "file": [4, "Board", 7, 2, 107, false, 1, 7, 0, [0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 2545.8169491525423, -211.4460048426149, 1345.2784503631965, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2545.8169491525423, -211.4460048426149, 1345.2784503631965, 1], 2, 1977.2745762711866, 1977.2745762711866, 18, false, "Circle", 7, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 988.6372881355933, 988.6372881355933, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 434.9005129888785, 2508.6683465342476, 0, 1], 1, 988.6372881355933, 1, 2, 1393.2550112821252, 1393.2550112821252, 18, false, "Circle", 7, 2, 0, false, 1, 1, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 696.6275056410626, 696.6275056410626, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -292.00978249453067, -292.00978249453067, 0, 1], 1, 696.6275056410626, 0, 3, 0, 0, 0, [0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 2253.8071666580117, 80.56377765191576, 1345.2784503631965, 1], 3, 0, 0, 0, 6, 0, "", "", "", "", "", "", 0, 0, "3", 2, 0, "1", "1", "1", "1", "", "", "", 1, "3", true, true, 0, 0, 0, 0, 0, "Board", 7, 2, 114, false, 1, 11, 0, [-0.8065356455357975, 0.5911854636915175, 0, 0, 0, 0, 1, 0, 0.5911854636915175, 0.8065356455357975, 0, 0, 1172.829921560505, 1147.9956519058364, 0, 1], 0, 0, true, [0.5911854636915175, 0.8065356455357975, 0, 0, -0.8065356455357975, 0.5911854636915175, 0, 0, 0, 0, 1, 0, 1172.829921560505, 1147.9956519058364, 0, 1], 2, 2000, 600, 18, true, "Polyline", 7, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 2, 4, [0, 0], 0, [600, 0], 0, [600, 2000], 0, [0, 2000], 0, true, 0, 3, 0, 0, 0, 6, 1, "左侧板", "主卧", "下柜", "", "", "", 0, 0, "三合一", 2, 0, "1", "1", "1", "1", "", "", "", 6, "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", true, true, 0, 0, 0, 0, 0, "Board", 7, 2, 115, false, 1, 11, 0, [-0.7071067811865476, -0.7071067811865475, 0, 0, 0, 0, 1, 0, -0.7071067811865475, 0.7071067811865476, 0, 0, 1132.9171192837023, 357.27673712009073, 0, 1], 0, 0, true, [-0.7071067811865475, 0.7071067811865476, 0, 0, -0.7071067811865476, -0.7071067811865475, 0, 0, 0, 0, 1, 0, 1132.9171192837023, 357.27673712009073, 0, 1], 2, 2000, 600, 18, true, "Polyline", 7, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 2, 4, [0, 0], 0, [600, 0], 0, [600, 2000], 0, [0, 2000], 0, true, 0, 3, 0, 0, 0, 6, 1, "左侧板", "主卧", "下柜", "", "", "", 0, 0, "三合一", 2, 0, "1", "1", "1", "1", "", "", "", 6, "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", true, true, 0, 0, 0, 0, 0, "Board", 7, 2, 113, false, 1, 11, 0, [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1916.2025276390448, 1180.3425932283467, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1916.2025276390448, 1180.3425932283467, 0, 1], 2, 2000, 600, 18, true, "Polyline", 7, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 2, 4, [0, 0], 0, [600, 0], 0, [600, 2000], 0, [0, 2000], 0, true, 0, 3, 0, 0, 0, 6, 1, "左侧板", "主卧", "下柜", "", "", "", 0, 0, "三合一", 2, 0, "1", "1", "1", "1", "", "", "", 6, "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", true, true, 0, 0, 0, 0, 0], "basePt": { "x": 568.5423728813557, "y": -211.4460048426149, "z": 0 } }; { let [br0, ...brs] = LoadBoardsFromFileData(d) as Board[]; let splitBrs = CuttingBoard(br0, brs); splitBrs.push(br0); for (let b of splitBrs) { expect(b.Width).toMatchNumberSnapshot(); expect(b.Height).toMatchNumberSnapshot(); expect(b.Thickness).toMatchNumberSnapshot(); } } }); test("切割", () => { let d = { "file": [2, "Board", 7, 2, 100, false, 1, 11, 0, [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1624.6499120550416, 1030.3324374148244, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1624.6499120550416, 1030.3324374148244, 0, 1], 2, 2000, 600, 18, true, "Polyline", 7, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 2, 4, [0, 0], 0, [600, 0], 0, [600, 2000], 0, [0, 2000], 0, true, 0, 3, 0, 0, 0, 6, 1, "左侧板", "主卧", "下柜", "", "", "", 0, 0, "三合一", 2, 0, "1", "1", "1", "1", "", "", "", 4, "三合一", "三合一", "三合一", "三合一", true, true, 0, 0, 0, 0, 0, "Board", 7, 2, 101, false, 1, 2, 0, [0.3355187862897868, 0.9420335153520963, 0, 0, -0.9420335153520963, 0.3355187862897868, 0, 0, 0, 0, 1, 0, 2660.789609274726, 831.017630464863, 991, 1], 0, 0, true, [0.9420335153520963, -0.3355187862897868, 0, 0, 0.3355187862897868, 0.9420335153520963, 0, 0, 0, 0, 1, 0, 2660.789609274726, 831.017630464863, 991, 1], 2, 1164, 600, 18, true, "Polyline", 7, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 2, 4, [0, 0], 0, [600, 0], 0, [600, 1164], 0, [0, 1164], 0, true, 0, 3, 0, 0, 0, 6, 0, "层板", "主卧", "下柜", "", "", "", 0, 1, "三合一", 2, 0, "1", "1", "1", "1", "", "", "", 4, "三合一", "三合一", "三合一", "三合一", true, true, 0, 0, 0, 0, 0], "basePt": { "x": 1564.2625974048858, "y": 831.017630464863, "z": 0 } }; { let [br0, br1] = LoadBoardsFromFileData(d) as Board[]; let splitBrs = CuttingBoard(br0, [br1]); splitBrs.push(br0); for (let b of splitBrs) { expect(b.Width).toMatchNumberSnapshot(); expect(b.Height).toMatchNumberSnapshot(); expect(b.Thickness).toMatchNumberSnapshot(); } } { let [br1, br0] = LoadBoardsFromFileData(d) as Board[]; let splitBrs = CuttingBoard(br0, [br1]); splitBrs.push(br0); for (let b of splitBrs) { expect(b.Width).toMatchNumberSnapshot(); expect(b.Height).toMatchNumberSnapshot(); expect(b.Thickness).toMatchNumberSnapshot(); } } });