From 469957ab43d54f3680d118ca0a663e280f60fd97 Mon Sep 17 00:00:00 2001 From: ChenX Date: Thu, 26 Sep 2019 09:19:57 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B8=85=E7=90=86=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- __test__/Fillet/__snapshots__/polyline.test.ts.snap | 4 ++-- src/DatabaseServices/Entity/Curve.ts | 5 ++++- src/DatabaseServices/Entity/Line.ts | 7 +++++-- src/Geometry/SortEntityByBox.ts | 4 ++-- 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/__test__/Fillet/__snapshots__/polyline.test.ts.snap b/__test__/Fillet/__snapshots__/polyline.test.ts.snap index e8377d49c..374f550e1 100644 --- a/__test__/Fillet/__snapshots__/polyline.test.ts.snap +++ b/__test__/Fillet/__snapshots__/polyline.test.ts.snap @@ -4,7 +4,7 @@ exports[`双圆多段线倒角 1`] = `1208.3752684304045`; exports[`双圆多段线倒角 2`] = `1208.3752684304045`; -exports[`双圆多段线倒角 3`] = `1208.3752684304054`; +exports[`双圆多段线倒角 3`] = `1208.3752684304043`; exports[`双圆多段线倒角 4`] = `1208.3752684304045`; @@ -12,7 +12,7 @@ exports[`双圆多段线倒角 5`] = `1200.7933322000165`; exports[`双圆多段线倒角 6`] = `1200.7933322000163`; -exports[`双圆多段线倒角 7`] = `1200.793332200017`; +exports[`双圆多段线倒角 7`] = `1200.7933322000163`; exports[`双圆多段线倒角 8`] = `1200.793332200017`; diff --git a/src/DatabaseServices/Entity/Curve.ts b/src/DatabaseServices/Entity/Curve.ts index b9ec973b8..23ca67cc8 100644 --- a/src/DatabaseServices/Entity/Curve.ts +++ b/src/DatabaseServices/Entity/Curve.ts @@ -103,7 +103,10 @@ export abstract class Curve extends Entity { if (Array.isArray(param)) { - param = param.filter(p => this.ParamOnCurve(p)); + param = param.filter(p => + { + return p > 0 && p < this.EndParam; + }); if (param.length === 0) return []; param.push(0, this.EndParam); diff --git a/src/DatabaseServices/Entity/Line.ts b/src/DatabaseServices/Entity/Line.ts index 3471e7b35..71b3fcd7b 100644 --- a/src/DatabaseServices/Entity/Line.ts +++ b/src/DatabaseServices/Entity/Line.ts @@ -311,14 +311,17 @@ export class Line extends Curve return Status.False; if (param1 > param2) + { [param1, param2] = [param2, param1]; + [sp, ep] = [ep, sp]; + } if (allowGap || Math.max(0, param1) < Math.min(1, param2) + tolerance) { if (param1 < 0) - this.Extend(param1); + this.StartPoint = sp; if (param2 > 1) - this.Extend(param2); + this.EndPoint = ep; return Status.True; } } diff --git a/src/Geometry/SortEntityByBox.ts b/src/Geometry/SortEntityByBox.ts index bb960b1ce..be08f9696 100644 --- a/src/Geometry/SortEntityByBox.ts +++ b/src/Geometry/SortEntityByBox.ts @@ -10,9 +10,9 @@ export interface EBox * 根据盒子x排序盒子 * @param {EBox[]} arr */ -export function SortEntityByBox(arr: EBox[], sort: boolean = true) +export function SortEntityByBox(arr: T[], sort: boolean = true) { - let boxMap: Map = new Map(); + let boxMap: Map = new Map(); arr.forEach(e => boxMap.set(e, e.BoundingBox)); if (sort)