!825 优化:取消凸多边形的走刀优化

pull/825/MERGE
ZoeLeeFZ 5 years ago committed by ChenX
parent 70f2423e74
commit 2f9b98f780

@ -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`;

@ -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)

Loading…
Cancel
Save