|
|
|
@ -2,10 +2,11 @@ import { Vector3 } from "three";
|
|
|
|
|
import { EBoardKeyList } from "../Common/BoardKeyList";
|
|
|
|
|
import { FixIndex } from "../Common/Utils";
|
|
|
|
|
import { Board } from "../DatabaseServices/Entity/Board";
|
|
|
|
|
import { Circle } from "../DatabaseServices/Entity/Circle";
|
|
|
|
|
import { Curve } from "../DatabaseServices/Entity/Curve";
|
|
|
|
|
import { Line } from "../DatabaseServices/Entity/Line";
|
|
|
|
|
import { Polyline } from "../DatabaseServices/Entity/Polyline";
|
|
|
|
|
import { equaln, equalv3, isParallelTo, angle } from "../Geometry/GeUtils";
|
|
|
|
|
import { angle, equaln, equalv3, isParallelTo } from "../Geometry/GeUtils";
|
|
|
|
|
import { IntersectOption } from "./IntersectWith";
|
|
|
|
|
import { PolyOffsetUtil } from "./OffsetPolyline";
|
|
|
|
|
|
|
|
|
@ -170,8 +171,12 @@ export function getBoardSealingCurves(br: Board)
|
|
|
|
|
let cus: Curve[] = [];
|
|
|
|
|
if (br.IsSpecialShape)
|
|
|
|
|
{
|
|
|
|
|
cus = br.ContourCurve.Explode() as Curve[];
|
|
|
|
|
paragraphCulist(br.ContourCurve.Explode() as Curve[]);
|
|
|
|
|
let cu = br.ContourCurve;
|
|
|
|
|
if (cu instanceof Circle)
|
|
|
|
|
return [cu.Clone()];
|
|
|
|
|
else
|
|
|
|
|
cus = br.ContourCurve.Explode() as Curve[];
|
|
|
|
|
paragraphCulist(cus);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
@ -186,7 +191,7 @@ export function getBoardSealingCurves(br: Board)
|
|
|
|
|
return cus;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function getSealedBoardContour(br: Board)
|
|
|
|
|
export function getSealedBoardContour(br: Board): Polyline | Circle
|
|
|
|
|
{
|
|
|
|
|
let offsetCus: Curve[] = [];
|
|
|
|
|
let cus = getBoardSealingCurves(br);
|
|
|
|
@ -194,6 +199,9 @@ export function getSealedBoardContour(br: Board)
|
|
|
|
|
|
|
|
|
|
let dir = Math.sign(br.ContourCurve.Area2);
|
|
|
|
|
|
|
|
|
|
if (cus[0] instanceof Circle)
|
|
|
|
|
dir = 1;
|
|
|
|
|
|
|
|
|
|
for (let i = 0; i < cus.length; i++)
|
|
|
|
|
{
|
|
|
|
|
let cs = cus[i].GetOffsetCurves(-highSeals[i].size * dir);
|
|
|
|
@ -205,6 +213,9 @@ export function getSealedBoardContour(br: Board)
|
|
|
|
|
offsetCus.push(c);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (offsetCus.length === 1 && offsetCus[0] instanceof Circle)
|
|
|
|
|
return offsetCus[0] as Circle;
|
|
|
|
|
|
|
|
|
|
calcEdgeSealing(offsetCus);
|
|
|
|
|
let pl = new Polyline();
|
|
|
|
|
for (let c of offsetCus)
|
|
|
|
|