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);