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)