@itwin/core-frontend 5.0.0-dev.104 → 5.0.0-dev.105
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/AccuSnap.d.ts +1 -0
- package/lib/cjs/AccuSnap.d.ts.map +1 -1
- package/lib/cjs/AccuSnap.js +72 -1
- package/lib/cjs/AccuSnap.js.map +1 -1
- package/lib/cjs/HitDetail.d.ts +4 -1
- package/lib/cjs/HitDetail.d.ts.map +1 -1
- package/lib/cjs/HitDetail.js +7 -0
- package/lib/cjs/HitDetail.js.map +1 -1
- package/lib/cjs/tools/AccuDrawTool.d.ts +0 -12
- package/lib/cjs/tools/AccuDrawTool.d.ts.map +1 -1
- package/lib/cjs/tools/AccuDrawTool.js +2 -60
- package/lib/cjs/tools/AccuDrawTool.js.map +1 -1
- package/lib/esm/AccuSnap.d.ts +1 -0
- package/lib/esm/AccuSnap.d.ts.map +1 -1
- package/lib/esm/AccuSnap.js +73 -2
- package/lib/esm/AccuSnap.js.map +1 -1
- package/lib/esm/HitDetail.d.ts +4 -1
- package/lib/esm/HitDetail.d.ts.map +1 -1
- package/lib/esm/HitDetail.js +7 -0
- package/lib/esm/HitDetail.js.map +1 -1
- package/lib/esm/tools/AccuDrawTool.d.ts +0 -12
- package/lib/esm/tools/AccuDrawTool.d.ts.map +1 -1
- package/lib/esm/tools/AccuDrawTool.js +3 -60
- package/lib/esm/tools/AccuDrawTool.js.map +1 -1
- package/lib/public/locales/en/CoreTools.json +0 -5
- package/lib/public/scripts/parse-imdl-worker.js +1 -1
- package/lib/public/sprites/SnapPerpendicularPoint.png +0 -0
- package/lib/public/sprites/SnapTangentPoint.png +0 -0
- package/lib/workers/webpack/parse-imdl-worker.js +1 -1
- package/package.json +16 -16
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccuDrawTool.js","sourceRoot":"","sources":["../../../src/tools/AccuDrawTool.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tools\n */\n\nimport { BentleyStatus } from \"@itwin/core-bentley\";\nimport { AxisOrder, Geometry, Matrix3d, Point3d, Transform, Vector3d } from \"@itwin/core-geometry\";\nimport { AccuDraw, AccuDrawFlags, AccuDrawHintBuilder, CompassMode, ContextMode, ItemField, KeyinStatus, LockedStates, RotationMode, ThreeAxes } from \"../AccuDraw\";\nimport { TentativeOrAccuSnap } from \"../AccuSnap\";\nimport { ACSDisplayOptions, AuxCoordSystemState } from \"../AuxCoordSys\";\nimport { SnapDetail, SnapHeat } from \"../HitDetail\";\nimport { IModelApp } from \"../IModelApp\";\nimport { DecorateContext } from \"../ViewContext\";\nimport { ScreenViewport, Viewport } from \"../Viewport\";\nimport { BeButtonEvent, CoordinateLockOverrides, CoreTools, EventHandled, InputCollector, Tool } from \"./Tool\";\n\n// cSpell:ignore dont unlockedz\n\nfunction normalizedDifference(point1: Point3d, point2: Point3d, out: Vector3d): number {\n return point2.vectorTo(point1).normalizeWithLength(out).mag;\n}\n\nfunction normalizedCrossProduct(vec1: Vector3d, vec2: Vector3d, out: Vector3d): number {\n return vec1.crossProduct(vec2, out).normalizeWithLength(out).mag;\n}\n\n/**\n * A shortcut may require no user input (immediate) or it may install a tool to collect the needed input. AccuDrawShortcuts are how users control AccuDraw.\n * A tool implementor should not use this class to setup AccuDraw, instead use AccuDrawHintBuilder to provide hints.\n * @beta\n */\nexport class AccuDrawShortcuts {\n /** Disable/Enable AccuDraw for the session */\n public static sessionToggle(): void {\n const accudraw = IModelApp.accuDraw;\n\n if (accudraw.isEnabled)\n accudraw.disableForSession();\n else\n accudraw.enableForSession();\n }\n\n /** Suspend/Unsuspend AccuDraw for the active tool */\n public static suspendToggle(): void {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return;\n\n if (accudraw.isActive)\n accudraw.deactivate();\n else\n accudraw.activate();\n\n accudraw.refreshDecorationsAndDynamics();\n }\n\n public static rotateAxesByPoint(isSnapped: boolean, aboutCurrentZ: boolean): boolean {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return false;\n\n const vp = accudraw.currentView;\n if (!vp)\n return false;\n\n const point = accudraw.point;\n if (!vp.view.is3d())\n point.z = 0.0;\n\n if (aboutCurrentZ)\n accudraw.hardConstructionPlane(point, point, accudraw.planePt, accudraw.axes.z, vp, isSnapped);\n else\n accudraw.softConstructionPlane(point, point, accudraw.planePt, accudraw.axes.z, vp, isSnapped);\n\n // Snap point and compass origin coincide...\n const xVec = new Vector3d();\n if (normalizedDifference(point, accudraw.planePt, xVec) < Geometry.smallAngleRadians)\n return false;\n\n accudraw.axes.x.setFrom(xVec);\n\n if (RotationMode.Context !== accudraw.rotationMode)\n accudraw.setRotationMode(RotationMode.Context);\n\n accudraw.flags.contextRotMode = ContextMode.XAxis;\n accudraw.flags.lockedRotation = false;\n\n accudraw.updateRotation();\n\n // Always want index line to display for x-Axis...changing rotation clears this...so it flashes...\n accudraw.indexed |= LockedStates.X_BM;\n return true;\n }\n\n public static updateACSByPoints(acs: AuxCoordSystemState, vp: Viewport, points: Point3d[], isDynamics: boolean): boolean {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return false;\n\n let accept = false;\n const vec = [new Vector3d(), new Vector3d(), new Vector3d()];\n acs.setOrigin(points[0]);\n switch (points.length) {\n case 1:\n acs.setRotation(vp.rotation);\n if (!isDynamics) {\n accudraw.published.origin.setFrom(points[0]);\n accudraw.published.flags = AccuDrawFlags.SetOrigin;\n accudraw.flags.fixedOrg = true;\n }\n break;\n\n case 2:\n if (normalizedDifference(points[1], points[0], vec[0]) < 0.00001) {\n accept = true;\n break;\n }\n\n if (vp.view.is3d()) {\n if (normalizedCrossProduct(accudraw.axes.y, vec[0], vec[1]) < 0.00001) {\n vec[2].set(0.0, 0.0, 1.0);\n\n if (normalizedCrossProduct(vec[2], vec[0], vec[1]) < 0.00001) {\n vec[2].set(0.0, 1.0, 0.0);\n normalizedCrossProduct(vec[2], vec[0], vec[1]);\n }\n }\n\n normalizedCrossProduct(vec[0], vec[1], vec[2]);\n acs.setRotation(Matrix3d.createRows(vec[0], vec[1], vec[2]));\n\n if (!isDynamics) {\n accudraw.published.origin.setFrom(points[0]);\n accudraw.published.flags = AccuDrawFlags.SetOrigin | AccuDrawFlags.SetNormal;\n accudraw.published.vector.setFrom(vec[0]);\n }\n break;\n }\n\n vec[2].set(0.0, 0.0, 1.0);\n normalizedCrossProduct(vec[2], vec[0], vec[1]);\n acs.setRotation(Matrix3d.createRows(vec[0], vec[1], vec[2]));\n accept = true;\n break;\n\n case 3:\n if (normalizedDifference(points[1], points[0], vec[0]) < 0.00001 ||\n normalizedDifference(points[2], points[0], vec[1]) < 0.00001 ||\n normalizedCrossProduct(vec[0], vec[1], vec[2]) < 0.00001) {\n accept = true;\n break;\n }\n\n normalizedCrossProduct(vec[2], vec[0], vec[1]);\n acs.setRotation(Matrix3d.createRows(vec[0], vec[1], vec[2]));\n accept = true;\n break;\n }\n\n return accept;\n }\n\n public static processPendingHints() { IModelApp.accuDraw.processHints(); }\n\n public static requestInputFocus() {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return;\n\n accudraw.grabInputFocus();\n accudraw.refreshDecorationsAndDynamics();\n }\n\n // Helper method for GUI implementation...\n public static async itemFieldNavigate(index: ItemField, str: string, forward: boolean): Promise<void> {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return;\n\n if (accudraw.getFieldLock(index))\n accudraw.saveCoordinate(index, accudraw.getValueByIndex(index));\n\n if (!accudraw.isActive && KeyinStatus.Partial === accudraw.getKeyinStatus(index)) {\n await accudraw.processFieldInput(index, str, true);\n } else {\n accudraw.setKeyinStatus(index, KeyinStatus.Dynamic);\n accudraw.onFieldValueChange(index);\n }\n\n const vp = accudraw.currentView;\n const is3d = vp ? accudraw.is3dCompass(vp) : false;\n const isPolar = (CompassMode.Polar === accudraw.compassMode);\n switch (index) {\n case ItemField.DIST_Item:\n index = ((is3d && !forward) ? ItemField.Z_Item : ItemField.ANGLE_Item);\n break;\n\n case ItemField.ANGLE_Item:\n index = ((is3d && forward) ? ItemField.Z_Item : ItemField.DIST_Item);\n break;\n\n case ItemField.X_Item:\n index = ((is3d && !forward) ? ItemField.Z_Item : ItemField.Y_Item);\n break;\n\n case ItemField.Y_Item:\n index = ((is3d && forward) ? ItemField.Z_Item : ItemField.X_Item);\n break;\n\n case ItemField.Z_Item:\n index = (forward ? (isPolar ? ItemField.DIST_Item : ItemField.X_Item) : (isPolar ? ItemField.ANGLE_Item : ItemField.Y_Item));\n break;\n }\n\n // Set focus to new item and disable automatic focus change based on cursor location in rectangular mode.\n accudraw.setFocusItem(index);\n accudraw.dontMoveFocus = true;\n }\n\n public static itemFieldNewInput(index: ItemField): void { IModelApp.accuDraw.setKeyinStatus(index, KeyinStatus.Partial); }\n public static itemFieldCompletedInput(index: ItemField): void { IModelApp.accuDraw.setKeyinStatus(index, KeyinStatus.Dynamic); }\n\n public static async itemFieldAcceptInput(index: ItemField, str: string): Promise<void> {\n const accudraw = IModelApp.accuDraw;\n await accudraw.processFieldInput(index, str, true);\n accudraw.setKeyinStatus(index, KeyinStatus.Dynamic);\n\n if (accudraw.getFieldLock(index))\n accudraw.saveCoordinate(index, accudraw.getValueByIndex(index));\n\n const vp = accudraw.currentView;\n if (accudraw.isActive) {\n if (!vp)\n return;\n\n if (CompassMode.Polar === accudraw.compassMode)\n accudraw.fixPointPolar(vp);\n else\n accudraw.fixPointRectangular(vp);\n\n accudraw.flags.dialogNeedsUpdate = true;\n return;\n }\n\n const is3d = vp ? vp.view.is3d() : false;\n const isPolar = (CompassMode.Polar === accudraw.compassMode);\n switch (index) {\n case ItemField.DIST_Item:\n index = ItemField.ANGLE_Item;\n break;\n\n case ItemField.ANGLE_Item:\n index = (is3d ? ItemField.Z_Item : ItemField.DIST_Item);\n break;\n\n case ItemField.X_Item:\n index = ItemField.Y_Item;\n break;\n\n case ItemField.Y_Item:\n index = (is3d ? ItemField.Z_Item : ItemField.X_Item);\n break;\n\n case ItemField.Z_Item:\n index = (isPolar ? ItemField.DIST_Item : ItemField.X_Item);\n break;\n }\n accudraw.setFocusItem(index);\n }\n\n public static itemFieldLockToggle(index: ItemField): void {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return;\n\n if (accudraw.getFieldLock(index)) {\n switch (index) {\n case ItemField.DIST_Item:\n accudraw.distanceLock(true, false);\n break;\n\n case ItemField.ANGLE_Item:\n accudraw.angleLock();\n break;\n\n case ItemField.X_Item:\n accudraw.clearTentative();\n accudraw.locked |= LockedStates.X_BM;\n break;\n\n case ItemField.Y_Item:\n accudraw.clearTentative();\n accudraw.locked |= LockedStates.Y_BM;\n break;\n\n case ItemField.Z_Item:\n accudraw.clearTentative();\n break;\n }\n\n return;\n }\n\n switch (index) {\n case ItemField.DIST_Item:\n accudraw.locked &= ~LockedStates.DIST_BM;\n break;\n\n case ItemField.ANGLE_Item:\n accudraw.locked &= ~LockedStates.ANGLE_BM;\n break;\n\n case ItemField.X_Item:\n accudraw.locked &= ~LockedStates.X_BM;\n break;\n\n case ItemField.Y_Item:\n accudraw.locked &= ~LockedStates.Y_BM;\n break;\n\n case ItemField.Z_Item:\n break;\n }\n\n accudraw.dontMoveFocus = false;\n accudraw.clearTentative();\n }\n\n public static choosePreviousValue(index: ItemField): void {\n const accudraw = IModelApp.accuDraw;\n accudraw.getSavedValue(index, false);\n accudraw.refreshDecorationsAndDynamics();\n }\n\n public static chooseNextValue(index: ItemField): void {\n const accudraw = IModelApp.accuDraw;\n accudraw.getSavedValue(index, true);\n accudraw.refreshDecorationsAndDynamics();\n }\n\n public static clearSavedValues(): void {\n const accudraw = IModelApp.accuDraw;\n accudraw.clearSavedValues();\n }\n\n public static itemRotationModeChange(rotation: RotationMode): void {\n const accudraw = IModelApp.accuDraw;\n const vp = accudraw.currentView;\n const is3d = vp ? vp.view.is3d() : true;\n\n if (!is3d && (RotationMode.Front === rotation || RotationMode.Side === rotation))\n accudraw.setRotationMode(RotationMode.Top);\n\n accudraw.flags.baseRotation = rotation;\n accudraw.updateRotation(true);\n }\n\n // Shortcut implementations for GUI entry points...\n public static setOrigin(explicitOrigin?: Point3d): void {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return;\n\n if (explicitOrigin) {\n accudraw.published.origin.setFrom(explicitOrigin);\n accudraw.flags.haveValidOrigin = true;\n } else if (accudraw.isInactive || accudraw.isDeactivated) {\n // If AccuSnap is active use adjusted snap point, otherwise use last data point...\n const snap = TentativeOrAccuSnap.getCurrentSnap(false);\n if (undefined !== snap) {\n accudraw.published.origin.setFrom(snap.isPointAdjusted ? snap.adjustedPoint : snap.getPoint());\n accudraw.flags.haveValidOrigin = true;\n } else {\n const ev = new BeButtonEvent();\n IModelApp.toolAdmin.fillEventFromLastDataButton(ev);\n\n if (ev.viewport) {\n accudraw.published.origin.setFrom(ev.point);\n accudraw.flags.haveValidOrigin = true;\n } else {\n // NOTE: If current point isn't valid setDefaultOrigin will be called...\n accudraw.published.origin.setFrom(accudraw.point);\n }\n }\n } else {\n accudraw.published.origin.setFrom(accudraw.point);\n accudraw.flags.haveValidOrigin = true;\n accudraw.setLastPoint(accudraw.published.origin);\n }\n\n accudraw.clearTentative();\n const vp = accudraw.currentView;\n\n // NOTE: _AdjustPoint should have been called to have setup currentView...\n if (vp && !vp.view.is3d())\n accudraw.published.origin.z = 0.0;\n\n accudraw.origin.setFrom(accudraw.published.origin);\n accudraw.point.setFrom(accudraw.published.origin);\n accudraw.planePt.setFrom(accudraw.published.origin);\n accudraw.published.flags |= AccuDrawFlags.SetOrigin;\n accudraw.activate();\n accudraw.refreshDecorationsAndDynamics(); // NOTE: Will already grab input focus through processHints...\n }\n\n public static changeCompassMode(): void {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return;\n\n let axisLockStatus = accudraw.locked & LockedStates.XY_BM;\n\n if (axisLockStatus) {\n if (CompassMode.Rectangular === accudraw.compassMode) {\n if (axisLockStatus & LockedStates.X_BM && accudraw.delta.x !== 0.0)\n axisLockStatus &= ~LockedStates.X_BM;\n\n if (axisLockStatus & LockedStates.Y_BM && accudraw.delta.y !== 0.0)\n axisLockStatus &= ~LockedStates.Y_BM;\n }\n }\n\n accudraw.changeCompassMode(true);\n if (axisLockStatus) {\n if (CompassMode.Rectangular === accudraw.compassMode) {\n accudraw.delta.x = accudraw.delta.y = 0.0;\n\n if (axisLockStatus & LockedStates.X_BM)\n accudraw.setFieldLock(ItemField.X_Item, true);\n else if (axisLockStatus & LockedStates.Y_BM)\n accudraw.setFieldLock(ItemField.Y_Item, true);\n } else {\n accudraw.setFieldLock(ItemField.ANGLE_Item, true);\n }\n accudraw.locked = axisLockStatus;\n }\n accudraw.flags.baseMode = accudraw.compassMode;\n this.requestInputFocus();\n }\n\n public static lockSmart(): void {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return;\n\n const accuSnap = IModelApp.accuSnap;\n\n // Don't want AccuSnap to influence axis or Z...\n if (accuSnap.isHot) {\n accuSnap.clear();\n\n const vp = accudraw.currentView;\n if (vp) {\n if (CompassMode.Polar === accudraw.compassMode)\n accudraw.fixPointPolar(vp);\n else\n accudraw.fixPointRectangular(vp);\n }\n }\n\n if (CompassMode.Polar === accudraw.compassMode) {\n const isSnapped = accudraw.clearTentative();\n if (accudraw.locked & LockedStates.ANGLE_BM) { // angle locked (unlock it)\n accudraw.setFieldLock(ItemField.ANGLE_Item, false);\n accudraw.locked &= ~LockedStates.ANGLE_BM;\n } else if (accudraw.getFieldLock(ItemField.DIST_Item)) { // distance locked (unlock it)\n accudraw.setFieldLock(ItemField.DIST_Item, false);\n accudraw.locked &= ~LockedStates.DIST_BM;\n } else if (isSnapped) {\n accudraw.doLockAngle(isSnapped);\n } else if (accudraw.indexed & LockedStates.ANGLE_BM) { // angle indexed (lock it)\n accudraw.angleLock();\n } else {\n if (Math.abs(accudraw.vector.dotProduct(accudraw.axes.x)) > Math.abs(accudraw.vector.dotProduct(accudraw.axes.y)))\n accudraw.indexed |= LockedStates.Y_BM;\n else\n accudraw.indexed |= LockedStates.X_BM;\n accudraw.angleLock();\n }\n this.requestInputFocus();\n return;\n }\n\n if (accudraw.locked) { // if locked, unlock\n accudraw.clearTentative();\n accudraw.locked &= ~LockedStates.XY_BM;\n accudraw.setFieldLock(ItemField.X_Item, false);\n accudraw.setFieldLock(ItemField.Y_Item, false);\n if (accudraw.getFieldLock(ItemField.Z_Item) && accudraw.delta.z === 0.0 && !accudraw.stickyZLock)\n accudraw.setFieldLock(ItemField.Z_Item, false);\n } else { // lock to nearest axis\n if (accudraw.clearTentative()) {\n if (Math.abs(accudraw.delta.x) >= Geometry.smallAngleRadians && Math.abs(accudraw.delta.y) >= Geometry.smallAngleRadians) {\n accudraw.doLockAngle(false);\n return;\n }\n }\n\n const vp = accudraw.currentView;\n if (Math.abs(accudraw.delta.x) > Math.abs(accudraw.delta.y)) {\n accudraw.delta.y = 0.0;\n accudraw.onFieldValueChange(ItemField.Y_Item);\n accudraw.locked |= LockedStates.Y_BM;\n accudraw.locked &= ~LockedStates.X_BM;\n accudraw.setFieldLock(ItemField.X_Item, false);\n accudraw.setFieldLock(ItemField.Y_Item, true);\n accudraw.setFieldLock(ItemField.Z_Item, vp ? vp.view.is3d() : false);\n } else {\n accudraw.delta.x = 0.0;\n accudraw.onFieldValueChange(ItemField.X_Item);\n accudraw.locked |= LockedStates.X_BM;\n accudraw.locked &= ~LockedStates.Y_BM;\n accudraw.setFieldLock(ItemField.Y_Item, false);\n accudraw.setFieldLock(ItemField.X_Item, true);\n accudraw.setFieldLock(ItemField.Z_Item, vp ? vp.view.is3d() : false);\n }\n\n if (!accudraw.flags.lockedRotation) {\n accudraw.flags.lockedRotation = true;\n accudraw.flags.contextRotMode = ContextMode.Locked;\n accudraw.setRotationMode(RotationMode.Context);\n }\n }\n this.requestInputFocus();\n }\n\n /** Disable indexing when not currently indexed; if indexed, enable respective lock. */\n public static lockIndex(): void {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return;\n\n if (accudraw.flags.indexLocked) {\n if (accudraw.locked)\n this.lockSmart();\n\n accudraw.flags.indexLocked = false;\n } else {\n if (CompassMode.Polar === accudraw.compassMode) {\n if (accudraw.indexed & LockedStates.XY_BM) {\n accudraw.setFieldLock(ItemField.ANGLE_Item, true);\n accudraw.angleLock();\n }\n\n if (accudraw.indexed & LockedStates.DIST_BM)\n this.lockDistance();\n } else {\n if (accudraw.indexed & LockedStates.X_BM) {\n this.lockX();\n\n if (accudraw.indexed & LockedStates.DIST_BM)\n this.lockY();\n }\n\n if (accudraw.indexed & LockedStates.Y_BM) {\n this.lockY();\n\n if (accudraw.indexed & LockedStates.DIST_BM)\n this.lockX();\n }\n\n if (accudraw.indexed & LockedStates.DIST_BM && !(accudraw.indexed & LockedStates.XY_BM)) {\n if (accudraw.locked & LockedStates.X_BM)\n this.lockY();\n else\n this.lockX();\n }\n }\n\n accudraw.flags.indexLocked = true;\n }\n\n this.requestInputFocus();\n }\n\n public static lockX(): void {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return;\n\n accudraw.clearTentative();\n\n if (CompassMode.Rectangular !== accudraw.compassMode) {\n const vp = accudraw.currentView;\n if (!vp)\n return;\n\n accudraw.fixPointRectangular(vp);\n accudraw.changeCompassMode(true);\n }\n\n if (accudraw.getFieldLock(ItemField.X_Item)) {\n accudraw.setFieldLock(ItemField.X_Item, false);\n accudraw.locked = accudraw.locked & ~LockedStates.X_BM;\n accudraw.setKeyinStatus(ItemField.X_Item, KeyinStatus.Dynamic);\n } else {\n accudraw.saveCoordinate(ItemField.X_Item, accudraw.delta.x);\n accudraw.setFieldLock(ItemField.X_Item, true);\n accudraw.locked = accudraw.locked | LockedStates.X_BM;\n }\n this.requestInputFocus();\n }\n\n public static lockY(): void {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return;\n\n accudraw.clearTentative();\n\n if (CompassMode.Rectangular !== accudraw.compassMode) {\n const vp = accudraw.currentView;\n if (!vp)\n return;\n\n accudraw.fixPointRectangular(vp);\n accudraw.changeCompassMode(true);\n }\n\n if (accudraw.getFieldLock(ItemField.Y_Item)) {\n accudraw.setFieldLock(ItemField.Y_Item, false);\n accudraw.locked = accudraw.locked & ~LockedStates.Y_BM;\n accudraw.setKeyinStatus(ItemField.Y_Item, KeyinStatus.Dynamic);\n } else {\n accudraw.saveCoordinate(ItemField.Y_Item, accudraw.delta.y);\n accudraw.setFieldLock(ItemField.Y_Item, true);\n accudraw.locked = accudraw.locked | LockedStates.Y_BM;\n }\n this.requestInputFocus();\n }\n\n public static lockZ(): void {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return;\n\n const vp = accudraw.currentView;\n if (!vp || !vp.view.is3d())\n return;\n\n const isSnapped = accudraw.clearTentative();\n\n if (accudraw.getFieldLock(ItemField.Z_Item)) {\n accudraw.setFieldLock(ItemField.Z_Item, false);\n accudraw.setKeyinStatus(ItemField.Z_Item, KeyinStatus.Dynamic);\n } else {\n // Move focus to Z field...\n if (!isSnapped && accudraw.autoFocusFields) {\n accudraw.setFocusItem(ItemField.Z_Item);\n accudraw.dontMoveFocus = true;\n }\n accudraw.setFieldLock(ItemField.Z_Item, true);\n }\n this.requestInputFocus();\n }\n\n public static lockDistance(): void {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return;\n\n const isSnapped = accudraw.clearTentative();\n\n if (CompassMode.Polar !== accudraw.compassMode) {\n const vp = accudraw.currentView;\n if (!vp)\n return;\n\n accudraw.locked = 0;\n accudraw.fixPointPolar(vp);\n accudraw.changeCompassMode(true);\n }\n\n if (accudraw.getFieldLock(ItemField.DIST_Item)) {\n accudraw.setFieldLock(ItemField.DIST_Item, false);\n accudraw.locked &= ~LockedStates.DIST_BM;\n accudraw.setKeyinStatus(ItemField.DIST_Item, KeyinStatus.Dynamic);\n } else {\n // Move focus to distance field...\n if (!isSnapped && accudraw.autoFocusFields)\n accudraw.setFocusItem(ItemField.DIST_Item);\n accudraw.distanceLock(true, true);\n }\n this.requestInputFocus();\n }\n\n public static lockAngle(): void {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return;\n accudraw.doLockAngle(accudraw.clearTentative());\n this.requestInputFocus();\n }\n\n public static setStandardRotation(rotation: RotationMode): void {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return;\n\n if (RotationMode.Context === rotation) {\n const axes = accudraw.baseAxes.clone();\n accudraw.accountForAuxRotationPlane(axes, accudraw.flags.auxRotationPlane);\n accudraw.setContextRotation(axes.toMatrix3d(), false, true);\n this.requestInputFocus();\n return;\n } else {\n accudraw.flags.baseRotation = rotation;\n accudraw.setRotationMode(rotation);\n }\n accudraw.updateRotation(true);\n this.requestInputFocus();\n }\n\n public static alignView(): void {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return;\n\n const vp = accudraw.currentView;\n if (!vp)\n return;\n\n const newMatrix = accudraw.getRotation();\n if (newMatrix.isExactEqual(vp.rotation))\n return;\n\n const targetMatrix = newMatrix.multiplyMatrixMatrix(vp.rotation);\n const rotateTransform = Transform.createFixedPointAndMatrix(vp.view.getTargetPoint(), targetMatrix);\n const newFrustum = vp.getFrustum();\n newFrustum.multiply(rotateTransform);\n\n vp.view.setupFromFrustum(newFrustum);\n vp.synchWithView();\n vp.animateFrustumChange();\n\n this.requestInputFocus();\n }\n\n public static rotateToBase(): void { this.setStandardRotation(IModelApp.accuDraw.flags.baseRotation); }\n\n public static rotateToACS(): void {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return;\n // NOTE: Match current ACS orientation..reset auxRotationPlane to top!\n accudraw.flags.auxRotationPlane = RotationMode.Top;\n this.setStandardRotation(RotationMode.ACS);\n }\n\n public static rotateCycle(): void {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return;\n\n const vp = accudraw.currentView;\n if (!vp || !vp.view.is3d())\n return;\n\n let rotation: RotationMode;\n switch (accudraw.rotationMode) {\n case RotationMode.View:\n case RotationMode.Side:\n rotation = RotationMode.Top;\n break;\n\n case RotationMode.Top:\n rotation = RotationMode.Front;\n break;\n\n case RotationMode.Front:\n rotation = RotationMode.Side;\n break;\n\n case RotationMode.Context:\n rotation = RotationMode.Context;\n\n if (rotation !== accudraw.flags.baseRotation) {\n accudraw.baseAxes.setFrom(accudraw.axes);\n accudraw.flags.auxRotationPlane = RotationMode.Top;\n accudraw.flags.baseRotation = rotation;\n } else {\n const axes = accudraw.baseAxes.clone();\n accudraw.accountForAuxRotationPlane(axes, accudraw.flags.auxRotationPlane);\n if (!accudraw.axes.equals(axes))\n accudraw.changeBaseRotationMode(rotation);\n }\n\n switch (accudraw.flags.auxRotationPlane) {\n case RotationMode.Front:\n accudraw.flags.auxRotationPlane = RotationMode.Side;\n break;\n\n case RotationMode.Side:\n accudraw.flags.auxRotationPlane = RotationMode.Top;\n break;\n\n case RotationMode.Top:\n accudraw.flags.auxRotationPlane = RotationMode.Front;\n break;\n }\n break;\n\n case RotationMode.ACS:\n rotation = RotationMode.ACS;\n switch (accudraw.flags.auxRotationPlane) {\n case RotationMode.Front:\n accudraw.flags.auxRotationPlane = RotationMode.Side;\n break;\n case RotationMode.Side:\n accudraw.flags.auxRotationPlane = RotationMode.Top;\n break;\n case RotationMode.Top:\n accudraw.flags.auxRotationPlane = RotationMode.Front;\n break;\n }\n break;\n\n default:\n return;\n }\n\n this.setStandardRotation(rotation);\n }\n\n public static rotate90(axis: number): void {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return;\n\n const newRotation = new ThreeAxes();\n\n accudraw.locked = accudraw.indexed = 0;\n accudraw.unlockAllFields();\n\n switch (axis) {\n case 0:\n newRotation.x.setFrom(accudraw.axes.x);\n newRotation.z.setFrom(accudraw.axes.y);\n newRotation.z.crossProduct(newRotation.x, newRotation.y);\n break;\n\n case 1:\n newRotation.x.setFrom(accudraw.axes.z);\n newRotation.y.setFrom(accudraw.axes.y);\n newRotation.x.crossProduct(newRotation.y, newRotation.z);\n break;\n\n case 2:\n newRotation.x.setFrom(accudraw.axes.y);\n newRotation.z.setFrom(accudraw.axes.z);\n newRotation.z.crossProduct(newRotation.x, newRotation.y);\n break;\n }\n\n accudraw.setContextRotation(newRotation.toMatrix3d(), true, true);\n this.requestInputFocus();\n }\n\n public static async rotateAxes(aboutCurrentZ: boolean) {\n return IModelApp.tools.run(\"AccuDraw.RotateAxes\", aboutCurrentZ);\n }\n\n public static async rotateToElement() {\n return IModelApp.tools.run(\"AccuDraw.RotateElement\");\n }\n\n public static async rotatePerpendicular() {\n return IModelApp.tools.run(\"AccuDraw.RotatePerpendicular\");\n }\n\n public static async defineACSByElement() {\n return IModelApp.tools.run(\"AccuDraw.DefineACSByElement\");\n }\n\n public static async defineACSByPoints() {\n return IModelApp.tools.run(\"AccuDraw.DefineACSByPoints\");\n }\n\n public static getACS(acsName: string | undefined, useOrigin: boolean, useRotation: boolean): BentleyStatus {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return BentleyStatus.ERROR;\n\n const vp = accudraw.currentView;\n if (!vp)\n return BentleyStatus.ERROR;\n\n let currRotation = 0, currBaseRotation = 0;\n const axes = new ThreeAxes();\n\n if (!useRotation) {\n // Save current rotation, event listener on ACS change will orient AccuDraw to ACS...\n currRotation = accudraw.rotationMode;\n currBaseRotation = accudraw.flags.baseRotation;\n axes.setFrom(accudraw.axes);\n }\n\n if (acsName && \"\" !== acsName) {\n // // See if this ACS already exists...\n // DgnCode acsCode = AuxCoordSystem:: CreateCode(vp -> GetViewControllerR().GetViewDefinition(), acsName);\n // DgnElementId acsId = vp -> GetViewController().GetDgnDb().Elements().QueryElementIdByCode(acsCode);\n\n // if (!acsId.IsValid())\n // return ERROR;\n\n // AuxCoordSystemCPtr auxElm = vp -> GetViewController().GetDgnDb().Elements().Get<AuxCoordSystem>(acsId);\n\n // if (!auxElm.IsValid())\n // return ERROR;\n\n // AuxCoordSystemPtr acsPtr = auxElm -> MakeCopy<AuxCoordSystem>();\n\n // if (!acsPtr.IsValid())\n // return ERROR;\n\n // AuxCoordSystemCR oldACS = vp -> GetViewController().GetAuxCoordinateSystem();\n\n // if (!useOrigin)\n // acsPtr -> SetOrigin(oldACS.GetOrigin());\n\n // if (!useRotation)\n // acsPtr -> SetRotation(oldACS.GetRotation());\n\n // AccuDraw:: UpdateAuxCoordinateSystem(* acsPtr, * vp);\n }\n\n const currentACS = vp.view.auxiliaryCoordinateSystem;\n\n if (useOrigin) {\n accudraw.origin.setFrom(currentACS.getOrigin());\n accudraw.point.setFrom(accudraw.origin);\n accudraw.planePt.setFrom(accudraw.origin);\n }\n\n if (useRotation) {\n accudraw.flags.auxRotationPlane = RotationMode.Top;\n this.setStandardRotation(RotationMode.ACS);\n } else {\n this.itemFieldUnlockAll();\n\n accudraw.setRotationMode(currRotation);\n accudraw.flags.baseRotation = currBaseRotation;\n accudraw.axes.setFrom(axes);\n\n if (RotationMode.ACS === accudraw.flags.baseRotation) {\n const acs = currentACS.clone();\n\n const rMatrix = accudraw.getRotation();\n acs.setRotation(rMatrix);\n\n AccuDraw.updateAuxCoordinateSystem(acs, vp);\n }\n\n accudraw.published.flags &= ~AccuDrawFlags.OrientACS;\n }\n\n return BentleyStatus.SUCCESS;\n }\n\n public static writeACS(_acsName: string): BentleyStatus {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return BentleyStatus.ERROR;\n\n const vp = accudraw.currentView;\n if (!vp)\n return BentleyStatus.ERROR;\n\n // const origin = accudraw.origin;\n // const rMatrix = accudraw.getRotation();\n // AuxCoordSystemPtr acsPtr = AuxCoordSystem:: CreateFrom(vp -> GetViewController().GetAuxCoordinateSystem());\n // acsPtr -> SetOrigin(origin);\n // acsPtr -> SetRotation(rMatrix);\n // acsPtr -> SetType(CompassMode.Polar == accudraw.getCompassMode() ? ACSType :: Cylindrical : ACSType:: Rectangular);\n // acsPtr -> SetCode(AuxCoordSystem:: CreateCode(vp -> GetViewControllerR().GetViewDefinition(), nullptr != acsName ? acsName : \"\"));\n // acsPtr -> SetDescription(\"\");\n\n // if (acsName && '\\0' != acsName[0]) {\n // DgnDbStatus status;\n // acsPtr -> Insert(& status);\n\n // if (DgnDbStatus:: Success != status)\n // return BentleyStatus.ERROR;\n // }\n\n // AccuDraw:: UpdateAuxCoordinateSystem(* acsPtr, * vp);\n\n // accudraw.flags.baseRotation = RotationMode.ACS;\n // accudraw.SetRotationMode(RotationMode.ACS);\n\n return BentleyStatus.SUCCESS;\n }\n\n public static itemFieldUnlockAll(): void {\n const accudraw = IModelApp.accuDraw;\n if (accudraw.isEnabled)\n accudraw.unlockAllFields();\n }\n}\n\n/** @beta */\nexport class AccuDrawSessionToggleTool extends Tool {\n public static override toolId = \"AccuDraw.SessionToggle\";\n public override async run() {\n AccuDrawShortcuts.sessionToggle();\n return true;\n }\n}\n\n/** @beta */\nexport class AccuDrawSuspendToggleTool extends Tool {\n public static override toolId = \"AccuDraw.SuspendToggle\";\n public override async run() {\n AccuDrawShortcuts.suspendToggle();\n return true;\n }\n}\n\n/** @beta */\nexport class AccuDrawSetOriginTool extends Tool {\n public static override toolId = \"AccuDraw.SetOrigin\";\n public override async run() {\n AccuDrawShortcuts.setOrigin();\n return true;\n }\n}\n\n/** @beta */\nexport class AccuDrawSetLockSmartTool extends Tool {\n public static override toolId = \"AccuDraw.LockSmart\";\n public override async run() {\n AccuDrawShortcuts.lockSmart();\n return true;\n }\n}\n\n/** @beta */\nexport class AccuDrawSetLockIndexTool extends Tool {\n public static override toolId = \"AccuDraw.LockIndex\";\n public override async run() {\n AccuDrawShortcuts.lockIndex();\n return true;\n }\n}\n\n/** @beta */\nexport class AccuDrawSetLockXTool extends Tool {\n public static override toolId = \"AccuDraw.LockX\";\n public override async run(): Promise<boolean> {\n AccuDrawShortcuts.lockX();\n return true;\n }\n}\n\n/** @beta */\nexport class AccuDrawSetLockYTool extends Tool {\n public static override toolId = \"AccuDraw.LockY\";\n public override async run(): Promise<boolean> {\n AccuDrawShortcuts.lockY();\n return true;\n }\n}\n\n/** @beta */\nexport class AccuDrawSetLockZTool extends Tool {\n public static override toolId = \"AccuDraw.LockZ\";\n public override async run(): Promise<boolean> {\n AccuDrawShortcuts.lockZ();\n return true;\n }\n}\n\n/** @beta */\nexport class AccuDrawSetLockDistanceTool extends Tool {\n public static override toolId = \"AccuDraw.LockDistance\";\n public override async run(): Promise<boolean> {\n AccuDrawShortcuts.lockDistance();\n return true;\n }\n}\n\n/** @beta */\nexport class AccuDrawSetLockAngleTool extends Tool {\n public static override toolId = \"AccuDraw.LockAngle\";\n public override async run(): Promise<boolean> {\n AccuDrawShortcuts.lockAngle();\n return true;\n }\n}\n\n/** @beta */\nexport class AccuDrawChangeModeTool extends Tool {\n public static override toolId = \"AccuDraw.ChangeMode\";\n public override async run(): Promise<boolean> {\n AccuDrawShortcuts.changeCompassMode();\n return true;\n }\n}\n\n/** @beta */\nexport class AccuDrawRotateCycleTool extends Tool {\n public static override toolId = \"AccuDraw.RotateCycle\";\n public override async run(): Promise<boolean> {\n AccuDrawShortcuts.rotateCycle();\n return true;\n }\n}\n\n/** @beta */\nexport class AccuDrawRotateTopTool extends Tool {\n public static override toolId = \"AccuDraw.RotateTop\";\n public override async run(): Promise<boolean> {\n AccuDrawShortcuts.setStandardRotation(RotationMode.Top);\n return true;\n }\n}\n\n/** @beta */\nexport class AccuDrawRotateFrontTool extends Tool {\n public static override toolId = \"AccuDraw.RotateFront\";\n public override async run(): Promise<boolean> {\n AccuDrawShortcuts.setStandardRotation(RotationMode.Front);\n return true;\n }\n}\n\n/** @beta */\nexport class AccuDrawRotateSideTool extends Tool {\n public static override toolId = \"AccuDraw.RotateSide\";\n public override async run(): Promise<boolean> {\n AccuDrawShortcuts.setStandardRotation(RotationMode.Side);\n return true;\n }\n}\n\n/** @beta */\nexport class AccuDrawRotateViewTool extends Tool {\n public static override toolId = \"AccuDraw.RotateView\";\n public override async run(): Promise<boolean> {\n AccuDrawShortcuts.setStandardRotation(RotationMode.View);\n return true;\n }\n}\n\n/** @beta */\nexport class AccuDrawRotate90AboutXTool extends Tool {\n public static override toolId = \"AccuDraw.Rotate90AboutX\";\n public override async run(): Promise<boolean> {\n AccuDrawShortcuts.rotate90(0);\n return true;\n }\n}\n\n/** @beta */\nexport class AccuDrawRotate90AboutYTool extends Tool {\n public static override toolId = \"AccuDraw.Rotate90AboutY\";\n public override async run(): Promise<boolean> {\n AccuDrawShortcuts.rotate90(1);\n return true;\n }\n}\n\n/** @beta */\nexport class AccuDrawRotate90AboutZTool extends Tool {\n public static override toolId = \"AccuDraw.Rotate90AboutZ\";\n public override async run(): Promise<boolean> {\n AccuDrawShortcuts.rotate90(2);\n return true;\n }\n}\n\n/** @internal */\nabstract class AccuDrawShortcutsTool extends InputCollector {\n private _complete = false;\n protected get allowShortcut(): boolean { return this.wantActivateOnStart ? IModelApp.accuDraw.isEnabled : true; }\n protected get wantActivateOnStart(): boolean { return false; } // Whether to automatically enable AccuDraw before the 1st data button...\n protected get wantClearSnapOnStart(): boolean { return false; } // Whether to preserve active Tentative/AccuSnap on install...\n protected get wantManipulationImmediate(): boolean { return false; } // Whether additional input is required to process on install...\n protected get wantExitOnDataButtonUp(): boolean { return false; } // Whether to exit on button up instead of down (see rotate perpendicular)...\n\n public override async onInstall(): Promise<boolean> {\n if (!this.allowShortcut)\n return false;\n return super.onInstall();\n }\n\n public override async onPostInstall(): Promise<void> {\n await super.onPostInstall();\n\n if (this.wantActivateOnStart)\n IModelApp.accuDraw.activate();\n\n this.onManipulationStart();\n\n if (this.wantManipulationImmediate && this.doManipulation(undefined, false)) {\n this._complete = true;\n return this.exitTool();\n }\n\n // NOTE: InputCollector inherits suspended primitive's state, set everything...\n if (this.wantClearSnapOnStart) {\n this.initLocateElements(false, true, undefined, CoordinateLockOverrides.None); // This clears the active Tentative/AccuSnap, some shortcuts have special behavior when invoked with an active snap...\n } else {\n IModelApp.locateManager.initLocateOptions();\n this.changeLocateState(false, true, undefined, CoordinateLockOverrides.None);\n }\n\n this.doManipulation(undefined, true);;\n }\n\n public override async onCleanup(): Promise<void> {\n if (this._complete)\n IModelApp.accuDraw.savedStateInputCollector.ignoreFlags = this.onManipulationComplete();\n }\n\n public override async exitTool(): Promise<void> {\n await super.exitTool();\n AccuDrawShortcuts.requestInputFocus(); // re-grab focus when auto-focus tool setting set...\n }\n\n public override async onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled> {\n if (this.doManipulation(ev, false)) {\n this._complete = true;\n if (!this.wantExitOnDataButtonUp)\n await this.exitTool();\n }\n\n return EventHandled.No;\n }\n\n public override async onDataButtonUp(_ev: BeButtonEvent): Promise<EventHandled> {\n if (this._complete && this.wantExitOnDataButtonUp)\n await this.exitTool();\n\n return EventHandled.No;\n }\n\n public override async onMouseMotion(ev: BeButtonEvent): Promise<void> {\n this.doManipulation(ev, true);\n }\n\n protected onManipulationStart(): void { }\n protected onManipulationComplete(): AccuDrawFlags { return AccuDrawFlags.SetRMatrix; }\n protected abstract doManipulation(ev: BeButtonEvent | undefined, isMotion: boolean): boolean;\n}\n\n/** @beta */\nexport class AccuDrawRotateAxesTool extends AccuDrawShortcutsTool {\n public static override toolId = \"AccuDraw.RotateAxes\";\n public static override get maxArgs(): number { return 1; }\n public constructor(public aboutCurrentZ: boolean = true) { super(); }\n\n /** @internal */\n protected override get allowShortcut(): boolean { return IModelApp.accuDraw.isActive; } // Require compass to already be active for this shortcut...\n\n /** @internal */\n protected override get wantActivateOnStart(): boolean { return true; } // State is demoted to inactive when a tool install, still need this...\n\n /** @internal */\n protected override get wantManipulationImmediate(): boolean {\n if (TentativeOrAccuSnap.isHot)\n return true;\n\n const accudraw = IModelApp.accuDraw;\n\n if (CompassMode.Polar === accudraw.compassMode)\n return accudraw.getFieldLock(ItemField.ANGLE_Item);\n\n return accudraw.getFieldLock(ItemField.X_Item) && accudraw.getFieldLock(ItemField.Y_Item);\n }\n\n /** @internal */\n protected override onManipulationStart(): void {\n if (this.aboutCurrentZ)\n IModelApp.accuDraw.changeBaseRotationMode(RotationMode.Context); // Establish current orientation as base for when defining compass rotation by x axis...\n CoreTools.outputPromptByKey(\"AccuDraw.RotateAxes.Prompts.FirstPoint\");\n }\n\n /** @internal */\n protected doManipulation(ev: BeButtonEvent | undefined, isMotion: boolean): boolean {\n const vp = ev ? ev.viewport : IModelApp.accuDraw.currentView;\n if (!vp)\n return false;\n if (!AccuDrawShortcuts.rotateAxesByPoint(TentativeOrAccuSnap.isHot, this.aboutCurrentZ))\n return false;\n vp.invalidateDecorations();\n if (!isMotion) {\n AccuDrawShortcuts.itemFieldUnlockAll();\n IModelApp.tentativePoint.clear(true);\n }\n return true;\n }\n\n public override async parseAndRun(...args: any[]): Promise<boolean> {\n for (const arg of args) {\n if (arg.toLowerCase() === \"unlockedz\")\n this.aboutCurrentZ = false;\n }\n return this.run(args);\n }\n}\n\n/** @beta */\nexport class AccuDrawRotateElementTool extends AccuDrawShortcutsTool {\n public static override toolId = \"AccuDraw.RotateElement\";\n private _moveOrigin = !IModelApp.accuDraw.isActive || IModelApp.tentativePoint.isActive; // Preserve current origin if AccuDraw already active and not tentative snap...\n\n /** @internal */\n protected override get wantActivateOnStart(): boolean { return true; }\n\n /** @internal */\n protected override get wantManipulationImmediate(): boolean { return IModelApp.tentativePoint.isSnapped; }\n\n /** @internal */\n protected override onManipulationStart(): void {\n IModelApp.accuDraw.setContext(AccuDrawFlags.FixedOrigin); // Don't move compass when updateOrientation returns false...\n CoreTools.outputPromptByKey(\"AccuDraw.RotateElement.Prompts.FirstPoint\");\n }\n\n /** @internal */\n protected override onManipulationComplete(): AccuDrawFlags {\n let ignoreFlags = AccuDrawFlags.SetRMatrix | AccuDrawFlags.Disable; // If AccuDraw wasn't active when the shortcut started, let it remain active for suspended tool when shortcut completes...\n if (this._moveOrigin)\n ignoreFlags |= AccuDrawFlags.SetOrigin;\n return ignoreFlags;\n }\n\n /** @internal */\n protected updateOrientation(snap: SnapDetail, viewport: ScreenViewport, _isMotion: boolean): boolean {\n const accudraw = IModelApp.accuDraw;\n const rMatrix = AccuDraw.getSnapRotation(snap, viewport);\n if (undefined === rMatrix)\n return false;\n\n const point = this._moveOrigin ? snap.snapPoint : accudraw.origin;\n accudraw.setContext(AccuDrawFlags.SetRMatrix | AccuDrawFlags.AlwaysSetOrigin, point, rMatrix);\n return true;\n }\n\n /** @internal */\n protected doManipulation(ev: BeButtonEvent | undefined, isMotion: boolean): boolean {\n const viewport = ev ? ev.viewport : IModelApp.accuDraw.currentView;\n if (!viewport)\n return false;\n\n const snap = TentativeOrAccuSnap.getCurrentSnap(false);\n if (undefined === snap || !this.updateOrientation(snap, viewport, isMotion))\n return false;\n\n if (undefined === ev)\n AccuDrawShortcuts.processPendingHints(); // Would normally be processed after button down, necessary when called from post install...\n if (!isMotion)\n IModelApp.accuDraw.changeBaseRotationMode(RotationMode.Context); // Hold temporary rotation for tool duration...\n return true;\n }\n}\n\n/** @beta */\nexport class AccuDrawRotatePerpendicularTool extends AccuDrawRotateElementTool {\n public static override toolId = \"AccuDraw.RotatePerpendicular\";\n private _location?: { point: Point3d, viewport: ScreenViewport };\n\n /** @internal */\n protected override get wantExitOnDataButtonUp(): boolean { return true; } // Complete on button up since button down clears tentative...\n\n /** @internal */\n protected override onManipulationComplete(): AccuDrawFlags {\n if (undefined !== this._location) {\n // Use tentative to hold adjusted snap location for suspended tool...\n IModelApp.tentativePoint.setPoint(this._location.point);\n IModelApp.tentativePoint.viewport = this._location.viewport;\n IModelApp.tentativePoint.showTentative();\n }\n\n return AccuDrawFlags.SetRMatrix | AccuDrawFlags.Disable;\n }\n\n /** @internal */\n protected override updateOrientation(snap: SnapDetail, viewport: ScreenViewport, isMotion: boolean): boolean {\n const curve = snap.getCurvePrimitive();\n if (undefined === curve)\n return false;\n\n const accudraw = IModelApp.accuDraw;\n const rMatrix = AccuDraw.getSnapRotation(snap, viewport);\n if (undefined === rMatrix)\n return false;\n\n const zVec = rMatrix.getRow(2); // This is a row matrix...\n const spacePoint = AccuDrawHintBuilder.projectPointToPlaneInView(accudraw.origin, snap.getPoint(), zVec, viewport, true);\n if (undefined === spacePoint)\n return false;\n\n const detail = curve.closestPoint(spacePoint, true);\n if (undefined === detail?.curve)\n return false;\n\n const point = AccuDrawHintBuilder.projectPointToPlaneInView(detail.point, accudraw.origin, zVec, viewport, true);\n if (undefined === point)\n return false;\n\n const xVec = new Vector3d();\n if (normalizedDifference(point, accudraw.origin, xVec) < Geometry.smallAngleRadians)\n return false;; // Closest point and compass origin coincide...\n\n const yVec = xVec.unitCrossProduct(zVec);\n if (undefined === yVec)\n return false;\n\n rMatrix.setColumns(xVec, yVec, zVec);\n Matrix3d.createRigidFromMatrix3d(rMatrix, AxisOrder.XZY, rMatrix);\n rMatrix.transposeInPlace();\n\n snap.setSnapPoint(point, SnapHeat.InRange); // Force hot snap so that adjust point uses it for alignments...\n accudraw.setContext(AccuDrawFlags.SetRMatrix | AccuDrawFlags.AlwaysSetOrigin, accudraw.origin, rMatrix);\n accudraw.adjustPoint(point, viewport, false); // Update internals for new snap location...\n\n if (!isMotion)\n this._location = { point, viewport };\n\n return true;\n }\n}\n\n/** @beta */\nexport class DefineACSByElementTool extends AccuDrawShortcutsTool {\n public static override toolId = \"AccuDraw.DefineACSByElement\";\n private _origin = Point3d.create();\n private _rMatrix = Matrix3d.createIdentity();\n private _acs?: AuxCoordSystemState;\n\n /** @internal */\n protected override onManipulationStart(): void { CoreTools.outputPromptByKey(\"AccuDraw.DefineACSByElement.Prompts.FirstPoint\"); }\n\n /** @internal */\n protected updateOrientation(snap: SnapDetail, vp: Viewport): boolean {\n const rMatrix = AccuDraw.getSnapRotation(snap, vp);\n if (undefined === rMatrix)\n return false;\n this._origin = snap.snapPoint;\n this._rMatrix = rMatrix;\n return true;\n }\n\n /** @internal */\n protected doManipulation(ev: BeButtonEvent | undefined, isMotion: boolean): boolean {\n const vp = ev ? ev.viewport : undefined;\n if (!vp)\n return false;\n\n const snapDetail = TentativeOrAccuSnap.getCurrentSnap(false);\n if (undefined === snapDetail || !this.updateOrientation(snapDetail, vp))\n return false;\n\n IModelApp.viewManager.invalidateDecorationsAllViews();\n if (isMotion)\n return true;\n\n if (!this._acs)\n this._acs = vp.view.auxiliaryCoordinateSystem.clone();\n\n this._acs.setOrigin(this._origin);\n this._acs.setRotation(this._rMatrix);\n AccuDraw.updateAuxCoordinateSystem(this._acs, vp);\n AccuDrawShortcuts.rotateToACS();\n return true;\n }\n\n /** @internal */\n public override decorate(context: DecorateContext): void {\n const vp = context.viewport;\n if (!this._acs)\n this._acs = vp.view.auxiliaryCoordinateSystem.clone();\n this._acs.setOrigin(this._origin);\n this._acs.setRotation(this._rMatrix);\n this._acs.display(context, ACSDisplayOptions.Active | ACSDisplayOptions.Dynamics);\n }\n}\n\n/** @beta */\nexport class DefineACSByPointsTool extends AccuDrawShortcutsTool {\n public static override toolId = \"AccuDraw.DefineACSByPoints\";\n private readonly _points: Point3d[] = [];\n private _acs?: AuxCoordSystemState;\n\n /** @internal */\n protected override onManipulationStart(): void {\n if (!IModelApp.tentativePoint.isActive) {\n CoreTools.outputPromptByKey(\"AccuDraw.DefineACSByPoints.Prompts.FirstPoint\");\n return;\n }\n\n const origin = IModelApp.tentativePoint.getPoint().clone();\n CoreTools.outputPromptByKey(\"AccuDraw.DefineACSByPoints.Prompts.SecondPoint\");\n IModelApp.accuDraw.setContext(AccuDrawFlags.SetOrigin | AccuDrawFlags.FixedOrigin, origin);\n this._points.push(origin);\n IModelApp.tentativePoint.clear(true);\n }\n\n /** @internal */\n protected doManipulation(ev: BeButtonEvent | undefined, isMotion: boolean): boolean {\n if (!ev || !ev.viewport)\n return false;\n\n IModelApp.viewManager.invalidateDecorationsAllViews();\n if (isMotion)\n return false;\n\n IModelApp.accuDraw.activate();\n this._points.push(ev.point.clone());\n\n const vp = ev.viewport;\n if (!this._acs)\n this._acs = vp.view.auxiliaryCoordinateSystem.clone();\n\n if (AccuDrawShortcuts.updateACSByPoints(this._acs, vp, this._points, false)) {\n AccuDraw.updateAuxCoordinateSystem(this._acs, vp);\n AccuDrawShortcuts.rotateToACS();\n return true;\n }\n\n CoreTools.outputPromptByKey(`AccuDraw.DefineACSByPoints.Prompts${1 === this._points.length ? \".SecondPoint\" : \".NextPoint\"}`);\n return false;\n }\n\n /** @internal */\n public override decorate(context: DecorateContext): void {\n const tmpPoints: Point3d[] = [];\n this._points.forEach((pt) => tmpPoints.push(pt));\n\n const ev = new BeButtonEvent();\n IModelApp.toolAdmin.fillEventFromCursorLocation(ev);\n tmpPoints.push(ev.point);\n\n const vp = context.viewport;\n if (!this._acs)\n this._acs = vp.view.auxiliaryCoordinateSystem.clone();\n\n AccuDrawShortcuts.updateACSByPoints(this._acs, vp, tmpPoints, true);\n this._acs.display(context, ACSDisplayOptions.Active | ACSDisplayOptions.Dynamics);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"AccuDrawTool.js","sourceRoot":"","sources":["../../../src/tools/AccuDrawTool.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tools\n */\n\nimport { BentleyStatus } from \"@itwin/core-bentley\";\nimport { Geometry, Matrix3d, Point3d, Transform, Vector3d } from \"@itwin/core-geometry\";\nimport { AccuDraw, AccuDrawFlags, CompassMode, ContextMode, ItemField, KeyinStatus, LockedStates, RotationMode, ThreeAxes } from \"../AccuDraw\";\nimport { TentativeOrAccuSnap } from \"../AccuSnap\";\nimport { ACSDisplayOptions, AuxCoordSystemState } from \"../AuxCoordSys\";\nimport { SnapDetail } from \"../HitDetail\";\nimport { IModelApp } from \"../IModelApp\";\nimport { DecorateContext } from \"../ViewContext\";\nimport { ScreenViewport, Viewport } from \"../Viewport\";\nimport { BeButtonEvent, CoordinateLockOverrides, CoreTools, EventHandled, InputCollector, Tool } from \"./Tool\";\n\n// cSpell:ignore dont unlockedz\n\nfunction normalizedDifference(point1: Point3d, point2: Point3d, out: Vector3d): number {\n return point2.vectorTo(point1).normalizeWithLength(out).mag;\n}\n\nfunction normalizedCrossProduct(vec1: Vector3d, vec2: Vector3d, out: Vector3d): number {\n return vec1.crossProduct(vec2, out).normalizeWithLength(out).mag;\n}\n\n/**\n * A shortcut may require no user input (immediate) or it may install a tool to collect the needed input. AccuDrawShortcuts are how users control AccuDraw.\n * A tool implementor should not use this class to setup AccuDraw, instead use AccuDrawHintBuilder to provide hints.\n * @beta\n */\nexport class AccuDrawShortcuts {\n /** Disable/Enable AccuDraw for the session */\n public static sessionToggle(): void {\n const accudraw = IModelApp.accuDraw;\n\n if (accudraw.isEnabled)\n accudraw.disableForSession();\n else\n accudraw.enableForSession();\n }\n\n /** Suspend/Unsuspend AccuDraw for the active tool */\n public static suspendToggle(): void {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return;\n\n if (accudraw.isActive)\n accudraw.deactivate();\n else\n accudraw.activate();\n\n accudraw.refreshDecorationsAndDynamics();\n }\n\n public static rotateAxesByPoint(isSnapped: boolean, aboutCurrentZ: boolean): boolean {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return false;\n\n const vp = accudraw.currentView;\n if (!vp)\n return false;\n\n const point = accudraw.point;\n if (!vp.view.is3d())\n point.z = 0.0;\n\n if (aboutCurrentZ)\n accudraw.hardConstructionPlane(point, point, accudraw.planePt, accudraw.axes.z, vp, isSnapped);\n else\n accudraw.softConstructionPlane(point, point, accudraw.planePt, accudraw.axes.z, vp, isSnapped);\n\n // Snap point and compass origin coincide...\n const xVec = new Vector3d();\n if (normalizedDifference(point, accudraw.planePt, xVec) < Geometry.smallAngleRadians)\n return false;\n\n accudraw.axes.x.setFrom(xVec);\n\n if (RotationMode.Context !== accudraw.rotationMode)\n accudraw.setRotationMode(RotationMode.Context);\n\n accudraw.flags.contextRotMode = ContextMode.XAxis;\n accudraw.flags.lockedRotation = false;\n\n accudraw.updateRotation();\n\n // Always want index line to display for x-Axis...changing rotation clears this...so it flashes...\n accudraw.indexed |= LockedStates.X_BM;\n return true;\n }\n\n public static updateACSByPoints(acs: AuxCoordSystemState, vp: Viewport, points: Point3d[], isDynamics: boolean): boolean {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return false;\n\n let accept = false;\n const vec = [new Vector3d(), new Vector3d(), new Vector3d()];\n acs.setOrigin(points[0]);\n switch (points.length) {\n case 1:\n acs.setRotation(vp.rotation);\n if (!isDynamics) {\n accudraw.published.origin.setFrom(points[0]);\n accudraw.published.flags = AccuDrawFlags.SetOrigin;\n accudraw.flags.fixedOrg = true;\n }\n break;\n\n case 2:\n if (normalizedDifference(points[1], points[0], vec[0]) < 0.00001) {\n accept = true;\n break;\n }\n\n if (vp.view.is3d()) {\n if (normalizedCrossProduct(accudraw.axes.y, vec[0], vec[1]) < 0.00001) {\n vec[2].set(0.0, 0.0, 1.0);\n\n if (normalizedCrossProduct(vec[2], vec[0], vec[1]) < 0.00001) {\n vec[2].set(0.0, 1.0, 0.0);\n normalizedCrossProduct(vec[2], vec[0], vec[1]);\n }\n }\n\n normalizedCrossProduct(vec[0], vec[1], vec[2]);\n acs.setRotation(Matrix3d.createRows(vec[0], vec[1], vec[2]));\n\n if (!isDynamics) {\n accudraw.published.origin.setFrom(points[0]);\n accudraw.published.flags = AccuDrawFlags.SetOrigin | AccuDrawFlags.SetNormal;\n accudraw.published.vector.setFrom(vec[0]);\n }\n break;\n }\n\n vec[2].set(0.0, 0.0, 1.0);\n normalizedCrossProduct(vec[2], vec[0], vec[1]);\n acs.setRotation(Matrix3d.createRows(vec[0], vec[1], vec[2]));\n accept = true;\n break;\n\n case 3:\n if (normalizedDifference(points[1], points[0], vec[0]) < 0.00001 ||\n normalizedDifference(points[2], points[0], vec[1]) < 0.00001 ||\n normalizedCrossProduct(vec[0], vec[1], vec[2]) < 0.00001) {\n accept = true;\n break;\n }\n\n normalizedCrossProduct(vec[2], vec[0], vec[1]);\n acs.setRotation(Matrix3d.createRows(vec[0], vec[1], vec[2]));\n accept = true;\n break;\n }\n\n return accept;\n }\n\n public static processPendingHints() { IModelApp.accuDraw.processHints(); }\n\n public static requestInputFocus() {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return;\n\n accudraw.grabInputFocus();\n accudraw.refreshDecorationsAndDynamics();\n }\n\n // Helper method for GUI implementation...\n public static async itemFieldNavigate(index: ItemField, str: string, forward: boolean): Promise<void> {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return;\n\n if (accudraw.getFieldLock(index))\n accudraw.saveCoordinate(index, accudraw.getValueByIndex(index));\n\n if (!accudraw.isActive && KeyinStatus.Partial === accudraw.getKeyinStatus(index)) {\n await accudraw.processFieldInput(index, str, true);\n } else {\n accudraw.setKeyinStatus(index, KeyinStatus.Dynamic);\n accudraw.onFieldValueChange(index);\n }\n\n const vp = accudraw.currentView;\n const is3d = vp ? accudraw.is3dCompass(vp) : false;\n const isPolar = (CompassMode.Polar === accudraw.compassMode);\n switch (index) {\n case ItemField.DIST_Item:\n index = ((is3d && !forward) ? ItemField.Z_Item : ItemField.ANGLE_Item);\n break;\n\n case ItemField.ANGLE_Item:\n index = ((is3d && forward) ? ItemField.Z_Item : ItemField.DIST_Item);\n break;\n\n case ItemField.X_Item:\n index = ((is3d && !forward) ? ItemField.Z_Item : ItemField.Y_Item);\n break;\n\n case ItemField.Y_Item:\n index = ((is3d && forward) ? ItemField.Z_Item : ItemField.X_Item);\n break;\n\n case ItemField.Z_Item:\n index = (forward ? (isPolar ? ItemField.DIST_Item : ItemField.X_Item) : (isPolar ? ItemField.ANGLE_Item : ItemField.Y_Item));\n break;\n }\n\n // Set focus to new item and disable automatic focus change based on cursor location in rectangular mode.\n accudraw.setFocusItem(index);\n accudraw.dontMoveFocus = true;\n }\n\n public static itemFieldNewInput(index: ItemField): void { IModelApp.accuDraw.setKeyinStatus(index, KeyinStatus.Partial); }\n public static itemFieldCompletedInput(index: ItemField): void { IModelApp.accuDraw.setKeyinStatus(index, KeyinStatus.Dynamic); }\n\n public static async itemFieldAcceptInput(index: ItemField, str: string): Promise<void> {\n const accudraw = IModelApp.accuDraw;\n await accudraw.processFieldInput(index, str, true);\n accudraw.setKeyinStatus(index, KeyinStatus.Dynamic);\n\n if (accudraw.getFieldLock(index))\n accudraw.saveCoordinate(index, accudraw.getValueByIndex(index));\n\n const vp = accudraw.currentView;\n if (accudraw.isActive) {\n if (!vp)\n return;\n\n if (CompassMode.Polar === accudraw.compassMode)\n accudraw.fixPointPolar(vp);\n else\n accudraw.fixPointRectangular(vp);\n\n accudraw.flags.dialogNeedsUpdate = true;\n return;\n }\n\n const is3d = vp ? vp.view.is3d() : false;\n const isPolar = (CompassMode.Polar === accudraw.compassMode);\n switch (index) {\n case ItemField.DIST_Item:\n index = ItemField.ANGLE_Item;\n break;\n\n case ItemField.ANGLE_Item:\n index = (is3d ? ItemField.Z_Item : ItemField.DIST_Item);\n break;\n\n case ItemField.X_Item:\n index = ItemField.Y_Item;\n break;\n\n case ItemField.Y_Item:\n index = (is3d ? ItemField.Z_Item : ItemField.X_Item);\n break;\n\n case ItemField.Z_Item:\n index = (isPolar ? ItemField.DIST_Item : ItemField.X_Item);\n break;\n }\n accudraw.setFocusItem(index);\n }\n\n public static itemFieldLockToggle(index: ItemField): void {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return;\n\n if (accudraw.getFieldLock(index)) {\n switch (index) {\n case ItemField.DIST_Item:\n accudraw.distanceLock(true, false);\n break;\n\n case ItemField.ANGLE_Item:\n accudraw.angleLock();\n break;\n\n case ItemField.X_Item:\n accudraw.clearTentative();\n accudraw.locked |= LockedStates.X_BM;\n break;\n\n case ItemField.Y_Item:\n accudraw.clearTentative();\n accudraw.locked |= LockedStates.Y_BM;\n break;\n\n case ItemField.Z_Item:\n accudraw.clearTentative();\n break;\n }\n\n return;\n }\n\n switch (index) {\n case ItemField.DIST_Item:\n accudraw.locked &= ~LockedStates.DIST_BM;\n break;\n\n case ItemField.ANGLE_Item:\n accudraw.locked &= ~LockedStates.ANGLE_BM;\n break;\n\n case ItemField.X_Item:\n accudraw.locked &= ~LockedStates.X_BM;\n break;\n\n case ItemField.Y_Item:\n accudraw.locked &= ~LockedStates.Y_BM;\n break;\n\n case ItemField.Z_Item:\n break;\n }\n\n accudraw.dontMoveFocus = false;\n accudraw.clearTentative();\n }\n\n public static choosePreviousValue(index: ItemField): void {\n const accudraw = IModelApp.accuDraw;\n accudraw.getSavedValue(index, false);\n accudraw.refreshDecorationsAndDynamics();\n }\n\n public static chooseNextValue(index: ItemField): void {\n const accudraw = IModelApp.accuDraw;\n accudraw.getSavedValue(index, true);\n accudraw.refreshDecorationsAndDynamics();\n }\n\n public static clearSavedValues(): void {\n const accudraw = IModelApp.accuDraw;\n accudraw.clearSavedValues();\n }\n\n public static itemRotationModeChange(rotation: RotationMode): void {\n const accudraw = IModelApp.accuDraw;\n const vp = accudraw.currentView;\n const is3d = vp ? vp.view.is3d() : true;\n\n if (!is3d && (RotationMode.Front === rotation || RotationMode.Side === rotation))\n accudraw.setRotationMode(RotationMode.Top);\n\n accudraw.flags.baseRotation = rotation;\n accudraw.updateRotation(true);\n }\n\n // Shortcut implementations for GUI entry points...\n public static setOrigin(explicitOrigin?: Point3d): void {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return;\n\n if (explicitOrigin) {\n accudraw.published.origin.setFrom(explicitOrigin);\n accudraw.flags.haveValidOrigin = true;\n } else if (accudraw.isInactive || accudraw.isDeactivated) {\n // If AccuSnap is active use adjusted snap point, otherwise use last data point...\n const snap = TentativeOrAccuSnap.getCurrentSnap(false);\n if (undefined !== snap) {\n accudraw.published.origin.setFrom(snap.isPointAdjusted ? snap.adjustedPoint : snap.getPoint());\n accudraw.flags.haveValidOrigin = true;\n } else {\n const ev = new BeButtonEvent();\n IModelApp.toolAdmin.fillEventFromLastDataButton(ev);\n\n if (ev.viewport) {\n accudraw.published.origin.setFrom(ev.point);\n accudraw.flags.haveValidOrigin = true;\n } else {\n // NOTE: If current point isn't valid setDefaultOrigin will be called...\n accudraw.published.origin.setFrom(accudraw.point);\n }\n }\n } else {\n accudraw.published.origin.setFrom(accudraw.point);\n accudraw.flags.haveValidOrigin = true;\n accudraw.setLastPoint(accudraw.published.origin);\n }\n\n accudraw.clearTentative();\n const vp = accudraw.currentView;\n\n // NOTE: _AdjustPoint should have been called to have setup currentView...\n if (vp && !vp.view.is3d())\n accudraw.published.origin.z = 0.0;\n\n accudraw.origin.setFrom(accudraw.published.origin);\n accudraw.point.setFrom(accudraw.published.origin);\n accudraw.planePt.setFrom(accudraw.published.origin);\n accudraw.published.flags |= AccuDrawFlags.SetOrigin;\n accudraw.activate();\n accudraw.refreshDecorationsAndDynamics(); // NOTE: Will already grab input focus through processHints...\n }\n\n public static changeCompassMode(): void {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return;\n\n let axisLockStatus = accudraw.locked & LockedStates.XY_BM;\n\n if (axisLockStatus) {\n if (CompassMode.Rectangular === accudraw.compassMode) {\n if (axisLockStatus & LockedStates.X_BM && accudraw.delta.x !== 0.0)\n axisLockStatus &= ~LockedStates.X_BM;\n\n if (axisLockStatus & LockedStates.Y_BM && accudraw.delta.y !== 0.0)\n axisLockStatus &= ~LockedStates.Y_BM;\n }\n }\n\n accudraw.changeCompassMode(true);\n if (axisLockStatus) {\n if (CompassMode.Rectangular === accudraw.compassMode) {\n accudraw.delta.x = accudraw.delta.y = 0.0;\n\n if (axisLockStatus & LockedStates.X_BM)\n accudraw.setFieldLock(ItemField.X_Item, true);\n else if (axisLockStatus & LockedStates.Y_BM)\n accudraw.setFieldLock(ItemField.Y_Item, true);\n } else {\n accudraw.setFieldLock(ItemField.ANGLE_Item, true);\n }\n accudraw.locked = axisLockStatus;\n }\n accudraw.flags.baseMode = accudraw.compassMode;\n this.requestInputFocus();\n }\n\n public static lockSmart(): void {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return;\n\n const accuSnap = IModelApp.accuSnap;\n\n // Don't want AccuSnap to influence axis or Z...\n if (accuSnap.isHot) {\n accuSnap.clear();\n\n const vp = accudraw.currentView;\n if (vp) {\n if (CompassMode.Polar === accudraw.compassMode)\n accudraw.fixPointPolar(vp);\n else\n accudraw.fixPointRectangular(vp);\n }\n }\n\n if (CompassMode.Polar === accudraw.compassMode) {\n const isSnapped = accudraw.clearTentative();\n if (accudraw.locked & LockedStates.ANGLE_BM) { // angle locked (unlock it)\n accudraw.setFieldLock(ItemField.ANGLE_Item, false);\n accudraw.locked &= ~LockedStates.ANGLE_BM;\n } else if (accudraw.getFieldLock(ItemField.DIST_Item)) { // distance locked (unlock it)\n accudraw.setFieldLock(ItemField.DIST_Item, false);\n accudraw.locked &= ~LockedStates.DIST_BM;\n } else if (isSnapped) {\n accudraw.doLockAngle(isSnapped);\n } else if (accudraw.indexed & LockedStates.ANGLE_BM) { // angle indexed (lock it)\n accudraw.angleLock();\n } else {\n if (Math.abs(accudraw.vector.dotProduct(accudraw.axes.x)) > Math.abs(accudraw.vector.dotProduct(accudraw.axes.y)))\n accudraw.indexed |= LockedStates.Y_BM;\n else\n accudraw.indexed |= LockedStates.X_BM;\n accudraw.angleLock();\n }\n this.requestInputFocus();\n return;\n }\n\n if (accudraw.locked) { // if locked, unlock\n accudraw.clearTentative();\n accudraw.locked &= ~LockedStates.XY_BM;\n accudraw.setFieldLock(ItemField.X_Item, false);\n accudraw.setFieldLock(ItemField.Y_Item, false);\n if (accudraw.getFieldLock(ItemField.Z_Item) && accudraw.delta.z === 0.0 && !accudraw.stickyZLock)\n accudraw.setFieldLock(ItemField.Z_Item, false);\n } else { // lock to nearest axis\n if (accudraw.clearTentative()) {\n if (Math.abs(accudraw.delta.x) >= Geometry.smallAngleRadians && Math.abs(accudraw.delta.y) >= Geometry.smallAngleRadians) {\n accudraw.doLockAngle(false);\n return;\n }\n }\n\n const vp = accudraw.currentView;\n if (Math.abs(accudraw.delta.x) > Math.abs(accudraw.delta.y)) {\n accudraw.delta.y = 0.0;\n accudraw.onFieldValueChange(ItemField.Y_Item);\n accudraw.locked |= LockedStates.Y_BM;\n accudraw.locked &= ~LockedStates.X_BM;\n accudraw.setFieldLock(ItemField.X_Item, false);\n accudraw.setFieldLock(ItemField.Y_Item, true);\n accudraw.setFieldLock(ItemField.Z_Item, vp ? vp.view.is3d() : false);\n } else {\n accudraw.delta.x = 0.0;\n accudraw.onFieldValueChange(ItemField.X_Item);\n accudraw.locked |= LockedStates.X_BM;\n accudraw.locked &= ~LockedStates.Y_BM;\n accudraw.setFieldLock(ItemField.Y_Item, false);\n accudraw.setFieldLock(ItemField.X_Item, true);\n accudraw.setFieldLock(ItemField.Z_Item, vp ? vp.view.is3d() : false);\n }\n\n if (!accudraw.flags.lockedRotation) {\n accudraw.flags.lockedRotation = true;\n accudraw.flags.contextRotMode = ContextMode.Locked;\n accudraw.setRotationMode(RotationMode.Context);\n }\n }\n this.requestInputFocus();\n }\n\n /** Disable indexing when not currently indexed; if indexed, enable respective lock. */\n public static lockIndex(): void {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return;\n\n if (accudraw.flags.indexLocked) {\n if (accudraw.locked)\n this.lockSmart();\n\n accudraw.flags.indexLocked = false;\n } else {\n if (CompassMode.Polar === accudraw.compassMode) {\n if (accudraw.indexed & LockedStates.XY_BM) {\n accudraw.setFieldLock(ItemField.ANGLE_Item, true);\n accudraw.angleLock();\n }\n\n if (accudraw.indexed & LockedStates.DIST_BM)\n this.lockDistance();\n } else {\n if (accudraw.indexed & LockedStates.X_BM) {\n this.lockX();\n\n if (accudraw.indexed & LockedStates.DIST_BM)\n this.lockY();\n }\n\n if (accudraw.indexed & LockedStates.Y_BM) {\n this.lockY();\n\n if (accudraw.indexed & LockedStates.DIST_BM)\n this.lockX();\n }\n\n if (accudraw.indexed & LockedStates.DIST_BM && !(accudraw.indexed & LockedStates.XY_BM)) {\n if (accudraw.locked & LockedStates.X_BM)\n this.lockY();\n else\n this.lockX();\n }\n }\n\n accudraw.flags.indexLocked = true;\n }\n\n this.requestInputFocus();\n }\n\n public static lockX(): void {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return;\n\n accudraw.clearTentative();\n\n if (CompassMode.Rectangular !== accudraw.compassMode) {\n const vp = accudraw.currentView;\n if (!vp)\n return;\n\n accudraw.fixPointRectangular(vp);\n accudraw.changeCompassMode(true);\n }\n\n if (accudraw.getFieldLock(ItemField.X_Item)) {\n accudraw.setFieldLock(ItemField.X_Item, false);\n accudraw.locked = accudraw.locked & ~LockedStates.X_BM;\n accudraw.setKeyinStatus(ItemField.X_Item, KeyinStatus.Dynamic);\n } else {\n accudraw.saveCoordinate(ItemField.X_Item, accudraw.delta.x);\n accudraw.setFieldLock(ItemField.X_Item, true);\n accudraw.locked = accudraw.locked | LockedStates.X_BM;\n }\n this.requestInputFocus();\n }\n\n public static lockY(): void {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return;\n\n accudraw.clearTentative();\n\n if (CompassMode.Rectangular !== accudraw.compassMode) {\n const vp = accudraw.currentView;\n if (!vp)\n return;\n\n accudraw.fixPointRectangular(vp);\n accudraw.changeCompassMode(true);\n }\n\n if (accudraw.getFieldLock(ItemField.Y_Item)) {\n accudraw.setFieldLock(ItemField.Y_Item, false);\n accudraw.locked = accudraw.locked & ~LockedStates.Y_BM;\n accudraw.setKeyinStatus(ItemField.Y_Item, KeyinStatus.Dynamic);\n } else {\n accudraw.saveCoordinate(ItemField.Y_Item, accudraw.delta.y);\n accudraw.setFieldLock(ItemField.Y_Item, true);\n accudraw.locked = accudraw.locked | LockedStates.Y_BM;\n }\n this.requestInputFocus();\n }\n\n public static lockZ(): void {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return;\n\n const vp = accudraw.currentView;\n if (!vp || !vp.view.is3d())\n return;\n\n const isSnapped = accudraw.clearTentative();\n\n if (accudraw.getFieldLock(ItemField.Z_Item)) {\n accudraw.setFieldLock(ItemField.Z_Item, false);\n accudraw.setKeyinStatus(ItemField.Z_Item, KeyinStatus.Dynamic);\n } else {\n // Move focus to Z field...\n if (!isSnapped && accudraw.autoFocusFields) {\n accudraw.setFocusItem(ItemField.Z_Item);\n accudraw.dontMoveFocus = true;\n }\n accudraw.setFieldLock(ItemField.Z_Item, true);\n }\n this.requestInputFocus();\n }\n\n public static lockDistance(): void {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return;\n\n const isSnapped = accudraw.clearTentative();\n\n if (CompassMode.Polar !== accudraw.compassMode) {\n const vp = accudraw.currentView;\n if (!vp)\n return;\n\n accudraw.locked = 0;\n accudraw.fixPointPolar(vp);\n accudraw.changeCompassMode(true);\n }\n\n if (accudraw.getFieldLock(ItemField.DIST_Item)) {\n accudraw.setFieldLock(ItemField.DIST_Item, false);\n accudraw.locked &= ~LockedStates.DIST_BM;\n accudraw.setKeyinStatus(ItemField.DIST_Item, KeyinStatus.Dynamic);\n } else {\n // Move focus to distance field...\n if (!isSnapped && accudraw.autoFocusFields)\n accudraw.setFocusItem(ItemField.DIST_Item);\n accudraw.distanceLock(true, true);\n }\n this.requestInputFocus();\n }\n\n public static lockAngle(): void {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return;\n accudraw.doLockAngle(accudraw.clearTentative());\n this.requestInputFocus();\n }\n\n public static setStandardRotation(rotation: RotationMode): void {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return;\n\n if (RotationMode.Context === rotation) {\n const axes = accudraw.baseAxes.clone();\n accudraw.accountForAuxRotationPlane(axes, accudraw.flags.auxRotationPlane);\n accudraw.setContextRotation(axes.toMatrix3d(), false, true);\n this.requestInputFocus();\n return;\n } else {\n accudraw.flags.baseRotation = rotation;\n accudraw.setRotationMode(rotation);\n }\n accudraw.updateRotation(true);\n this.requestInputFocus();\n }\n\n public static alignView(): void {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return;\n\n const vp = accudraw.currentView;\n if (!vp)\n return;\n\n const newMatrix = accudraw.getRotation();\n if (newMatrix.isExactEqual(vp.rotation))\n return;\n\n const targetMatrix = newMatrix.multiplyMatrixMatrix(vp.rotation);\n const rotateTransform = Transform.createFixedPointAndMatrix(vp.view.getTargetPoint(), targetMatrix);\n const newFrustum = vp.getFrustum();\n newFrustum.multiply(rotateTransform);\n\n vp.view.setupFromFrustum(newFrustum);\n vp.synchWithView();\n vp.animateFrustumChange();\n\n this.requestInputFocus();\n }\n\n public static rotateToBase(): void { this.setStandardRotation(IModelApp.accuDraw.flags.baseRotation); }\n\n public static rotateToACS(): void {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return;\n // NOTE: Match current ACS orientation..reset auxRotationPlane to top!\n accudraw.flags.auxRotationPlane = RotationMode.Top;\n this.setStandardRotation(RotationMode.ACS);\n }\n\n public static rotateCycle(): void {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return;\n\n const vp = accudraw.currentView;\n if (!vp || !vp.view.is3d())\n return;\n\n let rotation: RotationMode;\n switch (accudraw.rotationMode) {\n case RotationMode.View:\n case RotationMode.Side:\n rotation = RotationMode.Top;\n break;\n\n case RotationMode.Top:\n rotation = RotationMode.Front;\n break;\n\n case RotationMode.Front:\n rotation = RotationMode.Side;\n break;\n\n case RotationMode.Context:\n rotation = RotationMode.Context;\n\n if (rotation !== accudraw.flags.baseRotation) {\n accudraw.baseAxes.setFrom(accudraw.axes);\n accudraw.flags.auxRotationPlane = RotationMode.Top;\n accudraw.flags.baseRotation = rotation;\n } else {\n const axes = accudraw.baseAxes.clone();\n accudraw.accountForAuxRotationPlane(axes, accudraw.flags.auxRotationPlane);\n if (!accudraw.axes.equals(axes))\n accudraw.changeBaseRotationMode(rotation);\n }\n\n switch (accudraw.flags.auxRotationPlane) {\n case RotationMode.Front:\n accudraw.flags.auxRotationPlane = RotationMode.Side;\n break;\n\n case RotationMode.Side:\n accudraw.flags.auxRotationPlane = RotationMode.Top;\n break;\n\n case RotationMode.Top:\n accudraw.flags.auxRotationPlane = RotationMode.Front;\n break;\n }\n break;\n\n case RotationMode.ACS:\n rotation = RotationMode.ACS;\n switch (accudraw.flags.auxRotationPlane) {\n case RotationMode.Front:\n accudraw.flags.auxRotationPlane = RotationMode.Side;\n break;\n case RotationMode.Side:\n accudraw.flags.auxRotationPlane = RotationMode.Top;\n break;\n case RotationMode.Top:\n accudraw.flags.auxRotationPlane = RotationMode.Front;\n break;\n }\n break;\n\n default:\n return;\n }\n\n this.setStandardRotation(rotation);\n }\n\n public static rotate90(axis: number): void {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return;\n\n const newRotation = new ThreeAxes();\n\n accudraw.locked = accudraw.indexed = 0;\n accudraw.unlockAllFields();\n\n switch (axis) {\n case 0:\n newRotation.x.setFrom(accudraw.axes.x);\n newRotation.z.setFrom(accudraw.axes.y);\n newRotation.z.crossProduct(newRotation.x, newRotation.y);\n break;\n\n case 1:\n newRotation.x.setFrom(accudraw.axes.z);\n newRotation.y.setFrom(accudraw.axes.y);\n newRotation.x.crossProduct(newRotation.y, newRotation.z);\n break;\n\n case 2:\n newRotation.x.setFrom(accudraw.axes.y);\n newRotation.z.setFrom(accudraw.axes.z);\n newRotation.z.crossProduct(newRotation.x, newRotation.y);\n break;\n }\n\n accudraw.setContextRotation(newRotation.toMatrix3d(), true, true);\n this.requestInputFocus();\n }\n\n public static async rotateAxes(aboutCurrentZ: boolean) {\n return IModelApp.tools.run(\"AccuDraw.RotateAxes\", aboutCurrentZ);\n }\n\n public static async rotateToElement() {\n return IModelApp.tools.run(\"AccuDraw.RotateElement\");\n }\n\n public static async defineACSByElement() {\n return IModelApp.tools.run(\"AccuDraw.DefineACSByElement\");\n }\n\n public static async defineACSByPoints() {\n return IModelApp.tools.run(\"AccuDraw.DefineACSByPoints\");\n }\n\n public static getACS(acsName: string | undefined, useOrigin: boolean, useRotation: boolean): BentleyStatus {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return BentleyStatus.ERROR;\n\n const vp = accudraw.currentView;\n if (!vp)\n return BentleyStatus.ERROR;\n\n let currRotation = 0, currBaseRotation = 0;\n const axes = new ThreeAxes();\n\n if (!useRotation) {\n // Save current rotation, event listener on ACS change will orient AccuDraw to ACS...\n currRotation = accudraw.rotationMode;\n currBaseRotation = accudraw.flags.baseRotation;\n axes.setFrom(accudraw.axes);\n }\n\n if (acsName && \"\" !== acsName) {\n // // See if this ACS already exists...\n // DgnCode acsCode = AuxCoordSystem:: CreateCode(vp -> GetViewControllerR().GetViewDefinition(), acsName);\n // DgnElementId acsId = vp -> GetViewController().GetDgnDb().Elements().QueryElementIdByCode(acsCode);\n\n // if (!acsId.IsValid())\n // return ERROR;\n\n // AuxCoordSystemCPtr auxElm = vp -> GetViewController().GetDgnDb().Elements().Get<AuxCoordSystem>(acsId);\n\n // if (!auxElm.IsValid())\n // return ERROR;\n\n // AuxCoordSystemPtr acsPtr = auxElm -> MakeCopy<AuxCoordSystem>();\n\n // if (!acsPtr.IsValid())\n // return ERROR;\n\n // AuxCoordSystemCR oldACS = vp -> GetViewController().GetAuxCoordinateSystem();\n\n // if (!useOrigin)\n // acsPtr -> SetOrigin(oldACS.GetOrigin());\n\n // if (!useRotation)\n // acsPtr -> SetRotation(oldACS.GetRotation());\n\n // AccuDraw:: UpdateAuxCoordinateSystem(* acsPtr, * vp);\n }\n\n const currentACS = vp.view.auxiliaryCoordinateSystem;\n\n if (useOrigin) {\n accudraw.origin.setFrom(currentACS.getOrigin());\n accudraw.point.setFrom(accudraw.origin);\n accudraw.planePt.setFrom(accudraw.origin);\n }\n\n if (useRotation) {\n accudraw.flags.auxRotationPlane = RotationMode.Top;\n this.setStandardRotation(RotationMode.ACS);\n } else {\n this.itemFieldUnlockAll();\n\n accudraw.setRotationMode(currRotation);\n accudraw.flags.baseRotation = currBaseRotation;\n accudraw.axes.setFrom(axes);\n\n if (RotationMode.ACS === accudraw.flags.baseRotation) {\n const acs = currentACS.clone();\n\n const rMatrix = accudraw.getRotation();\n acs.setRotation(rMatrix);\n\n AccuDraw.updateAuxCoordinateSystem(acs, vp);\n }\n\n accudraw.published.flags &= ~AccuDrawFlags.OrientACS;\n }\n\n return BentleyStatus.SUCCESS;\n }\n\n public static writeACS(_acsName: string): BentleyStatus {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return BentleyStatus.ERROR;\n\n const vp = accudraw.currentView;\n if (!vp)\n return BentleyStatus.ERROR;\n\n // const origin = accudraw.origin;\n // const rMatrix = accudraw.getRotation();\n // AuxCoordSystemPtr acsPtr = AuxCoordSystem:: CreateFrom(vp -> GetViewController().GetAuxCoordinateSystem());\n // acsPtr -> SetOrigin(origin);\n // acsPtr -> SetRotation(rMatrix);\n // acsPtr -> SetType(CompassMode.Polar == accudraw.getCompassMode() ? ACSType :: Cylindrical : ACSType:: Rectangular);\n // acsPtr -> SetCode(AuxCoordSystem:: CreateCode(vp -> GetViewControllerR().GetViewDefinition(), nullptr != acsName ? acsName : \"\"));\n // acsPtr -> SetDescription(\"\");\n\n // if (acsName && '\\0' != acsName[0]) {\n // DgnDbStatus status;\n // acsPtr -> Insert(& status);\n\n // if (DgnDbStatus:: Success != status)\n // return BentleyStatus.ERROR;\n // }\n\n // AccuDraw:: UpdateAuxCoordinateSystem(* acsPtr, * vp);\n\n // accudraw.flags.baseRotation = RotationMode.ACS;\n // accudraw.SetRotationMode(RotationMode.ACS);\n\n return BentleyStatus.SUCCESS;\n }\n\n public static itemFieldUnlockAll(): void {\n const accudraw = IModelApp.accuDraw;\n if (accudraw.isEnabled)\n accudraw.unlockAllFields();\n }\n}\n\n/** @beta */\nexport class AccuDrawSessionToggleTool extends Tool {\n public static override toolId = \"AccuDraw.SessionToggle\";\n public override async run() {\n AccuDrawShortcuts.sessionToggle();\n return true;\n }\n}\n\n/** @beta */\nexport class AccuDrawSuspendToggleTool extends Tool {\n public static override toolId = \"AccuDraw.SuspendToggle\";\n public override async run() {\n AccuDrawShortcuts.suspendToggle();\n return true;\n }\n}\n\n/** @beta */\nexport class AccuDrawSetOriginTool extends Tool {\n public static override toolId = \"AccuDraw.SetOrigin\";\n public override async run() {\n AccuDrawShortcuts.setOrigin();\n return true;\n }\n}\n\n/** @beta */\nexport class AccuDrawSetLockSmartTool extends Tool {\n public static override toolId = \"AccuDraw.LockSmart\";\n public override async run() {\n AccuDrawShortcuts.lockSmart();\n return true;\n }\n}\n\n/** @beta */\nexport class AccuDrawSetLockIndexTool extends Tool {\n public static override toolId = \"AccuDraw.LockIndex\";\n public override async run() {\n AccuDrawShortcuts.lockIndex();\n return true;\n }\n}\n\n/** @beta */\nexport class AccuDrawSetLockXTool extends Tool {\n public static override toolId = \"AccuDraw.LockX\";\n public override async run(): Promise<boolean> {\n AccuDrawShortcuts.lockX();\n return true;\n }\n}\n\n/** @beta */\nexport class AccuDrawSetLockYTool extends Tool {\n public static override toolId = \"AccuDraw.LockY\";\n public override async run(): Promise<boolean> {\n AccuDrawShortcuts.lockY();\n return true;\n }\n}\n\n/** @beta */\nexport class AccuDrawSetLockZTool extends Tool {\n public static override toolId = \"AccuDraw.LockZ\";\n public override async run(): Promise<boolean> {\n AccuDrawShortcuts.lockZ();\n return true;\n }\n}\n\n/** @beta */\nexport class AccuDrawSetLockDistanceTool extends Tool {\n public static override toolId = \"AccuDraw.LockDistance\";\n public override async run(): Promise<boolean> {\n AccuDrawShortcuts.lockDistance();\n return true;\n }\n}\n\n/** @beta */\nexport class AccuDrawSetLockAngleTool extends Tool {\n public static override toolId = \"AccuDraw.LockAngle\";\n public override async run(): Promise<boolean> {\n AccuDrawShortcuts.lockAngle();\n return true;\n }\n}\n\n/** @beta */\nexport class AccuDrawChangeModeTool extends Tool {\n public static override toolId = \"AccuDraw.ChangeMode\";\n public override async run(): Promise<boolean> {\n AccuDrawShortcuts.changeCompassMode();\n return true;\n }\n}\n\n/** @beta */\nexport class AccuDrawRotateCycleTool extends Tool {\n public static override toolId = \"AccuDraw.RotateCycle\";\n public override async run(): Promise<boolean> {\n AccuDrawShortcuts.rotateCycle();\n return true;\n }\n}\n\n/** @beta */\nexport class AccuDrawRotateTopTool extends Tool {\n public static override toolId = \"AccuDraw.RotateTop\";\n public override async run(): Promise<boolean> {\n AccuDrawShortcuts.setStandardRotation(RotationMode.Top);\n return true;\n }\n}\n\n/** @beta */\nexport class AccuDrawRotateFrontTool extends Tool {\n public static override toolId = \"AccuDraw.RotateFront\";\n public override async run(): Promise<boolean> {\n AccuDrawShortcuts.setStandardRotation(RotationMode.Front);\n return true;\n }\n}\n\n/** @beta */\nexport class AccuDrawRotateSideTool extends Tool {\n public static override toolId = \"AccuDraw.RotateSide\";\n public override async run(): Promise<boolean> {\n AccuDrawShortcuts.setStandardRotation(RotationMode.Side);\n return true;\n }\n}\n\n/** @beta */\nexport class AccuDrawRotateViewTool extends Tool {\n public static override toolId = \"AccuDraw.RotateView\";\n public override async run(): Promise<boolean> {\n AccuDrawShortcuts.setStandardRotation(RotationMode.View);\n return true;\n }\n}\n\n/** @beta */\nexport class AccuDrawRotate90AboutXTool extends Tool {\n public static override toolId = \"AccuDraw.Rotate90AboutX\";\n public override async run(): Promise<boolean> {\n AccuDrawShortcuts.rotate90(0);\n return true;\n }\n}\n\n/** @beta */\nexport class AccuDrawRotate90AboutYTool extends Tool {\n public static override toolId = \"AccuDraw.Rotate90AboutY\";\n public override async run(): Promise<boolean> {\n AccuDrawShortcuts.rotate90(1);\n return true;\n }\n}\n\n/** @beta */\nexport class AccuDrawRotate90AboutZTool extends Tool {\n public static override toolId = \"AccuDraw.Rotate90AboutZ\";\n public override async run(): Promise<boolean> {\n AccuDrawShortcuts.rotate90(2);\n return true;\n }\n}\n\n/** @internal */\nabstract class AccuDrawShortcutsTool extends InputCollector {\n private _complete = false;\n protected get allowShortcut(): boolean { return this.wantActivateOnStart ? IModelApp.accuDraw.isEnabled : true; }\n protected get wantActivateOnStart(): boolean { return false; } // Whether to automatically enable AccuDraw before the 1st data button...\n protected get wantClearSnapOnStart(): boolean { return false; } // Whether to preserve active Tentative/AccuSnap on install...\n protected get wantManipulationImmediate(): boolean { return false; } // Whether additional input is required to process on install...\n protected get wantExitOnDataButtonUp(): boolean { return false; } // Whether to exit on button up instead of down...\n\n public override async onInstall(): Promise<boolean> {\n if (!this.allowShortcut)\n return false;\n return super.onInstall();\n }\n\n public override async onPostInstall(): Promise<void> {\n await super.onPostInstall();\n\n if (this.wantActivateOnStart)\n IModelApp.accuDraw.activate();\n\n this.onManipulationStart();\n\n if (this.wantManipulationImmediate && this.doManipulation(undefined, false)) {\n this._complete = true;\n return this.exitTool();\n }\n\n // NOTE: InputCollector inherits suspended primitive's state, set everything...\n if (this.wantClearSnapOnStart) {\n this.initLocateElements(false, true, undefined, CoordinateLockOverrides.None); // This clears the active Tentative/AccuSnap, some shortcuts have special behavior when invoked with an active snap...\n } else {\n IModelApp.locateManager.initLocateOptions();\n this.changeLocateState(false, true, undefined, CoordinateLockOverrides.None);\n }\n\n this.doManipulation(undefined, true);;\n }\n\n public override async onCleanup(): Promise<void> {\n if (this._complete)\n IModelApp.accuDraw.savedStateInputCollector.ignoreFlags = this.onManipulationComplete();\n }\n\n public override async exitTool(): Promise<void> {\n await super.exitTool();\n AccuDrawShortcuts.requestInputFocus(); // re-grab focus when auto-focus tool setting set...\n }\n\n public override async onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled> {\n if (this.doManipulation(ev, false)) {\n this._complete = true;\n if (!this.wantExitOnDataButtonUp)\n await this.exitTool();\n }\n\n return EventHandled.No;\n }\n\n public override async onDataButtonUp(_ev: BeButtonEvent): Promise<EventHandled> {\n if (this._complete && this.wantExitOnDataButtonUp)\n await this.exitTool();\n\n return EventHandled.No;\n }\n\n public override async onMouseMotion(ev: BeButtonEvent): Promise<void> {\n this.doManipulation(ev, true);\n }\n\n protected onManipulationStart(): void { }\n protected onManipulationComplete(): AccuDrawFlags { return AccuDrawFlags.SetRMatrix; }\n protected abstract doManipulation(ev: BeButtonEvent | undefined, isMotion: boolean): boolean;\n}\n\n/** @beta */\nexport class AccuDrawRotateAxesTool extends AccuDrawShortcutsTool {\n public static override toolId = \"AccuDraw.RotateAxes\";\n public static override get maxArgs(): number { return 1; }\n public constructor(public aboutCurrentZ: boolean = true) { super(); }\n\n /** @internal */\n protected override get allowShortcut(): boolean { return IModelApp.accuDraw.isActive; } // Require compass to already be active for this shortcut...\n\n /** @internal */\n protected override get wantActivateOnStart(): boolean { return true; } // State is demoted to inactive when a tool install, still need this...\n\n /** @internal */\n protected override get wantManipulationImmediate(): boolean {\n if (TentativeOrAccuSnap.isHot)\n return true;\n\n const accudraw = IModelApp.accuDraw;\n\n if (CompassMode.Polar === accudraw.compassMode)\n return accudraw.getFieldLock(ItemField.ANGLE_Item);\n\n return accudraw.getFieldLock(ItemField.X_Item) && accudraw.getFieldLock(ItemField.Y_Item);\n }\n\n /** @internal */\n protected override onManipulationStart(): void {\n if (this.aboutCurrentZ)\n IModelApp.accuDraw.changeBaseRotationMode(RotationMode.Context); // Establish current orientation as base for when defining compass rotation by x axis...\n CoreTools.outputPromptByKey(\"AccuDraw.RotateAxes.Prompts.FirstPoint\");\n }\n\n /** @internal */\n protected doManipulation(ev: BeButtonEvent | undefined, isMotion: boolean): boolean {\n const vp = ev ? ev.viewport : IModelApp.accuDraw.currentView;\n if (!vp)\n return false;\n if (!AccuDrawShortcuts.rotateAxesByPoint(TentativeOrAccuSnap.isHot, this.aboutCurrentZ))\n return false;\n vp.invalidateDecorations();\n if (!isMotion) {\n AccuDrawShortcuts.itemFieldUnlockAll();\n IModelApp.tentativePoint.clear(true);\n }\n return true;\n }\n\n public override async parseAndRun(...args: any[]): Promise<boolean> {\n for (const arg of args) {\n if (arg.toLowerCase() === \"unlockedz\")\n this.aboutCurrentZ = false;\n }\n return this.run(args);\n }\n}\n\n/** @beta */\nexport class AccuDrawRotateElementTool extends AccuDrawShortcutsTool {\n public static override toolId = \"AccuDraw.RotateElement\";\n private _moveOrigin = !IModelApp.accuDraw.isActive || IModelApp.tentativePoint.isActive; // Preserve current origin if AccuDraw already active and not tentative snap...\n\n /** @internal */\n protected override get wantActivateOnStart(): boolean { return true; }\n\n /** @internal */\n protected override get wantManipulationImmediate(): boolean { return IModelApp.tentativePoint.isSnapped; }\n\n /** @internal */\n protected override onManipulationStart(): void {\n IModelApp.accuDraw.setContext(AccuDrawFlags.FixedOrigin); // Don't move compass when updateOrientation returns false...\n CoreTools.outputPromptByKey(\"AccuDraw.RotateElement.Prompts.FirstPoint\");\n }\n\n /** @internal */\n protected override onManipulationComplete(): AccuDrawFlags {\n let ignoreFlags = AccuDrawFlags.SetRMatrix | AccuDrawFlags.Disable; // If AccuDraw wasn't active when the shortcut started, let it remain active for suspended tool when shortcut completes...\n if (this._moveOrigin)\n ignoreFlags |= AccuDrawFlags.SetOrigin;\n return ignoreFlags;\n }\n\n /** @internal */\n protected updateOrientation(snap: SnapDetail, viewport: ScreenViewport, _isMotion: boolean): boolean {\n const accudraw = IModelApp.accuDraw;\n const rMatrix = AccuDraw.getSnapRotation(snap, viewport);\n if (undefined === rMatrix)\n return false;\n\n const point = this._moveOrigin ? snap.snapPoint : accudraw.origin;\n accudraw.setContext(AccuDrawFlags.SetRMatrix | AccuDrawFlags.AlwaysSetOrigin, point, rMatrix);\n return true;\n }\n\n /** @internal */\n protected doManipulation(ev: BeButtonEvent | undefined, isMotion: boolean): boolean {\n const viewport = ev ? ev.viewport : IModelApp.accuDraw.currentView;\n if (!viewport)\n return false;\n\n const snap = TentativeOrAccuSnap.getCurrentSnap(false);\n if (undefined === snap || !this.updateOrientation(snap, viewport, isMotion))\n return false;\n\n if (undefined === ev)\n AccuDrawShortcuts.processPendingHints(); // Would normally be processed after button down, necessary when called from post install...\n if (!isMotion)\n IModelApp.accuDraw.changeBaseRotationMode(RotationMode.Context); // Hold temporary rotation for tool duration...\n return true;\n }\n}\n\n/** @beta */\nexport class DefineACSByElementTool extends AccuDrawShortcutsTool {\n public static override toolId = \"AccuDraw.DefineACSByElement\";\n private _origin = Point3d.create();\n private _rMatrix = Matrix3d.createIdentity();\n private _acs?: AuxCoordSystemState;\n\n /** @internal */\n protected override onManipulationStart(): void { CoreTools.outputPromptByKey(\"AccuDraw.DefineACSByElement.Prompts.FirstPoint\"); }\n\n /** @internal */\n protected updateOrientation(snap: SnapDetail, vp: Viewport): boolean {\n const rMatrix = AccuDraw.getSnapRotation(snap, vp);\n if (undefined === rMatrix)\n return false;\n this._origin = snap.snapPoint;\n this._rMatrix = rMatrix;\n return true;\n }\n\n /** @internal */\n protected doManipulation(ev: BeButtonEvent | undefined, isMotion: boolean): boolean {\n const vp = ev ? ev.viewport : undefined;\n if (!vp)\n return false;\n\n const snapDetail = TentativeOrAccuSnap.getCurrentSnap(false);\n if (undefined === snapDetail || !this.updateOrientation(snapDetail, vp))\n return false;\n\n IModelApp.viewManager.invalidateDecorationsAllViews();\n if (isMotion)\n return true;\n\n if (!this._acs)\n this._acs = vp.view.auxiliaryCoordinateSystem.clone();\n\n this._acs.setOrigin(this._origin);\n this._acs.setRotation(this._rMatrix);\n AccuDraw.updateAuxCoordinateSystem(this._acs, vp);\n AccuDrawShortcuts.rotateToACS();\n return true;\n }\n\n /** @internal */\n public override decorate(context: DecorateContext): void {\n const vp = context.viewport;\n if (!this._acs)\n this._acs = vp.view.auxiliaryCoordinateSystem.clone();\n this._acs.setOrigin(this._origin);\n this._acs.setRotation(this._rMatrix);\n this._acs.display(context, ACSDisplayOptions.Active | ACSDisplayOptions.Dynamics);\n }\n}\n\n/** @beta */\nexport class DefineACSByPointsTool extends AccuDrawShortcutsTool {\n public static override toolId = \"AccuDraw.DefineACSByPoints\";\n private readonly _points: Point3d[] = [];\n private _acs?: AuxCoordSystemState;\n\n /** @internal */\n protected override onManipulationStart(): void {\n if (!IModelApp.tentativePoint.isActive) {\n CoreTools.outputPromptByKey(\"AccuDraw.DefineACSByPoints.Prompts.FirstPoint\");\n return;\n }\n\n const origin = IModelApp.tentativePoint.getPoint().clone();\n CoreTools.outputPromptByKey(\"AccuDraw.DefineACSByPoints.Prompts.SecondPoint\");\n IModelApp.accuDraw.setContext(AccuDrawFlags.SetOrigin | AccuDrawFlags.FixedOrigin, origin);\n this._points.push(origin);\n IModelApp.tentativePoint.clear(true);\n }\n\n /** @internal */\n protected doManipulation(ev: BeButtonEvent | undefined, isMotion: boolean): boolean {\n if (!ev || !ev.viewport)\n return false;\n\n IModelApp.viewManager.invalidateDecorationsAllViews();\n if (isMotion)\n return false;\n\n IModelApp.accuDraw.activate();\n this._points.push(ev.point.clone());\n\n const vp = ev.viewport;\n if (!this._acs)\n this._acs = vp.view.auxiliaryCoordinateSystem.clone();\n\n if (AccuDrawShortcuts.updateACSByPoints(this._acs, vp, this._points, false)) {\n AccuDraw.updateAuxCoordinateSystem(this._acs, vp);\n AccuDrawShortcuts.rotateToACS();\n return true;\n }\n\n CoreTools.outputPromptByKey(`AccuDraw.DefineACSByPoints.Prompts${1 === this._points.length ? \".SecondPoint\" : \".NextPoint\"}`);\n return false;\n }\n\n /** @internal */\n public override decorate(context: DecorateContext): void {\n const tmpPoints: Point3d[] = [];\n this._points.forEach((pt) => tmpPoints.push(pt));\n\n const ev = new BeButtonEvent();\n IModelApp.toolAdmin.fillEventFromCursorLocation(ev);\n tmpPoints.push(ev.point);\n\n const vp = context.viewport;\n if (!this._acs)\n this._acs = vp.view.auxiliaryCoordinateSystem.clone();\n\n AccuDrawShortcuts.updateACSByPoints(this._acs, vp, tmpPoints, true);\n this._acs.display(context, ACSDisplayOptions.Active | ACSDisplayOptions.Dynamics);\n }\n}\n"]}
|
package/lib/esm/AccuSnap.d.ts
CHANGED
|
@@ -167,6 +167,7 @@ export declare class AccuSnap implements Decorator {
|
|
|
167
167
|
enableSnap(yesNo: boolean): void;
|
|
168
168
|
/** @internal */
|
|
169
169
|
intersectXY(tpSnap: SnapDetail, second: SnapDetail): IntersectDetail | undefined;
|
|
170
|
+
private static perpendicularPoint;
|
|
170
171
|
/** @internal */
|
|
171
172
|
static requestSnap(thisHit: HitDetail, snapModes: SnapMode[], hotDistanceInches: number, keypointDivisor: number, hitList?: HitList<HitDetail>, out?: LocateResponse): Promise<SnapDetail | undefined>;
|
|
172
173
|
private getAccuSnapDetail;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccuSnap.d.ts","sourceRoot":"","sources":["../../src/AccuSnap.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAQ,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,
|
|
1
|
+
{"version":3,"file":"AccuSnap.d.ts","sourceRoot":"","sources":["../../src/AccuSnap.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAQ,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAwF,OAAO,EAAY,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAEtJ,OAAO,EAAwB,aAAa,EAAoC,cAAc,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAC3I,OAAO,EAAE,SAAS,EAA8B,OAAO,EAA0B,eAAe,EAAE,UAAU,EAAY,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEtJ,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAuB,cAAc,EAAE,MAAM,WAAW,CAAC;AAChE,OAAO,EAAY,aAAa,EAAE,YAAY,EAAe,MAAM,cAAc,CAAC;AAElF,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAMtD;;GAEG;AACH,qBAAa,WAAY,YAAW,gBAAgB;IAC3C,QAAQ,UAAiB;IACzB,QAAQ,EAAE,QAAQ,CAAC;IAC1B,SAAS,CAAC,eAAe,UAAiB;IAC1C,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,WAAW,UAAS;IAC9B,SAAS,CAAC,WAAW,UAAS;IAC9B,SAAS,CAAC,WAAW,UAAS;IAE9B,SAAS,aAAa,EAAE,EAAE,cAAc;IAMxC,SAAS,CAAC,WAAW,CAAC,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,OAAO,GAAG,OAAO;IA0BpE,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,wBAAwB,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI;IAuBnE,cAAc,CAAC,GAAG,EAAE,wBAAwB,GAAG,IAAI;IAoB1D,SAAS,CAAC,UAAU,CAAC,EAAE,EAAE,KAAK,GAAG,OAAO;IACjC,eAAe,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO;IAE3C,WAAW,CAAC,EAAE,EAAE,YAAY,GAAG,OAAO;IAUtC,gBAAgB,CAAC,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO;IAMlE,YAAY,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI;IAMpC,UAAU,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI;IAQ5B,UAAU,CAAC,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;WAiB7C,kBAAkB,CAAC,EAAE,EAAE,YAAY,GAAG,WAAW,GAAG,SAAS;CAU5E;AAED;;;;GAIG;AACH,qBAAa,QAAS,YAAW,SAAS;IACxC,2BAA2B;IACpB,OAAO,CAAC,EAAE,SAAS,CAAC;IAC3B,4BAA4B;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IACtC,oCAAoC;IACpC,SAAgB,SAAS,gBAAuB;IAChD,qCAAqC;IACrC,SAAgB,UAAU,gBAAuB;IACjD,qDAAqD;IACrD,SAAgB,KAAK,iBAAwB;IAC7C,0DAA0D;IAC1D,SAAgB,IAAI,iBAAwB;IAC5C,uCAAuC;IACvC,SAAgB,SAAS,iBAAwB;IACjD,gCAAgC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IACzB,iEAAiE;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;IAC5B,8GAA8G;IAC9G,OAAO,CAAC,WAAW,CAAK;IACxB,yDAAyD;IACzD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,gBAAgB;IAChB,SAAgB,SAAS,qBAA4B;IACrD,gBAAgB;IAChB,SAAS,CAAC,SAAS,oBAA2B;IAC9C,gBAAgB;IACT,WAAW,CAAC,EAAE,WAAW,CAAC;IACjC,2CAA2C;IAC3C,OAAO,CAAC,eAAe,CAAC,CAAyB;IAEjD,gBAAgB;IACT,aAAa;IACpB,OAAO,KAAK,eAAe,GAAiF;IAC5G,OAAO,KAAK,kBAAkB,GAAgG;IAC9H,6FAA6F;IAC7F,IAAW,eAAe,IAAI,OAAO,CAAkC;IACvE,+FAA+F;IAC/F,IAAW,aAAa,IAAI,OAAO,CAAmC;IACtE,8IAA8I;IAC9I,IAAW,mBAAmB,IAAI,OAAO,CAAsC;IAC/E,6BAA6B;IAC7B,IAAW,YAAY,sBAA6B;IAEpD,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,MAAM,CAAC,YAAY;IAC3B,4BAA4B;IACrB,iBAAiB,IAAI,UAAU,GAAG,SAAS;IAClD,8DAA8D;IAC9D,IAAW,KAAK,IAAI,OAAO,CAG1B;IAED;;;OAGG;IACI,UAAU,CAAC,GAAG,CAAC,EAAE,OAAO,GAAG,IAAI;IAatC,gBAAgB;IACT,OAAO,IAAI,IAAI;IAKtB,OAAO,KAAK,WAAW,GAAgG;IACvH,OAAO,KAAK,gBAAgB,GAAkF;IAE9G;;OAEG;IACH,IAAW,eAAe,WAA6C;IAEvE;;OAEG;IACI,kBAAkB,IAAI,QAAQ,EAAE;IAMvC;;;OAGG;IACI,aAAa,IAAI,IAAI;IAE5B,wGAAwG;IACxG,OAAO,KAAK,+BAA+B,GAG1C;IAED;;;OAGG;IACH,IAAW,QAAQ,IAAI,OAAO,CAgB7B;IAED,OAAO,CAAC,wBAAwB;IAIhC,uCAAuC;IAChC,KAAK,IAAI,IAAI;IACpB,gBAAgB;IACT,UAAU,CAAC,MAAM,CAAC,EAAE,SAAS,GAAG,IAAI;IAmC3C,oCAAoC;IACpC,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,iBAAiB;IAKzB,+BAA+B;IAC/B,OAAO,CAAC,WAAW;IAKnB,gBAAgB;IACT,KAAK,IAAI,IAAI;IAKpB,OAAO,CAAC,YAAY;IAkBpB,OAAO,CAAC,iBAAiB;IAKzB,gBAAgB;IACT,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,cAAc,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI;IAkD/E,gBAAgB;IACT,YAAY,CAAC,EAAE,CAAC,EAAE,aAAa,GAAG,IAAI;IAY7C,wHAAwH;IACxH,OAAO,CAAC,cAAc;IAgBtB,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAOjC,oFAAoF;IACpF,OAAO,CAAC,aAAa;IA+BrB,OAAO,CAAC,YAAY;IAMpB,wDAAwD;IACxD,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,YAAY;IAQpB,gBAAgB;IACT,gBAAgB,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,GAAG,IAAI;IAS1D;;OAEG;IACI,oBAAoB,CAAC,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO;IAErE,gBAAgB;IACT,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,SAAS,GAAG,SAAS;IASlE,OAAO,CAAC,YAAY;IAKpB,gBAAgB;IACT,OAAO,CAAC,SAAS,EAAE,OAAO;IAUjC,gBAAgB;IACT,QAAQ,CAAC,UAAU,EAAE,OAAO,GAAG,MAAM;IAW5C,8BAA8B;IACvB,UAAU,CAAC,KAAK,EAAE,OAAO;IAahC,gBAAgB;IACT,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,GAAG,eAAe,GAAG,SAAS;IAoCvF,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAwEjC,gBAAgB;WACI,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,iBAAiB,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;YAmLrM,iBAAiB;IAuC/B;;;;OAIG;IACU,aAAa,CAAC,GAAG,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAUhG,OAAO,CAAC,QAAQ;YA0CF,gBAAgB;IAuC9B;;OAEG;IACU,WAAW,IAAI,OAAO,CAAC,UAAU,CAAC;IAqC/C;;OAEG;IACU,QAAQ,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAiCvD,gBAAgB;IACT,gBAAgB,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO;IAInD,gBAAgB;IACT,YAAY,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI;IAK3C,gBAAgB;IACT,UAAU,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI;IAKzC,gBAAgB;IACT,aAAa,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI;IAK5C,gBAAgB;IACT,WAAW,CAAC,EAAE,EAAE,YAAY,GAAG,OAAO;IAI7C,gBAAgB;IACT,gBAAgB,CAAC,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO;IAIzE,gBAAgB;IAChB,IAAW,iBAAiB,IAAI,OAAO,CAEtC;IAED,gBAAgB;IACH,UAAU,CAAC,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAiB3D,OAAO,CAAC,aAAa;IAkBrB,gBAAgB;IACT,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAc/C,OAAO,CAAC,oBAAoB;IAK5B,gBAAgB;IACT,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAS7C;;OAEG;IACI,YAAY,CAAC,KAAK,EAAE,OAAO;IAQlC;;OAEG;IACI,WAAW,IAAI,IAAI;IAO1B;;;;;OAKG;IACU,UAAU;CAOxB;AAED;;GAEG;AACH,qBAAa,mBAAmB;IAC9B,sGAAsG;IACtG,WAAkB,KAAK,IAAI,OAAO,CAA2E;IAE7G;;;OAGG;WACW,cAAc,CAAC,UAAU,GAAE,OAAc,GAAG,UAAU,GAAG,SAAS;IAWhF,wEAAwE;WAC1D,eAAe,IAAI,OAAO;IAUxC,wEAAwE;WAC1D,cAAc,IAAI,cAAc,GAAG,SAAS;CAI3D;AAED,cAAc;AACd,yBAAiB,QAAQ,CAAC;IACxB,MAAa,SAAS;QACb,OAAO,UAAS;QAChB,MAAM,UAAS;QACf,SAAS,SAAK;QACd,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;QAM/B,KAAK,IAAI,SAAS;KAK1B;IAED,MAAa,QAAQ;QACnB,wGAAwG;QACjG,iBAAiB,SAAO;QAC/B,6GAA6G;QACtG,YAAY,SAAO;QAC1B,kGAAkG;QAC3F,cAAc,SAAO;QAC5B,2EAA2E;QACpE,cAAc,UAAQ;QAC7B,yFAAyF;QAClF,UAAU,UAAQ;QACzB,4DAA4D;QACrD,OAAO,UAAQ;QACtB,mCAAmC;QAC5B,YAAY,aAA8B;QACjD,6DAA6D;QACtD,eAAe,SAAK;KAC5B;CACF"}
|
package/lib/esm/AccuSnap.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* @module LocatingElements
|
|
7
7
|
*/
|
|
8
8
|
import { BeDuration, Id64 } from "@itwin/core-bentley";
|
|
9
|
-
import { CurveCurve, GeometryQuery, IModelJson as GeomJson, Point2d, Point3d, Vector3d } from "@itwin/core-geometry";
|
|
9
|
+
import { CurveCurve, Geometry, GeometryQuery, IModelJson as GeomJson, Point2d, Point3d, Vector3d } from "@itwin/core-geometry";
|
|
10
10
|
import { ElementLocateManager, LocateAction, LocateFilterStatus, LocateResponse, SnapStatus } from "./ElementLocateManager";
|
|
11
11
|
import { HitDetailType, HitGeomType, HitPriority, HitSource, IntersectDetail, SnapDetail, SnapHeat, SnapMode } from "./HitDetail";
|
|
12
12
|
import { IModelApp } from "./IModelApp";
|
|
@@ -14,6 +14,7 @@ import { IconSprites, SpriteLocation } from "./Sprites";
|
|
|
14
14
|
import { BeButton, BeButtonEvent, InputSource } from "./tools/Tool";
|
|
15
15
|
import { ToolSettings } from "./tools/ToolSettings";
|
|
16
16
|
import { _requestSnap } from "./common/internal/Symbols";
|
|
17
|
+
import { AccuDraw, AccuDrawFlags, AccuDrawHintBuilder } from "./AccuDraw";
|
|
17
18
|
// cspell:ignore dont primitivetools
|
|
18
19
|
/** Virtual cursor for using AccuSnap with touch input.
|
|
19
20
|
* @internal
|
|
@@ -552,6 +553,61 @@ export class AccuSnap {
|
|
|
552
553
|
intersect.primitive = tpSegment; // Just save single segment that was intersected for line strings/shapes...
|
|
553
554
|
return intersect;
|
|
554
555
|
}
|
|
556
|
+
static perpendicularPoint(snap) {
|
|
557
|
+
const accuDraw = IModelApp.accuDraw;
|
|
558
|
+
if (!accuDraw.isEnabled || accuDraw.isDeactivated)
|
|
559
|
+
return SnapStatus.Disabled; // AccuDraw is require for this snap mode...
|
|
560
|
+
if (HitGeomType.Surface === snap.geomType)
|
|
561
|
+
return SnapStatus.NoSnapPossible; // Only valid for edge and curve hits...
|
|
562
|
+
const curve = snap.getCurvePrimitive();
|
|
563
|
+
if (undefined === curve)
|
|
564
|
+
return SnapStatus.NoSnapPossible;
|
|
565
|
+
const rMatrix = AccuDraw.getSnapRotation(snap, snap.viewport);
|
|
566
|
+
if (undefined === rMatrix)
|
|
567
|
+
return SnapStatus.NoSnapPossible;
|
|
568
|
+
// Compute perpendicular from AccuDraw origin when active or set AccuDraw rotation if accepted...
|
|
569
|
+
if (!accuDraw.isActive) {
|
|
570
|
+
const origin = snap.getPoint();
|
|
571
|
+
accuDraw.setContext(AccuDrawFlags.SetRMatrix | AccuDrawFlags.AlwaysSetOrigin, origin, rMatrix);
|
|
572
|
+
accuDraw.adjustPoint(origin, snap.viewport, false); // Update internals for new snap location...
|
|
573
|
+
snap.setSnapPoint(origin, SnapHeat.InRange); // Force hot snap...
|
|
574
|
+
snap.setSnapMode(SnapMode.PerpendicularPoint);
|
|
575
|
+
return SnapStatus.Success;
|
|
576
|
+
}
|
|
577
|
+
const zVec = rMatrix.rowZ(); // This is a row matrix...
|
|
578
|
+
const spacePoint = AccuDrawHintBuilder.projectPointToPlaneInView(accuDraw.origin, snap.getPoint(), zVec, snap.viewport, true);
|
|
579
|
+
if (undefined === spacePoint)
|
|
580
|
+
return SnapStatus.NoSnapPossible;
|
|
581
|
+
const detail = curve.closestPoint(spacePoint, true);
|
|
582
|
+
if (undefined === detail?.curve)
|
|
583
|
+
return SnapStatus.NoSnapPossible;
|
|
584
|
+
// Close point may not be perpendicular when curve can't be extended (CurveExtendMode.OnTangent isn't supported for all curve types)...
|
|
585
|
+
if (!curve.isExtensibleFractionSpace) {
|
|
586
|
+
const curvePlanePoint = AccuDrawHintBuilder.projectPointToPlaneInView(accuDraw.origin, detail.point, zVec, snap.viewport, true);
|
|
587
|
+
if (undefined === curvePlanePoint)
|
|
588
|
+
return SnapStatus.NoSnapPossible;
|
|
589
|
+
const curveNormal = detail.point.vectorTo(curvePlanePoint);
|
|
590
|
+
const curveTangent = curve.fractionToPointAndUnitTangent(detail.fraction);
|
|
591
|
+
if (!curveTangent.getDirectionRef().isPerpendicularTo(curveNormal)) {
|
|
592
|
+
const curveExtensionPoint = AccuDrawHintBuilder.projectPointToLineInView(accuDraw.origin, curveTangent.getOriginRef(), curveTangent.getDirectionRef(), snap.viewport, true);
|
|
593
|
+
if (undefined === curveExtensionPoint)
|
|
594
|
+
return SnapStatus.NoSnapPossible;
|
|
595
|
+
detail.point.setFrom(curveExtensionPoint);
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
const point = AccuDrawHintBuilder.projectPointToPlaneInView(detail.point, accuDraw.origin, zVec, snap.viewport, true);
|
|
599
|
+
if (undefined === point)
|
|
600
|
+
return SnapStatus.NoSnapPossible;
|
|
601
|
+
const xVec = new Vector3d();
|
|
602
|
+
if (accuDraw.origin.vectorTo(point).normalizeWithLength(xVec).mag < Geometry.smallAngleRadians)
|
|
603
|
+
xVec.setFrom(rMatrix.rowX()); // Closest point and compass origin coincide...
|
|
604
|
+
const yVec = xVec.unitCrossProduct(zVec);
|
|
605
|
+
if (undefined === yVec)
|
|
606
|
+
return SnapStatus.NoSnapPossible;
|
|
607
|
+
snap.setSnapPoint(point, SnapHeat.InRange); // Force hot snap...
|
|
608
|
+
snap.setSnapMode(SnapMode.PerpendicularPoint);
|
|
609
|
+
return SnapStatus.Success;
|
|
610
|
+
}
|
|
555
611
|
/** @internal */
|
|
556
612
|
static async requestSnap(thisHit, snapModes, hotDistanceInches, keypointDivisor, hitList, out) {
|
|
557
613
|
if (thisHit.isModelHit || thisHit.isMapHit || thisHit.isClassifier) {
|
|
@@ -588,6 +644,14 @@ export class AccuSnap {
|
|
|
588
644
|
return undefined;
|
|
589
645
|
}
|
|
590
646
|
}
|
|
647
|
+
const doPerpPointSnap = snapModes.includes(SnapMode.PerpendicularPoint);
|
|
648
|
+
if (doPerpPointSnap) {
|
|
649
|
+
// NOTE: This is not a valid backend snap mode. Instead make the snap request using nearest
|
|
650
|
+
// snap in order to get the candidate curve to use to compute the snap point...
|
|
651
|
+
snapModes = snapModes.filter(snapMode => snapMode !== SnapMode.PerpendicularPoint);
|
|
652
|
+
if (!snapModes.includes(SnapMode.Nearest))
|
|
653
|
+
snapModes.push(SnapMode.Nearest);
|
|
654
|
+
}
|
|
591
655
|
const requestProps = {
|
|
592
656
|
id: thisHit.sourceId,
|
|
593
657
|
testPoint: thisHit.testPoint,
|
|
@@ -675,6 +739,11 @@ export class AccuSnap {
|
|
|
675
739
|
displayTransform?.matrix.multiplyVector(snap.normal, snap.normal);
|
|
676
740
|
snap.normal.normalizeInPlace();
|
|
677
741
|
}
|
|
742
|
+
if (doPerpPointSnap && SnapMode.Nearest === result.snapMode) {
|
|
743
|
+
if (SnapStatus.Success !== this.perpendicularPoint(snap))
|
|
744
|
+
return undefined;
|
|
745
|
+
return snap;
|
|
746
|
+
}
|
|
678
747
|
if (SnapMode.Intersection !== snap.snapMode)
|
|
679
748
|
return snap;
|
|
680
749
|
if (undefined === result.intersectId)
|
|
@@ -875,7 +944,9 @@ export class AccuSnap {
|
|
|
875
944
|
}
|
|
876
945
|
}
|
|
877
946
|
/** @internal */
|
|
878
|
-
onPreButtonEvent(ev) {
|
|
947
|
+
onPreButtonEvent(ev) {
|
|
948
|
+
return (undefined !== this.touchCursor) ? this.touchCursor.isButtonHandled(ev) : false;
|
|
949
|
+
}
|
|
879
950
|
/** @internal */
|
|
880
951
|
onTouchStart(ev) {
|
|
881
952
|
if (undefined !== this.touchCursor)
|