|
|
|
@ -331,26 +331,55 @@ export class CommandFillet implements Command
|
|
|
|
|
let parF1 = Math.floor(param1);
|
|
|
|
|
let parF2 = Math.floor(param2);
|
|
|
|
|
|
|
|
|
|
//TODO:自交多段线倒角
|
|
|
|
|
//共线
|
|
|
|
|
if (parF1 === parF2)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
//是否相邻。
|
|
|
|
|
let c1 = pl.GetCurveAtParam(param1);
|
|
|
|
|
let c2 = pl.GetCurveAtParam(param2);
|
|
|
|
|
|
|
|
|
|
if (equalv3(c1.GetFistDeriv(1).normalize(), c2.GetFistDeriv(0).normalize()))
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
let rem = parF2 - parF1;
|
|
|
|
|
if (rem === 1
|
|
|
|
|
|| (rem + 1 === pl.EndParam)
|
|
|
|
|
if (rem === 1 || (rem + 1 === pl.EndParam)//是否相邻
|
|
|
|
|
)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
return;
|
|
|
|
|
else//自交多段线
|
|
|
|
|
{
|
|
|
|
|
if (!(c1 instanceof Line && c2 instanceof Line))
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
let c1 = pl.GetCurveAtParam(param1);
|
|
|
|
|
let c2 = pl.GetCurveAtParam(param2);
|
|
|
|
|
let interPts = c1.IntersectWith(c2, IntersectOption.OnBothOperands);
|
|
|
|
|
if (interPts.length === 0)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
let ipt = interPts[0];
|
|
|
|
|
let splitParam1 = Math.floor(param1) + c1.GetParamAtPoint(ipt);
|
|
|
|
|
let splitParam2 = Math.floor(param2) + c2.GetParamAtPoint(ipt);
|
|
|
|
|
|
|
|
|
|
let cus = pl.GetSplitCurves([splitParam1, splitParam2]);
|
|
|
|
|
if (cus.length >= 2)
|
|
|
|
|
{
|
|
|
|
|
cus.splice(1, 1);
|
|
|
|
|
|
|
|
|
|
let pl1 = cus[0];
|
|
|
|
|
for (let i = 1; i < cus.length; i++)
|
|
|
|
|
pl1.Join(cus[i]);
|
|
|
|
|
|
|
|
|
|
let es1 = new PromptEntityResult();
|
|
|
|
|
es1.Entity = pl1;
|
|
|
|
|
es1.Point = c1.GetPointAtParam(0.1);
|
|
|
|
|
|
|
|
|
|
let es2 = new PromptEntityResult();
|
|
|
|
|
es2.Entity = pl1;
|
|
|
|
|
es2.Point = c2.GetPointAtParam(0.9);
|
|
|
|
|
|
|
|
|
|
return this.FilletPolyLineSelf(es1, es2);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (equalv3(c1.GetFistDeriv(1).normalize(), c2.GetFistDeriv(0).normalize()))
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
let es1 = new PromptEntityResult();
|
|
|
|
|
es1.Entity = c1;
|
|
|
|
|