From ea1fbad9b8268f2f500beb9d2f452b4623ce2ad4 Mon Sep 17 00:00:00 2001 From: ChenX Date: Fri, 4 Aug 2023 11:45:37 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D:=E9=81=BF=E5=85=8DEx?= =?UTF-8?q?=E5=91=BD=E4=BB=A4=E5=9C=A8=E7=BA=BF=E9=80=89=E6=8B=A9=E6=97=B6?= =?UTF-8?q?=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Add-on/Extends.ts | 5 +++++ src/Editor/SelectLine.ts | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/src/Add-on/Extends.ts b/src/Add-on/Extends.ts index ee0344e26..5ffd5c849 100644 --- a/src/Add-on/Extends.ts +++ b/src/Add-on/Extends.ts @@ -9,6 +9,7 @@ import { Command } from '../Editor/CommandMachine'; import { JigUtils } from '../Editor/JigUtils'; import { PromptSsgetResult, PromptStatus } from '../Editor/PromptResult'; import { SelectBox, SelectType } from '../Editor/SelectBox'; +import { SelectLine } from '../Editor/SelectLine'; import { SelectPick } from '../Editor/SelectPick'; import { SelectSet } from '../Editor/SelectSet'; import { AsVector3 } from '../Geometry/GeUtils'; @@ -83,6 +84,10 @@ export class Command_Extend implements Command { selectCenterPt = set._PickPointVcs.clone(); } + else if (set instanceof SelectLine) + { + selectCenterPt = AsVector3(set.Center); + } app.Viewer.ScreenToWorld(selectCenterPt); for (let cu of set.SelectEntityList as Curve[]) diff --git a/src/Editor/SelectLine.ts b/src/Editor/SelectLine.ts index 3e836340e..55411a51e 100644 --- a/src/Editor/SelectLine.ts +++ b/src/Editor/SelectLine.ts @@ -1,5 +1,6 @@ import { Matrix4, Object3D, OrthographicCamera, PerspectiveCamera, Vector2, Vector3 } from 'three'; import { doIntersect } from "../Geometry/DoIntersect"; +import { midPoint2 } from '../Geometry/GeUtils'; import { IViewer } from '../GraphicsSystem/IView'; import { SelectSetBase } from './SelectBase'; @@ -23,6 +24,11 @@ export class SelectLine extends SelectSetBase } } + get Center() + { + return midPoint2(this._StartPt, this._EndPt); + } + IntersectLine(p1: Vector3, p2: Vector3): boolean { return doIntersect(p1, p2, this._StartPt, this._EndPt);