From e7d69a5def502a5332c221caa8a2585bb1b7e114 Mon Sep 17 00:00:00 2001 From: ChenX Date: Wed, 15 May 2019 21:04:04 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E8=BD=AE=E5=BB=93=E4=B8=8D?= =?UTF-8?q?=E7=AD=89=E6=AF=94=E4=BE=8B=E7=BC=A9=E6=94=BE=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98.(=E9=87=87=E7=94=A8=E6=8B=89?= =?UTF-8?q?=E4=BC=B8=E5=A4=B9=E7=82=B9=E7=9A=84=E6=96=B9=E5=BC=8F=E8=BF=9B?= =?UTF-8?q?=E8=A1=8C=E7=BC=A9=E6=94=BE)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/DatabaseServices/Contour.ts | 35 ++++++++++---------------------- src/DatabaseServices/Polyline.ts | 5 ----- 2 files changed, 11 insertions(+), 29 deletions(-) diff --git a/src/DatabaseServices/Contour.ts b/src/DatabaseServices/Contour.ts index c9ea90961..2b31b0fec 100644 --- a/src/DatabaseServices/Contour.ts +++ b/src/DatabaseServices/Contour.ts @@ -62,37 +62,24 @@ export class Contour * @param {number} ref 缩放参考值,大于该值的点缩放 * @param {number} dist 缩放距离 * @param {string} dir x y z - * @returns - * @memberof Contour */ - UnEqualProportionScale(ref: number, dist: number, dir: string) + UnEqualProportionScale(ref: number, dist: number, dir: "x" | "y") { let cu = this.m_Curve; if (cu instanceof Polyline) { - for (let i = 0; i <= cu.EndParam; i++) + let lineData = cu.LineData; + let length = lineData.length; + + let moveIndexs: number[] = []; + for (let i = 0; i < length; i++) { - let p = cu.GetPointAtParam(i); - if (p[dir] > ref) - { - let vec = new Vector3(); - vec[dir] = dist; - p.add(vec).applyMatrix4(cu.OCSInv); - cu.SetPointAt(i, Vec3DTo2D(p)); - //下一点不拉伸时修正凸度 - if (!equaln(cu.GetBuilgeAt(i), 0) && i + 1 <= cu.EndParam) - { - let p2 = cu.GetPointAtParam(i + 1); - if (p2[dir] < ref) - { - let derv = cu.GetFistDeriv(i + 1).negate(); - let chord = p.sub(cu.GetPointAtParam(i + 1)); - let ang = getCirAngleByChordAndTangent(derv, chord); - cu.SetBulgeAt(i, ang / 4); - } - } - } + if (lineData[i].pt[dir] > ref) + moveIndexs.push(i); } + let moveVec = new Vector3(); + moveVec[dir] = dist; + cu.MoveStretchPoints(moveIndexs, moveVec); return true; } return false; diff --git a/src/DatabaseServices/Polyline.ts b/src/DatabaseServices/Polyline.ts index 136ea0467..0f83ad79f 100644 --- a/src/DatabaseServices/Polyline.ts +++ b/src/DatabaseServices/Polyline.ts @@ -318,9 +318,6 @@ export class Polyline extends Curve /** * 表示最后一条曲线的终止参数,使用该参数可以直接遍历到多段线的所有子线段. for(i