From cd1ea12635fff182e5b757ae4fca8786b492e3ea Mon Sep 17 00:00:00 2001 From: ZoeLeeFZ Date: Wed, 20 Jan 2021 17:38:59 +0800 Subject: [PATCH] =?UTF-8?q?!1393=20=E4=BC=98=E5=8C=96:=E8=B5=B0=E5=88=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../FeedingToolPath/FeedingToolPath.test.ts | 44 +- .../FeedingToolPath.test.ts.snap | 402 ++++++------------ src/DatabaseServices/Shape.ts | 4 +- .../ToolPath/FeedingToolPath.ts | 49 +-- 4 files changed, 148 insertions(+), 351 deletions(-) diff --git a/__test__/FeedingToolPath/FeedingToolPath.test.ts b/__test__/FeedingToolPath/FeedingToolPath.test.ts index 6d14461c6..346321fe5 100644 --- a/__test__/FeedingToolPath/FeedingToolPath.test.ts +++ b/__test__/FeedingToolPath/FeedingToolPath.test.ts @@ -5,17 +5,12 @@ import "../Utils/jest.util"; function testPathCount(br: Board, count?: number) { - let holeCount = 0; - for (let model of br.BoardModeling) - { - holeCount += model.shape.Holes.length; - } let cus = feedUtil.TestCalcPath(br); if (count !== undefined) expect(cus.length).toBe(count); else - expect(cus.length).toBeGreaterThan(2); - let pathCount = cus.length - 1 - holeCount - br.BoardModeling.length; + expect(cus.length).toBeGreaterThan(0); + let pathCount = cus.length; expect(pathCount < 0 ? 0 : pathCount).toMatchSnapshot("走刀数量"); for (let cu of cus) { @@ -50,25 +45,25 @@ test("极限刀半径", () => let data = [1, "Board", 2, 1, 0, false, 7, 0, [0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, -657.7056127057733, -888.0170782475586, 0, 1], 0, 1, 1200, 600, 18, true, "Polyline", 2, 1, 0, false, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 0, 2, 4, [0, 0], 0, [600, 0], 0, [600, 1200], 0, [0, 1200], 0, true, 1, 1, 560, 310, 15, false, "Polyline", 2, 1, 0, false, 1, 0, [0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 533.9316239316239, 40.76923076923083, 0, 1], 0, 2, 8, [-269.2307692307692, -223.9316239316239], 0, [-209.23076923076923, -223.9316239316239], 0, [-209.2307692307692, -473.9316239316239], 0, [40.7692307692308, -473.9316239316239], 0, [40.76923076923081, -533.9316239316239], 0, [-519.2307692307692, -533.9316239316238], 0, [-519.2307692307692, -473.9316239316238], 0, [-269.23076923076917, -473.9316239316238], 0, true, 0, 30, 0, [0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, -990.7928086301262, -752.1719826564371, 0, 1], null, null, 1, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], null, "", "{\"roomName\":\"\",\"cabinetName\":\"\",\"boardName\":\"\",\"material\":\"\",\"color\":\"\",\"lines\":0,\"bigHoleDir\":0,\"drillType\":\"three\",\"composingFace\":2,\"highSealed\":[],\"sealedUp\":\"1\",\"sealedDown\":\"1\",\"sealedLeft\":\"1\",\"sealedRight\":\"1\",\"knifeRad\":\"0\",\"grooveAddLength\":\"0\",\"grooveAddWidth\":\"0\",\"grooveAddDepth\":\"0\",\"spliteHeight\":\"\",\"spliteWidth\":\"\",\"spliteThickness\":\"\"}", 0]; let brs = LoadBoardsFromFileData(data); - testPathCount(brs[0], 3); + testPathCount(brs[0], 1); data = [1, "Board", 2, 1, 0, false, 7, 0, [0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, -663.8732094729834, -1836.8490686954794, 0, 1], 0, 1, 1200, 600, 18, true, "Polyline", 2, 1, 0, false, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 0, 2, 4, [0, 0], 0, [600, 0], 0, [600, 1200], 0, [0, 1200], 0, true, 1, 1, 746.2524018100552, 30, 18, false, "Polyline", 2, 1, 0, false, 2, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1480.7590848806103, 719.3699285130117, 0, 1], 0, 2, 4, [-1450.7590848806103, 26.7131494779253], 0, [-1450.7590848806103, -719.3699285130117], 0, [-1480.7590848806103, -719.3699285130117], 0, [-1480.7590848806103, 26.88247329704346], 0, true, 0, 15, 0, [0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, -864.4413047383622, -1532.97311226155, 0, 1], null, null, 1, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], null, "", "{\"roomName\":\"\",\"cabinetName\":\"\",\"boardName\":\"\",\"material\":\"\",\"color\":\"\",\"lines\":0,\"bigHoleDir\":0,\"drillType\":\"three\",\"composingFace\":2,\"highSealed\":[],\"sealedUp\":\"1\",\"sealedDown\":\"1\",\"sealedLeft\":\"1\",\"sealedRight\":\"1\",\"knifeRad\":\"0\",\"grooveAddLength\":\"0\",\"grooveAddWidth\":\"0\",\"grooveAddDepth\":\"0\",\"spliteHeight\":\"\",\"spliteWidth\":\"\",\"spliteThickness\":\"\"}", 0]; brs = LoadBoardsFromFileData(data); - testPathCount(brs[0], 3); + testPathCount(brs[0], 1); data = [1, "Board", 2, 1, 0, false, 7, 0, [0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, -1045.5289925195948, 676.3547294712749, 0, 1], 0, 1, 1200, 600, 18, true, "Polyline", 2, 1, 0, false, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 0, 2, 4, [0, 0], 0, [600, 0], 0, [600, 1200], 0, [0, 1200], 0, true, 1, 1, 795.8575198929175, 511.55082631160246, 20, false, "Polyline", 2, 1, 0, false, 3, 0, [0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, -119.65811965811962, 526.6267506621481, 0, 1], 0, 2, 8, [-269.2307692307692, 119.65811965811966], 0, [-269.23076923076945, 631.2089459697221], 0, [526.6267506621481, 631.2089459697221], 0, [526.6267506621481, 119.65811965811963], 0, [466.6267506621481, 119.65811965811962], 0, [466.62675066214797, 571.2089459697221], 0, [-209.2307692307695, 571.2089459697221], 0, [-209.23076923076923, 119.65811965811966], 0, true, 0, 30, 0, [0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, -1252.7209932983192, 706.2274154410178, 0, 1], null, null, 1, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], null, "", "{\"roomName\":\"\",\"cabinetName\":\"\",\"boardName\":\"\",\"material\":\"\",\"color\":\"\",\"lines\":0,\"bigHoleDir\":0,\"drillType\":\"three\",\"composingFace\":2,\"highSealed\":[],\"sealedUp\":\"1\",\"sealedDown\":\"1\",\"sealedLeft\":\"1\",\"sealedRight\":\"1\",\"knifeRad\":\"0\",\"grooveAddLength\":\"0\",\"grooveAddWidth\":\"0\",\"grooveAddDepth\":\"0\",\"spliteHeight\":\"\",\"spliteWidth\":\"\",\"spliteThickness\":\"\"}", 0]; brs = LoadBoardsFromFileData(data); - testPathCount(brs[0], 3); + testPathCount(brs[0], 1); data = [1, "Board", 5, 2, 103, false, 1, 7, 0, [0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, -2464.8536219638777, -3019.7114880500603, 0, 1], 0, 0, 2, 1200, 600, 18, true, "Polyline", 5, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 0, 0, 2, 4, [0, 0], 0, [600, 0], 0, [600, 1200], 0, [0, 1200], 0, true, 1, 2, 400.00000000000006, 120, 18, false, "Polyline", 5, 2, 0, false, 0, 1, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -229.66939762350881, -293.05345437892123, 0, 1], 0, 0, 2, 6, [229.66939762350881, 293.05345437892123], 0, [349.6693976235088, 293.05345437892123], 0, [349.6693976235088, 493.05345437892123], 0, [289.6693976235088, 493.05345437892123], 0, [289.6693976235088, 693.0534543789213], 0, [229.66939762350881, 693.0534543789213], 0, true, 0, 30, 0, 0, 0, [0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, -2757.907076342799, -2790.0420904265516, 0, 1], null, null, 0, 0, 5, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1761.6637493564908, 12.017858403159153, 0, 1], null, "", "", "", "", "", "", 0, 0, "三合一", 2, 0, "1", "1", "1", "1", "", "", "", 4, "三合一", "三合一", "三合一", "三合一", true, true, 0, 0, 0, 0, 0]; brs = LoadBoardsFromFileData(data); - testPathCount(brs[0], 3); + testPathCount(brs[0], 1); data = [1, "Board", 2, 1, 0, false, 7, 0, [0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, -723.8046937091931, -4479.271007572378, 0, 1], 0, 1, 1200, 600, 18, true, "Polyline", 2, 1, 0, false, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 0, 2, 4, [0, 0], 0, [600, 0], 0, [600, 1200], 0, [0, 1200], 0, true, 1, 1, 300, 150, 18, false, "Polyline", 2, 1, 0, false, 1, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4161.700851750289, 687.1968681241217, 0, 1], 0, 2, 6, [-4011.700851750289, -387.1968681241217], 0, [-4011.700851750289, -687.1968681241217], 0, [-4161.700851750289, -687.1968681241217], 0, [-4161.700851750289, -657.1968681241217], 0, [-4041.700851750289, -657.1968681241217], 0, [-4041.700851750289, -387.1968681241217], 0, true, 0, 15, 0, [0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, -1161.9583753881263, -4220.095227861202, 0, 1], null, null, 1, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], null, "", "{\"roomName\":\"\",\"cabinetName\":\"\",\"boardName\":\"\",\"material\":\"\",\"color\":\"\",\"lines\":0,\"bigHoleDir\":0,\"drillType\":\"three\",\"composingFace\":2,\"highSealed\":[],\"sealedUp\":\"1\",\"sealedDown\":\"1\",\"sealedLeft\":\"1\",\"sealedRight\":\"1\",\"knifeRad\":\"0\",\"grooveAddLength\":\"0\",\"grooveAddWidth\":\"0\",\"grooveAddDepth\":\"0\",\"spliteHeight\":\"\",\"spliteWidth\":\"\",\"spliteThickness\":\"\"}", 0]; brs = LoadBoardsFromFileData(data); - testPathCount(brs[0]); + testPathCount(brs[0], 1); }); @@ -109,14 +104,14 @@ test("造型的外框和内框厚度小于刀半径厚度", () => let data = [1, "Board", 3, 2, 101, false, 1, 11, 0, [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 26851.321807232103, -1144.6658743078003, 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, 416.58619999999996, 325.1405, 5, true, "Polyline", 3, 2, 0, false, 0, 1, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1187.5114150409554, -619.5823942857144, 0, 1], 2, 4, [1187.5114150409554, 619.5823942857144], 0, [1512.6519150409554, 619.5823942857144], 0, [1512.6519150409554, 1036.1685942857143], 0, [1187.5114150409554, 1036.1685942857143], 0, true, 1, 2, 408.58619999999996, 317.1405, 5, true, "Polyline", 3, 2, 0, false, 0, 1, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1191.5114150409554, -623.5823942857144, 0, 1], 2, 4, [1508.6519150409554, 1032.1685942857143], 0, [1191.5114150409554, 1032.1685942857143], 0, [1191.5114150409554, 623.5823942857144], 0, [1508.6519150409554, 623.5823942857144], 0, true, 0, 3, 0, 0, 0, [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 26864.321807232103, -1017.7520587975966, 453.37831265306136, 1], 3, 0, 0, 0, [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 26864.321807232103, -1021.7520587975966, 449.37831265306136, 1], 3, 0, 0, 0, 2, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -537.1188495066017, 139.8723180005327, 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\":[]}", 0, 0]; let brs = LoadBoardsFromFileData(data); - testPathCount(brs[0], 1); + testPathCount(brs[0], 0); }); test("造型的外框和内框厚度等于刀直径", () => { let data = [1, "Board", 3, 2, 118, false, 1, 11, 0, [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 25702.129700607577, -1144.6658743078003, 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, 416.58619999999996, 325.1405, 5, true, "Polyline", 3, 2, 0, false, 0, 1, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1187.5114150409554, -619.5823942857144, 0, 1], 2, 4, [1187.5114150409554, 619.5823942857144], 0, [1512.6519150409554, 619.5823942857144], 0, [1512.6519150409554, 1036.1685942857143], 0, [1187.5114150409554, 1036.1685942857143], 0, true, 1, 2, 404.58619999999996, 313.1405, 5, true, "Polyline", 3, 2, 0, false, 0, 1, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1193.5114150409554, -625.5823942857144, 0, 1], 2, 4, [1506.6519150409554, 1030.1685942857143], 0, [1193.5114150409554, 1030.1685942857143], 0, [1193.5114150409554, 625.5823942857144], 0, [1506.6519150409554, 625.5823942857144], 0, true, 0, 3, 0, 0, 0, [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 25715.129700607577, -1015.7520587975966, 455.37831265306136, 1], 3, 0, 0, 0, [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 25715.129700607577, -1021.7520587975966, 449.37831265306136, 1], 3, 0, 0, 0, 2, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1686.3109561311285, 139.8723180005327, 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]; let brs = LoadBoardsFromFileData(data); - testPathCount(brs[0], 4); + testPathCount(brs[0], 1); }); test("#IYX1P", () => @@ -124,7 +119,7 @@ test("#IYX1P", () => let data = [1, "Board", 5, 2, 101, false, 1, 11, 0, [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 25627.96702118174, -1046.5797499058865, 0, 1], 0, 0, 2, 1200, 600, 18, true, "Polyline", 5, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 0, 0, 2, 4, [0, 0], 0, [600, 0], 0, [600, 1200], 0, [0, 1200], 0, true, 1, 2, 416.58619999999996, 325.1405, 5, true, "Polyline", 5, 2, 0, false, 0, 1, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1187.5114150409554, -619.5823942857144, 0, 1], 0, 0, 2, 4, [1187.5114150409554, 619.5823942857144], 0, [1512.6519150409554, 619.5823942857144], 0, [1512.6519150409554, 1036.1685942857143], 0, [1187.5114150409554, 1036.1685942857143], 0, true, 1, 2, 404.58619999999996, 313.1405, 5, false, "Polyline", 5, 2, 0, false, 0, 1, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1193.5114150409554, -625.5823942857144, 0, 1], 0, 0, 2, 4, [1444.8769130439057, 968.3935922886646], 0, [1193.5114150409554, 1030.1685942857143], 0, [1193.5114150409554, 625.5823942857144], 0, [1506.6519150409554, 625.5823942857144], 0, true, 0, 3, 0, 0, 0, [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 25640.96702118174, -917.6659343956826, 455.37831265306136, 1], 3, 0, 0, 0, [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 25640.96702118174, -923.6659343956826, 449.37831265306136, 1], 3, 0, 0, 0, 3, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1686.3109561311285, 160.2072462301978, 0, 1], 1, "左侧板", "", "", "", "", "", 0, 0, "three", 2, 0, "1", "1", "1", "1", "", "", "", 6, "three", "three", "three", "three", "three", "three", true, true, 0, 0]; let brs = LoadBoardsFromFileData(data); - testPathCount(brs[0], 7); + testPathCount(brs[0], 4); }); test("极限刀半径#I11UDE", () => @@ -132,7 +127,7 @@ test("极限刀半径#I11UDE", () => let data = [1, "Board", 5, 2, 101, false, 1, 2, 0, [0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, -2274.8106081003034, 1049.489754699042, 0, 1], 0, 0, 2, 1500, 996.4248716877983, 18, true, "Polyline", 5, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 396.42487168779826, 0, 0, 1], 0, 0, 2, 4, [-396.42487168779826, 0], 0, [600, 0], 0, [600, 1500], 0, [-396.42487168779826, 1500], 0, true, 1, 2, 613.5945382529881, 504.5731587306118, 12, false, "Polyline", 5, 2, 0, false, 0, 1, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -286.0137526959925, -382.0303425189268, 0, 1], 0, 0, 2, 12, [656.1445063338533, 607.3988458450913], 0, [763.0711684959024, 607.3988458450913], 0, [763.0711684959024, 995.6248807719148], 0, [476.8367190159561, 995.6248807719148], 0, [476.8367190159561, 794.9317610216076], 0, [286.0137526959925, 794.9317610216076], 0, [286.0137526959925, 382.0303425189268], 0, [656.1445063338533, 382.0303425189268], 0, [656.1445063338533, 519.394335722528], 0, [790.5869114266043, 519.394335722528], 0, [790.5869114266043, 525.394335722528], 0, [656.1445063338533, 525.394335722528], 0, true, 1, 2, 601.5945382529881, 465.0574157999099, 12, false, "Polyline", 5, 2, 0, false, 0, 1, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -292.0137526959925, -388.0303425189268, 0, 1], 0, 0, 2, 12, [650.1445063338533, 525.394335722528], 0, [650.1445063338533, 613.3988458450913], 0, [757.0711684959024, 613.3988458450913], 0, [757.0711684959024, 989.6248807719148], 0, [482.8367190159561, 989.6248807719148], 0, [482.8367190159561, 788.9317610216076], 0, [292.0137526959925, 788.9317610216076], 0, [292.0137526959925, 388.0303425189268], 0, [650.1445063338533, 388.0303425189268], 0, [650.1445063338533, 519.394335722528], 0, [507.05781142660453, 519.394335722528], 0, [507.05781142660453, 525.394335722528], 0, true, 0, 3, 0, 0, 0, [0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, -2662.84095061923, 1341.5035073950344, 6, 1], 3, 0, 0, 0, [0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, -2656.84095061923, 1335.5035073950344, 6, 1], 3, 0, 0, 0, 5, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -2274.8106081003034, 1049.489754699042, 0, 1], 0, "底板", "主卧", "下柜", "", "", "", 0, 1, "三合一", 2, 0, "1", "1", "1", "1", "", "", "", 4, "三合一", "三合一", "三合一", "三合一", true, true, 0, 0, 0, 0, 0]; let brs = LoadBoardsFromFileData(data); - testPathCount(brs[0], 5); + testPathCount(brs[0], 2); }); test("复杂造型01", () => @@ -140,7 +135,7 @@ test("复杂造型01", () => let data = [1, "Board", 5, 2, 1702, false, 1, 2, 0, [0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 1335.7682619647353, 173.551637279597, 0, 1], 0, 0, 2, 1200, 600, 18, true, "Polyline", 5, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 0, 0, 2, 4, [0, 0], 0, [600, 0], 0, [600, 1200], 0, [0, 1200], 0, true, 1, 2, 1036.2015113350126, 440.4613267262604, 10, false, "Polyline", 5, 2, 0, false, 0, 2, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 361.54936893772503, 969.0075566750625, 0, 1], 0, 0, 2, 33, [0, 67.19395465995012], 0, [-310.0352644836272, 67.19395465995012], -0.5981144268442652, [-286.17264943072985, -164.2679339848869], 0.7207592200561973, [-277.08949795465924, -385.7570892090673], 0, [-237.96207621158624, -301.21391008564115], 0, [-211.41132574307244, -520.6069534307294], 0, [-274.2946821158684, -469.60156437279466], 0, [-351.85082164231676, -629.6047711435754], 0, [-232.3724445340044, -591.1760533602005], 0, [-183.46316735516308, -735.1090690579331], 0, [-155.51500896725372, -663.1425612090666], 0, [-171.58520004030163, -863.6705976423159], 0, [-257.52578708312274, -751.8779640906787], 0, [-257.52578708312274, -890.2213481108301], 0, [-310.0352644836272, -905.4214599899233], 0, [-310.0352644836272, -969.0075566750625], 0, [0, -969.0075566750625], 0, [0, -957.9240668043744], -0.9999999999999999, [0, -864.5645981830307], 0, [0, -843.3902891140606], -0.9999999999999999, [0, -700.891826754957], 0, [0, -684.906801007558], 0.9999999999999999, [0, -583.5264483627197], 0, [0, -579.9195144635983], 0.9999999999999999, [0, -422.09559888652757], 0, [0, -409.0723084849551], -0.9999999999999999, [0, -312.3785731271355], 0, [0, -301.4871765134408], 0.9999999999999999, [0, -243.13750862509778], 0, [0, -223.97984886649738], -1.2314232880459324, [0, -77.80352644836466], 0, [0, -58.23046517367129], 0.9999999999999999, [0, 58.230465173671746], 0, true, 5, 2, 20.05062061227784, 15.41391459568868, 10, false, "Polyline", 5, 2, 0, false, 0, 2, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 207.52578708312274, 919.0075566750625, 0, 1], 0, 0, 2, 3, [-207.52578708312274, -898.9569360627846], 0, [-207.52578708312274, -919.0075566750625], 0, [-192.11187248743406, -919.0075566750625], 0, true, 0, 3, 3, 0, 0, [0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 1203.380352644835, 439.26514490680165, 8, 1], 2, 114.03848323053074, 43.29850598181545, 10, false, "Polyline", 5, 2, 0, false, 0, 2, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 125.8595682183174, 146.86649874055365, 0, 1], 0, 0, 2, 4, [-125.85956821831739, -146.86649874055365], 0, [-96.36754317036441, -146.86649874055365], -0.15820638151829505, [-82.56106223650193, -88.79778749503191], -0.13776363653390294, [-116.72059569461629, -32.828015510022965], 0, true, 0, 3, 3, 0, 0, [0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 1203.380352644835, 520.931363771607, 8, 1], 2, 118.14017720514198, 67.669551962062, 10, false, "Polyline", 5, 2, 0, false, 0, 2, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 311.54936893772503, 313.09561944640836, 0, 1], 0, 0, 2, 3, [-264.0938145218924, -209.53632699236087], 0.5176782102931564, [-298.55626262432344, -313.0956194464084], 0, [-243.879816975663, -194.95544224126644], -0.03426656432289884, true, 0, 3, 3, 0, 0, [0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 597.468415416181, 335.24156305219935, 8, 1], 2, 311.0762540509527, 138.91482988296556, 10, false, "Polyline", 5, 2, 0, false, 0, 2, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 110.00287209443024, 360.4181251057296, 0, 1], 0, 0, 2, 10, [-110.00287209443022, -360.4181251057296], -0.19710641679675492, [-42.513452087941566, -297.8639440751849], -0.25973952118910953, [-1.4337638048816683e-14, -274.1813602015127], 0.9999999999999999, [-2.0291827599733876e-14, -272.80100755667445], -0.41421356237309503, [-50.00000000000001, -222.80100755667445], 0, [-50.00000000000001, -219.19407365755296], -0.4142135623730949, [-2.6627322557224985e-14, -169.19407365755296], 0.9999999999999999, [-8.147194749383032e-15, -111.37015808048227], -0.25068130041493886, [-41.59378759840299, -89.11825410919994], -0.1533204796260371, [-85.07341619487701, -49.3418710547769], 0, true, 0, 3, 3, 0, 0, [0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 1005.5163618815475, 536.7880598954941, 8, 1], 2, 552.028541756849, 213.97641288072498, 10, false, "Polyline", 5, 2, 0, false, 0, 2, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 205.74594770705346, 534.8345870968991, 0, 1], 0, 0, 2, 9, [-28.565797815870887, 17.193954659949895], 0, [-193.0890787464058, 17.193954659949938], -0.24599915427853017, [-205.74594770705346, -151.24849135105575], 0, [-159.32470045118714, -534.8345870968991], 0, [-97.2910102382385, -375.09783479855645], -0.3264242677950859, [-43.25358703282456, -272.40084858481384], -0.805868213007247, [-40.3917540832408, -28.76003589144016], -0.23954788447860403, [-1.5119119245645884e-15, -8.230465173671519], 0.9999999999999999, [5.039706415215297e-16, 8.230465173671519], -0.15320924855818352, true, 0, 3, 3, 0, 0, [0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 819.2073830666715, 441.0449842828709, 8, 1], 3, 0, 0, 0, [0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 1253.380352644835, 285.24156305219935, 8, 1], 3, 3, 0, 0, 5, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1335.7682619647353, 173.551637279597, 0, 1], 0, "层板", "", "", "", "", "", 0, 0, "三合一", 2, 0, "1", "1", "1", "1", "", "", "", 4, "三合一", "三合一", "三合一", "三合一", true, true, 0, 0, 0, 0, 0]; let brs = LoadBoardsFromFileData(data); - testPathCount(brs[0], 23); + testPathCount(brs[0], 16); }); test("超级复杂造型01", () => @@ -156,7 +151,7 @@ test("#I1MUQD", () => let data = { "file": [1, "Board", 8, 2, 100, false, 1, 7, 0, [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, -467.31234866828163, 18, -238.49878934602498, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -467.31234866828163, 18, -238.49878934602498, 1], 0, 3, 2430, 831, 18, true, "Polyline", 8, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 836, 0, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0, 0, -5680.316507397597, -177.89800995069288, 0, 1], 0, 2, 4, [-5, 0], 0, [-5, 2430], 0, [-836, 2430], 0, [-836, 0], 0, true, 1, 3, 2210, 631, 5, true, "Polyline", 8, 2, 0, false, 0, 1, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -5780.316507397597, -297.8980099506929, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -5780.316507397597, -297.8980099506929, 0, 1], 0, 2, 4, [5780.316507397597, 297.8980099506929], 0, [6411.316507397597, 297.8980099506929], 0, [6411.316507397597, 2507.898009950693], 0, [5780.316507397597, 2507.898009950693], 0, true, 3, 3, 2204, 625.0000000000009, 5, false, "Polyline", 8, 2, 0, false, 0, 1, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -5783.316507397596, -300.8980099506929, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -5783.316507397596, -300.8980099506929, 0, 1], 0, 2, 12, [5783.316507397596, 2204.5970149255954], 0, [5926.316507397597, 2204.5970149255954], 0, [5926.316507397597, 606.5970149255957], 0, [5783.316507397597, 606.5970149255954], 0, [5783.316507397597, 300.8980099506929], 0, [6408.316507397597, 300.898009950693], 0, [6408.316507397597, 606.5970149255954], 0, [6265.316507397597, 606.5970149255953], 0, [6265.316507397597, 2204.5970149255954], 0, [6408.316507397597, 2204.5970149255954], 0, [6408.316507397597, 2504.898009950693], 0, [5783.316507397597, 2504.898009950693], 0, true, 0, 3, 0, 0, 0, 0, 0, [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, -364.31234866828163, 5, -115.49878934602498, 1], 3, 1592, 140.0000000000009, 5, true, "Polyline", 8, 2, 0, false, 0, 1, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -5783.316507397596, -609.5970149255954, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -5783.316507397596, -609.5970149255954, 0, 1], 0, 2, 4, [5783.316507397596, 2201.5970149255954], 0, [5783.316507397597, 609.5970149255954], 0, [5923.316507397597, 609.5970149255957], 0, [5923.316507397597, 2201.5970149255954], 0, true, 0, 3, 0, 0, 0, 0, 0, [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, -364.31234866828163, 5, 193.20021562887757, 1], 3, 1592, 140, 5, true, "Polyline", 8, 2, 0, false, 0, 1, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -6273.316507397597, -609.5970149255954, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0, 0, -6273.316507397597, -609.5970149255954, 0, 1], 0, 2, 4, [6413.316507397597, 609.5970149255954], 0, [6413.316507397597, 2201.5970149255954], 0, [6273.316507397597, 2201.5970149255954], 0, [6273.316507397597, 609.5970149255954], 0, true, 0, 3, 0, 0, 0, 0, 0, [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 120.68765133171837, 5, 193.20021562887757, 1], 1.5, 0, 0, 0, 0, 0, [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, -367.31234866828163, 5, -118.49878934602498, 1], 3, 0, 0, 0, 0, 0, 9, 2, "背板", "", "", "18厘SL天使白", "多层", "天使白", 0, 0, "三合一", 0, 0, "1", "1", "1", "1", "", "", "", 4, "三合一", "三合一", "三合一", "三合一", true, true, 0, 0, 0, 0, 0, 0, 0, 0, true], "basePt": { "x": -467.31234866828163, "y": 0, "z": -238.49878934602498 }, "ucs": [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1] }; let brs = LoadBoardsFromFileData(data); - testPathCount(brs[0], 8); + testPathCount(brs[0], 3); }); test("日字加工", () => @@ -164,7 +159,7 @@ test("日字加工", () => let data = { "file": [1, "Board", 8, 2, 686, false, 1, 11, 0, [-0.999997439714021, -0.0022628666339358583, 0, 0, 0, 0, 1, 0, -0.0022628666339358583, 0.999997439714021, 0, 0, 431.23731244072155, 1126.9116927510254, 0, 1], 0, 0, true, [-0.0022628666339358583, 0.999997439714021, 0, 0, -0.999997439714021, -0.0022628666339358583, 0, 0, 0, 0, 1, 0, 442.24629054531874, 1126.9366046640337, 0, 1], 0, 3, 432.00000000000006, 206.21628154156102, 18, true, "Polyline", 8, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -11.009006290800926, 432, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -11.009006290800926, 2.2737367544323206e-13, 0, 1], 0, 2, 4, [217.22528783236191, -432], 0, [217.22528783236191, 5.684341886080802e-14], 0, [11.009006290800892, 0], 0, [11.009006290800892, -432], 0, true, 1, 3, 21.459983999999963, 40.381175249996886, 1.8, false, "Polyline", 8, 2, 0, false, 0, 1, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -245.01875510359605, 301.84343598133, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -245.0187551035961, 301.84343598133, 32.40000000000006, 1], 0, 2, 44, [285.0646181035918, -284.11978848133003], 0, [282.83718672859686, -282.58693248133], 0, [280.60975535359466, -281.05407648133007], 0, [279.6756712285933, -282.27557110633006], 0, [278.7415871035919, -283.49706573132994], 0, [263.96389722859385, -283.49706573132994], 0, [249.18620735359218, -283.49706573132994], 0, [247.10248122859048, -281.94025885633005], 0, [245.01875510359605, -280.38345198133004], 0, [245.16246035358927, -283.59286923133004], 0, [245.2103621035858, -287.08969698132995], 0, [245.2103621035858, -291.28110010633], 0, [245.2103621035858, -295.47250323132994], 0, [245.138509478591, -298.13105035633], 0, [245.06665685359258, -300.78959748133], 0, [245.17443579109022, -301.57997635633], 0, [245.49777260359042, -301.84343598133], 0, [246.10851991609525, -301.69973073133], 0, [247.07853035359585, -301.26861498133], 0, [247.97668816609075, -300.53811329383], 0, [248.27607410358905, -299.59205373133005], 0, [248.27607410358905, -299.30464323133003], 0, [248.27607410358905, -299.01723273133], 0, [263.96389722859385, -299.01723273133], 0, [279.65172035359865, -299.01723273133], 0, [279.65172035359865, -299.73575898133004], 0, [279.65172035359865, -300.45428523133], 0, [279.7714747285936, -301.49614829383], 0, [280.1307378535894, -301.84343598133], 0, [280.7893869160944, -301.71170616883006], 0, [281.80729910359514, -301.31651673133], 0, [282.74138322859653, -300.63391679383005], 0, [283.05274460359215, -299.73575898133004], 0, [282.9808919785937, -298.4663626063301], 0, [282.90903935359165, -297.19696623133], 0, [282.801260416094, -295.66411023133], 0, [282.7653341035875, -294.13125423133], 0, [282.7653341035875, -290.27516335633004], 0, [282.7653341035875, -286.41907248133003], 0, [283.86707435359494, -285.70054623133], 0, [284.9688146035951, -284.98201998133004], 0, [285.29215141609166, -284.73053579383003], 0, [285.39993035359294, -284.55090423133004], 0, [285.31610229109356, -284.34732179383], 0, true, 2, 3, 5.84401349999996, 31.375646250009595, 1.8, true, "Polyline", 8, 2, 0, false, 1, 1, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -248.27607410358905, 290.5386229813299, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -248.2760741035891, 290.5386229813299, 32.40000000000007, 1], 0, 2, 4, [279.65172035359865, -290.5386229813299], 0, [279.65172035359865, -284.69460948132996], 0, [248.27607410358905, -284.69460948132996], 0, [248.27607410358905, -290.5386229813299], 0, true, 0, 3, 0, 0, 0, 0, 0, [-0.999997439714021, -0.0022628666339358583, 0, 0, 0, 0, 1, 0, -0.0022628666339358583, 0.999997439714021, 0, 0, 346.4066151822023, 1142.9197731819293, 191.98120133753412, 1], 3, 6.083522250000101, 31.375646250009595, 1.8, true, "Polyline", 8, 2, 0, false, 1, 1, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -248.27607410358905, 297.81968898133005, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -248.2760741035891, 297.81968898133005, 32.40000000000007, 1], 0, 2, 4, [279.65172035359865, -297.81968898133005], 0, [279.65172035359865, -291.73616673132994], 0, [248.27607410358905, -291.73616673132994], 0, [248.27607410358905, -297.81968898133005], 0, true, 0, 3, 0, 0, 0, 0, 0, [-0.999997439714021, -0.0022628666339358583, 0, 0, 0, 0, 1, 0, -0.0022628666339358583, 0.999997439714021, 0, 0, 346.4066151822023, 1142.9197731819293, 184.700135337534, 1], 1, 0, 0, 0, 0, 0, [-0.999997439714021, -0.0022628666339358583, 0, 0, 0, 0, 1, 0, -0.0022628666339358583, 0.999997439714021, 0, 0, 349.66392584252543, 1142.9271440604105, 180.67638833753404, 1], 3, 0, 0, 0, 0, 0, 9, 1, "右侧板", "主卧", "下柜", "", "", "", 0, 0, "拉米诺", 2, 0, "1", "1", "1", "1", "", "", "", 4, "拉米诺", "拉米诺", "拉米诺", "拉米诺", true, true, 0, 0, 0, 0, 0, 0, 0, 0, true], "basePt": { "x": 224.98082727240399, "y": 1126.4450528081506, "z": 0 }, "ucs": [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] }; let brs = LoadBoardsFromFileData(data); - testPathCount(brs[0], 7); + testPathCount(brs[0], 3); }); test("孔轮廓比外轮廓大", () => { @@ -178,12 +173,19 @@ test("门字部分", () => let data = { "file": [1, "Board", 8, 2, 2223, false, 1, 2, 0, [0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 8426.318707426251, 2299.282791618, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 8426.318707426251, 2299.282791618, 0, 1], 0, 3, 1200, 600, 18, true, "Polyline", 8, 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], 0, 2, 4, [0, 0], 0, [600, 0], 0, [600, 1200], 0, [0, 1200], 0, true, 1, 3, 57.21600000000001, 31.968000000000757, 2, false, "Polyline", 8, 2, 0, false, 0, 1, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -209.6453198822055, 283.06701259445845, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -209.6453198822055, 283.06701259445845, 64.20000000000219, 1], 0, 2, 44, [241.0853198822042, -230.31501259445847], 0, [241.48131988220484, -229.99101259445843], 0, [241.61331988220627, -229.6910125944584], 0, [241.48131988220484, -229.36701259445846], 0, [241.0853198822042, -228.97101259445847], 0, [238.94931988220924, -227.41101259445844], 0, [236.81331988220336, -225.85101259445844], 0, [235.85331988220423, -227.24301259445846], 0, [234.89331988220147, -228.63501259445843], 0, [224.69331988220438, -228.63501259445843], 0, [214.49331988221093, -228.63501259445843], 0, [211.9613198822044, -228.57501259445843], 0, [209.6453198822055, -228.39501259445845], 0, [210.5813198822034, -229.6190125944584], 0, [211.51731988219763, -230.84301259445846], 0, [213.56931988220822, -230.3030125944585], 0, [215.9813198822012, -230.12301259445843], 0, [226.03731988220534, -230.12301259445843], 0, [236.09331988220583, -230.12301259445843], 0, [236.09331988220583, -252.68301259445846], 0, [236.09331988220583, -275.2430125944585], 0, [235.90131988219946, -276.5390125944584], 0, [235.3253198822058, -277.25901259445845], 0, [234.28131988219684, -277.54701259445847], 0, [232.6853198822064, -277.64301259445847], 0, [229.78131988220775, -277.37901259445846], 0, [224.81331988219972, -276.5870125944585], 0, [224.7893198822021, -277.09101259445845], 0, [224.7653198822045, -277.5950125944585], 0, [227.42931988220516, -278.41101259445844], 0, [229.9493198822056, -279.4190125944585], 0, [231.95331988220642, -280.7270125944585], 0, [232.97331988219958, -282.4430125944585], 0, [233.1653198822023, -282.91101259445844], 0, [233.45331988220642, -283.06701259445845], 0, [234.6653198822096, -282.76701259445844], 0, [236.3813198822063, -281.86701259445846], 0, [237.98931988220284, -280.5950125944585], 0, [238.8773198821982, -279.1790125944584], 0, [239.23731988220243, -277.3070125944585], 0, [239.3573198822014, -274.57101259445847], 0, [239.3573198822014, -253.01901259445842], 0, [239.3573198822014, -231.46701259445845], 0, [240.22131988220644, -230.89101259445843], 0, true, 0, 2, 0, 0, 0, 0, 0, [0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 7822.589893866929, 2546.062452634949, 16, 1], 3, 0, 0, 0, 0, 0, 9, 0, "层板", "", "", "", "", "", 0, 0, "三合一", 2, 0, "1", "1", "1", "1", "", "", "", 4, "三合一", "三合一", "三合一", "三合一", true, true, 0, 0, 0, 0, 0, 0, 0, 0, true], "basePt": { "x": 7226.318707426251, "y": 2299.282791618, "z": 0 }, "ucs": [0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] }; let brs = LoadBoardsFromFileData(data); - testPathCount(brs[0], 4); + testPathCount(brs[0], 2); }); test("通槽加长错误", () => { let data = { "file": [1, "Board", 8, 2, 100, false, 1, 2, 0, [0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 339.80952861870173, 249.3538870831253, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 339.80952861870173, 229.3538870831253, 0, 1], 0, 3, 918.0000000000002, 324.5928486066955, 18, true, "Polyline", 8, 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], 0, 2, 4, [0, 0], 0, [324.5928486066955, 0], 0, [324.5928486066955, 918.0000000000002], 0, [0, 918.0000000000002], 0, true, 1, 3, 6, 712.0896318545867, 8.99999999999909, false, "Polyline", 8, 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, [-0.20303412411504598, -0.9791716623988034, 0, 0, 0.9791716623988034, -0.20303412411504598, 0, 0, 0, 0, 1, 0, -150.85291425915239, 365.69871018220056, 0, 1], 0, 2, 5, [712.0896318545867, 5.999999999999886], 0, [0, 5.999999999999943], 0, [-5.684341886080802e-14, 2.921526605141594], 0, [14.089631854583672, -5.684341886080802e-14], 0, [710.8455142075273, 0], 0, true, 0, 3, 6, 0, 0, 0, 0, [-0.9791716623988034, -0.20303412411504598, 0, 0, 0.20303412411504598, -0.9791716623988034, 0, 0, 0, 0, 1, 0, 117.849312474018, 576.8074117525202, 0, 1], 3, 0, 0, 0, 0, 0, 9, 0, "层板", "5-主卧", "阳台柜", "", "E0级儿童板", "书香桐", 0, 1, "三合一", 2, 0, "1", "1", "1", "1", "", "", "", 8, "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", true, true, 0, 0, 0, 0, 0, 0, 0, 0, true], "basePt": { "x": -578.1904713812985, "y": 249.3538870831253, "z": 0 }, "ucs": [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] }; let brs = LoadBoardsFromFileData(data); - testPathCount(brs[0], 3); + testPathCount(brs[0], 1); +}); +test("包含刀路丢失#I2CW2U", () => +{ + let data = + { "file": [1, "Board", 8, 2, 111, false, 1, 3, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1977.7735031597751, -12.875786924939348, -18, 1], 0, 0, true, [1, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0, 0, 1977.7735031597751, -12.875786924939348, -18, 1], 0, 3, 1200, 600, 18, true, "Polyline", 8, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1200, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0, 0, -6740.896324111298, 43.47826086934333, 0, 1], 0, 2, 4, [600, -1200], 0, [600, 0], 0, [0, 0], 0, [0, -1200], 0, true, 1, 3, 1080.0000000000005, 480.0000000000018, 3, false, "Polyline", 8, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 480.0000000000018, 974.0000000000001, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 0, 2, 12, [0, 0], 0, [-106, 0], 0, [-106, 105.99999999999989], 0, [-374, 106.00000000000034], 0, [-374, 1.1368683772161603e-13], 0, [-480.0000000000018, -1.1368683772161603e-13], 0, [-480.0000000000018, -868.0000000000001], 0, [-374.00000000000085, -868], 0, [-374.0000000000018, -974.0000000000001], 0, [-106.00000000000182, -973.9999999999999], 0, [-106.00000000000091, -867.9999999999999], 0, [-1.8189894035458565e-12, -868], 0, true, 5, 3, 100.00000000000045, 106.00000000000256, 3, true, "Polyline", 8, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 2.2737367544323206e-13, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -262.00000000000017, -112.00000000000011, 0, 1], 0, 2, 4, [106.00000000000074, -2.2737367544323206e-13], 0, [106.00000000000256, 100], 0, [2.5579538487363607e-12, 100.00000000000023], 0, [0, 0], 0, true, 0, 3, 0, 0, 0, 0, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2299.773503159773, 159.12421307506065, -3, 1], 3, 100.00000000000017, 106.00000000000072, 3, true, "Polyline", 8, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 106.00000000000072, 100.00000000000009, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -112.00000000000098, -111.99999999999989, 0, 1], 0, 2, 4, [0, 0], 0, [-105.99999999999993, 8.526512829121202e-14], 0, [-106.00000000000072, -100.00000000000003], 0, [-1.7053025658242404e-12, -100.00000000000009], 0, true, 0, 3, 0, 0, 0, 0, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2149.773503159774, 159.1242130750602, -3, 1], 3, 100.00000000000023, 106.00000000000017, 3, true, "Polyline", 8, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 106.00000000000017, 0, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -112.00000000000182, -868.0000000000003, 0, 1], 0, 2, 4, [0, 0], 0, [0, 100], 0, [-106.00000000000006, 100.00000000000023], 0, [-106.00000000000017, 0], 0, true, 0, 3, 0, 0, 0, 0, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2149.773503159775, 915.1242130750607, -3, 1], 3, 1068.0000000000007, 468.0000000000018, 3, false, "Polyline", 8, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 468.0000000000018, 962.0000000000002, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -6, -5.999999999999773, 0, 1], 0, 2, 28, [-100, 0], 0, [-100, -106.00000000000023], 0, [-218, -106], 0, [-218, 6.000000000000227], 0, [-105.99999999999977, 5.999999999999886], 0, [-105.99999999999955, 106.00000000000045], 0, [-362, 106.00000000000023], 0, [-362.0000000000001, 6.000000000000227], 0, [-250, 6.000000000000455], 0, [-250, -105.99999999999977], 0, [-368, -105.99999999999977], 0, [-368.0000000000001, 5.684341886080801e-13], 0, [-468.0000000000018, 6.821210263296962e-13], 0, [-468.0000000000018, -856], 0, [-368.00000000000085, -856], 0, [-368, -749.9999999999998], 0, [-249.9999999999991, -749.9999999999997], 0, [-250.00000000000182, -861.9999999999997], 0, [-362.0000000000009, -861.9999999999998], 0, [-362.0000000000018, -962], 0, [-106.00000000000182, -962.0000000000002], 0, [-106.00000000000091, -861.9999999999999], 0, [-218.00000000000182, -861.9999999999999], 0, [-218, -749.9999999999995], 0, [-100, -749.9999999999995], 0, [-100.00000000000091, -855.9999999999998], 0, [0, -856.0000000000001], 0, [0, 0], 0, true, 0, 3, 0, 0, 0, 0, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2043.7735031597733, 53.1242130750602, -3, 1], 3, 100.00000000000011, 106.00000000000023, 3, true, "Polyline", 8, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 106.00000000000023, 100.00000000000011, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -262.0000000000018, -868.0000000000001, 0, 1], 0, 2, 4, [0, 0], 0, [-106.00000000000023, -2.2737367544323206e-13], 0, [-106, -100.00000000000011], 0, [-2.2737367544323206e-13, -99.99999999999989], 0, true, 0, 3, 0, 0, 0, 0, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2299.773503159775, 915.1242130750607, -3, 1], 3, 0, 0, 0, 0, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2037.7735031597733, 47.12421307506065, -3, 1], 3, 0, 0, 0, 0, 0, 10, 2, "背板", "", "", "", "", "", 0, 0, "三合一", 2, 0, "1", "1", "1", "1", "", "", "", 4, "三合一", "三合一", "三合一", "三合一", true, true, 0, 0, 0, 0, 0, 0, 0, 0, true, 0, 0], "basePt": { "x": 1977.7735031597751, "y": -12.875786924939348, "z": -18 }, "ucs": [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] }; + let brs = LoadBoardsFromFileData(data); + testPathCount(brs[0], 5); }); diff --git a/__test__/FeedingToolPath/__snapshots__/FeedingToolPath.test.ts.snap b/__test__/FeedingToolPath/__snapshots__/FeedingToolPath.test.ts.snap index 1d97eb495..ea4c25a60 100644 --- a/__test__/FeedingToolPath/__snapshots__/FeedingToolPath.test.ts.snap +++ b/__test__/FeedingToolPath/__snapshots__/FeedingToolPath.test.ts.snap @@ -1,284 +1,162 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`#I1MUQD 1`] = `"6522.00000"`; +exports[`#I1MUQD 1`] = `"6242.00000"`; -exports[`#I1MUQD 2`] = `"6242.00000"`; +exports[`#I1MUQD 2`] = `"3476.00000"`; exports[`#I1MUQD 3`] = `"3476.00000"`; -exports[`#I1MUQD 4`] = `"3476.00000"`; - -exports[`#I1MUQD 5`] = `"5682.00000"`; - -exports[`#I1MUQD 6`] = `"6230.00000"`; - -exports[`#I1MUQD 7`] = `"3464.00000"`; - -exports[`#I1MUQD 8`] = `"3464.00000"`; - exports[`#I1MUQD: 走刀数量 1`] = `3`; -exports[`#IYX1P 1`] = `"3600.00000"`; - -exports[`#IYX1P 2`] = `"1356.19421"`; +exports[`#IYX1P 1`] = `"1356.19421"`; -exports[`#IYX1P 3`] = `"1336.05705"`; +exports[`#IYX1P 2`] = `"1336.05705"`; -exports[`#IYX1P 4`] = `"7179.71308"`; +exports[`#IYX1P 3`] = `"7179.71308"`; -exports[`#IYX1P 5`] = `"10.71239"`; - -exports[`#IYX1P 6`] = `"1483.45340"`; - -exports[`#IYX1P 7`] = `"1324.90446"`; +exports[`#IYX1P 4`] = `"10.71239"`; exports[`#IYX1P: 走刀数量 1`] = `4`; -exports[`刀切到外轮廓情况 1`] = `"3600.00000"`; - -exports[`刀切到外轮廓情况 2`] = `"22596.75011"`; - -exports[`刀切到外轮廓情况 3`] = `"6355.24398"`; - -exports[`刀切到外轮廓情况 4`] = `"1478.93939"`; +exports[`刀切到外轮廓情况 1`] = `"22596.75011"`; -exports[`刀切到外轮廓情况 5`] = `"729.56885"`; +exports[`刀切到外轮廓情况 2`] = `"6355.24398"`; -exports[`刀切到外轮廓情况 6`] = `"3600.00000"`; +exports[`刀切到外轮廓情况 3`] = `"14681.46597"`; -exports[`刀切到外轮廓情况 7`] = `"14681.46597"`; +exports[`刀切到外轮廓情况 4`] = `"14658.27702"`; -exports[`刀切到外轮廓情况 8`] = `"14658.27702"`; +exports[`刀切到外轮廓情况 5`] = `"14681.46597"`; -exports[`刀切到外轮廓情况 9`] = `"14681.46597"`; - -exports[`刀切到外轮廓情况 10`] = `"14658.27702"`; - -exports[`刀切到外轮廓情况 11`] = `"2683.28157"`; - -exports[`刀切到外轮廓情况 12`] = `"1800.00000"`; +exports[`刀切到外轮廓情况 6`] = `"14658.27702"`; exports[`刀切到外轮廓情况: 走刀数量 1`] = `2`; exports[`刀切到外轮廓情况: 走刀数量 2`] = `4`; -exports[`复杂极限刀半径 1`] = `"4356.84083"`; - -exports[`复杂极限刀半径 2`] = `"1073.24693"`; - -exports[`复杂极限刀半径 3`] = `"36199.20990"`; +exports[`包含刀路丢失#I2CW2U 1`] = `"3096.00000"`; -exports[`复杂极限刀半径 4`] = `"2928.44167"`; +exports[`包含刀路丢失#I2CW2U 2`] = `"436.00000"`; -exports[`复杂极限刀半径 5`] = `"951.54022"`; +exports[`包含刀路丢失#I2CW2U 3`] = `"436.00000"`; -exports[`复杂极限刀半径 6`] = `"3278.91793"`; +exports[`包含刀路丢失#I2CW2U 4`] = `"436.00000"`; -exports[`复杂极限刀半径: 走刀数量 1`] = `3`; - -exports[`复杂造型01 1`] = `"3600.00000"`; - -exports[`复杂造型01 2`] = `"39413.77528"`; +exports[`包含刀路丢失#I2CW2U 5`] = `"436.00000"`; -exports[`复杂造型01 3`] = `"15808.94716"`; +exports[`包含刀路丢失#I2CW2U: 走刀数量 1`] = `5`; -exports[`复杂造型01 4`] = `"4413.31745"`; +exports[`复杂极限刀半径 1`] = `"1073.24693"`; -exports[`复杂造型01 5`] = `"1482.45521"`; +exports[`复杂极限刀半径 2`] = `"36199.20990"`; -exports[`复杂造型01 6`] = `"838.79070"`; +exports[`复杂极限刀半径 3`] = `"2928.44167"`; -exports[`复杂造型01 7`] = `"25.32894"`; +exports[`复杂极限刀半径: 走刀数量 1`] = `3`; -exports[`复杂造型01 8`] = `"25.32894"`; +exports[`复杂造型01 1`] = `"39413.77528"`; -exports[`复杂造型01 9`] = `"676.69305"`; +exports[`复杂造型01 2`] = `"15808.94716"`; -exports[`复杂造型01 10`] = `"227.60858"`; +exports[`复杂造型01 3`] = `"4413.31745"`; -exports[`复杂造型01 11`] = `"80.89234"`; +exports[`复杂造型01 4`] = `"1482.45521"`; -exports[`复杂造型01 12`] = `"10.10478"`; +exports[`复杂造型01 5`] = `"838.79070"`; -exports[`复杂造型01 13`] = `"3.25247"`; +exports[`复杂造型01 6`] = `"25.32894"`; -exports[`复杂造型01 14`] = `"301.66993"`; +exports[`复杂造型01 7`] = `"25.32894"`; -exports[`复杂造型01 15`] = `"1749.86319"`; +exports[`复杂造型01 8`] = `"676.69305"`; -exports[`复杂造型01 16`] = `"7.82855"`; +exports[`复杂造型01 9`] = `"227.60858"`; -exports[`复杂造型01 17`] = `"2.56925"`; +exports[`复杂造型01 10`] = `"80.89234"`; -exports[`复杂造型01 18`] = `"4316.13601"`; +exports[`复杂造型01 11`] = `"10.10478"`; -exports[`复杂造型01 19`] = `"60.75517"`; +exports[`复杂造型01 12`] = `"3.25247"`; -exports[`复杂造型01 20`] = `"270.97161"`; +exports[`复杂造型01 13`] = `"301.66993"`; -exports[`复杂造型01 21`] = `"282.82482"`; +exports[`复杂造型01 14`] = `"1749.86319"`; -exports[`复杂造型01 22`] = `"819.94115"`; +exports[`复杂造型01 15`] = `"7.82855"`; -exports[`复杂造型01 23`] = `"1463.60565"`; +exports[`复杂造型01 16`] = `"2.56925"`; exports[`复杂造型01: 走刀数量 1`] = `16`; -exports[`复杂造型测试 1`] = `"2402.51119"`; - -exports[`复杂造型测试 2`] = `"24373.25075"`; - -exports[`复杂造型测试 3`] = `"4285.07185"`; - -exports[`复杂造型测试 4`] = `"2418.14345"`; - -exports[`复杂造型测试 5`] = `"2293.07622"`; - -exports[`复杂造型测试 6`] = `"4096.10505"`; - -exports[`复杂造型测试 7`] = `"910.13415"`; - -exports[`复杂造型测试 8`] = `"2841.13372"`; - -exports[`复杂造型测试 9`] = `"1079.27365"`; - -exports[`复杂造型测试 10`] = `"227.83421"`; - -exports[`复杂造型测试 11`] = `"16.40520"`; +exports[`复杂造型测试 1`] = `"24373.25075"`; -exports[`复杂造型测试 12`] = `"696.19865"`; +exports[`复杂造型测试 2`] = `"4285.07185"`; -exports[`复杂造型测试 13`] = `"639.79104"`; +exports[`复杂造型测试 3`] = `"2418.14345"`; -exports[`复杂造型测试 14`] = `"1715.22255"`; +exports[`复杂造型测试 4`] = `"2293.07622"`; -exports[`复杂造型测试 15`] = `"493.42887"`; +exports[`复杂造型测试 5`] = `"4096.10505"`; -exports[`复杂造型测试 16`] = `"352.79733"`; +exports[`复杂造型测试 6`] = `"910.13415"`; -exports[`复杂造型测试 17`] = `"342.70974"`; +exports[`复杂造型测试 7`] = `"2841.13372"`; -exports[`复杂造型测试 18`] = `"476.09896"`; +exports[`复杂造型测试 8`] = `"1079.27365"`; -exports[`复杂造型测试 19`] = `"1167.54793"`; +exports[`复杂造型测试 9`] = `"227.83421"`; -exports[`复杂造型测试 20`] = `"413.71953"`; +exports[`复杂造型测试 10`] = `"16.40520"`; -exports[`复杂造型测试 21`] = `"275.92757"`; +exports[`复杂造型测试 11`] = `"696.19865"`; -exports[`复杂造型测试 22`] = `"99.71551"`; +exports[`复杂造型测试 12`] = `"639.79104"`; -exports[`复杂造型测试 23`] = `"35.25476"`; +exports[`复杂造型测试 13`] = `"106935.16317"`; -exports[`复杂造型测试 24`] = `"169.22283"`; - -exports[`复杂造型测试 25`] = `"162.17188"`; - -exports[`复杂造型测试 26`] = `"3600.00000"`; - -exports[`复杂造型测试 27`] = `"106935.16317"`; - -exports[`复杂造型测试 28`] = `"5545.66534"`; - -exports[`复杂造型测试 29`] = `"2581.08481"`; - -exports[`复杂造型测试 30`] = `"463.19934"`; - -exports[`复杂造型测试 31`] = `"713.89111"`; +exports[`复杂造型测试 14`] = `"5545.66534"`; exports[`复杂造型测试: 走刀数量 1`] = `12`; exports[`复杂造型测试: 走刀数量 2`] = `2`; -exports[`孔轮廓比外轮廓大 1`] = `"2800.00000"`; - -exports[`孔轮廓比外轮廓大 2`] = `"2290.84956"`; - -exports[`孔轮廓比外轮廓大 3`] = `"2309.69911"`; - -exports[`孔轮廓比外轮廓大 4`] = `"2272.00000"`; +exports[`孔轮廓比外轮廓大 1`] = `"2290.84956"`; exports[`孔轮廓比外轮廓大: 走刀数量 1`] = `1`; -exports[`带孔造型板件 1`] = `"3600.00000"`; +exports[`带孔造型板件 1`] = `"31857.87785"`; -exports[`带孔造型板件 2`] = `"31857.87785"`; +exports[`带孔造型板件 2`] = `"4397.08666"`; -exports[`带孔造型板件 3`] = `"4397.08666"`; +exports[`带孔造型板件 3`] = `"31857.87785"`; -exports[`带孔造型板件 4`] = `"2195.97412"`; - -exports[`带孔造型板件 5`] = `"1209.69294"`; - -exports[`带孔造型板件 6`] = `"3600.00000"`; - -exports[`带孔造型板件 7`] = `"31857.87785"`; - -exports[`带孔造型板件 8`] = `"4397.08666"`; - -exports[`带孔造型板件 9`] = `"2195.97412"`; - -exports[`带孔造型板件 10`] = `"1209.69294"`; +exports[`带孔造型板件 4`] = `"4397.08666"`; exports[`带孔造型板件: 走刀数量 1`] = `2`; exports[`带孔造型板件: 走刀数量 2`] = `2`; -exports[`日字加工 1`] = `"1276.43256"`; +exports[`日字加工 1`] = `"41.15725"`; -exports[`日字加工 2`] = `"41.15725"`; +exports[`日字加工 2`] = `"1.56220"`; -exports[`日字加工 3`] = `"1.56220"`; - -exports[`日字加工 4`] = `"38.29334"`; - -exports[`日字加工 5`] = `"124.64721"`; - -exports[`日字加工 6`] = `"74.43932"`; - -exports[`日字加工 7`] = `"74.91834"`; +exports[`日字加工 3`] = `"38.29334"`; exports[`日字加工: 走刀数量 1`] = `3`; -exports[`极限刀半径 1`] = `"3600.00000"`; - -exports[`极限刀半径 2`] = `"1000.00000"`; - -exports[`极限刀半径 3`] = `"1740.00000"`; - -exports[`极限刀半径 4`] = `"3600.00000"`; - -exports[`极限刀半径 5`] = `"716.16750"`; - -exports[`极限刀半径 6`] = `"1552.33596"`; - -exports[`极限刀半径 7`] = `"3600.00000"`; - -exports[`极限刀半径 8`] = `"1638.95917"`; - -exports[`极限刀半径 9`] = `"3517.91835"`; - -exports[`极限刀半径 10`] = `"3600.00000"`; - -exports[`极限刀半径 11`] = `"600.00000"`; - -exports[`极限刀半径 12`] = `"1040.00000"`; +exports[`极限刀半径 1`] = `"1000.00000"`; -exports[`极限刀半径 13`] = `"3600.00000"`; +exports[`极限刀半径 2`] = `"716.16750"`; -exports[`极限刀半径 14`] = `"390.00000"`; +exports[`极限刀半径 3`] = `"1638.95917"`; -exports[`极限刀半径 15`] = `"900.00000"`; +exports[`极限刀半径 4`] = `"600.00000"`; -exports[`极限刀半径#I11UDE 1`] = `"4992.84974"`; +exports[`极限刀半径 5`] = `"390.00000"`; -exports[`极限刀半径#I11UDE 2`] = `"2157.30391"`; +exports[`极限刀半径#I11UDE 1`] = `"2157.30391"`; -exports[`极限刀半径#I11UDE 3`] = `"277.52910"`; - -exports[`极限刀半径#I11UDE 4`] = `"2450.18872"`; - -exports[`极限刀半径#I11UDE 5`] = `"2419.47730"`; +exports[`极限刀半径#I11UDE 2`] = `"277.52910"`; exports[`极限刀半径#I11UDE: 走刀数量 1`] = `2`; @@ -292,170 +170,132 @@ exports[`极限刀半径: 走刀数量 4`] = `1`; exports[`极限刀半径: 走刀数量 5`] = `1`; -exports[`超级复杂造型01 1`] = `"5230.46984"`; +exports[`超级复杂造型01 1`] = `"23338.03268"`; -exports[`超级复杂造型01 2`] = `"23338.03268"`; +exports[`超级复杂造型01 2`] = `"11855.39979"`; -exports[`超级复杂造型01 3`] = `"11855.39979"`; +exports[`超级复杂造型01 3`] = `"9.89484"`; -exports[`超级复杂造型01 4`] = `"9.89484"`; +exports[`超级复杂造型01 4`] = `"34.11041"`; -exports[`超级复杂造型01 5`] = `"34.11041"`; +exports[`超级复杂造型01 5`] = `"36.73893"`; -exports[`超级复杂造型01 6`] = `"36.73893"`; +exports[`超级复杂造型01 6`] = `"93.09682"`; -exports[`超级复杂造型01 7`] = `"93.09682"`; +exports[`超级复杂造型01 7`] = `"3.00516"`; -exports[`超级复杂造型01 8`] = `"3.00516"`; +exports[`超级复杂造型01 8`] = `"15.55863"`; -exports[`超级复杂造型01 9`] = `"15.55863"`; +exports[`超级复杂造型01 9`] = `"1.50234"`; -exports[`超级复杂造型01 10`] = `"1.50234"`; +exports[`超级复杂造型01 10`] = `"34.11041"`; -exports[`超级复杂造型01 11`] = `"34.11041"`; +exports[`超级复杂造型01 11`] = `"36.73893"`; -exports[`超级复杂造型01 12`] = `"36.73893"`; +exports[`超级复杂造型01 12`] = `"23.17925"`; -exports[`超级复杂造型01 13`] = `"23.17925"`; +exports[`超级复杂造型01 13`] = `"3.00516"`; exports[`超级复杂造型01 14`] = `"3.00516"`; -exports[`超级复杂造型01 15`] = `"3.00516"`; +exports[`超级复杂造型01 15`] = `"15.55863"`; -exports[`超级复杂造型01 16`] = `"15.55863"`; +exports[`超级复杂造型01 16`] = `"1.50234"`; -exports[`超级复杂造型01 17`] = `"1.50234"`; +exports[`超级复杂造型01 17`] = `"9.89484"`; -exports[`超级复杂造型01 18`] = `"9.89484"`; +exports[`超级复杂造型01 18`] = `"2.27264"`; -exports[`超级复杂造型01 19`] = `"2.27264"`; +exports[`超级复杂造型01 19`] = `"23.17925"`; -exports[`超级复杂造型01 20`] = `"23.17925"`; +exports[`超级复杂造型01 20`] = `"36.73893"`; -exports[`超级复杂造型01 21`] = `"36.73893"`; +exports[`超级复杂造型01 21`] = `"34.11041"`; -exports[`超级复杂造型01 22`] = `"34.11041"`; +exports[`超级复杂造型01 22`] = `"3.00516"`; exports[`超级复杂造型01 23`] = `"3.00516"`; -exports[`超级复杂造型01 24`] = `"3.00516"`; +exports[`超级复杂造型01 24`] = `"15.55863"`; -exports[`超级复杂造型01 25`] = `"15.55863"`; +exports[`超级复杂造型01 25`] = `"1.50234"`; -exports[`超级复杂造型01 26`] = `"1.50234"`; +exports[`超级复杂造型01 26`] = `"9.89484"`; -exports[`超级复杂造型01 27`] = `"9.89484"`; +exports[`超级复杂造型01 27`] = `"2.27264"`; -exports[`超级复杂造型01 28`] = `"2.27264"`; +exports[`超级复杂造型01 28`] = `"23.17925"`; -exports[`超级复杂造型01 29`] = `"23.17925"`; +exports[`超级复杂造型01 29`] = `"36.73893"`; -exports[`超级复杂造型01 30`] = `"36.73893"`; +exports[`超级复杂造型01 30`] = `"34.11041"`; -exports[`超级复杂造型01 31`] = `"34.11041"`; +exports[`超级复杂造型01 31`] = `"3.00516"`; exports[`超级复杂造型01 32`] = `"3.00516"`; -exports[`超级复杂造型01 33`] = `"3.00516"`; +exports[`超级复杂造型01 33`] = `"15.55863"`; -exports[`超级复杂造型01 34`] = `"15.55863"`; +exports[`超级复杂造型01 34`] = `"1.50234"`; -exports[`超级复杂造型01 35`] = `"1.50234"`; +exports[`超级复杂造型01 35`] = `"9.89484"`; -exports[`超级复杂造型01 36`] = `"9.89484"`; +exports[`超级复杂造型01 36`] = `"2.27264"`; -exports[`超级复杂造型01 37`] = `"2.27264"`; +exports[`超级复杂造型01 37`] = `"23.17925"`; -exports[`超级复杂造型01 38`] = `"23.17925"`; +exports[`超级复杂造型01 38`] = `"36.73893"`; -exports[`超级复杂造型01 39`] = `"36.73893"`; +exports[`超级复杂造型01 39`] = `"34.11041"`; -exports[`超级复杂造型01 40`] = `"34.11041"`; +exports[`超级复杂造型01 40`] = `"3.00516"`; exports[`超级复杂造型01 41`] = `"3.00516"`; -exports[`超级复杂造型01 42`] = `"3.00516"`; +exports[`超级复杂造型01 42`] = `"15.55863"`; -exports[`超级复杂造型01 43`] = `"15.55863"`; +exports[`超级复杂造型01 43`] = `"1.50234"`; -exports[`超级复杂造型01 44`] = `"1.50234"`; +exports[`超级复杂造型01 44`] = `"9.89484"`; -exports[`超级复杂造型01 45`] = `"9.89484"`; +exports[`超级复杂造型01 45`] = `"2.27264"`; -exports[`超级复杂造型01 46`] = `"2.27264"`; +exports[`超级复杂造型01 46`] = `"23.17925"`; -exports[`超级复杂造型01 47`] = `"23.17925"`; +exports[`超级复杂造型01 47`] = `"34.11041"`; -exports[`超级复杂造型01 48`] = `"34.11041"`; +exports[`超级复杂造型01 48`] = `"36.73893"`; -exports[`超级复杂造型01 49`] = `"36.73893"`; +exports[`超级复杂造型01 49`] = `"3.00516"`; exports[`超级复杂造型01 50`] = `"3.00516"`; -exports[`超级复杂造型01 51`] = `"3.00516"`; - -exports[`超级复杂造型01 52`] = `"9.89484"`; - -exports[`超级复杂造型01 53`] = `"2.27264"`; - -exports[`超级复杂造型01 54`] = `"15.55863"`; - -exports[`超级复杂造型01 55`] = `"1.50234"`; - -exports[`超级复杂造型01 56`] = `"11906.41153"`; - -exports[`超级复杂造型01 57`] = `"464.88810"`; - -exports[`超级复杂造型01 58`] = `"464.88810"`; - -exports[`超级复杂造型01 59`] = `"464.88810"`; - -exports[`超级复杂造型01 60`] = `"464.88810"`; +exports[`超级复杂造型01 51`] = `"9.89484"`; -exports[`超级复杂造型01 61`] = `"464.88810"`; +exports[`超级复杂造型01 52`] = `"2.27264"`; -exports[`超级复杂造型01 62`] = `"464.88810"`; +exports[`超级复杂造型01 53`] = `"15.55863"`; -exports[`超级复杂造型01 63`] = `"9277.91064"`; +exports[`超级复杂造型01 54`] = `"1.50234"`; exports[`超级复杂造型01: 走刀数量 1`] = `54`; -exports[`通孔造型测试 1`] = `"3600.00000"`; - -exports[`通孔造型测试 2`] = `"1872.61683"`; - -exports[`通孔造型测试 3`] = `"1896.61683"`; +exports[`通孔造型测试 1`] = `"1872.61683"`; exports[`通孔造型测试: 走刀数量 1`] = `1`; -exports[`通槽加长错误 1`] = `"2485.18570"`; - -exports[`通槽加长错误 2`] = `"719.93538"`; - -exports[`通槽加长错误 3`] = `"1432.44095"`; +exports[`通槽加长错误 1`] = `"719.93538"`; exports[`通槽加长错误: 走刀数量 1`] = `1`; -exports[`造型的外框和内框厚度小于刀半径厚度 1`] = `"3600.00000"`; - exports[`造型的外框和内框厚度小于刀半径厚度: 走刀数量 1`] = `0`; -exports[`造型的外框和内框厚度等于刀直径 1`] = `"3600.00000"`; - -exports[`造型的外框和内框厚度等于刀直径 2`] = `"1459.45340"`; - -exports[`造型的外框和内框厚度等于刀直径 3`] = `"1483.45340"`; - -exports[`造型的外框和内框厚度等于刀直径 4`] = `"1435.45340"`; +exports[`造型的外框和内框厚度等于刀直径 1`] = `"1459.45340"`; exports[`造型的外框和内框厚度等于刀直径: 走刀数量 1`] = `1`; -exports[`门字部分 1`] = `"3600.00000"`; - -exports[`门字部分 2`] = `"1.76759"`; - -exports[`门字部分 3`] = `"8.75659"`; +exports[`门字部分 1`] = `"1.76759"`; -exports[`门字部分 4`] = `"189.85784"`; +exports[`门字部分 2`] = `"8.75659"`; exports[`门字部分: 走刀数量 1`] = `2`; diff --git a/src/DatabaseServices/Shape.ts b/src/DatabaseServices/Shape.ts index 0ee46a8cd..e3f95a8bc 100644 --- a/src/DatabaseServices/Shape.ts +++ b/src/DatabaseServices/Shape.ts @@ -415,7 +415,7 @@ export class Shape } /** * 合并洞,本质是使用(并集算法)将可以并集的洞合并在一起,减少洞的数量. - * canSidewipe 用于走刀,擦边的是否合并 + * canSidewipe 用于走刀,擦边的,包含的,是否合并 */ static mergeContours(holes: Contour[], canSidewipe = true): Contour[] { @@ -459,6 +459,8 @@ export class Shape { if (equaln(c.Area + ic.Area, unions.contours[0].Area, 0.1)) return true; + if (equaln(unions.contours[0].Area, Math.max(c.Area, ic.Area), 0.1)) + return true; } c = unions.contours[0]; //更新c b1 = c.BoundingBox; diff --git a/src/GraphicsSystem/ToolPath/FeedingToolPath.ts b/src/GraphicsSystem/ToolPath/FeedingToolPath.ts index 594f0cb6e..173c5eeb6 100644 --- a/src/GraphicsSystem/ToolPath/FeedingToolPath.ts +++ b/src/GraphicsSystem/ToolPath/FeedingToolPath.ts @@ -190,54 +190,7 @@ export class FeedingToolPath extends Singleton return false; }); - let cus = this.CalcPath(modelings, br); - //不同走刀路径区分颜色 - cus.forEach((c, i) => c.ColorIndex = (i + 1 === 8 || i + 1 === 18 || i + 1 === 19) ? i + 2 : i + 1); - let outline = br.ContourCurve as Polyline; - let dir = Math.sign(outline.Area2); - let sideOutlines: Polyline[] = []; - //优化侧面造型模拟走刀位置 - for (let m of allModeling.sideModeling) - { - let c = outline.GetCurveAtIndex(m.dir); - let derv = c.GetFistDeriv(0); - if (dir < 0) - derv.negate(); - let mat = MoveMatrix(dir > 0 ? c.StartPoint : c.EndPoint) - .multiply(new Matrix4().makeRotationZ(angleTo(XAxis, derv))) - .multiply(MoveMatrix(new Vector3(0, -br.Thickness))); - m.shape.ApplyMatrix(mat); - let pl = new Polyline().RectangleFrom2Pt(new Vector3(), new Vector3(c.Length, br.Thickness)); - pl.ColorIndex = 6; - pl.ApplyMatrix(mat); - sideOutlines.push(pl); - } - - cus.push(...this.CalcPath(allModeling.sideModeling, br)); - //加入板件轮廓 - cus.unshift(br.ContourCurve.Clone()); - if (cus.length === 1) - return cus; - //加入造型外轮廓和洞 - for (let { shape, thickness } of modelings) - { - let outline = shape.Outline.Curve.Clone(); - outline.Position = outline.Position.setZ(0); - outline.ColorIndex = 8; - cus.push(outline); - if (thickness < br.Thickness) - { - cus.push(...shape.Holes.map(h => - { - let c = h.Curve.Clone(); - c.Position = c.Position.setZ(0); - c.ColorIndex = 8; - return c; - })); - } - } - cus.push(...sideOutlines); - return cus; + return this.CalcPath(modelings, br); } /** * 计算走刀路径