|
|
|
@ -23,6 +23,8 @@ export function VKnifToolPath(polyline: Polyline, feedingDepth: number, knifAngl
|
|
|
|
|
|
|
|
|
|
let ptsbul: { pt: Vec3, bul: number; }[] = [];
|
|
|
|
|
|
|
|
|
|
let isClose = polyline.IsClose;
|
|
|
|
|
|
|
|
|
|
for (let i = 0; i < cus.length; i++)
|
|
|
|
|
{
|
|
|
|
|
let nextIndex = FixIndex(i + 1, cus.length);
|
|
|
|
@ -46,6 +48,12 @@ export function VKnifToolPath(polyline: Polyline, feedingDepth: number, knifAngl
|
|
|
|
|
//圆弧与直线相切,此时不要提刀
|
|
|
|
|
if (isParallelTo(c1.GetFistDeriv(0), c2.GetFistDeriv(0))) continue;
|
|
|
|
|
|
|
|
|
|
if (!isClose && i === cus.length - 1)//最后一条
|
|
|
|
|
{
|
|
|
|
|
ptsbul.push({ pt: c1.EndPoint, bul: 0 });
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//提刀
|
|
|
|
|
for (let x of offsetx)
|
|
|
|
|
{
|
|
|
|
@ -66,14 +74,10 @@ export function VKnifToolPath(polyline: Polyline, feedingDepth: number, knifAngl
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (polyline.IsClose)
|
|
|
|
|
if (isClose)
|
|
|
|
|
{
|
|
|
|
|
//第一刀
|
|
|
|
|
ptsbul.unshift(ptsbul[ptsbul.length - 1]);//, ptsbul[ptsbul.length - 2]
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
ptsbul.pop();
|
|
|
|
|
}
|
|
|
|
|
return ptsbul;
|
|
|
|
|
}
|
|
|
|
|