From 2f9b98f780f623a44782ddb2e9c33fb02660a68c Mon Sep 17 00:00:00 2001 From: ZoeLeeFZ Date: Wed, 18 Mar 2020 15:17:33 +0800 Subject: [PATCH] =?UTF-8?q?!825=20=E4=BC=98=E5=8C=96:=E5=8F=96=E6=B6=88?= =?UTF-8?q?=E5=87=B8=E5=A4=9A=E8=BE=B9=E5=BD=A2=E7=9A=84=E8=B5=B0=E5=88=80?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../FeedingToolPath.test.ts.snap | 34 +++++++++---------- .../ToolPath/FeedingToolPath.ts | 18 ++-------- 2 files changed, 19 insertions(+), 33 deletions(-) diff --git a/__test__/FeedingToolPath/__snapshots__/FeedingToolPath.test.ts.snap b/__test__/FeedingToolPath/__snapshots__/FeedingToolPath.test.ts.snap index 5e2cfc181..b20cd57dd 100644 --- a/__test__/FeedingToolPath/__snapshots__/FeedingToolPath.test.ts.snap +++ b/__test__/FeedingToolPath/__snapshots__/FeedingToolPath.test.ts.snap @@ -28,13 +28,13 @@ exports[`刀切到外轮廓情况: 曲线长度 5`] = `729.5688477133849`; exports[`刀切到外轮廓情况: 曲线长度 6`] = `3600`; -exports[`刀切到外轮廓情况: 曲线长度 7`] = `7687.426120259669`; +exports[`刀切到外轮廓情况: 曲线长度 7`] = `14681.465974109033`; -exports[`刀切到外轮廓情况: 曲线长度 8`] = `7785.184372611363`; +exports[`刀切到外轮廓情况: 曲线长度 8`] = `14658.277022001026`; -exports[`刀切到外轮廓情况: 曲线长度 9`] = `7687.426120259668`; +exports[`刀切到外轮廓情况: 曲线长度 9`] = `14681.465974109033`; -exports[`刀切到外轮廓情况: 曲线长度 10`] = `7785.184372611338`; +exports[`刀切到外轮廓情况: 曲线长度 10`] = `14658.277022000973`; exports[`刀切到外轮廓情况: 曲线长度 11`] = `2683.281572999748`; @@ -54,7 +54,7 @@ exports[`复杂极限刀半径: 曲线长度 4`] = `31170.805670163638`; exports[`复杂极限刀半径: 曲线长度 5`] = `2917.48021978714`; -exports[`复杂极限刀半径: 曲线长度 6`] = `4147.455051522354`; +exports[`复杂极限刀半径: 曲线长度 6`] = `4434.591784188829`; exports[`复杂极限刀半径: 曲线长度 7`] = `951.5402172137751`; @@ -112,23 +112,23 @@ exports[`复杂造型01: 走刀数量 1`] = `16`; exports[`复杂造型测试: 曲线长度 1`] = `2402.511185283596`; -exports[`复杂造型测试: 曲线长度 2`] = `13653.90128815112`; +exports[`复杂造型测试: 曲线长度 2`] = `24373.250750763476`; -exports[`复杂造型测试: 曲线长度 3`] = `2368.4150990997623`; +exports[`复杂造型测试: 曲线长度 3`] = `4285.071854430757`; -exports[`复杂造型测试: 曲线长度 4`] = `1335.5629222865464`; +exports[`复杂造型测试: 曲线长度 4`] = `2418.143451783811`; -exports[`复杂造型测试: 曲线长度 5`] = `1265.9777684790145`; +exports[`复杂造型测试: 曲线长度 5`] = `2293.076221853775`; -exports[`复杂造型测试: 曲线长度 6`] = `2261.9150553435934`; +exports[`复杂造型测试: 曲线长度 6`] = `4096.105045378747`; exports[`复杂造型测试: 曲线长度 7`] = `8.048633485555133`; exports[`复杂造型测试: 曲线长度 8`] = `875.5142132396979`; -exports[`复杂造型测试: 曲线长度 9`] = `1565.147265671276`; +exports[`复杂造型测试: 曲线长度 9`] = `2841.1337227520216`; -exports[`复杂造型测试: 曲线长度 10`] = `692.0908822142652`; +exports[`复杂造型测试: 曲线长度 10`] = `1079.2736477434978`; exports[`复杂造型测试: 曲线长度 11`] = `227.8342135021163`; @@ -164,7 +164,7 @@ exports[`复杂造型测试: 曲线长度 26`] = `162.171881370416`; exports[`复杂造型测试: 曲线长度 27`] = `3600`; -exports[`复杂造型测试: 曲线长度 28`] = `66231.52634930135`; +exports[`复杂造型测试: 曲线长度 28`] = `104483.03471871806`; exports[`复杂造型测试: 曲线长度 29`] = `2279.1571138841996`; @@ -182,9 +182,9 @@ exports[`复杂造型测试: 走刀数量 2`] = `3`; exports[`带孔造型板件: 曲线长度 1`] = `3600`; -exports[`带孔造型板件: 曲线长度 2`] = `31091.461443717064`; +exports[`带孔造型板件: 曲线长度 2`] = `54662.04598627183`; -exports[`带孔造型板件: 曲线长度 3`] = `2808.760562622602`; +exports[`带孔造型板件: 曲线长度 3`] = `4678.35714568232`; exports[`带孔造型板件: 曲线长度 4`] = `2195.9741153279983`; @@ -192,9 +192,9 @@ exports[`带孔造型板件: 曲线长度 5`] = `1209.6929369796912`; exports[`带孔造型板件: 曲线长度 6`] = `3600`; -exports[`带孔造型板件: 曲线长度 7`] = `31091.461443717064`; +exports[`带孔造型板件: 曲线长度 7`] = `54662.04598627183`; -exports[`带孔造型板件: 曲线长度 8`] = `2808.760562622602`; +exports[`带孔造型板件: 曲线长度 8`] = `4678.35714568232`; exports[`带孔造型板件: 曲线长度 9`] = `2195.9741153279983`; diff --git a/src/GraphicsSystem/ToolPath/FeedingToolPath.ts b/src/GraphicsSystem/ToolPath/FeedingToolPath.ts index 20600eba6..2520d3dd9 100644 --- a/src/GraphicsSystem/ToolPath/FeedingToolPath.ts +++ b/src/GraphicsSystem/ToolPath/FeedingToolPath.ts @@ -35,7 +35,7 @@ export class FeedingToolPath extends Singleton let outline = shape.Outline.Curve; if (isOut) outline = outline.Clone(); - let isBulge = (outline instanceof Polyline) && outline.IsBulge; + let dir = GetCurveToInDir(outline); let offsetCus: Curve[] = [outline]; @@ -67,29 +67,15 @@ export class FeedingToolPath extends Singleton while (true) { - if ((!isOut || offsetDist >= knifRadius) && isBulge) - offsetDist += knifRadius * 2; - else - offsetDist += knifRadius; + offsetDist += knifRadius; let retCus: Curve[] = []; let tempOffsetCus = GetOffsetCurves(outline, offsetDist * dir); retCus.push(...tempOffsetCus); - //最后一次内偏移如果是凸多边形,需在偏移一个刀半径避免没切到中心 - if (retCus.length === 0 && isBulge) - { - offsetDist -= knifRadius; - retCus.push(...GetOffsetCurves(outline, offsetDist * dir)); - } - if (retCus.length === 0) break; - //如果凹内偏为凸,则按直径偏移 - if (!isBulge) - isBulge = retCus.every(c => c instanceof Polyline && c.IsBulge); - //是否和孤岛相交 let isInt = false; for (let c of retCus)