@itwin/ecschema-rpcinterface-tests 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/dist/bundled-tests.js +587 -235
- package/lib/dist/bundled-tests.js.map +1 -1
- package/package.json +15 -15
|
@@ -74820,6 +74820,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
74820
74820
|
/* harmony import */ var _tools_Tool__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./tools/Tool */ "../../core/frontend/lib/esm/tools/Tool.js");
|
|
74821
74821
|
/* harmony import */ var _tools_ToolSettings__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./tools/ToolSettings */ "../../core/frontend/lib/esm/tools/ToolSettings.js");
|
|
74822
74822
|
/* harmony import */ var _common_internal_Symbols__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./common/internal/Symbols */ "../../core/frontend/lib/esm/common/internal/Symbols.js");
|
|
74823
|
+
/* harmony import */ var _AccuDraw__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./AccuDraw */ "../../core/frontend/lib/esm/AccuDraw.js");
|
|
74823
74824
|
/*---------------------------------------------------------------------------------------------
|
|
74824
74825
|
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
74825
74826
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
@@ -74836,6 +74837,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
74836
74837
|
|
|
74837
74838
|
|
|
74838
74839
|
|
|
74840
|
+
|
|
74839
74841
|
// cspell:ignore dont primitivetools
|
|
74840
74842
|
/** Virtual cursor for using AccuSnap with touch input.
|
|
74841
74843
|
* @internal
|
|
@@ -75374,6 +75376,61 @@ class AccuSnap {
|
|
|
75374
75376
|
intersect.primitive = tpSegment; // Just save single segment that was intersected for line strings/shapes...
|
|
75375
75377
|
return intersect;
|
|
75376
75378
|
}
|
|
75379
|
+
static perpendicularPoint(snap) {
|
|
75380
|
+
const accuDraw = _IModelApp__WEBPACK_IMPORTED_MODULE_4__.IModelApp.accuDraw;
|
|
75381
|
+
if (!accuDraw.isEnabled || accuDraw.isDeactivated)
|
|
75382
|
+
return _ElementLocateManager__WEBPACK_IMPORTED_MODULE_2__.SnapStatus.Disabled; // AccuDraw is require for this snap mode...
|
|
75383
|
+
if (_HitDetail__WEBPACK_IMPORTED_MODULE_3__.HitGeomType.Surface === snap.geomType)
|
|
75384
|
+
return _ElementLocateManager__WEBPACK_IMPORTED_MODULE_2__.SnapStatus.NoSnapPossible; // Only valid for edge and curve hits...
|
|
75385
|
+
const curve = snap.getCurvePrimitive();
|
|
75386
|
+
if (undefined === curve)
|
|
75387
|
+
return _ElementLocateManager__WEBPACK_IMPORTED_MODULE_2__.SnapStatus.NoSnapPossible;
|
|
75388
|
+
const rMatrix = _AccuDraw__WEBPACK_IMPORTED_MODULE_9__.AccuDraw.getSnapRotation(snap, snap.viewport);
|
|
75389
|
+
if (undefined === rMatrix)
|
|
75390
|
+
return _ElementLocateManager__WEBPACK_IMPORTED_MODULE_2__.SnapStatus.NoSnapPossible;
|
|
75391
|
+
// Compute perpendicular from AccuDraw origin when active or set AccuDraw rotation if accepted...
|
|
75392
|
+
if (!accuDraw.isActive) {
|
|
75393
|
+
const origin = snap.getPoint();
|
|
75394
|
+
accuDraw.setContext(_AccuDraw__WEBPACK_IMPORTED_MODULE_9__.AccuDrawFlags.SetRMatrix | _AccuDraw__WEBPACK_IMPORTED_MODULE_9__.AccuDrawFlags.AlwaysSetOrigin, origin, rMatrix);
|
|
75395
|
+
accuDraw.adjustPoint(origin, snap.viewport, false); // Update internals for new snap location...
|
|
75396
|
+
snap.setSnapPoint(origin, _HitDetail__WEBPACK_IMPORTED_MODULE_3__.SnapHeat.InRange); // Force hot snap...
|
|
75397
|
+
snap.setSnapMode(_HitDetail__WEBPACK_IMPORTED_MODULE_3__.SnapMode.PerpendicularPoint);
|
|
75398
|
+
return _ElementLocateManager__WEBPACK_IMPORTED_MODULE_2__.SnapStatus.Success;
|
|
75399
|
+
}
|
|
75400
|
+
const zVec = rMatrix.rowZ(); // This is a row matrix...
|
|
75401
|
+
const spacePoint = _AccuDraw__WEBPACK_IMPORTED_MODULE_9__.AccuDrawHintBuilder.projectPointToPlaneInView(accuDraw.origin, snap.getPoint(), zVec, snap.viewport, true);
|
|
75402
|
+
if (undefined === spacePoint)
|
|
75403
|
+
return _ElementLocateManager__WEBPACK_IMPORTED_MODULE_2__.SnapStatus.NoSnapPossible;
|
|
75404
|
+
const detail = curve.closestPoint(spacePoint, true);
|
|
75405
|
+
if (undefined === detail?.curve)
|
|
75406
|
+
return _ElementLocateManager__WEBPACK_IMPORTED_MODULE_2__.SnapStatus.NoSnapPossible;
|
|
75407
|
+
// Close point may not be perpendicular when curve can't be extended (CurveExtendMode.OnTangent isn't supported for all curve types)...
|
|
75408
|
+
if (!curve.isExtensibleFractionSpace) {
|
|
75409
|
+
const curvePlanePoint = _AccuDraw__WEBPACK_IMPORTED_MODULE_9__.AccuDrawHintBuilder.projectPointToPlaneInView(accuDraw.origin, detail.point, zVec, snap.viewport, true);
|
|
75410
|
+
if (undefined === curvePlanePoint)
|
|
75411
|
+
return _ElementLocateManager__WEBPACK_IMPORTED_MODULE_2__.SnapStatus.NoSnapPossible;
|
|
75412
|
+
const curveNormal = detail.point.vectorTo(curvePlanePoint);
|
|
75413
|
+
const curveTangent = curve.fractionToPointAndUnitTangent(detail.fraction);
|
|
75414
|
+
if (!curveTangent.getDirectionRef().isPerpendicularTo(curveNormal)) {
|
|
75415
|
+
const curveExtensionPoint = _AccuDraw__WEBPACK_IMPORTED_MODULE_9__.AccuDrawHintBuilder.projectPointToLineInView(accuDraw.origin, curveTangent.getOriginRef(), curveTangent.getDirectionRef(), snap.viewport, true);
|
|
75416
|
+
if (undefined === curveExtensionPoint)
|
|
75417
|
+
return _ElementLocateManager__WEBPACK_IMPORTED_MODULE_2__.SnapStatus.NoSnapPossible;
|
|
75418
|
+
detail.point.setFrom(curveExtensionPoint);
|
|
75419
|
+
}
|
|
75420
|
+
}
|
|
75421
|
+
const point = _AccuDraw__WEBPACK_IMPORTED_MODULE_9__.AccuDrawHintBuilder.projectPointToPlaneInView(detail.point, accuDraw.origin, zVec, snap.viewport, true);
|
|
75422
|
+
if (undefined === point)
|
|
75423
|
+
return _ElementLocateManager__WEBPACK_IMPORTED_MODULE_2__.SnapStatus.NoSnapPossible;
|
|
75424
|
+
const xVec = new _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Vector3d();
|
|
75425
|
+
if (accuDraw.origin.vectorTo(point).normalizeWithLength(xVec).mag < _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.smallAngleRadians)
|
|
75426
|
+
xVec.setFrom(rMatrix.rowX()); // Closest point and compass origin coincide...
|
|
75427
|
+
const yVec = xVec.unitCrossProduct(zVec);
|
|
75428
|
+
if (undefined === yVec)
|
|
75429
|
+
return _ElementLocateManager__WEBPACK_IMPORTED_MODULE_2__.SnapStatus.NoSnapPossible;
|
|
75430
|
+
snap.setSnapPoint(point, _HitDetail__WEBPACK_IMPORTED_MODULE_3__.SnapHeat.InRange); // Force hot snap...
|
|
75431
|
+
snap.setSnapMode(_HitDetail__WEBPACK_IMPORTED_MODULE_3__.SnapMode.PerpendicularPoint);
|
|
75432
|
+
return _ElementLocateManager__WEBPACK_IMPORTED_MODULE_2__.SnapStatus.Success;
|
|
75433
|
+
}
|
|
75377
75434
|
/** @internal */
|
|
75378
75435
|
static async requestSnap(thisHit, snapModes, hotDistanceInches, keypointDivisor, hitList, out) {
|
|
75379
75436
|
if (thisHit.isModelHit || thisHit.isMapHit || thisHit.isClassifier) {
|
|
@@ -75410,6 +75467,14 @@ class AccuSnap {
|
|
|
75410
75467
|
return undefined;
|
|
75411
75468
|
}
|
|
75412
75469
|
}
|
|
75470
|
+
const doPerpPointSnap = snapModes.includes(_HitDetail__WEBPACK_IMPORTED_MODULE_3__.SnapMode.PerpendicularPoint);
|
|
75471
|
+
if (doPerpPointSnap) {
|
|
75472
|
+
// NOTE: This is not a valid backend snap mode. Instead make the snap request using nearest
|
|
75473
|
+
// snap in order to get the candidate curve to use to compute the snap point...
|
|
75474
|
+
snapModes = snapModes.filter(snapMode => snapMode !== _HitDetail__WEBPACK_IMPORTED_MODULE_3__.SnapMode.PerpendicularPoint);
|
|
75475
|
+
if (!snapModes.includes(_HitDetail__WEBPACK_IMPORTED_MODULE_3__.SnapMode.Nearest))
|
|
75476
|
+
snapModes.push(_HitDetail__WEBPACK_IMPORTED_MODULE_3__.SnapMode.Nearest);
|
|
75477
|
+
}
|
|
75413
75478
|
const requestProps = {
|
|
75414
75479
|
id: thisHit.sourceId,
|
|
75415
75480
|
testPoint: thisHit.testPoint,
|
|
@@ -75497,6 +75562,11 @@ class AccuSnap {
|
|
|
75497
75562
|
displayTransform?.matrix.multiplyVector(snap.normal, snap.normal);
|
|
75498
75563
|
snap.normal.normalizeInPlace();
|
|
75499
75564
|
}
|
|
75565
|
+
if (doPerpPointSnap && _HitDetail__WEBPACK_IMPORTED_MODULE_3__.SnapMode.Nearest === result.snapMode) {
|
|
75566
|
+
if (_ElementLocateManager__WEBPACK_IMPORTED_MODULE_2__.SnapStatus.Success !== this.perpendicularPoint(snap))
|
|
75567
|
+
return undefined;
|
|
75568
|
+
return snap;
|
|
75569
|
+
}
|
|
75500
75570
|
if (_HitDetail__WEBPACK_IMPORTED_MODULE_3__.SnapMode.Intersection !== snap.snapMode)
|
|
75501
75571
|
return snap;
|
|
75502
75572
|
if (undefined === result.intersectId)
|
|
@@ -75697,7 +75767,9 @@ class AccuSnap {
|
|
|
75697
75767
|
}
|
|
75698
75768
|
}
|
|
75699
75769
|
/** @internal */
|
|
75700
|
-
onPreButtonEvent(ev) {
|
|
75770
|
+
onPreButtonEvent(ev) {
|
|
75771
|
+
return (undefined !== this.touchCursor) ? this.touchCursor.isButtonHandled(ev) : false;
|
|
75772
|
+
}
|
|
75701
75773
|
/** @internal */
|
|
75702
75774
|
onTouchStart(ev) {
|
|
75703
75775
|
if (undefined !== this.touchCursor)
|
|
@@ -82144,6 +82216,7 @@ var SnapMode;
|
|
|
82144
82216
|
SnapMode[SnapMode["Origin"] = 16] = "Origin";
|
|
82145
82217
|
SnapMode[SnapMode["Bisector"] = 32] = "Bisector";
|
|
82146
82218
|
SnapMode[SnapMode["Intersection"] = 64] = "Intersection";
|
|
82219
|
+
SnapMode[SnapMode["PerpendicularPoint"] = 128] = "PerpendicularPoint";
|
|
82147
82220
|
})(SnapMode || (SnapMode = {}));
|
|
82148
82221
|
/**
|
|
82149
82222
|
* @public
|
|
@@ -82418,6 +82491,11 @@ class SnapDetail extends HitDetail {
|
|
|
82418
82491
|
this.adjustedPoint.setFrom(point);
|
|
82419
82492
|
this.heat = heat;
|
|
82420
82493
|
}
|
|
82494
|
+
/** Change the snap mode. */
|
|
82495
|
+
setSnapMode(snapMode) {
|
|
82496
|
+
this.snapMode = snapMode;
|
|
82497
|
+
this.sprite = _Sprites__WEBPACK_IMPORTED_MODULE_4__.IconSprites.getSpriteFromUrl(SnapDetail.getSnapSpriteUrl(snapMode));
|
|
82498
|
+
}
|
|
82421
82499
|
/** Set curve primitive and HitGeometryType for this SnapDetail. */
|
|
82422
82500
|
setCurvePrimitive(primitive, localToWorld, geomType) {
|
|
82423
82501
|
this.primitive = primitive;
|
|
@@ -82509,6 +82587,7 @@ class SnapDetail extends HitDetail {
|
|
|
82509
82587
|
case SnapMode.Origin: return `${_IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.publicPath}sprites/SnapOrigin.png`;
|
|
82510
82588
|
case SnapMode.Bisector: return `${_IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.publicPath}sprites/SnapBisector.png`;
|
|
82511
82589
|
case SnapMode.Intersection: return `${_IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.publicPath}sprites/SnapIntersection.png`;
|
|
82590
|
+
case SnapMode.PerpendicularPoint: return `${_IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.publicPath}sprites/SnapPerpendicularPoint.png`;
|
|
82512
82591
|
}
|
|
82513
82592
|
return "";
|
|
82514
82593
|
}
|
|
@@ -106043,7 +106122,6 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
106043
106122
|
/* harmony export */ AccuDrawRotateCycleTool: () => (/* reexport safe */ _tools_AccuDrawTool__WEBPACK_IMPORTED_MODULE_99__.AccuDrawRotateCycleTool),
|
|
106044
106123
|
/* harmony export */ AccuDrawRotateElementTool: () => (/* reexport safe */ _tools_AccuDrawTool__WEBPACK_IMPORTED_MODULE_99__.AccuDrawRotateElementTool),
|
|
106045
106124
|
/* harmony export */ AccuDrawRotateFrontTool: () => (/* reexport safe */ _tools_AccuDrawTool__WEBPACK_IMPORTED_MODULE_99__.AccuDrawRotateFrontTool),
|
|
106046
|
-
/* harmony export */ AccuDrawRotatePerpendicularTool: () => (/* reexport safe */ _tools_AccuDrawTool__WEBPACK_IMPORTED_MODULE_99__.AccuDrawRotatePerpendicularTool),
|
|
106047
106125
|
/* harmony export */ AccuDrawRotateSideTool: () => (/* reexport safe */ _tools_AccuDrawTool__WEBPACK_IMPORTED_MODULE_99__.AccuDrawRotateSideTool),
|
|
106048
106126
|
/* harmony export */ AccuDrawRotateTopTool: () => (/* reexport safe */ _tools_AccuDrawTool__WEBPACK_IMPORTED_MODULE_99__.AccuDrawRotateTopTool),
|
|
106049
106127
|
/* harmony export */ AccuDrawRotateViewTool: () => (/* reexport safe */ _tools_AccuDrawTool__WEBPACK_IMPORTED_MODULE_99__.AccuDrawRotateViewTool),
|
|
@@ -165347,7 +165425,6 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
165347
165425
|
/* harmony export */ AccuDrawRotateCycleTool: () => (/* binding */ AccuDrawRotateCycleTool),
|
|
165348
165426
|
/* harmony export */ AccuDrawRotateElementTool: () => (/* binding */ AccuDrawRotateElementTool),
|
|
165349
165427
|
/* harmony export */ AccuDrawRotateFrontTool: () => (/* binding */ AccuDrawRotateFrontTool),
|
|
165350
|
-
/* harmony export */ AccuDrawRotatePerpendicularTool: () => (/* binding */ AccuDrawRotatePerpendicularTool),
|
|
165351
165428
|
/* harmony export */ AccuDrawRotateSideTool: () => (/* binding */ AccuDrawRotateSideTool),
|
|
165352
165429
|
/* harmony export */ AccuDrawRotateTopTool: () => (/* binding */ AccuDrawRotateTopTool),
|
|
165353
165430
|
/* harmony export */ AccuDrawRotateViewTool: () => (/* binding */ AccuDrawRotateViewTool),
|
|
@@ -165370,9 +165447,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
165370
165447
|
/* harmony import */ var _AccuDraw__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../AccuDraw */ "../../core/frontend/lib/esm/AccuDraw.js");
|
|
165371
165448
|
/* harmony import */ var _AccuSnap__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../AccuSnap */ "../../core/frontend/lib/esm/AccuSnap.js");
|
|
165372
165449
|
/* harmony import */ var _AuxCoordSys__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../AuxCoordSys */ "../../core/frontend/lib/esm/AuxCoordSys.js");
|
|
165373
|
-
/* harmony import */ var
|
|
165374
|
-
/* harmony import */ var
|
|
165375
|
-
/* harmony import */ var _Tool__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Tool */ "../../core/frontend/lib/esm/tools/Tool.js");
|
|
165450
|
+
/* harmony import */ var _IModelApp__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../IModelApp */ "../../core/frontend/lib/esm/IModelApp.js");
|
|
165451
|
+
/* harmony import */ var _Tool__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Tool */ "../../core/frontend/lib/esm/tools/Tool.js");
|
|
165376
165452
|
/*---------------------------------------------------------------------------------------------
|
|
165377
165453
|
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
165378
165454
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
@@ -165387,7 +165463,6 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
165387
165463
|
|
|
165388
165464
|
|
|
165389
165465
|
|
|
165390
|
-
|
|
165391
165466
|
// cSpell:ignore dont unlockedz
|
|
165392
165467
|
function normalizedDifference(point1, point2, out) {
|
|
165393
165468
|
return point2.vectorTo(point1).normalizeWithLength(out).mag;
|
|
@@ -165403,7 +165478,7 @@ function normalizedCrossProduct(vec1, vec2, out) {
|
|
|
165403
165478
|
class AccuDrawShortcuts {
|
|
165404
165479
|
/** Disable/Enable AccuDraw for the session */
|
|
165405
165480
|
static sessionToggle() {
|
|
165406
|
-
const accudraw =
|
|
165481
|
+
const accudraw = _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.accuDraw;
|
|
165407
165482
|
if (accudraw.isEnabled)
|
|
165408
165483
|
accudraw.disableForSession();
|
|
165409
165484
|
else
|
|
@@ -165411,7 +165486,7 @@ class AccuDrawShortcuts {
|
|
|
165411
165486
|
}
|
|
165412
165487
|
/** Suspend/Unsuspend AccuDraw for the active tool */
|
|
165413
165488
|
static suspendToggle() {
|
|
165414
|
-
const accudraw =
|
|
165489
|
+
const accudraw = _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.accuDraw;
|
|
165415
165490
|
if (!accudraw.isEnabled)
|
|
165416
165491
|
return;
|
|
165417
165492
|
if (accudraw.isActive)
|
|
@@ -165421,7 +165496,7 @@ class AccuDrawShortcuts {
|
|
|
165421
165496
|
accudraw.refreshDecorationsAndDynamics();
|
|
165422
165497
|
}
|
|
165423
165498
|
static rotateAxesByPoint(isSnapped, aboutCurrentZ) {
|
|
165424
|
-
const accudraw =
|
|
165499
|
+
const accudraw = _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.accuDraw;
|
|
165425
165500
|
if (!accudraw.isEnabled)
|
|
165426
165501
|
return false;
|
|
165427
165502
|
const vp = accudraw.currentView;
|
|
@@ -165449,7 +165524,7 @@ class AccuDrawShortcuts {
|
|
|
165449
165524
|
return true;
|
|
165450
165525
|
}
|
|
165451
165526
|
static updateACSByPoints(acs, vp, points, isDynamics) {
|
|
165452
|
-
const accudraw =
|
|
165527
|
+
const accudraw = _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.accuDraw;
|
|
165453
165528
|
if (!accudraw.isEnabled)
|
|
165454
165529
|
return false;
|
|
165455
165530
|
let accept = false;
|
|
@@ -165505,9 +165580,9 @@ class AccuDrawShortcuts {
|
|
|
165505
165580
|
}
|
|
165506
165581
|
return accept;
|
|
165507
165582
|
}
|
|
165508
|
-
static processPendingHints() {
|
|
165583
|
+
static processPendingHints() { _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.accuDraw.processHints(); }
|
|
165509
165584
|
static requestInputFocus() {
|
|
165510
|
-
const accudraw =
|
|
165585
|
+
const accudraw = _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.accuDraw;
|
|
165511
165586
|
if (!accudraw.isEnabled)
|
|
165512
165587
|
return;
|
|
165513
165588
|
accudraw.grabInputFocus();
|
|
@@ -165515,7 +165590,7 @@ class AccuDrawShortcuts {
|
|
|
165515
165590
|
}
|
|
165516
165591
|
// Helper method for GUI implementation...
|
|
165517
165592
|
static async itemFieldNavigate(index, str, forward) {
|
|
165518
|
-
const accudraw =
|
|
165593
|
+
const accudraw = _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.accuDraw;
|
|
165519
165594
|
if (!accudraw.isEnabled)
|
|
165520
165595
|
return;
|
|
165521
165596
|
if (accudraw.getFieldLock(index))
|
|
@@ -165551,10 +165626,10 @@ class AccuDrawShortcuts {
|
|
|
165551
165626
|
accudraw.setFocusItem(index);
|
|
165552
165627
|
accudraw.dontMoveFocus = true;
|
|
165553
165628
|
}
|
|
165554
|
-
static itemFieldNewInput(index) {
|
|
165555
|
-
static itemFieldCompletedInput(index) {
|
|
165629
|
+
static itemFieldNewInput(index) { _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.accuDraw.setKeyinStatus(index, _AccuDraw__WEBPACK_IMPORTED_MODULE_2__.KeyinStatus.Partial); }
|
|
165630
|
+
static itemFieldCompletedInput(index) { _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.accuDraw.setKeyinStatus(index, _AccuDraw__WEBPACK_IMPORTED_MODULE_2__.KeyinStatus.Dynamic); }
|
|
165556
165631
|
static async itemFieldAcceptInput(index, str) {
|
|
165557
|
-
const accudraw =
|
|
165632
|
+
const accudraw = _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.accuDraw;
|
|
165558
165633
|
await accudraw.processFieldInput(index, str, true);
|
|
165559
165634
|
accudraw.setKeyinStatus(index, _AccuDraw__WEBPACK_IMPORTED_MODULE_2__.KeyinStatus.Dynamic);
|
|
165560
165635
|
if (accudraw.getFieldLock(index))
|
|
@@ -165592,7 +165667,7 @@ class AccuDrawShortcuts {
|
|
|
165592
165667
|
accudraw.setFocusItem(index);
|
|
165593
165668
|
}
|
|
165594
165669
|
static itemFieldLockToggle(index) {
|
|
165595
|
-
const accudraw =
|
|
165670
|
+
const accudraw = _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.accuDraw;
|
|
165596
165671
|
if (!accudraw.isEnabled)
|
|
165597
165672
|
return;
|
|
165598
165673
|
if (accudraw.getFieldLock(index)) {
|
|
@@ -165637,21 +165712,21 @@ class AccuDrawShortcuts {
|
|
|
165637
165712
|
accudraw.clearTentative();
|
|
165638
165713
|
}
|
|
165639
165714
|
static choosePreviousValue(index) {
|
|
165640
|
-
const accudraw =
|
|
165715
|
+
const accudraw = _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.accuDraw;
|
|
165641
165716
|
accudraw.getSavedValue(index, false);
|
|
165642
165717
|
accudraw.refreshDecorationsAndDynamics();
|
|
165643
165718
|
}
|
|
165644
165719
|
static chooseNextValue(index) {
|
|
165645
|
-
const accudraw =
|
|
165720
|
+
const accudraw = _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.accuDraw;
|
|
165646
165721
|
accudraw.getSavedValue(index, true);
|
|
165647
165722
|
accudraw.refreshDecorationsAndDynamics();
|
|
165648
165723
|
}
|
|
165649
165724
|
static clearSavedValues() {
|
|
165650
|
-
const accudraw =
|
|
165725
|
+
const accudraw = _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.accuDraw;
|
|
165651
165726
|
accudraw.clearSavedValues();
|
|
165652
165727
|
}
|
|
165653
165728
|
static itemRotationModeChange(rotation) {
|
|
165654
|
-
const accudraw =
|
|
165729
|
+
const accudraw = _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.accuDraw;
|
|
165655
165730
|
const vp = accudraw.currentView;
|
|
165656
165731
|
const is3d = vp ? vp.view.is3d() : true;
|
|
165657
165732
|
if (!is3d && (_AccuDraw__WEBPACK_IMPORTED_MODULE_2__.RotationMode.Front === rotation || _AccuDraw__WEBPACK_IMPORTED_MODULE_2__.RotationMode.Side === rotation))
|
|
@@ -165661,7 +165736,7 @@ class AccuDrawShortcuts {
|
|
|
165661
165736
|
}
|
|
165662
165737
|
// Shortcut implementations for GUI entry points...
|
|
165663
165738
|
static setOrigin(explicitOrigin) {
|
|
165664
|
-
const accudraw =
|
|
165739
|
+
const accudraw = _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.accuDraw;
|
|
165665
165740
|
if (!accudraw.isEnabled)
|
|
165666
165741
|
return;
|
|
165667
165742
|
if (explicitOrigin) {
|
|
@@ -165676,8 +165751,8 @@ class AccuDrawShortcuts {
|
|
|
165676
165751
|
accudraw.flags.haveValidOrigin = true;
|
|
165677
165752
|
}
|
|
165678
165753
|
else {
|
|
165679
|
-
const ev = new
|
|
165680
|
-
|
|
165754
|
+
const ev = new _Tool__WEBPACK_IMPORTED_MODULE_6__.BeButtonEvent();
|
|
165755
|
+
_IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.toolAdmin.fillEventFromLastDataButton(ev);
|
|
165681
165756
|
if (ev.viewport) {
|
|
165682
165757
|
accudraw.published.origin.setFrom(ev.point);
|
|
165683
165758
|
accudraw.flags.haveValidOrigin = true;
|
|
@@ -165706,7 +165781,7 @@ class AccuDrawShortcuts {
|
|
|
165706
165781
|
accudraw.refreshDecorationsAndDynamics(); // NOTE: Will already grab input focus through processHints...
|
|
165707
165782
|
}
|
|
165708
165783
|
static changeCompassMode() {
|
|
165709
|
-
const accudraw =
|
|
165784
|
+
const accudraw = _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.accuDraw;
|
|
165710
165785
|
if (!accudraw.isEnabled)
|
|
165711
165786
|
return;
|
|
165712
165787
|
let axisLockStatus = accudraw.locked & _AccuDraw__WEBPACK_IMPORTED_MODULE_2__.LockedStates.XY_BM;
|
|
@@ -165736,10 +165811,10 @@ class AccuDrawShortcuts {
|
|
|
165736
165811
|
this.requestInputFocus();
|
|
165737
165812
|
}
|
|
165738
165813
|
static lockSmart() {
|
|
165739
|
-
const accudraw =
|
|
165814
|
+
const accudraw = _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.accuDraw;
|
|
165740
165815
|
if (!accudraw.isEnabled)
|
|
165741
165816
|
return;
|
|
165742
|
-
const accuSnap =
|
|
165817
|
+
const accuSnap = _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.accuSnap;
|
|
165743
165818
|
// Don't want AccuSnap to influence axis or Z...
|
|
165744
165819
|
if (accuSnap.isHot) {
|
|
165745
165820
|
accuSnap.clear();
|
|
@@ -165821,7 +165896,7 @@ class AccuDrawShortcuts {
|
|
|
165821
165896
|
}
|
|
165822
165897
|
/** Disable indexing when not currently indexed; if indexed, enable respective lock. */
|
|
165823
165898
|
static lockIndex() {
|
|
165824
|
-
const accudraw =
|
|
165899
|
+
const accudraw = _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.accuDraw;
|
|
165825
165900
|
if (!accudraw.isEnabled)
|
|
165826
165901
|
return;
|
|
165827
165902
|
if (accudraw.flags.indexLocked) {
|
|
@@ -165861,7 +165936,7 @@ class AccuDrawShortcuts {
|
|
|
165861
165936
|
this.requestInputFocus();
|
|
165862
165937
|
}
|
|
165863
165938
|
static lockX() {
|
|
165864
|
-
const accudraw =
|
|
165939
|
+
const accudraw = _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.accuDraw;
|
|
165865
165940
|
if (!accudraw.isEnabled)
|
|
165866
165941
|
return;
|
|
165867
165942
|
accudraw.clearTentative();
|
|
@@ -165885,7 +165960,7 @@ class AccuDrawShortcuts {
|
|
|
165885
165960
|
this.requestInputFocus();
|
|
165886
165961
|
}
|
|
165887
165962
|
static lockY() {
|
|
165888
|
-
const accudraw =
|
|
165963
|
+
const accudraw = _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.accuDraw;
|
|
165889
165964
|
if (!accudraw.isEnabled)
|
|
165890
165965
|
return;
|
|
165891
165966
|
accudraw.clearTentative();
|
|
@@ -165909,7 +165984,7 @@ class AccuDrawShortcuts {
|
|
|
165909
165984
|
this.requestInputFocus();
|
|
165910
165985
|
}
|
|
165911
165986
|
static lockZ() {
|
|
165912
|
-
const accudraw =
|
|
165987
|
+
const accudraw = _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.accuDraw;
|
|
165913
165988
|
if (!accudraw.isEnabled)
|
|
165914
165989
|
return;
|
|
165915
165990
|
const vp = accudraw.currentView;
|
|
@@ -165931,7 +166006,7 @@ class AccuDrawShortcuts {
|
|
|
165931
166006
|
this.requestInputFocus();
|
|
165932
166007
|
}
|
|
165933
166008
|
static lockDistance() {
|
|
165934
|
-
const accudraw =
|
|
166009
|
+
const accudraw = _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.accuDraw;
|
|
165935
166010
|
if (!accudraw.isEnabled)
|
|
165936
166011
|
return;
|
|
165937
166012
|
const isSnapped = accudraw.clearTentative();
|
|
@@ -165957,14 +166032,14 @@ class AccuDrawShortcuts {
|
|
|
165957
166032
|
this.requestInputFocus();
|
|
165958
166033
|
}
|
|
165959
166034
|
static lockAngle() {
|
|
165960
|
-
const accudraw =
|
|
166035
|
+
const accudraw = _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.accuDraw;
|
|
165961
166036
|
if (!accudraw.isEnabled)
|
|
165962
166037
|
return;
|
|
165963
166038
|
accudraw.doLockAngle(accudraw.clearTentative());
|
|
165964
166039
|
this.requestInputFocus();
|
|
165965
166040
|
}
|
|
165966
166041
|
static setStandardRotation(rotation) {
|
|
165967
|
-
const accudraw =
|
|
166042
|
+
const accudraw = _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.accuDraw;
|
|
165968
166043
|
if (!accudraw.isEnabled)
|
|
165969
166044
|
return;
|
|
165970
166045
|
if (_AccuDraw__WEBPACK_IMPORTED_MODULE_2__.RotationMode.Context === rotation) {
|
|
@@ -165982,7 +166057,7 @@ class AccuDrawShortcuts {
|
|
|
165982
166057
|
this.requestInputFocus();
|
|
165983
166058
|
}
|
|
165984
166059
|
static alignView() {
|
|
165985
|
-
const accudraw =
|
|
166060
|
+
const accudraw = _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.accuDraw;
|
|
165986
166061
|
if (!accudraw.isEnabled)
|
|
165987
166062
|
return;
|
|
165988
166063
|
const vp = accudraw.currentView;
|
|
@@ -166000,9 +166075,9 @@ class AccuDrawShortcuts {
|
|
|
166000
166075
|
vp.animateFrustumChange();
|
|
166001
166076
|
this.requestInputFocus();
|
|
166002
166077
|
}
|
|
166003
|
-
static rotateToBase() { this.setStandardRotation(
|
|
166078
|
+
static rotateToBase() { this.setStandardRotation(_IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.accuDraw.flags.baseRotation); }
|
|
166004
166079
|
static rotateToACS() {
|
|
166005
|
-
const accudraw =
|
|
166080
|
+
const accudraw = _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.accuDraw;
|
|
166006
166081
|
if (!accudraw.isEnabled)
|
|
166007
166082
|
return;
|
|
166008
166083
|
// NOTE: Match current ACS orientation..reset auxRotationPlane to top!
|
|
@@ -166010,7 +166085,7 @@ class AccuDrawShortcuts {
|
|
|
166010
166085
|
this.setStandardRotation(_AccuDraw__WEBPACK_IMPORTED_MODULE_2__.RotationMode.ACS);
|
|
166011
166086
|
}
|
|
166012
166087
|
static rotateCycle() {
|
|
166013
|
-
const accudraw =
|
|
166088
|
+
const accudraw = _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.accuDraw;
|
|
166014
166089
|
if (!accudraw.isEnabled)
|
|
166015
166090
|
return;
|
|
166016
166091
|
const vp = accudraw.currentView;
|
|
@@ -166073,7 +166148,7 @@ class AccuDrawShortcuts {
|
|
|
166073
166148
|
this.setStandardRotation(rotation);
|
|
166074
166149
|
}
|
|
166075
166150
|
static rotate90(axis) {
|
|
166076
|
-
const accudraw =
|
|
166151
|
+
const accudraw = _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.accuDraw;
|
|
166077
166152
|
if (!accudraw.isEnabled)
|
|
166078
166153
|
return;
|
|
166079
166154
|
const newRotation = new _AccuDraw__WEBPACK_IMPORTED_MODULE_2__.ThreeAxes();
|
|
@@ -166100,22 +166175,19 @@ class AccuDrawShortcuts {
|
|
|
166100
166175
|
this.requestInputFocus();
|
|
166101
166176
|
}
|
|
166102
166177
|
static async rotateAxes(aboutCurrentZ) {
|
|
166103
|
-
return
|
|
166178
|
+
return _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.tools.run("AccuDraw.RotateAxes", aboutCurrentZ);
|
|
166104
166179
|
}
|
|
166105
166180
|
static async rotateToElement() {
|
|
166106
|
-
return
|
|
166107
|
-
}
|
|
166108
|
-
static async rotatePerpendicular() {
|
|
166109
|
-
return _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.tools.run("AccuDraw.RotatePerpendicular");
|
|
166181
|
+
return _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.tools.run("AccuDraw.RotateElement");
|
|
166110
166182
|
}
|
|
166111
166183
|
static async defineACSByElement() {
|
|
166112
|
-
return
|
|
166184
|
+
return _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.tools.run("AccuDraw.DefineACSByElement");
|
|
166113
166185
|
}
|
|
166114
166186
|
static async defineACSByPoints() {
|
|
166115
|
-
return
|
|
166187
|
+
return _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.tools.run("AccuDraw.DefineACSByPoints");
|
|
166116
166188
|
}
|
|
166117
166189
|
static getACS(acsName, useOrigin, useRotation) {
|
|
166118
|
-
const accudraw =
|
|
166190
|
+
const accudraw = _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.accuDraw;
|
|
166119
166191
|
if (!accudraw.isEnabled)
|
|
166120
166192
|
return _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.BentleyStatus.ERROR;
|
|
166121
166193
|
const vp = accudraw.currentView;
|
|
@@ -166174,7 +166246,7 @@ class AccuDrawShortcuts {
|
|
|
166174
166246
|
return _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.BentleyStatus.SUCCESS;
|
|
166175
166247
|
}
|
|
166176
166248
|
static writeACS(_acsName) {
|
|
166177
|
-
const accudraw =
|
|
166249
|
+
const accudraw = _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.accuDraw;
|
|
166178
166250
|
if (!accudraw.isEnabled)
|
|
166179
166251
|
return _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.BentleyStatus.ERROR;
|
|
166180
166252
|
const vp = accudraw.currentView;
|
|
@@ -166200,13 +166272,13 @@ class AccuDrawShortcuts {
|
|
|
166200
166272
|
return _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.BentleyStatus.SUCCESS;
|
|
166201
166273
|
}
|
|
166202
166274
|
static itemFieldUnlockAll() {
|
|
166203
|
-
const accudraw =
|
|
166275
|
+
const accudraw = _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.accuDraw;
|
|
166204
166276
|
if (accudraw.isEnabled)
|
|
166205
166277
|
accudraw.unlockAllFields();
|
|
166206
166278
|
}
|
|
166207
166279
|
}
|
|
166208
166280
|
/** @beta */
|
|
166209
|
-
class AccuDrawSessionToggleTool extends
|
|
166281
|
+
class AccuDrawSessionToggleTool extends _Tool__WEBPACK_IMPORTED_MODULE_6__.Tool {
|
|
166210
166282
|
static toolId = "AccuDraw.SessionToggle";
|
|
166211
166283
|
async run() {
|
|
166212
166284
|
AccuDrawShortcuts.sessionToggle();
|
|
@@ -166214,7 +166286,7 @@ class AccuDrawSessionToggleTool extends _Tool__WEBPACK_IMPORTED_MODULE_7__.Tool
|
|
|
166214
166286
|
}
|
|
166215
166287
|
}
|
|
166216
166288
|
/** @beta */
|
|
166217
|
-
class AccuDrawSuspendToggleTool extends
|
|
166289
|
+
class AccuDrawSuspendToggleTool extends _Tool__WEBPACK_IMPORTED_MODULE_6__.Tool {
|
|
166218
166290
|
static toolId = "AccuDraw.SuspendToggle";
|
|
166219
166291
|
async run() {
|
|
166220
166292
|
AccuDrawShortcuts.suspendToggle();
|
|
@@ -166222,7 +166294,7 @@ class AccuDrawSuspendToggleTool extends _Tool__WEBPACK_IMPORTED_MODULE_7__.Tool
|
|
|
166222
166294
|
}
|
|
166223
166295
|
}
|
|
166224
166296
|
/** @beta */
|
|
166225
|
-
class AccuDrawSetOriginTool extends
|
|
166297
|
+
class AccuDrawSetOriginTool extends _Tool__WEBPACK_IMPORTED_MODULE_6__.Tool {
|
|
166226
166298
|
static toolId = "AccuDraw.SetOrigin";
|
|
166227
166299
|
async run() {
|
|
166228
166300
|
AccuDrawShortcuts.setOrigin();
|
|
@@ -166230,7 +166302,7 @@ class AccuDrawSetOriginTool extends _Tool__WEBPACK_IMPORTED_MODULE_7__.Tool {
|
|
|
166230
166302
|
}
|
|
166231
166303
|
}
|
|
166232
166304
|
/** @beta */
|
|
166233
|
-
class AccuDrawSetLockSmartTool extends
|
|
166305
|
+
class AccuDrawSetLockSmartTool extends _Tool__WEBPACK_IMPORTED_MODULE_6__.Tool {
|
|
166234
166306
|
static toolId = "AccuDraw.LockSmart";
|
|
166235
166307
|
async run() {
|
|
166236
166308
|
AccuDrawShortcuts.lockSmart();
|
|
@@ -166238,7 +166310,7 @@ class AccuDrawSetLockSmartTool extends _Tool__WEBPACK_IMPORTED_MODULE_7__.Tool {
|
|
|
166238
166310
|
}
|
|
166239
166311
|
}
|
|
166240
166312
|
/** @beta */
|
|
166241
|
-
class AccuDrawSetLockIndexTool extends
|
|
166313
|
+
class AccuDrawSetLockIndexTool extends _Tool__WEBPACK_IMPORTED_MODULE_6__.Tool {
|
|
166242
166314
|
static toolId = "AccuDraw.LockIndex";
|
|
166243
166315
|
async run() {
|
|
166244
166316
|
AccuDrawShortcuts.lockIndex();
|
|
@@ -166246,7 +166318,7 @@ class AccuDrawSetLockIndexTool extends _Tool__WEBPACK_IMPORTED_MODULE_7__.Tool {
|
|
|
166246
166318
|
}
|
|
166247
166319
|
}
|
|
166248
166320
|
/** @beta */
|
|
166249
|
-
class AccuDrawSetLockXTool extends
|
|
166321
|
+
class AccuDrawSetLockXTool extends _Tool__WEBPACK_IMPORTED_MODULE_6__.Tool {
|
|
166250
166322
|
static toolId = "AccuDraw.LockX";
|
|
166251
166323
|
async run() {
|
|
166252
166324
|
AccuDrawShortcuts.lockX();
|
|
@@ -166254,7 +166326,7 @@ class AccuDrawSetLockXTool extends _Tool__WEBPACK_IMPORTED_MODULE_7__.Tool {
|
|
|
166254
166326
|
}
|
|
166255
166327
|
}
|
|
166256
166328
|
/** @beta */
|
|
166257
|
-
class AccuDrawSetLockYTool extends
|
|
166329
|
+
class AccuDrawSetLockYTool extends _Tool__WEBPACK_IMPORTED_MODULE_6__.Tool {
|
|
166258
166330
|
static toolId = "AccuDraw.LockY";
|
|
166259
166331
|
async run() {
|
|
166260
166332
|
AccuDrawShortcuts.lockY();
|
|
@@ -166262,7 +166334,7 @@ class AccuDrawSetLockYTool extends _Tool__WEBPACK_IMPORTED_MODULE_7__.Tool {
|
|
|
166262
166334
|
}
|
|
166263
166335
|
}
|
|
166264
166336
|
/** @beta */
|
|
166265
|
-
class AccuDrawSetLockZTool extends
|
|
166337
|
+
class AccuDrawSetLockZTool extends _Tool__WEBPACK_IMPORTED_MODULE_6__.Tool {
|
|
166266
166338
|
static toolId = "AccuDraw.LockZ";
|
|
166267
166339
|
async run() {
|
|
166268
166340
|
AccuDrawShortcuts.lockZ();
|
|
@@ -166270,7 +166342,7 @@ class AccuDrawSetLockZTool extends _Tool__WEBPACK_IMPORTED_MODULE_7__.Tool {
|
|
|
166270
166342
|
}
|
|
166271
166343
|
}
|
|
166272
166344
|
/** @beta */
|
|
166273
|
-
class AccuDrawSetLockDistanceTool extends
|
|
166345
|
+
class AccuDrawSetLockDistanceTool extends _Tool__WEBPACK_IMPORTED_MODULE_6__.Tool {
|
|
166274
166346
|
static toolId = "AccuDraw.LockDistance";
|
|
166275
166347
|
async run() {
|
|
166276
166348
|
AccuDrawShortcuts.lockDistance();
|
|
@@ -166278,7 +166350,7 @@ class AccuDrawSetLockDistanceTool extends _Tool__WEBPACK_IMPORTED_MODULE_7__.Too
|
|
|
166278
166350
|
}
|
|
166279
166351
|
}
|
|
166280
166352
|
/** @beta */
|
|
166281
|
-
class AccuDrawSetLockAngleTool extends
|
|
166353
|
+
class AccuDrawSetLockAngleTool extends _Tool__WEBPACK_IMPORTED_MODULE_6__.Tool {
|
|
166282
166354
|
static toolId = "AccuDraw.LockAngle";
|
|
166283
166355
|
async run() {
|
|
166284
166356
|
AccuDrawShortcuts.lockAngle();
|
|
@@ -166286,7 +166358,7 @@ class AccuDrawSetLockAngleTool extends _Tool__WEBPACK_IMPORTED_MODULE_7__.Tool {
|
|
|
166286
166358
|
}
|
|
166287
166359
|
}
|
|
166288
166360
|
/** @beta */
|
|
166289
|
-
class AccuDrawChangeModeTool extends
|
|
166361
|
+
class AccuDrawChangeModeTool extends _Tool__WEBPACK_IMPORTED_MODULE_6__.Tool {
|
|
166290
166362
|
static toolId = "AccuDraw.ChangeMode";
|
|
166291
166363
|
async run() {
|
|
166292
166364
|
AccuDrawShortcuts.changeCompassMode();
|
|
@@ -166294,7 +166366,7 @@ class AccuDrawChangeModeTool extends _Tool__WEBPACK_IMPORTED_MODULE_7__.Tool {
|
|
|
166294
166366
|
}
|
|
166295
166367
|
}
|
|
166296
166368
|
/** @beta */
|
|
166297
|
-
class AccuDrawRotateCycleTool extends
|
|
166369
|
+
class AccuDrawRotateCycleTool extends _Tool__WEBPACK_IMPORTED_MODULE_6__.Tool {
|
|
166298
166370
|
static toolId = "AccuDraw.RotateCycle";
|
|
166299
166371
|
async run() {
|
|
166300
166372
|
AccuDrawShortcuts.rotateCycle();
|
|
@@ -166302,7 +166374,7 @@ class AccuDrawRotateCycleTool extends _Tool__WEBPACK_IMPORTED_MODULE_7__.Tool {
|
|
|
166302
166374
|
}
|
|
166303
166375
|
}
|
|
166304
166376
|
/** @beta */
|
|
166305
|
-
class AccuDrawRotateTopTool extends
|
|
166377
|
+
class AccuDrawRotateTopTool extends _Tool__WEBPACK_IMPORTED_MODULE_6__.Tool {
|
|
166306
166378
|
static toolId = "AccuDraw.RotateTop";
|
|
166307
166379
|
async run() {
|
|
166308
166380
|
AccuDrawShortcuts.setStandardRotation(_AccuDraw__WEBPACK_IMPORTED_MODULE_2__.RotationMode.Top);
|
|
@@ -166310,7 +166382,7 @@ class AccuDrawRotateTopTool extends _Tool__WEBPACK_IMPORTED_MODULE_7__.Tool {
|
|
|
166310
166382
|
}
|
|
166311
166383
|
}
|
|
166312
166384
|
/** @beta */
|
|
166313
|
-
class AccuDrawRotateFrontTool extends
|
|
166385
|
+
class AccuDrawRotateFrontTool extends _Tool__WEBPACK_IMPORTED_MODULE_6__.Tool {
|
|
166314
166386
|
static toolId = "AccuDraw.RotateFront";
|
|
166315
166387
|
async run() {
|
|
166316
166388
|
AccuDrawShortcuts.setStandardRotation(_AccuDraw__WEBPACK_IMPORTED_MODULE_2__.RotationMode.Front);
|
|
@@ -166318,7 +166390,7 @@ class AccuDrawRotateFrontTool extends _Tool__WEBPACK_IMPORTED_MODULE_7__.Tool {
|
|
|
166318
166390
|
}
|
|
166319
166391
|
}
|
|
166320
166392
|
/** @beta */
|
|
166321
|
-
class AccuDrawRotateSideTool extends
|
|
166393
|
+
class AccuDrawRotateSideTool extends _Tool__WEBPACK_IMPORTED_MODULE_6__.Tool {
|
|
166322
166394
|
static toolId = "AccuDraw.RotateSide";
|
|
166323
166395
|
async run() {
|
|
166324
166396
|
AccuDrawShortcuts.setStandardRotation(_AccuDraw__WEBPACK_IMPORTED_MODULE_2__.RotationMode.Side);
|
|
@@ -166326,7 +166398,7 @@ class AccuDrawRotateSideTool extends _Tool__WEBPACK_IMPORTED_MODULE_7__.Tool {
|
|
|
166326
166398
|
}
|
|
166327
166399
|
}
|
|
166328
166400
|
/** @beta */
|
|
166329
|
-
class AccuDrawRotateViewTool extends
|
|
166401
|
+
class AccuDrawRotateViewTool extends _Tool__WEBPACK_IMPORTED_MODULE_6__.Tool {
|
|
166330
166402
|
static toolId = "AccuDraw.RotateView";
|
|
166331
166403
|
async run() {
|
|
166332
166404
|
AccuDrawShortcuts.setStandardRotation(_AccuDraw__WEBPACK_IMPORTED_MODULE_2__.RotationMode.View);
|
|
@@ -166334,7 +166406,7 @@ class AccuDrawRotateViewTool extends _Tool__WEBPACK_IMPORTED_MODULE_7__.Tool {
|
|
|
166334
166406
|
}
|
|
166335
166407
|
}
|
|
166336
166408
|
/** @beta */
|
|
166337
|
-
class AccuDrawRotate90AboutXTool extends
|
|
166409
|
+
class AccuDrawRotate90AboutXTool extends _Tool__WEBPACK_IMPORTED_MODULE_6__.Tool {
|
|
166338
166410
|
static toolId = "AccuDraw.Rotate90AboutX";
|
|
166339
166411
|
async run() {
|
|
166340
166412
|
AccuDrawShortcuts.rotate90(0);
|
|
@@ -166342,7 +166414,7 @@ class AccuDrawRotate90AboutXTool extends _Tool__WEBPACK_IMPORTED_MODULE_7__.Tool
|
|
|
166342
166414
|
}
|
|
166343
166415
|
}
|
|
166344
166416
|
/** @beta */
|
|
166345
|
-
class AccuDrawRotate90AboutYTool extends
|
|
166417
|
+
class AccuDrawRotate90AboutYTool extends _Tool__WEBPACK_IMPORTED_MODULE_6__.Tool {
|
|
166346
166418
|
static toolId = "AccuDraw.Rotate90AboutY";
|
|
166347
166419
|
async run() {
|
|
166348
166420
|
AccuDrawShortcuts.rotate90(1);
|
|
@@ -166350,7 +166422,7 @@ class AccuDrawRotate90AboutYTool extends _Tool__WEBPACK_IMPORTED_MODULE_7__.Tool
|
|
|
166350
166422
|
}
|
|
166351
166423
|
}
|
|
166352
166424
|
/** @beta */
|
|
166353
|
-
class AccuDrawRotate90AboutZTool extends
|
|
166425
|
+
class AccuDrawRotate90AboutZTool extends _Tool__WEBPACK_IMPORTED_MODULE_6__.Tool {
|
|
166354
166426
|
static toolId = "AccuDraw.Rotate90AboutZ";
|
|
166355
166427
|
async run() {
|
|
166356
166428
|
AccuDrawShortcuts.rotate90(2);
|
|
@@ -166358,13 +166430,13 @@ class AccuDrawRotate90AboutZTool extends _Tool__WEBPACK_IMPORTED_MODULE_7__.Tool
|
|
|
166358
166430
|
}
|
|
166359
166431
|
}
|
|
166360
166432
|
/** @internal */
|
|
166361
|
-
class AccuDrawShortcutsTool extends
|
|
166433
|
+
class AccuDrawShortcutsTool extends _Tool__WEBPACK_IMPORTED_MODULE_6__.InputCollector {
|
|
166362
166434
|
_complete = false;
|
|
166363
|
-
get allowShortcut() { return this.wantActivateOnStart ?
|
|
166435
|
+
get allowShortcut() { return this.wantActivateOnStart ? _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.accuDraw.isEnabled : true; }
|
|
166364
166436
|
get wantActivateOnStart() { return false; } // Whether to automatically enable AccuDraw before the 1st data button...
|
|
166365
166437
|
get wantClearSnapOnStart() { return false; } // Whether to preserve active Tentative/AccuSnap on install...
|
|
166366
166438
|
get wantManipulationImmediate() { return false; } // Whether additional input is required to process on install...
|
|
166367
|
-
get wantExitOnDataButtonUp() { return false; } // Whether to exit on button up instead of down
|
|
166439
|
+
get wantExitOnDataButtonUp() { return false; } // Whether to exit on button up instead of down...
|
|
166368
166440
|
async onInstall() {
|
|
166369
166441
|
if (!this.allowShortcut)
|
|
166370
166442
|
return false;
|
|
@@ -166373,7 +166445,7 @@ class AccuDrawShortcutsTool extends _Tool__WEBPACK_IMPORTED_MODULE_7__.InputColl
|
|
|
166373
166445
|
async onPostInstall() {
|
|
166374
166446
|
await super.onPostInstall();
|
|
166375
166447
|
if (this.wantActivateOnStart)
|
|
166376
|
-
|
|
166448
|
+
_IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.accuDraw.activate();
|
|
166377
166449
|
this.onManipulationStart();
|
|
166378
166450
|
if (this.wantManipulationImmediate && this.doManipulation(undefined, false)) {
|
|
166379
166451
|
this._complete = true;
|
|
@@ -166381,18 +166453,18 @@ class AccuDrawShortcutsTool extends _Tool__WEBPACK_IMPORTED_MODULE_7__.InputColl
|
|
|
166381
166453
|
}
|
|
166382
166454
|
// NOTE: InputCollector inherits suspended primitive's state, set everything...
|
|
166383
166455
|
if (this.wantClearSnapOnStart) {
|
|
166384
|
-
this.initLocateElements(false, true, undefined,
|
|
166456
|
+
this.initLocateElements(false, true, undefined, _Tool__WEBPACK_IMPORTED_MODULE_6__.CoordinateLockOverrides.None); // This clears the active Tentative/AccuSnap, some shortcuts have special behavior when invoked with an active snap...
|
|
166385
166457
|
}
|
|
166386
166458
|
else {
|
|
166387
|
-
|
|
166388
|
-
this.changeLocateState(false, true, undefined,
|
|
166459
|
+
_IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.locateManager.initLocateOptions();
|
|
166460
|
+
this.changeLocateState(false, true, undefined, _Tool__WEBPACK_IMPORTED_MODULE_6__.CoordinateLockOverrides.None);
|
|
166389
166461
|
}
|
|
166390
166462
|
this.doManipulation(undefined, true);
|
|
166391
166463
|
;
|
|
166392
166464
|
}
|
|
166393
166465
|
async onCleanup() {
|
|
166394
166466
|
if (this._complete)
|
|
166395
|
-
|
|
166467
|
+
_IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.accuDraw.savedStateInputCollector.ignoreFlags = this.onManipulationComplete();
|
|
166396
166468
|
}
|
|
166397
166469
|
async exitTool() {
|
|
166398
166470
|
await super.exitTool();
|
|
@@ -166404,12 +166476,12 @@ class AccuDrawShortcutsTool extends _Tool__WEBPACK_IMPORTED_MODULE_7__.InputColl
|
|
|
166404
166476
|
if (!this.wantExitOnDataButtonUp)
|
|
166405
166477
|
await this.exitTool();
|
|
166406
166478
|
}
|
|
166407
|
-
return
|
|
166479
|
+
return _Tool__WEBPACK_IMPORTED_MODULE_6__.EventHandled.No;
|
|
166408
166480
|
}
|
|
166409
166481
|
async onDataButtonUp(_ev) {
|
|
166410
166482
|
if (this._complete && this.wantExitOnDataButtonUp)
|
|
166411
166483
|
await this.exitTool();
|
|
166412
|
-
return
|
|
166484
|
+
return _Tool__WEBPACK_IMPORTED_MODULE_6__.EventHandled.No;
|
|
166413
166485
|
}
|
|
166414
166486
|
async onMouseMotion(ev) {
|
|
166415
166487
|
this.doManipulation(ev, true);
|
|
@@ -166427,14 +166499,14 @@ class AccuDrawRotateAxesTool extends AccuDrawShortcutsTool {
|
|
|
166427
166499
|
this.aboutCurrentZ = aboutCurrentZ;
|
|
166428
166500
|
}
|
|
166429
166501
|
/** @internal */
|
|
166430
|
-
get allowShortcut() { return
|
|
166502
|
+
get allowShortcut() { return _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.accuDraw.isActive; } // Require compass to already be active for this shortcut...
|
|
166431
166503
|
/** @internal */
|
|
166432
166504
|
get wantActivateOnStart() { return true; } // State is demoted to inactive when a tool install, still need this...
|
|
166433
166505
|
/** @internal */
|
|
166434
166506
|
get wantManipulationImmediate() {
|
|
166435
166507
|
if (_AccuSnap__WEBPACK_IMPORTED_MODULE_3__.TentativeOrAccuSnap.isHot)
|
|
166436
166508
|
return true;
|
|
166437
|
-
const accudraw =
|
|
166509
|
+
const accudraw = _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.accuDraw;
|
|
166438
166510
|
if (_AccuDraw__WEBPACK_IMPORTED_MODULE_2__.CompassMode.Polar === accudraw.compassMode)
|
|
166439
166511
|
return accudraw.getFieldLock(_AccuDraw__WEBPACK_IMPORTED_MODULE_2__.ItemField.ANGLE_Item);
|
|
166440
166512
|
return accudraw.getFieldLock(_AccuDraw__WEBPACK_IMPORTED_MODULE_2__.ItemField.X_Item) && accudraw.getFieldLock(_AccuDraw__WEBPACK_IMPORTED_MODULE_2__.ItemField.Y_Item);
|
|
@@ -166442,12 +166514,12 @@ class AccuDrawRotateAxesTool extends AccuDrawShortcutsTool {
|
|
|
166442
166514
|
/** @internal */
|
|
166443
166515
|
onManipulationStart() {
|
|
166444
166516
|
if (this.aboutCurrentZ)
|
|
166445
|
-
|
|
166446
|
-
|
|
166517
|
+
_IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.accuDraw.changeBaseRotationMode(_AccuDraw__WEBPACK_IMPORTED_MODULE_2__.RotationMode.Context); // Establish current orientation as base for when defining compass rotation by x axis...
|
|
166518
|
+
_Tool__WEBPACK_IMPORTED_MODULE_6__.CoreTools.outputPromptByKey("AccuDraw.RotateAxes.Prompts.FirstPoint");
|
|
166447
166519
|
}
|
|
166448
166520
|
/** @internal */
|
|
166449
166521
|
doManipulation(ev, isMotion) {
|
|
166450
|
-
const vp = ev ? ev.viewport :
|
|
166522
|
+
const vp = ev ? ev.viewport : _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.accuDraw.currentView;
|
|
166451
166523
|
if (!vp)
|
|
166452
166524
|
return false;
|
|
166453
166525
|
if (!AccuDrawShortcuts.rotateAxesByPoint(_AccuSnap__WEBPACK_IMPORTED_MODULE_3__.TentativeOrAccuSnap.isHot, this.aboutCurrentZ))
|
|
@@ -166455,7 +166527,7 @@ class AccuDrawRotateAxesTool extends AccuDrawShortcutsTool {
|
|
|
166455
166527
|
vp.invalidateDecorations();
|
|
166456
166528
|
if (!isMotion) {
|
|
166457
166529
|
AccuDrawShortcuts.itemFieldUnlockAll();
|
|
166458
|
-
|
|
166530
|
+
_IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.tentativePoint.clear(true);
|
|
166459
166531
|
}
|
|
166460
166532
|
return true;
|
|
166461
166533
|
}
|
|
@@ -166470,15 +166542,15 @@ class AccuDrawRotateAxesTool extends AccuDrawShortcutsTool {
|
|
|
166470
166542
|
/** @beta */
|
|
166471
166543
|
class AccuDrawRotateElementTool extends AccuDrawShortcutsTool {
|
|
166472
166544
|
static toolId = "AccuDraw.RotateElement";
|
|
166473
|
-
_moveOrigin = !
|
|
166545
|
+
_moveOrigin = !_IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.accuDraw.isActive || _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.tentativePoint.isActive; // Preserve current origin if AccuDraw already active and not tentative snap...
|
|
166474
166546
|
/** @internal */
|
|
166475
166547
|
get wantActivateOnStart() { return true; }
|
|
166476
166548
|
/** @internal */
|
|
166477
|
-
get wantManipulationImmediate() { return
|
|
166549
|
+
get wantManipulationImmediate() { return _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.tentativePoint.isSnapped; }
|
|
166478
166550
|
/** @internal */
|
|
166479
166551
|
onManipulationStart() {
|
|
166480
|
-
|
|
166481
|
-
|
|
166552
|
+
_IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.accuDraw.setContext(_AccuDraw__WEBPACK_IMPORTED_MODULE_2__.AccuDrawFlags.FixedOrigin); // Don't move compass when updateOrientation returns false...
|
|
166553
|
+
_Tool__WEBPACK_IMPORTED_MODULE_6__.CoreTools.outputPromptByKey("AccuDraw.RotateElement.Prompts.FirstPoint");
|
|
166482
166554
|
}
|
|
166483
166555
|
/** @internal */
|
|
166484
166556
|
onManipulationComplete() {
|
|
@@ -166489,7 +166561,7 @@ class AccuDrawRotateElementTool extends AccuDrawShortcutsTool {
|
|
|
166489
166561
|
}
|
|
166490
166562
|
/** @internal */
|
|
166491
166563
|
updateOrientation(snap, viewport, _isMotion) {
|
|
166492
|
-
const accudraw =
|
|
166564
|
+
const accudraw = _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.accuDraw;
|
|
166493
166565
|
const rMatrix = _AccuDraw__WEBPACK_IMPORTED_MODULE_2__.AccuDraw.getSnapRotation(snap, viewport);
|
|
166494
166566
|
if (undefined === rMatrix)
|
|
166495
166567
|
return false;
|
|
@@ -166499,7 +166571,7 @@ class AccuDrawRotateElementTool extends AccuDrawShortcutsTool {
|
|
|
166499
166571
|
}
|
|
166500
166572
|
/** @internal */
|
|
166501
166573
|
doManipulation(ev, isMotion) {
|
|
166502
|
-
const viewport = ev ? ev.viewport :
|
|
166574
|
+
const viewport = ev ? ev.viewport : _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.accuDraw.currentView;
|
|
166503
166575
|
if (!viewport)
|
|
166504
166576
|
return false;
|
|
166505
166577
|
const snap = _AccuSnap__WEBPACK_IMPORTED_MODULE_3__.TentativeOrAccuSnap.getCurrentSnap(false);
|
|
@@ -166508,60 +166580,7 @@ class AccuDrawRotateElementTool extends AccuDrawShortcutsTool {
|
|
|
166508
166580
|
if (undefined === ev)
|
|
166509
166581
|
AccuDrawShortcuts.processPendingHints(); // Would normally be processed after button down, necessary when called from post install...
|
|
166510
166582
|
if (!isMotion)
|
|
166511
|
-
|
|
166512
|
-
return true;
|
|
166513
|
-
}
|
|
166514
|
-
}
|
|
166515
|
-
/** @beta */
|
|
166516
|
-
class AccuDrawRotatePerpendicularTool extends AccuDrawRotateElementTool {
|
|
166517
|
-
static toolId = "AccuDraw.RotatePerpendicular";
|
|
166518
|
-
_location;
|
|
166519
|
-
/** @internal */
|
|
166520
|
-
get wantExitOnDataButtonUp() { return true; } // Complete on button up since button down clears tentative...
|
|
166521
|
-
/** @internal */
|
|
166522
|
-
onManipulationComplete() {
|
|
166523
|
-
if (undefined !== this._location) {
|
|
166524
|
-
// Use tentative to hold adjusted snap location for suspended tool...
|
|
166525
|
-
_IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.tentativePoint.setPoint(this._location.point);
|
|
166526
|
-
_IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.tentativePoint.viewport = this._location.viewport;
|
|
166527
|
-
_IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.tentativePoint.showTentative();
|
|
166528
|
-
}
|
|
166529
|
-
return _AccuDraw__WEBPACK_IMPORTED_MODULE_2__.AccuDrawFlags.SetRMatrix | _AccuDraw__WEBPACK_IMPORTED_MODULE_2__.AccuDrawFlags.Disable;
|
|
166530
|
-
}
|
|
166531
|
-
/** @internal */
|
|
166532
|
-
updateOrientation(snap, viewport, isMotion) {
|
|
166533
|
-
const curve = snap.getCurvePrimitive();
|
|
166534
|
-
if (undefined === curve)
|
|
166535
|
-
return false;
|
|
166536
|
-
const accudraw = _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.accuDraw;
|
|
166537
|
-
const rMatrix = _AccuDraw__WEBPACK_IMPORTED_MODULE_2__.AccuDraw.getSnapRotation(snap, viewport);
|
|
166538
|
-
if (undefined === rMatrix)
|
|
166539
|
-
return false;
|
|
166540
|
-
const zVec = rMatrix.getRow(2); // This is a row matrix...
|
|
166541
|
-
const spacePoint = _AccuDraw__WEBPACK_IMPORTED_MODULE_2__.AccuDrawHintBuilder.projectPointToPlaneInView(accudraw.origin, snap.getPoint(), zVec, viewport, true);
|
|
166542
|
-
if (undefined === spacePoint)
|
|
166543
|
-
return false;
|
|
166544
|
-
const detail = curve.closestPoint(spacePoint, true);
|
|
166545
|
-
if (undefined === detail?.curve)
|
|
166546
|
-
return false;
|
|
166547
|
-
const point = _AccuDraw__WEBPACK_IMPORTED_MODULE_2__.AccuDrawHintBuilder.projectPointToPlaneInView(detail.point, accudraw.origin, zVec, viewport, true);
|
|
166548
|
-
if (undefined === point)
|
|
166549
|
-
return false;
|
|
166550
|
-
const xVec = new _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Vector3d();
|
|
166551
|
-
if (normalizedDifference(point, accudraw.origin, xVec) < _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.smallAngleRadians)
|
|
166552
|
-
return false;
|
|
166553
|
-
; // Closest point and compass origin coincide...
|
|
166554
|
-
const yVec = xVec.unitCrossProduct(zVec);
|
|
166555
|
-
if (undefined === yVec)
|
|
166556
|
-
return false;
|
|
166557
|
-
rMatrix.setColumns(xVec, yVec, zVec);
|
|
166558
|
-
_itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Matrix3d.createRigidFromMatrix3d(rMatrix, _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.AxisOrder.XZY, rMatrix);
|
|
166559
|
-
rMatrix.transposeInPlace();
|
|
166560
|
-
snap.setSnapPoint(point, _HitDetail__WEBPACK_IMPORTED_MODULE_5__.SnapHeat.InRange); // Force hot snap so that adjust point uses it for alignments...
|
|
166561
|
-
accudraw.setContext(_AccuDraw__WEBPACK_IMPORTED_MODULE_2__.AccuDrawFlags.SetRMatrix | _AccuDraw__WEBPACK_IMPORTED_MODULE_2__.AccuDrawFlags.AlwaysSetOrigin, accudraw.origin, rMatrix);
|
|
166562
|
-
accudraw.adjustPoint(point, viewport, false); // Update internals for new snap location...
|
|
166563
|
-
if (!isMotion)
|
|
166564
|
-
this._location = { point, viewport };
|
|
166583
|
+
_IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.accuDraw.changeBaseRotationMode(_AccuDraw__WEBPACK_IMPORTED_MODULE_2__.RotationMode.Context); // Hold temporary rotation for tool duration...
|
|
166565
166584
|
return true;
|
|
166566
166585
|
}
|
|
166567
166586
|
}
|
|
@@ -166572,7 +166591,7 @@ class DefineACSByElementTool extends AccuDrawShortcutsTool {
|
|
|
166572
166591
|
_rMatrix = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Matrix3d.createIdentity();
|
|
166573
166592
|
_acs;
|
|
166574
166593
|
/** @internal */
|
|
166575
|
-
onManipulationStart() {
|
|
166594
|
+
onManipulationStart() { _Tool__WEBPACK_IMPORTED_MODULE_6__.CoreTools.outputPromptByKey("AccuDraw.DefineACSByElement.Prompts.FirstPoint"); }
|
|
166576
166595
|
/** @internal */
|
|
166577
166596
|
updateOrientation(snap, vp) {
|
|
166578
166597
|
const rMatrix = _AccuDraw__WEBPACK_IMPORTED_MODULE_2__.AccuDraw.getSnapRotation(snap, vp);
|
|
@@ -166590,7 +166609,7 @@ class DefineACSByElementTool extends AccuDrawShortcutsTool {
|
|
|
166590
166609
|
const snapDetail = _AccuSnap__WEBPACK_IMPORTED_MODULE_3__.TentativeOrAccuSnap.getCurrentSnap(false);
|
|
166591
166610
|
if (undefined === snapDetail || !this.updateOrientation(snapDetail, vp))
|
|
166592
166611
|
return false;
|
|
166593
|
-
|
|
166612
|
+
_IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.viewManager.invalidateDecorationsAllViews();
|
|
166594
166613
|
if (isMotion)
|
|
166595
166614
|
return true;
|
|
166596
166615
|
if (!this._acs)
|
|
@@ -166618,24 +166637,24 @@ class DefineACSByPointsTool extends AccuDrawShortcutsTool {
|
|
|
166618
166637
|
_acs;
|
|
166619
166638
|
/** @internal */
|
|
166620
166639
|
onManipulationStart() {
|
|
166621
|
-
if (!
|
|
166622
|
-
|
|
166640
|
+
if (!_IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.tentativePoint.isActive) {
|
|
166641
|
+
_Tool__WEBPACK_IMPORTED_MODULE_6__.CoreTools.outputPromptByKey("AccuDraw.DefineACSByPoints.Prompts.FirstPoint");
|
|
166623
166642
|
return;
|
|
166624
166643
|
}
|
|
166625
|
-
const origin =
|
|
166626
|
-
|
|
166627
|
-
|
|
166644
|
+
const origin = _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.tentativePoint.getPoint().clone();
|
|
166645
|
+
_Tool__WEBPACK_IMPORTED_MODULE_6__.CoreTools.outputPromptByKey("AccuDraw.DefineACSByPoints.Prompts.SecondPoint");
|
|
166646
|
+
_IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.accuDraw.setContext(_AccuDraw__WEBPACK_IMPORTED_MODULE_2__.AccuDrawFlags.SetOrigin | _AccuDraw__WEBPACK_IMPORTED_MODULE_2__.AccuDrawFlags.FixedOrigin, origin);
|
|
166628
166647
|
this._points.push(origin);
|
|
166629
|
-
|
|
166648
|
+
_IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.tentativePoint.clear(true);
|
|
166630
166649
|
}
|
|
166631
166650
|
/** @internal */
|
|
166632
166651
|
doManipulation(ev, isMotion) {
|
|
166633
166652
|
if (!ev || !ev.viewport)
|
|
166634
166653
|
return false;
|
|
166635
|
-
|
|
166654
|
+
_IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.viewManager.invalidateDecorationsAllViews();
|
|
166636
166655
|
if (isMotion)
|
|
166637
166656
|
return false;
|
|
166638
|
-
|
|
166657
|
+
_IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.accuDraw.activate();
|
|
166639
166658
|
this._points.push(ev.point.clone());
|
|
166640
166659
|
const vp = ev.viewport;
|
|
166641
166660
|
if (!this._acs)
|
|
@@ -166645,15 +166664,15 @@ class DefineACSByPointsTool extends AccuDrawShortcutsTool {
|
|
|
166645
166664
|
AccuDrawShortcuts.rotateToACS();
|
|
166646
166665
|
return true;
|
|
166647
166666
|
}
|
|
166648
|
-
|
|
166667
|
+
_Tool__WEBPACK_IMPORTED_MODULE_6__.CoreTools.outputPromptByKey(`AccuDraw.DefineACSByPoints.Prompts${1 === this._points.length ? ".SecondPoint" : ".NextPoint"}`);
|
|
166649
166668
|
return false;
|
|
166650
166669
|
}
|
|
166651
166670
|
/** @internal */
|
|
166652
166671
|
decorate(context) {
|
|
166653
166672
|
const tmpPoints = [];
|
|
166654
166673
|
this._points.forEach((pt) => tmpPoints.push(pt));
|
|
166655
|
-
const ev = new
|
|
166656
|
-
|
|
166674
|
+
const ev = new _Tool__WEBPACK_IMPORTED_MODULE_6__.BeButtonEvent();
|
|
166675
|
+
_IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.toolAdmin.fillEventFromCursorLocation(ev);
|
|
166657
166676
|
tmpPoints.push(ev.point);
|
|
166658
166677
|
const vp = context.viewport;
|
|
166659
166678
|
if (!this._acs)
|
|
@@ -180449,6 +180468,20 @@ class Geometry {
|
|
|
180449
180468
|
static isAlmostEqualEitherNumber(a, b, c, tolerance = Geometry.smallAngleRadians) {
|
|
180450
180469
|
return this.isAlmostEqualNumber(a, b, tolerance) || this.isAlmostEqualNumber(a, c, tolerance);
|
|
180451
180470
|
}
|
|
180471
|
+
/**
|
|
180472
|
+
* Toleranced test for equality to any of `count` numbers supplied by `iterator`.
|
|
180473
|
+
* @param a value to test
|
|
180474
|
+
* @param values array of values to test against, or an object that provides the i_th value, where 0 <= i < length.
|
|
180475
|
+
* @param tolerance relative tolerance. Default value is [[smallAngleRadians]].
|
|
180476
|
+
* @returns true if and only if `a` is almost equal to at least one value supplied by `iterator`.
|
|
180477
|
+
*/
|
|
180478
|
+
static isAlmostEqualAnyNumber(a, values, tolerance = Geometry.smallAngleRadians) {
|
|
180479
|
+
const value = Array.isArray(values) ? (i) => values[i] : values.iter;
|
|
180480
|
+
for (let i = 0; i < values.length; i++)
|
|
180481
|
+
if (this.isAlmostEqualNumber(a, value(i), tolerance))
|
|
180482
|
+
return true;
|
|
180483
|
+
return false;
|
|
180484
|
+
}
|
|
180452
180485
|
/**
|
|
180453
180486
|
* Toleranced equality test using tolerance `tolerance * ( 1 + abs(a.x) + abs(a.y) + abs(b.x) + abs(b.y) )`.
|
|
180454
180487
|
* * [[smallAngleRadians]] is used if tolerance is `undefined`.
|
|
@@ -193759,6 +193792,42 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive
|
|
|
193759
193792
|
}
|
|
193760
193793
|
return result;
|
|
193761
193794
|
}
|
|
193795
|
+
/** Override of [[CurvePrimitive.emitTangents]] for Arc3d. */
|
|
193796
|
+
emitTangents(spacePoint, announceTangent, options) {
|
|
193797
|
+
const centerToPoint = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.createStartEnd(this.centerRef, spacePoint);
|
|
193798
|
+
let centerToLocalPoint;
|
|
193799
|
+
if (options?.vectorToEye) {
|
|
193800
|
+
const arcToView = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_4__.Matrix3d.createColumns(this.matrixRef.getColumn(0), this.matrixRef.getColumn(1), options.vectorToEye);
|
|
193801
|
+
centerToLocalPoint = arcToView.multiplyInverse(centerToPoint);
|
|
193802
|
+
}
|
|
193803
|
+
else {
|
|
193804
|
+
centerToLocalPoint = this.matrixRef.multiplyInverse(centerToPoint);
|
|
193805
|
+
}
|
|
193806
|
+
if (centerToLocalPoint === undefined)
|
|
193807
|
+
return;
|
|
193808
|
+
// centerToLocalPoint is a vector in the local coordinate system of the as-viewed arc.
|
|
193809
|
+
// In other words, the local arc is the unit circle.
|
|
193810
|
+
// alpha is the angle from the local x-axis to centerToLocalPoint.
|
|
193811
|
+
// beta is the nonnegative angle from centerToLocalPoint to a tangency radial.
|
|
193812
|
+
// Tangency angles are preserved by local <-> world transformation.
|
|
193813
|
+
if (centerToLocalPoint !== undefined) {
|
|
193814
|
+
const hypotenuseSquared = centerToLocalPoint.magnitudeSquaredXY();
|
|
193815
|
+
if (hypotenuseSquared >= 1.0) { // localPoint lies outside or on the unit circle...
|
|
193816
|
+
// ...and forms a right triangle with unit radial leg to tangent point
|
|
193817
|
+
const distanceToTangency = Math.sqrt(hypotenuseSquared - 1.0);
|
|
193818
|
+
const alpha = Math.atan2(centerToLocalPoint.y, centerToLocalPoint.x);
|
|
193819
|
+
const beta = Math.atan2(distanceToTangency, 1);
|
|
193820
|
+
const angles = _Geometry__WEBPACK_IMPORTED_MODULE_5__.Geometry.isSmallAngleRadians(beta) ? [alpha] : [alpha + beta, alpha - beta];
|
|
193821
|
+
for (const theta of angles) {
|
|
193822
|
+
const f = _CurveExtendMode__WEBPACK_IMPORTED_MODULE_14__.CurveExtendOptions.resolveRadiansToValidSweepFraction(options?.extend ?? false, theta, this.sweep);
|
|
193823
|
+
if (f.isValid) {
|
|
193824
|
+
const tangent = _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_12__.CurveLocationDetail.createCurveFractionPoint(this, f.fraction, this.fractionToPoint(f.fraction));
|
|
193825
|
+
announceTangent(tangent);
|
|
193826
|
+
}
|
|
193827
|
+
}
|
|
193828
|
+
}
|
|
193829
|
+
}
|
|
193830
|
+
}
|
|
193762
193831
|
/** Reverse the sweep of the arc. */
|
|
193763
193832
|
reverseInPlace() {
|
|
193764
193833
|
this._sweep.reverseInPlace();
|
|
@@ -196073,38 +196142,42 @@ class CurveExtendOptions {
|
|
|
196073
196142
|
return fraction;
|
|
196074
196143
|
}
|
|
196075
196144
|
/**
|
|
196076
|
-
* Adjust a radians value to an angle sweep,
|
|
196077
|
-
* * If radians is within the sweep, convert it to a fraction of the sweep.
|
|
196078
|
-
* * If radians is outside
|
|
196079
|
-
*
|
|
196080
|
-
*
|
|
196145
|
+
* Adjust a radians value to an angle sweep, extending beyond or clamping to [0,1] according to `extendParam`:
|
|
196146
|
+
* * If `radians` is within the sweep, convert it to a fraction of the sweep.
|
|
196147
|
+
* * If `radians` is outside the sweep and `extendParam` does not allow extension at both ends, adjust the fraction:
|
|
196148
|
+
* * fraction below 0 if `extendParam` allows extension only at start
|
|
196149
|
+
* * fraction above 1 if `extendParam` allows extension only at end
|
|
196150
|
+
* * fraction clamped to [0,1] if `extendParam` disallows extension at both ends
|
|
196151
|
+
* @returns adjusted fraction of sweep, and a boolean indicating whether it is valid, i.e. whether `radians` lies in
|
|
196152
|
+
* the sweep extended per `extendParam`.
|
|
196081
196153
|
*/
|
|
196082
|
-
static
|
|
196154
|
+
static resolveRadiansToValidSweepFraction(extendParam, radians, sweep) {
|
|
196083
196155
|
let fraction = sweep.radiansToSignedPeriodicFraction(radians);
|
|
196156
|
+
let isValid = true;
|
|
196084
196157
|
if (!sweep.isRadiansInSweep(radians)) {
|
|
196085
196158
|
const fractionPeriod = sweep.fractionPeriod();
|
|
196086
196159
|
const mode0 = CurveExtendOptions.resolveVariantCurveExtendParameterToCurveExtendMode(extendParam, 0);
|
|
196087
196160
|
const mode1 = CurveExtendOptions.resolveVariantCurveExtendParameterToCurveExtendMode(extendParam, 1);
|
|
196088
196161
|
if (mode0 !== CurveExtendMode.None) {
|
|
196089
|
-
if (mode1
|
|
196090
|
-
// both extensions possible; let the sweep resolve to the "closer" end
|
|
196091
|
-
fraction = sweep.radiansToSignedPeriodicFraction(radians);
|
|
196092
|
-
}
|
|
196093
|
-
else {
|
|
196094
|
-
// only extend to negative
|
|
196162
|
+
if (mode1 === CurveExtendMode.None) { // only extend to negative
|
|
196095
196163
|
if (fraction > 1.0)
|
|
196096
196164
|
fraction -= fractionPeriod;
|
|
196097
196165
|
}
|
|
196098
196166
|
}
|
|
196099
|
-
else if (mode1 !== CurveExtendMode.None) {
|
|
196167
|
+
else if (mode1 !== CurveExtendMode.None) { // only extend to positive
|
|
196100
196168
|
if (fraction < 0.0)
|
|
196101
196169
|
fraction += fractionPeriod;
|
|
196102
196170
|
}
|
|
196103
|
-
else { //
|
|
196171
|
+
else { // no extension allowed
|
|
196104
196172
|
fraction = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.clamp(fraction, 0, 1);
|
|
196173
|
+
isValid = false;
|
|
196105
196174
|
}
|
|
196106
196175
|
}
|
|
196107
|
-
return fraction;
|
|
196176
|
+
return { fraction, isValid };
|
|
196177
|
+
}
|
|
196178
|
+
/** Call [[resolveRadiansToValidSweepFraction]] and return only the fraction. */
|
|
196179
|
+
static resolveRadiansToSweepFraction(extendParam, radians, sweep) {
|
|
196180
|
+
return this.resolveRadiansToValidSweepFraction(extendParam, radians, sweep).fraction;
|
|
196108
196181
|
}
|
|
196109
196182
|
}
|
|
196110
196183
|
|
|
@@ -197524,7 +197597,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
197524
197597
|
/* harmony export */ CurvePrimitive: () => (/* binding */ CurvePrimitive)
|
|
197525
197598
|
/* harmony export */ });
|
|
197526
197599
|
/* harmony import */ var _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @itwin/core-bentley */ "../../core/bentley/lib/esm/core-bentley.js");
|
|
197527
|
-
/* harmony import */ var
|
|
197600
|
+
/* harmony import */ var _curve_Query_StrokeCountMap__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../curve/Query/StrokeCountMap */ "../../core/geometry/lib/esm/curve/Query/StrokeCountMap.js");
|
|
197528
197601
|
/* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
|
|
197529
197602
|
/* harmony import */ var _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../geometry3d/Matrix3d */ "../../core/geometry/lib/esm/geometry3d/Matrix3d.js");
|
|
197530
197603
|
/* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
|
|
@@ -197533,8 +197606,9 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
197533
197606
|
/* harmony import */ var _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../geometry3d/Transform */ "../../core/geometry/lib/esm/geometry3d/Transform.js");
|
|
197534
197607
|
/* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
|
|
197535
197608
|
/* harmony import */ var _GeometryQuery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./GeometryQuery */ "../../core/geometry/lib/esm/curve/GeometryQuery.js");
|
|
197536
|
-
/* harmony import */ var
|
|
197609
|
+
/* harmony import */ var _internalContexts_AppendPlaneIntersectionStrokeHandler__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./internalContexts/AppendPlaneIntersectionStrokeHandler */ "../../core/geometry/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js");
|
|
197537
197610
|
/* harmony import */ var _internalContexts_ClosestPointStrokeHandler__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./internalContexts/ClosestPointStrokeHandler */ "../../core/geometry/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.js");
|
|
197611
|
+
/* harmony import */ var _internalContexts_AnnounceTangentStrokeHandler__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./internalContexts/AnnounceTangentStrokeHandler */ "../../core/geometry/lib/esm/curve/internalContexts/AnnounceTangentStrokeHandler.js");
|
|
197538
197612
|
/* harmony import */ var _internalContexts_CurveLengthContext__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./internalContexts/CurveLengthContext */ "../../core/geometry/lib/esm/curve/internalContexts/CurveLengthContext.js");
|
|
197539
197613
|
/*---------------------------------------------------------------------------------------------
|
|
197540
197614
|
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
@@ -197556,6 +197630,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
197556
197630
|
|
|
197557
197631
|
|
|
197558
197632
|
|
|
197633
|
+
|
|
197559
197634
|
/**
|
|
197560
197635
|
* A curve primitive is bounded.
|
|
197561
197636
|
* A curve primitive maps fractions in 0..1 to points in space.
|
|
@@ -197944,12 +198019,8 @@ class CurvePrimitive extends _GeometryQuery__WEBPACK_IMPORTED_MODULE_1__.Geometr
|
|
|
197944
198019
|
* * Since CurvePrimitive should always have start and end available as candidate points, this method should always
|
|
197945
198020
|
* succeed.
|
|
197946
198021
|
* @param spacePoint point in space.
|
|
197947
|
-
* @param extend
|
|
197948
|
-
*
|
|
197949
|
-
* * true: extend the curve at both start and end
|
|
197950
|
-
* * CurveExtendOptions: extend the curve in the specified manner at both start and end
|
|
197951
|
-
* * CurveExtendOptions[]: first entry applies to curve start; second, to curve end; any other entries ignored
|
|
197952
|
-
* @param result optional pre-allocated detail to populate and return.
|
|
198022
|
+
* @param extend (optional) compute the closest point to the curve extended according to variant type (default false)
|
|
198023
|
+
* @param result (optional) pre-allocated detail to populate and return.
|
|
197953
198024
|
* @returns details of the closest point.
|
|
197954
198025
|
*/
|
|
197955
198026
|
closestPoint(spacePoint, extend, result) {
|
|
@@ -197957,6 +198028,62 @@ class CurvePrimitive extends _GeometryQuery__WEBPACK_IMPORTED_MODULE_1__.Geometr
|
|
|
197957
198028
|
this.emitStrokableParts(strokeHandler);
|
|
197958
198029
|
return strokeHandler.claimResult();
|
|
197959
198030
|
}
|
|
198031
|
+
/**
|
|
198032
|
+
* Announce all points `P` on the curve such that the line containing `spacePoint` and `P` is tangent to the curve in
|
|
198033
|
+
* the view defined by `options.vectorToEye`.
|
|
198034
|
+
* * Strictly speaking, each tangent line lies in the plane through `P` whose normal is the cross product of the curve
|
|
198035
|
+
* tangent at `P` and `options.vectorToEye`. This is equivalent to tangency as seen in a view plane perpendicular to
|
|
198036
|
+
* `options.vectorToEye`.
|
|
198037
|
+
* @param spacePoint point in space.
|
|
198038
|
+
* @param announceTangent callback to announce each computed tangent. The received [[CurveLocationDetail]] is reused
|
|
198039
|
+
* internally, so it should be cloned in the callback if it needs to be saved.
|
|
198040
|
+
* @param options (optional) options for computing tangents. See [[TangentOptions]] for defaults.
|
|
198041
|
+
*/
|
|
198042
|
+
emitTangents(spacePoint, announceTangent, options) {
|
|
198043
|
+
const strokeHandler = new _internalContexts_AnnounceTangentStrokeHandler__WEBPACK_IMPORTED_MODULE_11__.AnnounceTangentStrokeHandler(spacePoint, announceTangent, options);
|
|
198044
|
+
this.emitStrokableParts(strokeHandler, options?.strokeOptions);
|
|
198045
|
+
}
|
|
198046
|
+
/**
|
|
198047
|
+
* Return all points `P` on the curve such that the line containing `spacePoint` and `P` is tangent to the curve in
|
|
198048
|
+
* the view defined by `options.vectorToEye`.
|
|
198049
|
+
* * See [[emitTangents]] for the definition of tangency employed.
|
|
198050
|
+
* @param spacePoint point in space.
|
|
198051
|
+
* @param options (optional) options for computing tangents. See [[TangentOptions]] for defaults.
|
|
198052
|
+
* @returns an array of details of all tangent points or undefined if no tangent was found.
|
|
198053
|
+
*/
|
|
198054
|
+
allTangents(spacePoint, options) {
|
|
198055
|
+
const tangents = [];
|
|
198056
|
+
this.emitTangents(spacePoint, (t) => tangents.push(t.clone()), options);
|
|
198057
|
+
return (tangents.length === 0) ? undefined : tangents;
|
|
198058
|
+
}
|
|
198059
|
+
/**
|
|
198060
|
+
* Return the point `P` on the curve such that the line containing `spacePoint` and `P` is tangent to the curve in
|
|
198061
|
+
* the view defined by `options.vectorToEye`, and `P` is closest to `options.hintPoint` in this view.
|
|
198062
|
+
* * See [[emitTangents]] for the definition of tangency employed.
|
|
198063
|
+
* @param spacePoint point in space.
|
|
198064
|
+
* @param options (optional) options for computing tangents. See [[TangentOptions]] for defaults.
|
|
198065
|
+
* @returns the detail of the closest tangent point or undefined if no tangent was found.
|
|
198066
|
+
*/
|
|
198067
|
+
closestTangent(spacePoint, options) {
|
|
198068
|
+
const hint = options?.hintPoint ?? spacePoint;
|
|
198069
|
+
let toLocal;
|
|
198070
|
+
if (options?.vectorToEye && !options.vectorToEye.isExactEqual({ x: 0, y: 0, z: 1 }))
|
|
198071
|
+
toLocal = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_3__.Matrix3d.createRigidViewAxesZTowardsEye(options.vectorToEye.x, options.vectorToEye.y, options.vectorToEye.z);
|
|
198072
|
+
const measureHintDist2 = (pt) => {
|
|
198073
|
+
return toLocal?.multiplyTransposeXYZ(hint.x - pt.x, hint.y - pt.y, hint.z - pt.z).magnitudeSquaredXY() ?? pt.distanceSquaredXY(hint);
|
|
198074
|
+
};
|
|
198075
|
+
let closestTangent;
|
|
198076
|
+
let closestDist2 = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.largeCoordinateResult;
|
|
198077
|
+
const collectClosestTangent = (tangent) => {
|
|
198078
|
+
const dist2 = measureHintDist2(tangent.point);
|
|
198079
|
+
if (!closestTangent || dist2 < closestDist2) {
|
|
198080
|
+
closestTangent = tangent.clone(closestTangent);
|
|
198081
|
+
closestDist2 = dist2;
|
|
198082
|
+
}
|
|
198083
|
+
};
|
|
198084
|
+
this.emitTangents(spacePoint, collectClosestTangent, options);
|
|
198085
|
+
return closestTangent;
|
|
198086
|
+
}
|
|
197960
198087
|
/**
|
|
197961
198088
|
* Find intervals of this curvePrimitive that are interior to a clipper
|
|
197962
198089
|
* @param clipper clip structure (e.g. clip planes)
|
|
@@ -198004,7 +198131,7 @@ class CurvePrimitive extends _GeometryQuery__WEBPACK_IMPORTED_MODULE_1__.Geometr
|
|
|
198004
198131
|
* @returns Return the number of CurveLocationDetail's added to the result array.
|
|
198005
198132
|
*/
|
|
198006
198133
|
appendPlaneIntersectionPoints(plane, result) {
|
|
198007
|
-
const strokeHandler = new
|
|
198134
|
+
const strokeHandler = new _internalContexts_AppendPlaneIntersectionStrokeHandler__WEBPACK_IMPORTED_MODULE_12__.AppendPlaneIntersectionStrokeHandler(plane, result);
|
|
198008
198135
|
const n0 = result.length;
|
|
198009
198136
|
this.emitStrokableParts(strokeHandler);
|
|
198010
198137
|
return result.length - n0;
|
|
@@ -198101,7 +198228,7 @@ class CurvePrimitive extends _GeometryQuery__WEBPACK_IMPORTED_MODULE_1__.Geometr
|
|
|
198101
198228
|
computeAndAttachRecursiveStrokeCounts(options, parentMap) {
|
|
198102
198229
|
const n = this.computeStrokeCountForOptions(options);
|
|
198103
198230
|
const a = this.curveLength();
|
|
198104
|
-
CurvePrimitive.installStrokeCountMap(this,
|
|
198231
|
+
CurvePrimitive.installStrokeCountMap(this, _curve_Query_StrokeCountMap__WEBPACK_IMPORTED_MODULE_13__.StrokeCountMap.createWithCurvePrimitive(this, n, a, 0, a), parentMap);
|
|
198105
198232
|
}
|
|
198106
198233
|
/**
|
|
198107
198234
|
* Evaluate strokes at fractions indicated in a StrokeCountMap.
|
|
@@ -200198,9 +200325,8 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePri
|
|
|
200198
200325
|
handler.startCurvePrimitive(this);
|
|
200199
200326
|
if (n > 1) {
|
|
200200
200327
|
const df = 1.0 / (n - 1);
|
|
200201
|
-
//
|
|
200202
|
-
//
|
|
200203
|
-
// Do NOT apply min strokes per primitive.
|
|
200328
|
+
// this is a line string; there is no need for chordTol and angleTol within a segment
|
|
200329
|
+
// DO NOT apply min strokes per primitive
|
|
200204
200330
|
if (options && options.hasMaxEdgeLength) {
|
|
200205
200331
|
for (let i = 1; i < n; i++) {
|
|
200206
200332
|
const numStroke = options.applyMaxEdgeLength(1, this._points.getPoint3dAtUncheckedPointIndex(i - 1).distance(this._points.getPoint3dAtUncheckedPointIndex(i)));
|
|
@@ -205129,6 +205255,204 @@ class UnionRegion extends _CurveCollection__WEBPACK_IMPORTED_MODULE_0__.CurveCol
|
|
|
205129
205255
|
}
|
|
205130
205256
|
|
|
205131
205257
|
|
|
205258
|
+
/***/ }),
|
|
205259
|
+
|
|
205260
|
+
/***/ "../../core/geometry/lib/esm/curve/internalContexts/AnnounceTangentStrokeHandler.js":
|
|
205261
|
+
/*!******************************************************************************************!*\
|
|
205262
|
+
!*** ../../core/geometry/lib/esm/curve/internalContexts/AnnounceTangentStrokeHandler.js ***!
|
|
205263
|
+
\******************************************************************************************/
|
|
205264
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
205265
|
+
|
|
205266
|
+
"use strict";
|
|
205267
|
+
__webpack_require__.r(__webpack_exports__);
|
|
205268
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
205269
|
+
/* harmony export */ AnnounceTangentStrokeHandler: () => (/* binding */ AnnounceTangentStrokeHandler)
|
|
205270
|
+
/* harmony export */ });
|
|
205271
|
+
/* harmony import */ var _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @itwin/core-bentley */ "../../core/bentley/lib/esm/core-bentley.js");
|
|
205272
|
+
/* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
|
|
205273
|
+
/* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
|
|
205274
|
+
/* harmony import */ var _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../geometry3d/Ray3d */ "../../core/geometry/lib/esm/geometry3d/Ray3d.js");
|
|
205275
|
+
/* harmony import */ var _numerics_Newton__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../numerics/Newton */ "../../core/geometry/lib/esm/numerics/Newton.js");
|
|
205276
|
+
/* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
|
|
205277
|
+
/* harmony import */ var _NewtonRtoRStrokeHandler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./NewtonRtoRStrokeHandler */ "../../core/geometry/lib/esm/curve/internalContexts/NewtonRtoRStrokeHandler.js");
|
|
205278
|
+
/*---------------------------------------------------------------------------------------------
|
|
205279
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
205280
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
205281
|
+
*--------------------------------------------------------------------------------------------*/
|
|
205282
|
+
/** @packageDocumentation
|
|
205283
|
+
* @module Curve
|
|
205284
|
+
*/
|
|
205285
|
+
|
|
205286
|
+
|
|
205287
|
+
|
|
205288
|
+
|
|
205289
|
+
|
|
205290
|
+
|
|
205291
|
+
|
|
205292
|
+
/**
|
|
205293
|
+
* Context for searching for the tangent(s) to a CurvePrimitive.
|
|
205294
|
+
* @internal
|
|
205295
|
+
*/
|
|
205296
|
+
class AnnounceTangentStrokeHandler extends _NewtonRtoRStrokeHandler__WEBPACK_IMPORTED_MODULE_1__.NewtonRtoRStrokeHandler {
|
|
205297
|
+
_curve;
|
|
205298
|
+
_announceTangent;
|
|
205299
|
+
_spacePoint;
|
|
205300
|
+
_vectorToEye;
|
|
205301
|
+
_distanceTol;
|
|
205302
|
+
_distanceTolSquared;
|
|
205303
|
+
// fraction and function value on one side of an interval that may bracket a root
|
|
205304
|
+
_fractionA = 0;
|
|
205305
|
+
_functionA = 0;
|
|
205306
|
+
// fraction and function value on the other side of an interval that may bracket a root
|
|
205307
|
+
_fractionB = 0;
|
|
205308
|
+
_functionB = 0;
|
|
205309
|
+
_numThisCurve = 0;
|
|
205310
|
+
// scratch vars to use within methods
|
|
205311
|
+
_fractionMRU;
|
|
205312
|
+
_curveMRU;
|
|
205313
|
+
_workRay;
|
|
205314
|
+
_workDetail;
|
|
205315
|
+
_newtonSolver;
|
|
205316
|
+
/** Constructor */
|
|
205317
|
+
constructor(spacePoint, announceTangent, options) {
|
|
205318
|
+
super();
|
|
205319
|
+
this._announceTangent = announceTangent;
|
|
205320
|
+
this._spacePoint = spacePoint;
|
|
205321
|
+
this._vectorToEye = options?.vectorToEye ?? _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.unitZ();
|
|
205322
|
+
this._distanceTol = options?.distanceTol ?? _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.smallMetricDistance;
|
|
205323
|
+
this._distanceTolSquared = this._distanceTol * this._distanceTol;
|
|
205324
|
+
this._workRay = _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_4__.Ray3d.createZero();
|
|
205325
|
+
this.startCurvePrimitive(undefined);
|
|
205326
|
+
this._newtonSolver = new _numerics_Newton__WEBPACK_IMPORTED_MODULE_5__.Newton1dUnboundedApproximateDerivative(this);
|
|
205327
|
+
}
|
|
205328
|
+
/** Specified by IStrokeHandler. */
|
|
205329
|
+
needPrimaryGeometryForStrokes() {
|
|
205330
|
+
return true;
|
|
205331
|
+
}
|
|
205332
|
+
/** Specified by IStrokeHandler. */
|
|
205333
|
+
startCurvePrimitive(curve) {
|
|
205334
|
+
this._curve = curve;
|
|
205335
|
+
this._fractionA = 0.0;
|
|
205336
|
+
this._numThisCurve = 0;
|
|
205337
|
+
this._functionA = 0.0;
|
|
205338
|
+
}
|
|
205339
|
+
/** Specified by IStrokeHandler. */
|
|
205340
|
+
endCurvePrimitive() {
|
|
205341
|
+
}
|
|
205342
|
+
/** Specified by IStrokeHandler. */
|
|
205343
|
+
announceIntervalForUniformStepStrokes(cp, numStrokes, fraction0, fraction1) {
|
|
205344
|
+
this.startCurvePrimitive(cp);
|
|
205345
|
+
if (numStrokes < 1)
|
|
205346
|
+
numStrokes = 1;
|
|
205347
|
+
const df = 1.0 / numStrokes;
|
|
205348
|
+
for (let i = 0; i <= numStrokes; i++) {
|
|
205349
|
+
const fraction = _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.interpolate(fraction0, i * df, fraction1);
|
|
205350
|
+
cp.fractionToPointAndDerivative(fraction, this._workRay);
|
|
205351
|
+
this.announceRay(fraction, this._workRay);
|
|
205352
|
+
}
|
|
205353
|
+
}
|
|
205354
|
+
announceCandidate(cp, fraction, point) {
|
|
205355
|
+
if (this._parentCurvePrimitive)
|
|
205356
|
+
cp = this._parentCurvePrimitive;
|
|
205357
|
+
if (this._curveMRU === cp && _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.isAlmostEqualOptional(this._fractionMRU, fraction, _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.smallFloatingPoint))
|
|
205358
|
+
return; // avoid announcing duplicate tangents in succession (e.g., at interior stroke point)
|
|
205359
|
+
this._workDetail = _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_6__.CurveLocationDetail.createCurveFractionPoint(cp, fraction, point, this._workDetail);
|
|
205360
|
+
this._announceTangent(this._workDetail);
|
|
205361
|
+
this._fractionMRU = fraction;
|
|
205362
|
+
this._curveMRU = cp;
|
|
205363
|
+
}
|
|
205364
|
+
/** Specified by IStrokeHandler. */
|
|
205365
|
+
announceSegmentInterval(cp, point0, point1, _numStrokes, fraction0, fraction1) {
|
|
205366
|
+
let fraction;
|
|
205367
|
+
let point;
|
|
205368
|
+
const distance0 = this._spacePoint.distanceSquared(point0);
|
|
205369
|
+
const distance1 = this._spacePoint.distanceSquared(point1);
|
|
205370
|
+
if (distance0 < distance1) {
|
|
205371
|
+
fraction = fraction0;
|
|
205372
|
+
point = point0;
|
|
205373
|
+
}
|
|
205374
|
+
else {
|
|
205375
|
+
fraction = fraction1;
|
|
205376
|
+
point = point1;
|
|
205377
|
+
}
|
|
205378
|
+
// evaluate at midpoint; the endpoints may be at corners, which have ambiguous tangent
|
|
205379
|
+
const value = this.evaluateFunction(undefined, (fraction0 + fraction1) / 2, cp);
|
|
205380
|
+
if (value !== undefined && _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.isDistanceWithinTol(value, this._distanceTol))
|
|
205381
|
+
this.announceCandidate(cp, fraction, point);
|
|
205382
|
+
}
|
|
205383
|
+
/**
|
|
205384
|
+
* Given a function `f` and (unordered) fractions `a` and `b`, search for and announce a root of `f` in this
|
|
205385
|
+
* fractional interval.
|
|
205386
|
+
* * This method searches for a root of `f` if and only if the stroke segment defined by `(a, f(a))` and
|
|
205387
|
+
* `(b, f(b))` has a root. This is a HEURISTIC: given continuous `f` between `a` and `b`, a root of the stroke
|
|
205388
|
+
* segment implies a root of `f`, but not vice-versa. Therefore, if the strokes are not sufficiently dense,
|
|
205389
|
+
* this method can miss a root of `f`.
|
|
205390
|
+
*/
|
|
205391
|
+
searchInterval() {
|
|
205392
|
+
// directly announce at endpoint if we are extra certain it's a root; Newton can miss it if it has multiplicity > 1
|
|
205393
|
+
if (_Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.isDistanceWithinTol(this._functionA, this._distanceTolSquared))
|
|
205394
|
+
this.announceSolutionFraction(this._fractionA);
|
|
205395
|
+
if (_Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.isDistanceWithinTol(this._functionB, this._distanceTolSquared))
|
|
205396
|
+
this.announceSolutionFraction(this._fractionB);
|
|
205397
|
+
if (this._functionA * this._functionB < 0) {
|
|
205398
|
+
// by the Intermediate Value Theorem, a root lies between fractionA and fractionB; use Newton to find it.
|
|
205399
|
+
const fraction = _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.inverseInterpolate(this._fractionA, this._functionA, this._fractionB, this._functionB);
|
|
205400
|
+
if (fraction) {
|
|
205401
|
+
this._newtonSolver.setX(fraction);
|
|
205402
|
+
if (this._newtonSolver.runIterations())
|
|
205403
|
+
this.announceSolutionFraction(this._newtonSolver.getX());
|
|
205404
|
+
}
|
|
205405
|
+
}
|
|
205406
|
+
}
|
|
205407
|
+
announceSolutionFraction(fraction) {
|
|
205408
|
+
if (this._curve)
|
|
205409
|
+
this.announceCandidate(this._curve, fraction, this._curve.fractionToPoint(fraction));
|
|
205410
|
+
}
|
|
205411
|
+
/**
|
|
205412
|
+
* Evaluate the univariate real-valued function for which we are finding roots.
|
|
205413
|
+
* * For finding the tangents to curve `X` from point `Q` as seen in a view plane with normal `N`, this
|
|
205414
|
+
* function is `f(t) := (Q - X(t)) dot (X'(t) cross N)`. The second vector in the dot product defines a
|
|
205415
|
+
* _tangent plane_ at `X(t)`.
|
|
205416
|
+
* * Either `pointAndDerivative` must be defined, or both `fraction` and `curve`.
|
|
205417
|
+
* @param pointAndDerivative pre-evaluated curve
|
|
205418
|
+
* @param fraction fraction at which to evaluate `curve`
|
|
205419
|
+
* @param curve curve to evaluate at `fraction`
|
|
205420
|
+
* @returns distance of `Q` from the tangent plane at `X(t)`.
|
|
205421
|
+
*/
|
|
205422
|
+
evaluateFunction(pointAndDerivative, fraction, curve) {
|
|
205423
|
+
if (pointAndDerivative)
|
|
205424
|
+
this._workRay.setFrom(pointAndDerivative);
|
|
205425
|
+
else if (fraction !== undefined && curve)
|
|
205426
|
+
this._workRay = curve.fractionToPointAndDerivative(fraction, this._workRay);
|
|
205427
|
+
else
|
|
205428
|
+
return undefined;
|
|
205429
|
+
const cross = this._vectorToEye.unitCrossProduct(this._workRay.direction); // normalized so we return true distance
|
|
205430
|
+
return cross ? cross.dotProductStartEnd(this._workRay.origin, this._spacePoint) : undefined;
|
|
205431
|
+
}
|
|
205432
|
+
/** Specified by NewtonRtoRStrokeHandler. */
|
|
205433
|
+
evaluate(fraction) {
|
|
205434
|
+
const curve = this._parentCurvePrimitive ?? this._curve;
|
|
205435
|
+
const value = this.evaluateFunction(undefined, fraction, curve);
|
|
205436
|
+
if (value === undefined)
|
|
205437
|
+
return false;
|
|
205438
|
+
this.currentF = value;
|
|
205439
|
+
return true;
|
|
205440
|
+
}
|
|
205441
|
+
announceRay(fraction, data) {
|
|
205442
|
+
this._functionB = this.evaluateFunction(data);
|
|
205443
|
+
this._fractionB = fraction;
|
|
205444
|
+
if (this._numThisCurve++ > 0) // after the first stroke point, a stroke segment is defined, so we have an interval
|
|
205445
|
+
this.searchInterval();
|
|
205446
|
+
this._functionA = this._functionB;
|
|
205447
|
+
this._fractionA = this._fractionB;
|
|
205448
|
+
}
|
|
205449
|
+
/** Specified by IStrokeHandler. */
|
|
205450
|
+
announcePointTangent(_point, _fraction, _tangent) {
|
|
205451
|
+
(0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(false, "No callers expected. IStrokeHandler probably didn't need to specify this method.");
|
|
205452
|
+
}
|
|
205453
|
+
}
|
|
205454
|
+
|
|
205455
|
+
|
|
205132
205456
|
/***/ }),
|
|
205133
205457
|
|
|
205134
205458
|
/***/ "../../core/geometry/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js":
|
|
@@ -205669,22 +205993,25 @@ class ClosestPointStrokeHandler extends _NewtonRtoRStrokeHandler__WEBPACK_IMPORT
|
|
|
205669
205993
|
_closestPoint;
|
|
205670
205994
|
_spacePoint;
|
|
205671
205995
|
_extend;
|
|
205996
|
+
// fraction and function value on one side of an interval that may bracket a root
|
|
205672
205997
|
_fractionA = 0;
|
|
205673
205998
|
_functionA = 0;
|
|
205674
|
-
|
|
205999
|
+
// fraction and function value on the other side of an interval that may bracket a root
|
|
205675
206000
|
_fractionB = 0;
|
|
206001
|
+
_functionB = 0;
|
|
205676
206002
|
_numThisCurve = 0;
|
|
205677
|
-
// scratch vars
|
|
206003
|
+
// scratch vars to use within methods
|
|
205678
206004
|
_workPoint;
|
|
205679
206005
|
_workRay;
|
|
205680
206006
|
_newtonSolver;
|
|
206007
|
+
/** Constructor */
|
|
205681
206008
|
constructor(spacePoint, extend, result) {
|
|
205682
206009
|
super();
|
|
205683
206010
|
this._spacePoint = spacePoint;
|
|
205684
206011
|
this._workPoint = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create();
|
|
205685
206012
|
this._workRay = _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_2__.Ray3d.createZero();
|
|
205686
206013
|
this._closestPoint = result;
|
|
205687
|
-
this._extend = extend;
|
|
206014
|
+
this._extend = extend ?? false;
|
|
205688
206015
|
this.startCurvePrimitive(undefined);
|
|
205689
206016
|
this._newtonSolver = new _numerics_Newton__WEBPACK_IMPORTED_MODULE_3__.Newton1dUnboundedApproximateDerivative(this);
|
|
205690
206017
|
}
|
|
@@ -205735,7 +206062,7 @@ class ClosestPointStrokeHandler extends _NewtonRtoRStrokeHandler__WEBPACK_IMPORT
|
|
|
205735
206062
|
}
|
|
205736
206063
|
announceSegmentInterval(cp, point0, point1, _numStrokes, fraction0, fraction1) {
|
|
205737
206064
|
let localFraction = this._spacePoint.fractionOfProjectionToLine(point0, point1, 0.0);
|
|
205738
|
-
// only consider extending the segment if the immediate caller says we are at endpoints
|
|
206065
|
+
// only consider extending the segment if the immediate caller says we are at endpoints
|
|
205739
206066
|
if (!this._extend)
|
|
205740
206067
|
localFraction = _Geometry__WEBPACK_IMPORTED_MODULE_5__.Geometry.clampToStartEnd(localFraction, 0.0, 1.0);
|
|
205741
206068
|
else {
|
|
@@ -205748,13 +206075,22 @@ class ClosestPointStrokeHandler extends _NewtonRtoRStrokeHandler__WEBPACK_IMPORT
|
|
|
205748
206075
|
const globalFraction = _Geometry__WEBPACK_IMPORTED_MODULE_5__.Geometry.interpolate(fraction0, localFraction, fraction1);
|
|
205749
206076
|
this.announceCandidate(cp, globalFraction, this._workPoint);
|
|
205750
206077
|
}
|
|
206078
|
+
/**
|
|
206079
|
+
* Given a function `f` and (unordered) fractions `a` and `b`, search for and announce a root of `f` in this
|
|
206080
|
+
* fractional interval.
|
|
206081
|
+
* * This method searches for a root of `f` if and only if the stroke segment defined by `(a, f(a))` and
|
|
206082
|
+
* `(b, f(b))` has a root. This is a HEURISTIC: given continuous `f` between `a` and `b`, a root of the stroke
|
|
206083
|
+
* segment implies a root of `f`, but not vice-versa. Therefore, if the strokes are not sufficiently dense,
|
|
206084
|
+
* this method can miss a root of `f`.
|
|
206085
|
+
*/
|
|
205751
206086
|
searchInterval() {
|
|
205752
206087
|
if (this._functionA * this._functionB > 0)
|
|
205753
|
-
return;
|
|
206088
|
+
return; // stroke segment has no root; ASSUME the function has no root either
|
|
205754
206089
|
if (this._functionA === 0)
|
|
205755
206090
|
this.announceSolutionFraction(this._fractionA);
|
|
205756
206091
|
if (this._functionB === 0)
|
|
205757
206092
|
this.announceSolutionFraction(this._fractionB);
|
|
206093
|
+
// by the Intermediate Value Theorem, a root lies between fractionA and fractionB; use Newton to find it.
|
|
205758
206094
|
if (this._functionA * this._functionB < 0) {
|
|
205759
206095
|
const fraction = _Geometry__WEBPACK_IMPORTED_MODULE_5__.Geometry.inverseInterpolate(this._fractionA, this._functionA, this._fractionB, this._functionB);
|
|
205760
206096
|
if (fraction) {
|
|
@@ -205764,28 +206100,41 @@ class ClosestPointStrokeHandler extends _NewtonRtoRStrokeHandler__WEBPACK_IMPORT
|
|
|
205764
206100
|
}
|
|
205765
206101
|
}
|
|
205766
206102
|
}
|
|
205767
|
-
evaluateB(fractionB, dataB) {
|
|
205768
|
-
this._functionB = dataB.dotProductToPoint(this._spacePoint);
|
|
205769
|
-
this._fractionB = fractionB;
|
|
205770
|
-
}
|
|
205771
206103
|
announceSolutionFraction(fraction) {
|
|
205772
206104
|
if (this._curve)
|
|
205773
206105
|
this.announceCandidate(this._curve, fraction, this._curve.fractionToPoint(fraction));
|
|
205774
206106
|
}
|
|
206107
|
+
/**
|
|
206108
|
+
* Evaluate the univariate real-valued function for which we are finding roots.
|
|
206109
|
+
* * For finding the closest point to curve X from point Q, this function is `f(t) := Q-X(t) dot X'(t)`.
|
|
206110
|
+
* * Either `pointAndDerivative` must be defined, or both `fraction` and `curve`.
|
|
206111
|
+
* @param pointAndDerivative pre-evaluated curve
|
|
206112
|
+
* @param fraction fraction at which to evaluate `curve`
|
|
206113
|
+
* @param curve curve to evaluate at `fraction`
|
|
206114
|
+
*/
|
|
206115
|
+
evaluateFunction(pointAndDerivative, fraction, curve) {
|
|
206116
|
+
if (pointAndDerivative)
|
|
206117
|
+
this._workRay.setFrom(pointAndDerivative);
|
|
206118
|
+
else if (fraction !== undefined && curve)
|
|
206119
|
+
this._workRay = curve.fractionToPointAndDerivative(fraction, this._workRay);
|
|
206120
|
+
else
|
|
206121
|
+
return undefined;
|
|
206122
|
+
return this._workRay.dotProductToPoint(this._spacePoint);
|
|
206123
|
+
}
|
|
205775
206124
|
evaluate(fraction) {
|
|
205776
206125
|
let curve = this._curve;
|
|
205777
206126
|
if (this._parentCurvePrimitive)
|
|
205778
206127
|
curve = this._parentCurvePrimitive;
|
|
205779
|
-
|
|
205780
|
-
|
|
205781
|
-
|
|
205782
|
-
|
|
205783
|
-
|
|
205784
|
-
return false;
|
|
206128
|
+
const value = this.evaluateFunction(undefined, fraction, curve);
|
|
206129
|
+
if (value === undefined)
|
|
206130
|
+
return false;
|
|
206131
|
+
this.currentF = value;
|
|
206132
|
+
return true;
|
|
205785
206133
|
}
|
|
205786
206134
|
announceRay(fraction, data) {
|
|
205787
|
-
this.
|
|
205788
|
-
|
|
206135
|
+
this._functionB = this.evaluateFunction(data);
|
|
206136
|
+
this._fractionB = fraction;
|
|
206137
|
+
if (this._numThisCurve++ > 0) // after the first stroke point, a stroke segment is defined, so we have an interval
|
|
205789
206138
|
this.searchInterval();
|
|
205790
206139
|
this._functionA = this._functionB;
|
|
205791
206140
|
this._fractionA = this._fractionB;
|
|
@@ -210245,7 +210594,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
210245
210594
|
* @module Curve
|
|
210246
210595
|
*/
|
|
210247
210596
|
|
|
210248
|
-
/**
|
|
210597
|
+
/**
|
|
210598
|
+
* Intermediate class for managing the parentCurve announcements from an IStrokeHandler.
|
|
210249
210599
|
* @internal
|
|
210250
210600
|
*/
|
|
210251
210601
|
class NewtonRtoRStrokeHandler extends _numerics_Newton__WEBPACK_IMPORTED_MODULE_0__.NewtonEvaluatorRtoR {
|
|
@@ -210254,10 +210604,11 @@ class NewtonRtoRStrokeHandler extends _numerics_Newton__WEBPACK_IMPORTED_MODULE_
|
|
|
210254
210604
|
super();
|
|
210255
210605
|
this._parentCurvePrimitive = undefined;
|
|
210256
210606
|
}
|
|
210257
|
-
/**
|
|
210607
|
+
/**
|
|
210608
|
+
* Retain the parentCurvePrimitive.
|
|
210258
210609
|
* * Calling this method tells the handler that the parent curve is to be used for detail searches.
|
|
210259
210610
|
* * Example: Transition spiral search is based on linestring first, then the exact spiral.
|
|
210260
|
-
* * Example: CurveChainWithDistanceIndex does NOT do this announcement
|
|
210611
|
+
* * Example: CurveChainWithDistanceIndex does NOT do this announcement; the constituents act independently.
|
|
210261
210612
|
*/
|
|
210262
210613
|
startParentCurvePrimitive(curve) {
|
|
210263
210614
|
this._parentCurvePrimitive = curve;
|
|
@@ -214428,7 +214779,7 @@ class AngleSweep {
|
|
|
214428
214779
|
}
|
|
214429
214780
|
/** Read-property for signed start-to-end sweep in degrees. */
|
|
214430
214781
|
get sweepDegrees() {
|
|
214431
|
-
return _Angle__WEBPACK_IMPORTED_MODULE_0__.Angle.radiansToDegrees(this.
|
|
214782
|
+
return _Angle__WEBPACK_IMPORTED_MODULE_0__.Angle.radiansToDegrees(this.sweepRadians);
|
|
214432
214783
|
}
|
|
214433
214784
|
/** Read-property for degrees at the start of this AngleSweep. */
|
|
214434
214785
|
get startRadians() {
|
|
@@ -214607,20 +214958,20 @@ class AngleSweep {
|
|
|
214607
214958
|
/** Convert fractional position in the sweep to radians. */
|
|
214608
214959
|
fractionToRadians(fraction) {
|
|
214609
214960
|
return fraction < 0.5 ?
|
|
214610
|
-
this._radians0 + fraction *
|
|
214611
|
-
this._radians1 + (fraction - 1.0) *
|
|
214961
|
+
this._radians0 + fraction * this.sweepRadians :
|
|
214962
|
+
this._radians1 + (fraction - 1.0) * this.sweepRadians;
|
|
214612
214963
|
}
|
|
214613
214964
|
/** Convert fractional position in the sweep to strongly typed Angle object. */
|
|
214614
214965
|
fractionToAngle(fraction) {
|
|
214615
214966
|
return _Angle__WEBPACK_IMPORTED_MODULE_0__.Angle.createRadians(this.fractionToRadians(fraction));
|
|
214616
214967
|
}
|
|
214617
214968
|
/**
|
|
214618
|
-
* Return 2PI divided by the sweep radians
|
|
214969
|
+
* Return 2PI divided by the sweep radians.
|
|
214619
214970
|
* * This is the number of fractional intervals required to cover a whole circle.
|
|
214620
214971
|
* @returns period of the sweep, or 1 if sweep is empty.
|
|
214621
214972
|
*/
|
|
214622
214973
|
fractionPeriod() {
|
|
214623
|
-
return this.isEmpty ? 1.0 : _Angle__WEBPACK_IMPORTED_MODULE_0__.Angle.pi2Radians / Math.abs(this.
|
|
214974
|
+
return this.isEmpty ? 1.0 : _Angle__WEBPACK_IMPORTED_MODULE_0__.Angle.pi2Radians / Math.abs(this.sweepRadians);
|
|
214624
214975
|
}
|
|
214625
214976
|
/**
|
|
214626
214977
|
* Return the fractionalized position of the given angle (as Angle) computed without consideration of
|
|
@@ -214636,7 +214987,7 @@ class AngleSweep {
|
|
|
214636
214987
|
* @returns unbounded fraction, or 1 if sweep is empty.
|
|
214637
214988
|
*/
|
|
214638
214989
|
angleToUnboundedFraction(theta) {
|
|
214639
|
-
return this.isEmpty ? 1.0 : (theta.radians - this._radians0) /
|
|
214990
|
+
return this.isEmpty ? 1.0 : (theta.radians - this._radians0) / this.sweepRadians;
|
|
214640
214991
|
}
|
|
214641
214992
|
/**
|
|
214642
214993
|
* Convert a sweep fraction to the equivalent period-shifted fraction inside the sweep, or within one period of zero
|
|
@@ -214930,7 +215281,7 @@ class AngleSweep {
|
|
|
214930
215281
|
isAlmostEqualAllowPeriodShift(other, radianTol = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.smallAngleRadians) {
|
|
214931
215282
|
return this.isCCW === other.isCCW // this rules out equating opposite sweeps like [0,-100] and [0,260]
|
|
214932
215283
|
&& _Angle__WEBPACK_IMPORTED_MODULE_0__.Angle.isAlmostEqualRadiansAllowPeriodShift(this._radians0, other._radians0, radianTol)
|
|
214933
|
-
&& _Angle__WEBPACK_IMPORTED_MODULE_0__.Angle.isAlmostEqualRadiansAllowPeriodShift(this.
|
|
215284
|
+
&& _Angle__WEBPACK_IMPORTED_MODULE_0__.Angle.isAlmostEqualRadiansAllowPeriodShift(this.sweepRadians, other.sweepRadians, radianTol);
|
|
214934
215285
|
}
|
|
214935
215286
|
/**
|
|
214936
215287
|
* Test if two angle sweeps match within the given tolerance.
|
|
@@ -214940,7 +215291,7 @@ class AngleSweep {
|
|
|
214940
215291
|
*/
|
|
214941
215292
|
isAlmostEqualNoPeriodShift(other, radianTol = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.smallAngleRadians) {
|
|
214942
215293
|
return _Angle__WEBPACK_IMPORTED_MODULE_0__.Angle.isAlmostEqualRadiansNoPeriodShift(this._radians0, other._radians0, radianTol)
|
|
214943
|
-
&& _Angle__WEBPACK_IMPORTED_MODULE_0__.Angle.isAlmostEqualRadiansNoPeriodShift(this.
|
|
215294
|
+
&& _Angle__WEBPACK_IMPORTED_MODULE_0__.Angle.isAlmostEqualRadiansNoPeriodShift(this.sweepRadians, other.sweepRadians, radianTol);
|
|
214944
215295
|
}
|
|
214945
215296
|
/**
|
|
214946
215297
|
* Test if start and end angles match with radians tolerance.
|
|
@@ -223625,28 +223976,27 @@ class Matrix3d {
|
|
|
223625
223976
|
return count === 3;
|
|
223626
223977
|
}
|
|
223627
223978
|
/**
|
|
223628
|
-
* Adjust the matrix in place to make
|
|
223629
|
-
* *
|
|
223630
|
-
* *
|
|
223631
|
-
*
|
|
223632
|
-
*
|
|
223633
|
-
* @param axisOrder how to reorder the matrix columns
|
|
223634
|
-
* @return whether the adjusted matrix is `rigid` on return
|
|
223979
|
+
* Adjust the matrix in place to make it rigid:
|
|
223980
|
+
* * Columns are perpendicular and have unit length.
|
|
223981
|
+
* * Transpose equals inverse.
|
|
223982
|
+
* @param axisOrder how to reorder the matrix columns. A left-handed ordering will return a mirror.
|
|
223983
|
+
* @return whether the adjusted matrix is rigid on return
|
|
223635
223984
|
*/
|
|
223636
223985
|
makeRigid(axisOrder = _Geometry__WEBPACK_IMPORTED_MODULE_0__.AxisOrder.XYZ) {
|
|
223637
223986
|
const maxAbs = this.maxAbs();
|
|
223638
223987
|
if (_Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.isSmallMetricDistance(maxAbs))
|
|
223639
223988
|
return false;
|
|
223640
223989
|
const scale = 1.0 / maxAbs;
|
|
223641
|
-
this.scaleColumnsInPlace(scale, scale, scale);
|
|
223990
|
+
this.scaleColumnsInPlace(scale, scale, scale); // improve numerical stability
|
|
223642
223991
|
this.axisOrderCrossProductsInPlace(axisOrder);
|
|
223643
223992
|
return this.normalizeColumnsInPlace();
|
|
223644
223993
|
}
|
|
223645
223994
|
/**
|
|
223646
|
-
* Create a new orthogonal matrix
|
|
223647
|
-
*
|
|
223648
|
-
*
|
|
223649
|
-
*
|
|
223995
|
+
* Create a new orthogonal matrix by calling [[makeRigid]] on a clone of `source`.
|
|
223996
|
+
* @param source input matrix
|
|
223997
|
+
* @param axisOrder how to reorder the matrix columns. A left-handed ordering will return a mirror.
|
|
223998
|
+
* @param result optional preallocated result to populate and return
|
|
223999
|
+
* @returns rigid matrix, or `undefined` if the operation failed.
|
|
223650
224000
|
*/
|
|
223651
224001
|
static createRigidFromMatrix3d(source, axisOrder = _Geometry__WEBPACK_IMPORTED_MODULE_0__.AxisOrder.XYZ, result) {
|
|
223652
224002
|
result = source.clone(result);
|
|
@@ -244696,7 +245046,7 @@ class FacetOrientationFixup {
|
|
|
244696
245046
|
_facetOrientation;
|
|
244697
245047
|
_components;
|
|
244698
245048
|
_visitor;
|
|
244699
|
-
_mesh;
|
|
245049
|
+
_mesh; // we could get by with just a Polyface/Visitor but for the call to reverseSingleFacet
|
|
244700
245050
|
constructor(mesh) {
|
|
244701
245051
|
this._visitor = mesh.createVisitor(1);
|
|
244702
245052
|
this._edges = _PolyfaceQuery__WEBPACK_IMPORTED_MODULE_0__.PolyfaceQuery.createIndexedEdges(this._visitor);
|
|
@@ -250188,6 +250538,7 @@ class PolyfaceData {
|
|
|
250188
250538
|
if (this.colorIndex !== this.pointIndex)
|
|
250189
250539
|
PolyfaceData.reverseIndices(facetStartIndex, this.colorIndex, true);
|
|
250190
250540
|
PolyfaceData.reverseIndices(facetStartIndex, this.edgeVisible, false);
|
|
250541
|
+
// TODO: reverse auxData.indices, edgeMateIndex
|
|
250191
250542
|
}
|
|
250192
250543
|
}
|
|
250193
250544
|
/**
|
|
@@ -250207,6 +250558,7 @@ class PolyfaceData {
|
|
|
250207
250558
|
if (this.colorIndex !== this.pointIndex)
|
|
250208
250559
|
PolyfaceData.reverseIndicesSingleFacet(facetIndex, facetStartIndex, this.colorIndex, true);
|
|
250209
250560
|
PolyfaceData.reverseIndicesSingleFacet(facetIndex, facetStartIndex, this.edgeVisible, false);
|
|
250561
|
+
// TODO: reverse auxData.indices, edgeMateIndex
|
|
250210
250562
|
}
|
|
250211
250563
|
/** Scale all the normals by -1. */
|
|
250212
250564
|
reverseNormals() {
|
|
@@ -275587,12 +275939,12 @@ class Triangulator {
|
|
|
275587
275939
|
* * Return false if clearly negative or almost zero.
|
|
275588
275940
|
* @param nodeA node on the diagonal edge of candidate for edge flip.
|
|
275589
275941
|
*/
|
|
275590
|
-
static
|
|
275942
|
+
static computeCircumcircleDeterminantIsStrongPositive(nodeA) {
|
|
275591
275943
|
// Assume triangle A1,A2,B2 is ccw.
|
|
275592
275944
|
// Shift the triangle to the origin (by negated A coords).
|
|
275593
275945
|
// The Delaunay condition is computed by projecting the origin and the shifted triangle
|
|
275594
275946
|
// points up to the paraboloid z = x*x + y*y. Due to the radially symmetric convexity of
|
|
275595
|
-
// this surface and the ccw orientation of this triangle, "A is inside triangle A1,A2,B2"
|
|
275947
|
+
// this surface and the ccw orientation of this triangle, "A is inside the circumcircle of triangle A1,A2,B2"
|
|
275596
275948
|
// is equivalent to "the volume of the parallelepiped formed by the projected points is
|
|
275597
275949
|
// negative, as computed by the triple product."
|
|
275598
275950
|
const nodeA1 = nodeA.faceSuccessor;
|
|
@@ -275625,7 +275977,7 @@ class Triangulator {
|
|
|
275625
275977
|
}
|
|
275626
275978
|
/**
|
|
275627
275979
|
* * Visit each node of the graph array
|
|
275628
|
-
* * If a flip would be possible, test the results of flipping using
|
|
275980
|
+
* * If a flip would be possible, test the results of flipping using circumcircle condition
|
|
275629
275981
|
* * If revealed to be an improvement, conduct the flip, mark involved nodes as unvisited, and repeat until all nodes are visited
|
|
275630
275982
|
*/
|
|
275631
275983
|
static flipTriangles(graph) {
|
|
@@ -275638,7 +275990,7 @@ class Triangulator {
|
|
|
275638
275990
|
}
|
|
275639
275991
|
/**
|
|
275640
275992
|
* * Visit each node of the graph array
|
|
275641
|
-
* * If a flip would be possible, test the results of flipping using
|
|
275993
|
+
* * If a flip would be possible, test the results of flipping using circumcircle condition
|
|
275642
275994
|
* * If revealed to be an improvement, conduct the flip, mark involved nodes as unvisited, and repeat until all nodes are visited
|
|
275643
275995
|
*/
|
|
275644
275996
|
static flipTrianglesInEdgeSet(graph, edgeSet) {
|
|
@@ -275651,7 +276003,7 @@ class Triangulator {
|
|
|
275651
276003
|
while (undefined !== (node = edgeSet.chooseAndRemoveAny())) {
|
|
275652
276004
|
if (node.isMaskSet(barrierMasks)) // Flip not allowed
|
|
275653
276005
|
continue;
|
|
275654
|
-
if (Triangulator.
|
|
276006
|
+
if (Triangulator.computeCircumcircleDeterminantIsStrongPositive(node)) {
|
|
275655
276007
|
// Flip the triangles
|
|
275656
276008
|
Triangulator.flipEdgeBetweenTriangles(node.edgeMate.faceSuccessor, node.edgeMate.facePredecessor, node.edgeMate, node.faceSuccessor, node, node.facePredecessor);
|
|
275657
276009
|
// keep looking at the 2 faces
|
|
@@ -276002,7 +276354,7 @@ class Triangulator {
|
|
|
276002
276354
|
// triangle B1 A1 D is on the other side of AB
|
|
276003
276355
|
// The condition for flipping is:
|
|
276004
276356
|
// ! both triangles must be TRIANGULATED_NODE_MASK
|
|
276005
|
-
// !
|
|
276357
|
+
// ! circumcircle condition flags D as in the circle of ABC
|
|
276006
276358
|
// after flip, node A moves to the vertex of D, and is the effective "ear", with the cap edge C A1
|
|
276007
276359
|
// after flip, consider the A1 D (whose nodes are A1 and flipped A!!!)
|
|
276008
276360
|
//
|
|
@@ -276022,7 +276374,7 @@ class Triangulator {
|
|
|
276022
276374
|
let a0 = b0.facePredecessor;
|
|
276023
276375
|
let b1 = a0.edgeMate;
|
|
276024
276376
|
while (Triangulator.isInteriorTriangle(a0) && Triangulator.isInteriorTriangle(b1)) {
|
|
276025
|
-
const detA = Triangulator.
|
|
276377
|
+
const detA = Triangulator.computeCircumcircleDeterminantIsStrongPositive(a0);
|
|
276026
276378
|
if (!detA)
|
|
276027
276379
|
break;
|
|
276028
276380
|
// Flip the triangles
|
|
@@ -311078,7 +311430,7 @@ var loadLanguages = instance.loadLanguages;
|
|
|
311078
311430
|
/***/ ((module) => {
|
|
311079
311431
|
|
|
311080
311432
|
"use strict";
|
|
311081
|
-
module.exports = /*#__PURE__*/JSON.parse('{"name":"@itwin/core-frontend","version":"5.0.0-dev.
|
|
311433
|
+
module.exports = /*#__PURE__*/JSON.parse('{"name":"@itwin/core-frontend","version":"5.0.0-dev.105","description":"iTwin.js frontend components","main":"lib/cjs/core-frontend.js","module":"lib/esm/core-frontend.js","typings":"lib/cjs/core-frontend","license":"MIT","scripts":{"build":"npm run -s copy:public && npm run -s build:cjs && npm run -s build:esm && npm run -s webpackWorkers && npm run -s copy:workers","build:cjs":"npm run -s copy:js:cjs && tsc 1>&2 --outDir lib/cjs","build:esm":"npm run -s copy:js:esm && tsc 1>&2 --module ES2022 --outDir lib/esm","clean":"rimraf -g lib .rush/temp/package-deps*.json","copy:public":"cpx \\"./src/public/**/*\\" ./lib/public","copy:js:cjs":"cpx \\"./src/**/*.js\\" ./lib/cjs","copy:js:esm":"cpx \\"./src/**/*.js\\" ./lib/esm","copy:workers":"cpx \\"./lib/workers/webpack/parse-imdl-worker.js\\" ./lib/public/scripts","docs":"betools docs --json=../../generated-docs/core/core-frontend/file.json --tsIndexFile=./core-frontend.ts --onlyJson --excludes=webgl/**/*,**/map/*.d.ts,**/tile/*.d.ts,**/*-css.ts","extract-api":"betools extract-api --entry=core-frontend && npm run extract-extension-api","extract-extension-api":"eslint --no-inline-config -c extraction.eslint.config.js \\"./src/**/*.ts\\" 1>&2","lint":"eslint \\"./src/**/*.ts\\" 1>&2","lint-fix":"eslint --fix -f visualstudio \\"./src/**/*.ts\\" 1>&2","pseudolocalize":"betools pseudolocalize --englishDir ./src/public/locales/en --out ./public/locales/en-PSEUDO","test":"npm run webpackTestWorker && vitest --run","cover":"npm run webpackTestWorker && vitest --run","webpackTests":"webpack --config ./src/test/utils/webpack.config.js 1>&2 && npm run -s webpackTestWorker","webpackTestWorker":"webpack --config ./src/test/worker/webpack.config.js 1>&2 && cpx \\"./lib/test/test-worker.js\\" ./lib/test","webpackWorkers":"webpack --config ./src/workers/ImdlParser/webpack.config.js 1>&2"},"repository":{"type":"git","url":"https://github.com/iTwin/itwinjs-core.git","directory":"core/frontend"},"keywords":["Bentley","BIM","iModel","digital-twin","iTwin"],"author":{"name":"Bentley Systems, Inc.","url":"http://www.bentley.com"},"peerDependencies":{"@itwin/appui-abstract":"workspace:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*"},"//devDependencies":["NOTE: All peerDependencies should also be listed as devDependencies since peerDependencies are not considered by npm install","NOTE: All tools used by scripts in this package must be listed as devDependencies"],"devDependencies":{"@itwin/appui-abstract":"workspace:*","@itwin/build-tools":"workspace:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*","@itwin/eslint-plugin":"5.0.0-dev.1","@types/chai-as-promised":"^7","@vitest/browser":"^3.0.6","@vitest/coverage-v8":"^3.0.6","cpx2":"^8.0.0","eslint":"^9.13.0","glob":"^10.3.12","playwright":"~1.47.1","rimraf":"^6.0.1","source-map-loader":"^5.0.0","typescript":"~5.6.2","typemoq":"^2.1.0","vitest":"^3.0.6","vite-multiple-assets":"^1.3.1","vite-plugin-static-copy":"2.2.0","webpack":"^5.97.1"},"//dependencies":["NOTE: these dependencies should be only for things that DO NOT APPEAR IN THE API","NOTE: core-frontend should remain UI technology agnostic, so no react/angular dependencies are allowed"],"dependencies":{"@itwin/cloud-agnostic-core":"^2.2.4","@itwin/object-storage-core":"^2.3.0","@itwin/core-i18n":"workspace:*","@itwin/webgl-compatibility":"workspace:*","@loaders.gl/core":"^3.1.6","@loaders.gl/draco":"^3.1.6","fuse.js":"^3.3.0","wms-capabilities":"0.4.0"}}');
|
|
311082
311434
|
|
|
311083
311435
|
/***/ })
|
|
311084
311436
|
|