|
|
@ -94,12 +94,15 @@ export class FeedingToolPath extends Singleton
|
|
|
|
let tempOffsetCus = GetOffsetCurves(outline, offsetDist * dir, rectInfo);
|
|
|
|
let tempOffsetCus = GetOffsetCurves(outline, offsetDist * dir, rectInfo);
|
|
|
|
retCus.push(...tempOffsetCus);
|
|
|
|
retCus.push(...tempOffsetCus);
|
|
|
|
|
|
|
|
|
|
|
|
//最后一次内偏移如果是矩形,需在偏移一个刀半径避免没切到中心
|
|
|
|
//最后一次内偏移如果是矩形
|
|
|
|
if (retCus.length === 0 && rectInfo && offsetDist > knifRadius)
|
|
|
|
if (retCus.length === 0 && rectInfo && offsetDist > knifRadius)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
offsetDist -= knifRadius;
|
|
|
|
const rectMinLengthHalf = Math.min(rectInfo.size.x, rectInfo.size.y) / 2;
|
|
|
|
if (hasRedK) offsetDist += redundancyKnif;
|
|
|
|
//如果最后一个矩形最小边区间一半小于刀半径减去冗余值的一半,则偏移到中心处切一次
|
|
|
|
retCus.push(...GetOffsetCurves(outline, offsetDist * dir, rectInfo));
|
|
|
|
if (!equaln(offsetDist, rectMinLengthHalf, 1e-5) && offsetDist - rectMinLengthHalf - 1e-5 < knifRadius - redundancyKnif / 2)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
retCus.push(...GetOffsetCurves(outline, rectMinLengthHalf * dir, rectInfo));
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (retCus.length === 0) break;
|
|
|
|
if (retCus.length === 0) break;
|
|
|
|