|
|
|
@ -1,4 +1,3 @@
|
|
|
|
|
import { Vector3 } from "three";
|
|
|
|
|
import { EBoardKeyList } from "../Common/BoardKeyList";
|
|
|
|
|
import { FixIndex } from "../Common/Utils";
|
|
|
|
|
import { Board } from "../DatabaseServices/Entity/Board";
|
|
|
|
@ -120,21 +119,31 @@ export function CalcEdgeSealing(cus: Curve[])
|
|
|
|
|
{
|
|
|
|
|
if (cus.length <= 1)
|
|
|
|
|
return;
|
|
|
|
|
let oldLine: Curve;
|
|
|
|
|
let firstLine = cus[0].Clone();
|
|
|
|
|
for (let i = 0; i < cus.length; i++)
|
|
|
|
|
{
|
|
|
|
|
let frontLine = cus[i];
|
|
|
|
|
let laterLine = cus[FixIndex(i + 1, cus)];
|
|
|
|
|
if (equalv3(frontLine.EndPoint, laterLine.StartPoint))
|
|
|
|
|
continue;
|
|
|
|
|
let iPts = frontLine.IntersectWith(laterLine, IntersectOption.ExtendBoth);
|
|
|
|
|
let refLine = oldLine ?? frontLine;
|
|
|
|
|
let refLine2 = i === cus.length - 1 ? firstLine : laterLine;
|
|
|
|
|
let iPts = refLine.IntersectWith(refLine2, IntersectOption.ExtendBoth);
|
|
|
|
|
let tPts = iPts.filter(p =>
|
|
|
|
|
frontLine.PtOnCurve(p)
|
|
|
|
|
&& laterLine.PtOnCurve(p)
|
|
|
|
|
refLine.PtOnCurve(p)
|
|
|
|
|
&& refLine2.PtOnCurve(p)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
let iPt = SelectNearP(tPts.length > 0 ? tPts : iPts, frontLine.EndPoint);
|
|
|
|
|
|
|
|
|
|
if (!iPt)
|
|
|
|
|
{
|
|
|
|
|
alert("获取封边错误,请提供图纸给相关人员");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
frontLine.EndPoint = iPt;
|
|
|
|
|
oldLine = equalv3(iPt, laterLine.EndPoint) ? laterLine.Clone() : null;
|
|
|
|
|
laterLine.StartPoint = iPt;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|