|
|
|
@ -41,7 +41,7 @@ export function Curve2Path(curve: Circle | Polyline, outside = false): Path
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
let w = new CurveWrap(curve, 3);
|
|
|
|
|
let w = new CurveWrap(curve, 3, outside);
|
|
|
|
|
return new Path(outside ? w.GetOutsidePoints() : w.GetInsidePoints());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -59,13 +59,13 @@ export class CurveWrap
|
|
|
|
|
|
|
|
|
|
Points: Point[];
|
|
|
|
|
|
|
|
|
|
constructor(public Curve: Polyline | Circle, public KnifRadius = 3)
|
|
|
|
|
constructor(public Curve: Polyline | Circle, public KnifRadius = 3, public IsOutside: boolean = true)
|
|
|
|
|
{
|
|
|
|
|
this.BoundingBox = Curve.BoundingBox;
|
|
|
|
|
|
|
|
|
|
if (Curve instanceof Polyline)
|
|
|
|
|
{
|
|
|
|
|
let pts = Polylin2Points(Curve, true, 0)[1];
|
|
|
|
|
let pts = Polylin2Points(Curve, IsOutside, 0)[1];
|
|
|
|
|
let [spts, offset] = SimplifyDouglasPeucker(pts, KnifRadius ** 2 + KnifRadius);
|
|
|
|
|
if (spts.length !== pts.length)
|
|
|
|
|
{
|
|
|
|
|