暴露CurveWrap
This commit is contained in:
		
							
								
								
									
										146
									
								
								api.cjs.js
									
									
									
									
									
								
							
							
						
						
									
										146
									
								
								api.cjs.js
									
									
									
									
									
								
							@@ -22972,6 +22972,151 @@ function PolylineFilletMinArc(pl, radius = 30) {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** 点p到线段P1P2 的最短距离的平方,线段不延伸 */
 | 
				
			||||||
 | 
					function GetSqSegDist(p, p1, p2) {
 | 
				
			||||||
 | 
					    let x = p1.x;
 | 
				
			||||||
 | 
					    let y = p1.y;
 | 
				
			||||||
 | 
					    let dx = p2.x - x;
 | 
				
			||||||
 | 
					    let dy = p2.y - y;
 | 
				
			||||||
 | 
					    if (dx !== 0 || dy !== 0) //不是0长度线
 | 
				
			||||||
 | 
					     {
 | 
				
			||||||
 | 
					        let t = ((p.x - x) * dx + (p.y - y) * dy) / (dx * dx + dy * dy);
 | 
				
			||||||
 | 
					        if (t > 1) {
 | 
				
			||||||
 | 
					            x = p2.x;
 | 
				
			||||||
 | 
					            y = p2.y;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        else if (t > 0) {
 | 
				
			||||||
 | 
					            x += dx * t;
 | 
				
			||||||
 | 
					            y += dy * t;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    dx = p.x - x;
 | 
				
			||||||
 | 
					    dy = p.y - y;
 | 
				
			||||||
 | 
					    return dx * dx + dy * dy;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					function CrossVector2(a, b) {
 | 
				
			||||||
 | 
					    return a.x * b.y - a.y * b.x;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					//Ramer-Douglas-Peucker algorithm
 | 
				
			||||||
 | 
					function SimplifyDPStep(points, first, last, sqTolerance, simplified, offset) {
 | 
				
			||||||
 | 
					    let maxSqDist = 0;
 | 
				
			||||||
 | 
					    let index;
 | 
				
			||||||
 | 
					    let fp = points[first];
 | 
				
			||||||
 | 
					    let lp = points[last];
 | 
				
			||||||
 | 
					    for (let i = first + 1; i < last; i++) {
 | 
				
			||||||
 | 
					        let p = points[i];
 | 
				
			||||||
 | 
					        let sqDist = GetSqSegDist(p, fp, lp);
 | 
				
			||||||
 | 
					        if (sqDist > maxSqDist) {
 | 
				
			||||||
 | 
					            index = i;
 | 
				
			||||||
 | 
					            maxSqDist = sqDist;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (maxSqDist > sqTolerance) {
 | 
				
			||||||
 | 
					        if (index - first > 1)
 | 
				
			||||||
 | 
					            SimplifyDPStep(points, first, index, sqTolerance, simplified, offset);
 | 
				
			||||||
 | 
					        simplified.push(points[index]);
 | 
				
			||||||
 | 
					        if (last - index > 1)
 | 
				
			||||||
 | 
					            SimplifyDPStep(points, index, last, sqTolerance, simplified, offset);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    else {
 | 
				
			||||||
 | 
					        //记录偏移
 | 
				
			||||||
 | 
					        let v = new Vector2(lp.x - fp.x, lp.y - fp.y).normalize();
 | 
				
			||||||
 | 
					        for (let i = first + 1; i < last; i++) {
 | 
				
			||||||
 | 
					            let p = points[i];
 | 
				
			||||||
 | 
					            let offsetDist = -CrossVector2(v, { x: p.x - fp.x, y: p.y - fp.y });
 | 
				
			||||||
 | 
					            offset.positiveOffset = Math.max(offset.positiveOffset, offsetDist);
 | 
				
			||||||
 | 
					            offset.negativeOffset = Math.min(offset.negativeOffset, offsetDist);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					// Ramer-Douglas-Peucker 算法
 | 
				
			||||||
 | 
					function SimplifyDouglasPeucker(points, sqTolerance) {
 | 
				
			||||||
 | 
					    let last = points.length - 1;
 | 
				
			||||||
 | 
					    let simplified = [points[0]];
 | 
				
			||||||
 | 
					    let offset = { negativeOffset: 0, positiveOffset: 0 };
 | 
				
			||||||
 | 
					    SimplifyDPStep(points, 0, last, sqTolerance, simplified, offset);
 | 
				
			||||||
 | 
					    simplified.push(points[last]);
 | 
				
			||||||
 | 
					    return [simplified, offset];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * 运用此代码将曲线转换为点,并且精简它.
 | 
				
			||||||
 | 
					 * @class CurveWrap
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					class CurveWrap {
 | 
				
			||||||
 | 
					    constructor(Curve, KnifRadius = 3, IsOutside = true) {
 | 
				
			||||||
 | 
					        this.Curve = Curve;
 | 
				
			||||||
 | 
					        this.KnifRadius = KnifRadius;
 | 
				
			||||||
 | 
					        this.IsOutside = IsOutside;
 | 
				
			||||||
 | 
					        this.Used = false;
 | 
				
			||||||
 | 
					        this.Holes = [];
 | 
				
			||||||
 | 
					        this.BoundingBox = Curve.BoundingBox;
 | 
				
			||||||
 | 
					        if (Curve instanceof exports.Polyline) {
 | 
				
			||||||
 | 
					            let pts = Polyline2Points(Curve, IsOutside, 0)[1];
 | 
				
			||||||
 | 
					            let [spts, offset] = SimplifyDouglasPeucker(pts, KnifRadius ** 2 + KnifRadius);
 | 
				
			||||||
 | 
					            if (spts.length !== pts.length) {
 | 
				
			||||||
 | 
					                this.SimplyOffset = offset;
 | 
				
			||||||
 | 
					                this.SimplyPolyline = Path2Polyline(spts);
 | 
				
			||||||
 | 
					                this.Curve = this.SimplyPolyline; //保险起见,也更新它
 | 
				
			||||||
 | 
					                this.Area = this.SimplyPolyline.Area;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else //此处更新多段线
 | 
				
			||||||
 | 
					                this.Curve = Path2Polyline(pts);
 | 
				
			||||||
 | 
					            this.Points = spts;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (this.Area === undefined)
 | 
				
			||||||
 | 
					            this.Area = this.Curve.Area;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    ContainsCurve(curve) {
 | 
				
			||||||
 | 
					        if (this.SimplyPolyline)
 | 
				
			||||||
 | 
					            return this.SimplyPolyline.PtInCurve(curve.Curve.StartPoint);
 | 
				
			||||||
 | 
					        return this.Curve.PtInCurve(curve.Curve.StartPoint);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    GetOutsidePoints() {
 | 
				
			||||||
 | 
					        if (this.Curve instanceof exports.Circle) {
 | 
				
			||||||
 | 
					            let pts = Circle2Points(this.Curve, this.KnifRadius, 10, true);
 | 
				
			||||||
 | 
					            return pts;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        else {
 | 
				
			||||||
 | 
					            let pl = this.SimplyPolyline || this.Curve;
 | 
				
			||||||
 | 
					            let offset = this.KnifRadius;
 | 
				
			||||||
 | 
					            if (this.SimplyOffset)
 | 
				
			||||||
 | 
					                offset += this.SimplyOffset.positiveOffset;
 | 
				
			||||||
 | 
					            if (offset > 0) {
 | 
				
			||||||
 | 
					                let pts = pl.GetStretchPoints();
 | 
				
			||||||
 | 
					                pts = clipperCpp.lib.offsetToPaths({
 | 
				
			||||||
 | 
					                    delta: offset * 10000,
 | 
				
			||||||
 | 
					                    offsetInputs: [{ data: PathScale(pts, 10000), joinType: clipperLib.JoinType.Miter, endType: clipperLib.EndType.ClosedPolygon }]
 | 
				
			||||||
 | 
					                })[0];
 | 
				
			||||||
 | 
					                PathScale(pts, 0.0001);
 | 
				
			||||||
 | 
					                return pts;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else
 | 
				
			||||||
 | 
					                return this.Points;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    GetInsidePoints() {
 | 
				
			||||||
 | 
					        if (this.Curve instanceof exports.Circle) {
 | 
				
			||||||
 | 
					            let pts = Circle2Points(this.Curve, this.KnifRadius, 10, false);
 | 
				
			||||||
 | 
					            return pts;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        else {
 | 
				
			||||||
 | 
					            let pl = this.SimplyPolyline || this.Curve;
 | 
				
			||||||
 | 
					            let offset = -this.KnifRadius;
 | 
				
			||||||
 | 
					            if (this.SimplyOffset) {
 | 
				
			||||||
 | 
					                offset += this.SimplyOffset.negativeOffset;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            if (offset < -0.01) {
 | 
				
			||||||
 | 
					                let pls = pl.GetOffsetCurves(offset);
 | 
				
			||||||
 | 
					                if (pls.length)
 | 
				
			||||||
 | 
					                    return pls[0].GetStretchPoints();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else
 | 
				
			||||||
 | 
					                return this.Points;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
exports.BUL_IS_LINE_FUZZ = BUL_IS_LINE_FUZZ;
 | 
					exports.BUL_IS_LINE_FUZZ = BUL_IS_LINE_FUZZ;
 | 
				
			||||||
exports.CADFiler = CADFiler;
 | 
					exports.CADFiler = CADFiler;
 | 
				
			||||||
exports.Circle2Points = Circle2Points;
 | 
					exports.Circle2Points = Circle2Points;
 | 
				
			||||||
@@ -22979,6 +23124,7 @@ exports.ComputeBiarc = ComputeBiarc;
 | 
				
			|||||||
exports.Contour = Contour;
 | 
					exports.Contour = Contour;
 | 
				
			||||||
exports.ConverToPolylineAndSplitArc = ConverToPolylineAndSplitArc;
 | 
					exports.ConverToPolylineAndSplitArc = ConverToPolylineAndSplitArc;
 | 
				
			||||||
exports.CurveContainerCurve = CurveContainerCurve;
 | 
					exports.CurveContainerCurve = CurveContainerCurve;
 | 
				
			||||||
 | 
					exports.CurveWrap = CurveWrap;
 | 
				
			||||||
exports.Curves2Points = Curves2Points;
 | 
					exports.Curves2Points = Curves2Points;
 | 
				
			||||||
exports.FeedingToolPath = FeedingToolPath;
 | 
					exports.FeedingToolPath = FeedingToolPath;
 | 
				
			||||||
exports.IsPtsAllOutOrOnReg = IsPtsAllOutOrOnReg;
 | 
					exports.IsPtsAllOutOrOnReg = IsPtsAllOutOrOnReg;
 | 
				
			||||||
 
 | 
				
			|||||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										147
									
								
								api.esm.js
									
									
									
									
									
								
							
							
						
						
									
										147
									
								
								api.esm.js
									
									
									
									
									
								
							@@ -22963,5 +22963,150 @@ function PolylineFilletMinArc(pl, radius = 30) {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export { Arc, BUL_IS_LINE_FUZZ, BoolOpeartionType, CADFiler, Circle, Circle2Points, ComputeBiarc, Contour, ConverToPolylineAndSplitArc, CurveContainerCurve, Curves2Points, DuplicateRecordCloning, FeedingToolPath, IsPtsAllOutOrOnReg, IsRect, Line, ParseRegionTextPos, PointsSimplify2PolylineAndParseArc, Polyline, Polyline2Points, PolylineFilletMinArc, Production, Shape, ShapeManager, SmartPointsSimply2Polyline, SmartPolylineSimply2Polyline, SplineConver2Polyline, Status, TEXT_BOX, TempPolyline, UpdateDraw, VData2Curve, VKnifToolPath, fastCurveInCurve2, isTargetCurInOrOnSourceCur };
 | 
					/** 点p到线段P1P2 的最短距离的平方,线段不延伸 */
 | 
				
			||||||
 | 
					function GetSqSegDist(p, p1, p2) {
 | 
				
			||||||
 | 
					    let x = p1.x;
 | 
				
			||||||
 | 
					    let y = p1.y;
 | 
				
			||||||
 | 
					    let dx = p2.x - x;
 | 
				
			||||||
 | 
					    let dy = p2.y - y;
 | 
				
			||||||
 | 
					    if (dx !== 0 || dy !== 0) //不是0长度线
 | 
				
			||||||
 | 
					     {
 | 
				
			||||||
 | 
					        let t = ((p.x - x) * dx + (p.y - y) * dy) / (dx * dx + dy * dy);
 | 
				
			||||||
 | 
					        if (t > 1) {
 | 
				
			||||||
 | 
					            x = p2.x;
 | 
				
			||||||
 | 
					            y = p2.y;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        else if (t > 0) {
 | 
				
			||||||
 | 
					            x += dx * t;
 | 
				
			||||||
 | 
					            y += dy * t;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    dx = p.x - x;
 | 
				
			||||||
 | 
					    dy = p.y - y;
 | 
				
			||||||
 | 
					    return dx * dx + dy * dy;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					function CrossVector2(a, b) {
 | 
				
			||||||
 | 
					    return a.x * b.y - a.y * b.x;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					//Ramer-Douglas-Peucker algorithm
 | 
				
			||||||
 | 
					function SimplifyDPStep(points, first, last, sqTolerance, simplified, offset) {
 | 
				
			||||||
 | 
					    let maxSqDist = 0;
 | 
				
			||||||
 | 
					    let index;
 | 
				
			||||||
 | 
					    let fp = points[first];
 | 
				
			||||||
 | 
					    let lp = points[last];
 | 
				
			||||||
 | 
					    for (let i = first + 1; i < last; i++) {
 | 
				
			||||||
 | 
					        let p = points[i];
 | 
				
			||||||
 | 
					        let sqDist = GetSqSegDist(p, fp, lp);
 | 
				
			||||||
 | 
					        if (sqDist > maxSqDist) {
 | 
				
			||||||
 | 
					            index = i;
 | 
				
			||||||
 | 
					            maxSqDist = sqDist;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (maxSqDist > sqTolerance) {
 | 
				
			||||||
 | 
					        if (index - first > 1)
 | 
				
			||||||
 | 
					            SimplifyDPStep(points, first, index, sqTolerance, simplified, offset);
 | 
				
			||||||
 | 
					        simplified.push(points[index]);
 | 
				
			||||||
 | 
					        if (last - index > 1)
 | 
				
			||||||
 | 
					            SimplifyDPStep(points, index, last, sqTolerance, simplified, offset);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    else {
 | 
				
			||||||
 | 
					        //记录偏移
 | 
				
			||||||
 | 
					        let v = new Vector2(lp.x - fp.x, lp.y - fp.y).normalize();
 | 
				
			||||||
 | 
					        for (let i = first + 1; i < last; i++) {
 | 
				
			||||||
 | 
					            let p = points[i];
 | 
				
			||||||
 | 
					            let offsetDist = -CrossVector2(v, { x: p.x - fp.x, y: p.y - fp.y });
 | 
				
			||||||
 | 
					            offset.positiveOffset = Math.max(offset.positiveOffset, offsetDist);
 | 
				
			||||||
 | 
					            offset.negativeOffset = Math.min(offset.negativeOffset, offsetDist);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					// Ramer-Douglas-Peucker 算法
 | 
				
			||||||
 | 
					function SimplifyDouglasPeucker(points, sqTolerance) {
 | 
				
			||||||
 | 
					    let last = points.length - 1;
 | 
				
			||||||
 | 
					    let simplified = [points[0]];
 | 
				
			||||||
 | 
					    let offset = { negativeOffset: 0, positiveOffset: 0 };
 | 
				
			||||||
 | 
					    SimplifyDPStep(points, 0, last, sqTolerance, simplified, offset);
 | 
				
			||||||
 | 
					    simplified.push(points[last]);
 | 
				
			||||||
 | 
					    return [simplified, offset];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * 运用此代码将曲线转换为点,并且精简它.
 | 
				
			||||||
 | 
					 * @class CurveWrap
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					class CurveWrap {
 | 
				
			||||||
 | 
					    constructor(Curve, KnifRadius = 3, IsOutside = true) {
 | 
				
			||||||
 | 
					        this.Curve = Curve;
 | 
				
			||||||
 | 
					        this.KnifRadius = KnifRadius;
 | 
				
			||||||
 | 
					        this.IsOutside = IsOutside;
 | 
				
			||||||
 | 
					        this.Used = false;
 | 
				
			||||||
 | 
					        this.Holes = [];
 | 
				
			||||||
 | 
					        this.BoundingBox = Curve.BoundingBox;
 | 
				
			||||||
 | 
					        if (Curve instanceof Polyline) {
 | 
				
			||||||
 | 
					            let pts = Polyline2Points(Curve, IsOutside, 0)[1];
 | 
				
			||||||
 | 
					            let [spts, offset] = SimplifyDouglasPeucker(pts, KnifRadius ** 2 + KnifRadius);
 | 
				
			||||||
 | 
					            if (spts.length !== pts.length) {
 | 
				
			||||||
 | 
					                this.SimplyOffset = offset;
 | 
				
			||||||
 | 
					                this.SimplyPolyline = Path2Polyline(spts);
 | 
				
			||||||
 | 
					                this.Curve = this.SimplyPolyline; //保险起见,也更新它
 | 
				
			||||||
 | 
					                this.Area = this.SimplyPolyline.Area;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else //此处更新多段线
 | 
				
			||||||
 | 
					                this.Curve = Path2Polyline(pts);
 | 
				
			||||||
 | 
					            this.Points = spts;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (this.Area === undefined)
 | 
				
			||||||
 | 
					            this.Area = this.Curve.Area;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    ContainsCurve(curve) {
 | 
				
			||||||
 | 
					        if (this.SimplyPolyline)
 | 
				
			||||||
 | 
					            return this.SimplyPolyline.PtInCurve(curve.Curve.StartPoint);
 | 
				
			||||||
 | 
					        return this.Curve.PtInCurve(curve.Curve.StartPoint);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    GetOutsidePoints() {
 | 
				
			||||||
 | 
					        if (this.Curve instanceof Circle) {
 | 
				
			||||||
 | 
					            let pts = Circle2Points(this.Curve, this.KnifRadius, 10, true);
 | 
				
			||||||
 | 
					            return pts;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        else {
 | 
				
			||||||
 | 
					            let pl = this.SimplyPolyline || this.Curve;
 | 
				
			||||||
 | 
					            let offset = this.KnifRadius;
 | 
				
			||||||
 | 
					            if (this.SimplyOffset)
 | 
				
			||||||
 | 
					                offset += this.SimplyOffset.positiveOffset;
 | 
				
			||||||
 | 
					            if (offset > 0) {
 | 
				
			||||||
 | 
					                let pts = pl.GetStretchPoints();
 | 
				
			||||||
 | 
					                pts = clipperCpp.lib.offsetToPaths({
 | 
				
			||||||
 | 
					                    delta: offset * 10000,
 | 
				
			||||||
 | 
					                    offsetInputs: [{ data: PathScale(pts, 10000), joinType: JoinType.Miter, endType: EndType.ClosedPolygon }]
 | 
				
			||||||
 | 
					                })[0];
 | 
				
			||||||
 | 
					                PathScale(pts, 0.0001);
 | 
				
			||||||
 | 
					                return pts;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else
 | 
				
			||||||
 | 
					                return this.Points;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    GetInsidePoints() {
 | 
				
			||||||
 | 
					        if (this.Curve instanceof Circle) {
 | 
				
			||||||
 | 
					            let pts = Circle2Points(this.Curve, this.KnifRadius, 10, false);
 | 
				
			||||||
 | 
					            return pts;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        else {
 | 
				
			||||||
 | 
					            let pl = this.SimplyPolyline || this.Curve;
 | 
				
			||||||
 | 
					            let offset = -this.KnifRadius;
 | 
				
			||||||
 | 
					            if (this.SimplyOffset) {
 | 
				
			||||||
 | 
					                offset += this.SimplyOffset.negativeOffset;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            if (offset < -0.01) {
 | 
				
			||||||
 | 
					                let pls = pl.GetOffsetCurves(offset);
 | 
				
			||||||
 | 
					                if (pls.length)
 | 
				
			||||||
 | 
					                    return pls[0].GetStretchPoints();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else
 | 
				
			||||||
 | 
					                return this.Points;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export { Arc, BUL_IS_LINE_FUZZ, BoolOpeartionType, CADFiler, Circle, Circle2Points, ComputeBiarc, Contour, ConverToPolylineAndSplitArc, CurveContainerCurve, CurveWrap, Curves2Points, DuplicateRecordCloning, FeedingToolPath, IsPtsAllOutOrOnReg, IsRect, Line, ParseRegionTextPos, PointsSimplify2PolylineAndParseArc, Polyline, Polyline2Points, PolylineFilletMinArc, Production, Shape, ShapeManager, SmartPointsSimply2Polyline, SmartPolylineSimply2Polyline, SplineConver2Polyline, Status, TEXT_BOX, TempPolyline, UpdateDraw, VData2Curve, VKnifToolPath, fastCurveInCurve2, isTargetCurInOrOnSourceCur };
 | 
				
			||||||
//# sourceMappingURL=api.esm.js.map
 | 
					//# sourceMappingURL=api.esm.js.map
 | 
				
			||||||
 
 | 
				
			|||||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										26
									
								
								types/Nest/Converter/CurveWrap.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								types/Nest/Converter/CurveWrap.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,26 @@
 | 
				
			|||||||
 | 
					import { Box3 } from "three";
 | 
				
			||||||
 | 
					import { Circle } from "../../DatabaseServices/Entity/Circle";
 | 
				
			||||||
 | 
					import { Polyline } from "../../DatabaseServices/Entity/Polyline";
 | 
				
			||||||
 | 
					import { Point } from "../Common/Point";
 | 
				
			||||||
 | 
					import { IOffset } from "./Simplify2";
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * 运用此代码将曲线转换为点,并且精简它.
 | 
				
			||||||
 | 
					 * @class CurveWrap
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					export declare class CurveWrap {
 | 
				
			||||||
 | 
					    Curve: Polyline | Circle;
 | 
				
			||||||
 | 
					    KnifRadius: number;
 | 
				
			||||||
 | 
					    IsOutside: boolean;
 | 
				
			||||||
 | 
					    BoundingBox: Box3;
 | 
				
			||||||
 | 
					    Area: number;
 | 
				
			||||||
 | 
					    SimplyPolyline: Polyline;
 | 
				
			||||||
 | 
					    SimplyOffset: IOffset;
 | 
				
			||||||
 | 
					    Used: boolean;
 | 
				
			||||||
 | 
					    Holes: CurveWrap[];
 | 
				
			||||||
 | 
					    Points: Point[];
 | 
				
			||||||
 | 
					    constructor(Curve: Polyline | Circle, KnifRadius?: number, IsOutside?: boolean);
 | 
				
			||||||
 | 
					    ContainsCurve(curve: CurveWrap): boolean;
 | 
				
			||||||
 | 
					    GetOutsidePoints(): Point[];
 | 
				
			||||||
 | 
					    GetInsidePoints(): Point[];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					//# sourceMappingURL=CurveWrap.d.ts.map
 | 
				
			||||||
							
								
								
									
										1
									
								
								types/Nest/Converter/CurveWrap.d.ts.map
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								types/Nest/Converter/CurveWrap.d.ts.map
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					{"version":3,"file":"CurveWrap.d.ts","sourceRoot":"","sources":["../../../../src/Nest/Converter/CurveWrap.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,sCAAsC,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAElE,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAIxC,OAAO,EAAE,OAAO,EAA0B,MAAM,aAAa,CAAC;AAG9D;;;GAGG;AACH,qBAAa,SAAS;IAaC,KAAK,EAAE,QAAQ,GAAG,MAAM;IAAS,UAAU;IAAa,SAAS,EAAE,OAAO;IAX7F,WAAW,EAAE,IAAI,CAAC;IAElB,IAAI,EAAE,MAAM,CAAC;IAEb,cAAc,EAAE,QAAQ,CAAC;IACzB,YAAY,EAAE,OAAO,CAAC;IACtB,IAAI,UAAS;IACb,KAAK,EAAE,SAAS,EAAE,CAAM;IAExB,MAAM,EAAE,KAAK,EAAE,CAAC;gBAEG,KAAK,EAAE,QAAQ,GAAG,MAAM,EAAS,UAAU,SAAI,EAAS,SAAS,GAAE,OAAc;IAwBpG,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO;IAOxC,gBAAgB,IAAI,KAAK,EAAE;IA+B3B,eAAe,IAAI,KAAK,EAAE;CA2B7B"}
 | 
				
			||||||
							
								
								
									
										2
									
								
								types/Nest/Converter/Curves2Points.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								types/Nest/Converter/Curves2Points.d.ts
									
									
									
									
										vendored
									
									
								
							@@ -9,7 +9,7 @@ export declare function Circle2Points(circle: Circle, knifRadius: number, splitS
 | 
				
			|||||||
export declare function Curves2Points(cu: Circle | Polyline, outside: boolean, knifeRadius: number): [(Circle | Polyline), Point[]];
 | 
					export declare function Curves2Points(cu: Circle | Polyline, outside: boolean, knifeRadius: number): [(Circle | Polyline), Point[]];
 | 
				
			||||||
export declare function Polyline2Points(pl: Polyline, outside: boolean, knifeRadius: number): [Polyline, Point[]];
 | 
					export declare function Polyline2Points(pl: Polyline, outside: boolean, knifeRadius: number): [Polyline, Point[]];
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * 移除小圆弧,使用尖角直连
 | 
					 * 移除小圆弧,使用尖角直连(有可能产生自交 概率不大)
 | 
				
			||||||
 * @param pl 请传入逆时针多段线(我们将直接修改这个多段线,如果你不想被修改 你应该拷贝一个)
 | 
					 * @param pl 请传入逆时针多段线(我们将直接修改这个多段线,如果你不想被修改 你应该拷贝一个)
 | 
				
			||||||
 * @param [radius=30]
 | 
					 * @param [radius=30]
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										11
									
								
								types/Nest/Converter/Simplify2.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								types/Nest/Converter/Simplify2.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,11 @@
 | 
				
			|||||||
 | 
					interface P {
 | 
				
			||||||
 | 
					    x: number;
 | 
				
			||||||
 | 
					    y: number;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					export interface IOffset {
 | 
				
			||||||
 | 
					    negativeOffset: number;
 | 
				
			||||||
 | 
					    positiveOffset: number;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					export declare function SimplifyDouglasPeucker(points: P[], sqTolerance: number): [P[], IOffset];
 | 
				
			||||||
 | 
					export {};
 | 
				
			||||||
 | 
					//# sourceMappingURL=Simplify2.d.ts.map
 | 
				
			||||||
							
								
								
									
										1
									
								
								types/Nest/Converter/Simplify2.d.ts.map
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								types/Nest/Converter/Simplify2.d.ts.map
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					{"version":3,"file":"Simplify2.d.ts","sourceRoot":"","sources":["../../../../src/Nest/Converter/Simplify2.ts"],"names":[],"mappings":"AAEA,UAAU,CAAC;IAEP,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,OAAO;IAEpB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CAC1B;AA0ED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAQvF"}
 | 
				
			||||||
							
								
								
									
										1
									
								
								types/api.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								types/api.d.ts
									
									
									
									
										vendored
									
									
								
							@@ -15,5 +15,6 @@ export * from "./DatabaseServices/Contour";
 | 
				
			|||||||
export * from "./DatabaseServices/Shape";
 | 
					export * from "./DatabaseServices/Shape";
 | 
				
			||||||
export * from "./DatabaseServices/ShapeManager";
 | 
					export * from "./DatabaseServices/ShapeManager";
 | 
				
			||||||
export * from "./Nest/Converter/Curves2Points";
 | 
					export * from "./Nest/Converter/Curves2Points";
 | 
				
			||||||
 | 
					export * from "./Nest/Converter/CurveWrap";
 | 
				
			||||||
export * from "./Common/Status";
 | 
					export * from "./Common/Status";
 | 
				
			||||||
//# sourceMappingURL=api.d.ts.map
 | 
					//# sourceMappingURL=api.d.ts.map
 | 
				
			||||||
@@ -1 +1 @@
 | 
				
			|||||||
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,oCAAoC,CAAC;AACnD,cAAc,0CAA0C,CAAC;AACzD,cAAc,mCAAmC,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AAC5E,cAAc,yCAAyC,CAAC;AACxD,cAAc,sBAAsB,CAAC;AACrC,cAAc,wCAAwC,CAAC;AACvD,cAAc,yDAAyD,CAAC;AACxE,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,iCAAiC,CAAC;AAGhD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iBAAiB,CAAC"}
 | 
					{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,oCAAoC,CAAC;AACnD,cAAc,0CAA0C,CAAC;AACzD,cAAc,mCAAmC,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AAC5E,cAAc,yCAAyC,CAAC;AACxD,cAAc,sBAAsB,CAAC;AACrC,cAAc,wCAAwC,CAAC;AACvD,cAAc,yDAAyD,CAAC;AACxE,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,iCAAiC,CAAC;AAGhD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iBAAiB,CAAC"}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user