From d8a855060f413a0802af1ec284ebc10a7748add3 Mon Sep 17 00:00:00 2001 From: ZoeLeeFZ Date: Thu, 23 Jul 2020 14:49:50 +0800 Subject: [PATCH] =?UTF-8?q?!1160=20=E4=BC=98=E5=8C=96:=E7=9F=A9=E5=BD=A2?= =?UTF-8?q?=E6=A7=BD=E8=B5=B0=E5=88=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../__snapshots__/FeedingToolPath.test.ts.snap | 8 ++++---- src/GraphicsSystem/ToolPath/FeedingToolPath.ts | 15 +++++++++++++-- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/__test__/FeedingToolPath/__snapshots__/FeedingToolPath.test.ts.snap b/__test__/FeedingToolPath/__snapshots__/FeedingToolPath.test.ts.snap index 11c5e450d..2d5b53a9e 100644 --- a/__test__/FeedingToolPath/__snapshots__/FeedingToolPath.test.ts.snap +++ b/__test__/FeedingToolPath/__snapshots__/FeedingToolPath.test.ts.snap @@ -192,9 +192,9 @@ exports[`复杂造型测试: 走刀数量 2`] = `2`; exports[`带孔造型板件 1`] = `"3600.00000"`; -exports[`带孔造型板件 2`] = `"54665.25127"`; +exports[`带孔造型板件 2`] = `"31857.87785"`; -exports[`带孔造型板件 3`] = `"4667.08666"`; +exports[`带孔造型板件 3`] = `"4397.08666"`; exports[`带孔造型板件 4`] = `"2195.97412"`; @@ -202,9 +202,9 @@ exports[`带孔造型板件 5`] = `"1209.69294"`; exports[`带孔造型板件 6`] = `"3600.00000"`; -exports[`带孔造型板件 7`] = `"54665.25127"`; +exports[`带孔造型板件 7`] = `"31857.87785"`; -exports[`带孔造型板件 8`] = `"4667.08666"`; +exports[`带孔造型板件 8`] = `"4397.08666"`; exports[`带孔造型板件 9`] = `"2195.97412"`; diff --git a/src/GraphicsSystem/ToolPath/FeedingToolPath.ts b/src/GraphicsSystem/ToolPath/FeedingToolPath.ts index 952ae1d5d..2bae749dc 100644 --- a/src/GraphicsSystem/ToolPath/FeedingToolPath.ts +++ b/src/GraphicsSystem/ToolPath/FeedingToolPath.ts @@ -67,17 +67,28 @@ export class FeedingToolPath extends Singleton let offsetDist = 0; + let isRect = IsRect(outline).isRect; + while (true) { - offsetDist += knifRadius; + if ((!isOut || offsetDist >= knifRadius) && isRect) + offsetDist += knifRadius * 2; + else + offsetDist += knifRadius; let retCus: Curve[] = []; let tempOffsetCus = GetOffsetCurves(outline, offsetDist * dir); retCus.push(...tempOffsetCus); - if (retCus.length === 0) break; + //最后一次内偏移如果是矩形,需在偏移一个刀半径避免没切到中心 + if (retCus.length === 0 && isRect) + { + offsetDist -= knifRadius; + retCus.push(...GetOffsetCurves(outline, offsetDist * dir)); + } + if (retCus.length === 0) break; //是否和孤岛相交 let isInt = false; for (let c of retCus)