清理代码

pull/198/MERGE
ChenX 6 years ago
parent dd26da2ea3
commit e0549dbb4d

@ -342,9 +342,70 @@ export class CommandFillet implements Command
return; return;
let rem = parF2 - parF1; let rem = parF2 - parF1;
if (rem === 1 || (rem + 1 === pl.EndParam)//是否相邻 if (rem === 1 || (rem + 1 === pl.EndParam))//相邻线段倒角
)
{ {
let es1 = new PromptEntityResult();
es1.Entity = c1;
es1.Point = enRes1.Point;
let es2 = new PromptEntityResult();
es2.Entity = c2;
es2.Point = enRes2.Point;
let res = this.Fillet(es1, es2);
if (res && res.arc)
{
let pln = pl.Clone();
//修正凸度
if (res.cu1 instanceof Arc)
pln.SetBulgeAt(parF1, res.cu1.Bul);
if (res.cu2 instanceof Arc)
pln.SetBulgeAt(parF2, res.cu2.Bul);
let sp2d = Vec3DTo2D(res.arc.StartPoint.applyMatrix4(pln.OCSInv));
let ep2d = Vec3DTo2D(res.arc.EndPoint.applyMatrix4(pln.OCSInv));
let isNeighbor = rem === 1;
//#IOX26
if (isNeighbor && res.cu1 instanceof Arc && res.cu2 instanceof Arc)
{
let ins = res.cu1.IntersectWith(res.cu2, IntersectOption.OnBothOperands);
if (ins.length === 1 && !equalv3(pln.StartPoint, ins[0]))
isNeighbor = false;
}
if (isNeighbor)
{
pln.SetPointAt(parF2, ep2d);
pln.AddVertexAt(parF2, sp2d);
pln.SetBulgeAt(parF2, res.arc.Bul);
}
else//首尾
{
pln.SetPointAt(0, sp2d);
let plPtCount = pln.NumberOfVertices;
if (pln.EndParam === plPtCount)//CloseMark
{
pln.AddVertexAt(plPtCount, ep2d);
pln.SetBulgeAt(plPtCount, -res.arc.Bul);
}
else
{
pln.SetPointAt(plPtCount - 1, ep2d);
pln.SetBulgeAt(plPtCount - 1, -res.arc.Bul);
pln.AddVertexAt(plPtCount, sp2d);
}
}
return {
cu1: pln,
cu2: undefined,
arc: undefined
};
}
} }
else//自交多段线 else//自交多段线
{ {
@ -379,70 +440,6 @@ export class CommandFillet implements Command
return this.FilletPolyLineSelf(es1, es2); return this.FilletPolyLineSelf(es1, es2);
} }
} }
let es1 = new PromptEntityResult();
es1.Entity = c1;
es1.Point = enRes1.Point;
let es2 = new PromptEntityResult();
es2.Entity = c2;
es2.Point = enRes2.Point;
let res = this.Fillet(es1, es2);
if (res && res.arc)
{
let pln = pl.Clone();
//修正凸度
if (res.cu1 instanceof Arc)
pln.SetBulgeAt(parF1, res.cu1.Bul);
if (res.cu2 instanceof Arc)
pln.SetBulgeAt(parF2, res.cu2.Bul);
let sp2d = Vec3DTo2D(res.arc.StartPoint.applyMatrix4(pln.OCSInv));
let ep2d = Vec3DTo2D(res.arc.EndPoint.applyMatrix4(pln.OCSInv));
let isNeighbor = rem === 1;
//#IOX26
if (isNeighbor && res.cu1 instanceof Arc && res.cu2 instanceof Arc)
{
let ins = res.cu1.IntersectWith(res.cu2, IntersectOption.OnBothOperands);
if (ins.length === 1 && !equalv3(pln.StartPoint, ins[0]))
isNeighbor = false;
}
if (isNeighbor)
{
pln.SetPointAt(parF2, ep2d);
pln.AddVertexAt(parF2, sp2d);
pln.SetBulgeAt(parF2, res.arc.Bul);
}
else//首尾
{
pln.SetPointAt(0, sp2d);
let plPtCount = pln.NumberOfVertices;
if (pln.EndParam === plPtCount)//CloseMark
{
pln.AddVertexAt(plPtCount, ep2d);
pln.SetBulgeAt(plPtCount, -res.arc.Bul);
}
else
{
pln.SetPointAt(plPtCount - 1, ep2d);
pln.SetBulgeAt(plPtCount - 1, -res.arc.Bul);
pln.AddVertexAt(plPtCount, sp2d);
}
}
return {
cu1: pln,
cu2: undefined,
arc: undefined
};
}
} }
FilletPolylineAndCurve(enRes1: PromptEntityResult, enRes2: PromptEntityResult): FilletRes FilletPolylineAndCurve(enRes1: PromptEntityResult, enRes2: PromptEntityResult): FilletRes

Loading…
Cancel
Save