@itwin/frontend-devtools 3.1.0-dev.7 → 3.2.0-dev.1
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/CHANGELOG.md +26 -1
- package/README.md +2 -1
- package/lib/cjs/FrontEndDevTools.d.ts.map +1 -1
- package/lib/cjs/FrontEndDevTools.js +1 -0
- package/lib/cjs/FrontEndDevTools.js.map +1 -1
- package/lib/cjs/tools/InspectElementTool.d.ts +1 -0
- package/lib/cjs/tools/InspectElementTool.d.ts.map +1 -1
- package/lib/cjs/tools/InspectElementTool.js +15 -1
- package/lib/cjs/tools/InspectElementTool.js.map +1 -1
- package/lib/cjs/tools/MapLayerTool.d.ts +13 -3
- package/lib/cjs/tools/MapLayerTool.d.ts.map +1 -1
- package/lib/cjs/tools/MapLayerTool.js +36 -4
- package/lib/cjs/tools/MapLayerTool.js.map +1 -1
- package/lib/cjs/tools/RealityModelTools.d.ts.map +1 -1
- package/lib/cjs/tools/RealityModelTools.js +15 -7
- package/lib/cjs/tools/RealityModelTools.js.map +1 -1
- package/lib/cjs/tools/TileRequestDecoration.js +1 -1
- package/lib/cjs/tools/TileRequestDecoration.js.map +1 -1
- package/lib/cjs/widgets/MemoryTracker.js +1 -1
- package/lib/cjs/widgets/MemoryTracker.js.map +1 -1
- package/lib/cjs/widgets/TileMemoryBreakdown.js +1 -1
- package/lib/cjs/widgets/TileMemoryBreakdown.js.map +1 -1
- package/lib/cjs/widgets/TileStatisticsTracker.js +1 -1
- package/lib/cjs/widgets/TileStatisticsTracker.js.map +1 -1
- package/lib/esm/FrontEndDevTools.d.ts.map +1 -1
- package/lib/esm/FrontEndDevTools.js +2 -1
- package/lib/esm/FrontEndDevTools.js.map +1 -1
- package/lib/esm/tools/InspectElementTool.d.ts +1 -0
- package/lib/esm/tools/InspectElementTool.d.ts.map +1 -1
- package/lib/esm/tools/InspectElementTool.js +15 -1
- package/lib/esm/tools/InspectElementTool.js.map +1 -1
- package/lib/esm/tools/MapLayerTool.d.ts +13 -3
- package/lib/esm/tools/MapLayerTool.d.ts.map +1 -1
- package/lib/esm/tools/MapLayerTool.js +35 -4
- package/lib/esm/tools/MapLayerTool.js.map +1 -1
- package/lib/esm/tools/RealityModelTools.d.ts.map +1 -1
- package/lib/esm/tools/RealityModelTools.js +16 -8
- package/lib/esm/tools/RealityModelTools.js.map +1 -1
- package/lib/esm/tools/TileRequestDecoration.js +1 -1
- package/lib/esm/tools/TileRequestDecoration.js.map +1 -1
- package/lib/esm/widgets/MemoryTracker.js +1 -1
- package/lib/esm/widgets/MemoryTracker.js.map +1 -1
- package/lib/esm/widgets/TileMemoryBreakdown.js +1 -1
- package/lib/esm/widgets/TileMemoryBreakdown.js.map +1 -1
- package/lib/esm/widgets/TileStatisticsTracker.js +1 -1
- package/lib/esm/widgets/TileStatisticsTracker.js.map +1 -1
- package/lib/public/locales/en/FrontendDevTools.json +462 -459
- package/package.json +8 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InspectElementTool.d.ts","sourceRoot":"","sources":["../../../src/tools/InspectElementTool.ts"],"names":[],"mappings":"AAKA;;GAEG;AAEH,OAAO,EAAiC,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,sBAAsB,EAAoD,MAAM,oBAAoB,CAAC;AAC9G,OAAO,EACL,aAAa,EAAa,YAAY,EAAE,SAAS,EAAa,kBAAkB,EAAE,cAAc,EACnD,aAAa,EAC3D,MAAM,sBAAsB,CAAC;AAI9B;;;;;;;;;;GAUG;AACH,qBAAa,kBAAmB,SAAQ,aAAa;IACnD,OAAuB,MAAM,SAAoB;IACjD,WAA2B,OAAO,WAAgB;IAClD,WAA2B,OAAO,WAAgB;IAElD,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,WAAW,CAAC,CAAe;IACnC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,OAAO,CAAS;
|
|
1
|
+
{"version":3,"file":"InspectElementTool.d.ts","sourceRoot":"","sources":["../../../src/tools/InspectElementTool.ts"],"names":[],"mappings":"AAKA;;GAEG;AAEH,OAAO,EAAiC,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,sBAAsB,EAAoD,MAAM,oBAAoB,CAAC;AAC9G,OAAO,EACL,aAAa,EAAa,YAAY,EAAE,SAAS,EAAa,kBAAkB,EAAE,cAAc,EACnD,aAAa,EAC3D,MAAM,sBAAsB,CAAC;AAI9B;;;;;;;;;;GAUG;AACH,qBAAa,kBAAmB,SAAQ,aAAa;IACnD,OAAuB,MAAM,SAAoB;IACjD,WAA2B,OAAO,WAAgB;IAClD,WAA2B,OAAO,WAAgB;IAElD,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,WAAW,CAAC,CAAe;IACnC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,aAAa,CAAS;gBAElB,OAAO,CAAC,EAAE,sBAAsB,EAAE,UAAU,CAAC,EAAE,UAAU,EAAE;IAQvE,OAAO,CAAC,2BAA2B;IAQnC,OAAO,CAAC,UAAU;IAIF,cAAc,IAAI,IAAI;IAEtB,sBAAsB,IAAI,OAAO;IAE3B,WAAW;IAIX,aAAa;IAcb,gBAAgB,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IA4B1D,eAAe,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAK1D,cAAc;IAQvB,aAAa;IAMJ,SAAS,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,kBAAkB,CAAC;YAIpF,OAAO;IAwDC,WAAW,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;CA6C5E"}
|
|
@@ -28,6 +28,7 @@ export class InspectElementTool extends PrimitiveTool {
|
|
|
28
28
|
this._modal = false;
|
|
29
29
|
this._useSelection = false;
|
|
30
30
|
this._doCopy = false;
|
|
31
|
+
this._explodeParts = false;
|
|
31
32
|
if (undefined !== options)
|
|
32
33
|
this._options = { ...options };
|
|
33
34
|
this._elementIds = elementIds;
|
|
@@ -110,7 +111,19 @@ export class InspectElementTool extends PrimitiveTool {
|
|
|
110
111
|
};
|
|
111
112
|
let messageDetails;
|
|
112
113
|
try {
|
|
113
|
-
|
|
114
|
+
let str = await IModelReadRpcInterface.getClientForRouting(this.iModel.routingContext.token).getGeometrySummary(this.iModel.getRpcProps(), request);
|
|
115
|
+
if (this._explodeParts) {
|
|
116
|
+
const regex = /^part id: (0x[a-f0-9]+)/gm;
|
|
117
|
+
const partIds = new Set();
|
|
118
|
+
let match;
|
|
119
|
+
while (null !== (match = regex.exec(str)))
|
|
120
|
+
partIds.add(match[1]);
|
|
121
|
+
if (partIds.size > 0) {
|
|
122
|
+
request.elementIds = Array.from(partIds);
|
|
123
|
+
str += `\npart ids: ${JSON.stringify(request.elementIds)}\n`;
|
|
124
|
+
str += await IModelReadRpcInterface.getClientForRouting(this.iModel.routingContext.token).getGeometrySummary(this.iModel.getRpcProps(), request);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
114
127
|
if (this._doCopy)
|
|
115
128
|
copyStringToClipboard(str);
|
|
116
129
|
const brief = `Summary ${this._doCopy ? "copied to clipboard." : "complete."}`;
|
|
@@ -174,6 +187,7 @@ export class InspectElementTool extends PrimitiveTool {
|
|
|
174
187
|
const doCopy = args.getBoolean("c");
|
|
175
188
|
if (undefined !== doCopy)
|
|
176
189
|
this._doCopy = doCopy;
|
|
190
|
+
this._explodeParts = true === args.getBoolean("e");
|
|
177
191
|
return this.run();
|
|
178
192
|
}
|
|
179
193
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InspectElementTool.js","sourceRoot":"","sources":["../../../src/tools/InspectElementTool.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module Tools\r\n */\r\n\r\nimport { BentleyError, Id64, Id64Array, Id64String } from \"@itwin/core-bentley\";\r\nimport { GeometrySummaryOptions, GeometrySummaryVerbosity, IModelReadRpcInterface } from \"@itwin/core-common\";\r\nimport {\r\n BeButtonEvent, CoreTools, EventHandled, HitDetail, IModelApp, LocateFilterStatus, LocateResponse, MessageBoxIconType, MessageBoxType,\r\n NotifyMessageDetails, OutputMessagePriority, PrimitiveTool,\r\n} from \"@itwin/core-frontend\";\r\nimport { copyStringToClipboard } from \"../ClipboardUtilities\";\r\nimport { parseArgs } from \"./parseArgs\";\r\n\r\n/** Creates a readable text summary of a geometric element or geometry part. The keyin takes the following arguments, all of which are optional:\r\n * - `id=elementId,elementId,elementId` comma-separated list of element Ids where each `elementId` is a hexadecimal element Id such as \"0x12cb\";\r\n * - `symbology=0|1` where 1 indicates detailed symbology information should be included in the output;\r\n * - `placement=0|1` where 1 indicates detailed geometric element placement should be included; and\r\n * - `verbosity=0|1|2` controlling the verbosity of the output for each geometric primitive in the geometry stream. Higher values = more detailed information. Note verbosity=2 can produce megabytes of data for certain types of geometric primitives like large meshes.\r\n * - `modal=0|1` where 1 indicates the output should appear in a modal dialog.\r\n * - `copy=0|1` where 1 indicates the output should be copied to the clipboard. Defaults to true.\r\n * - `refs=0|1` where 1 indicates that for geometry parts a list of all elements referencing that part should be included in the output. This is extremely computationally expensive.\r\n * If no id is specified, the tool runs in interactive mode: first operating upon the selection set (if any), then allowing the user to select additional elements.\r\n * @beta\r\n */\r\nexport class InspectElementTool extends PrimitiveTool {\r\n public static override toolId = \"InspectElement\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 6; }\r\n\r\n private _options: GeometrySummaryOptions = {};\r\n private _elementIds?: Id64String[];\r\n private _modal = false;\r\n private _useSelection = false;\r\n private _doCopy = false;\r\n\r\n constructor(options?: GeometrySummaryOptions, elementIds?: Id64String[]) {\r\n super();\r\n if (undefined !== options)\r\n this._options = { ...options };\r\n\r\n this._elementIds = elementIds;\r\n }\r\n\r\n private setupAndPromptForNextAction(): void {\r\n this._useSelection = (undefined !== this.targetView && this.targetView.iModel.selectionSet.isActive);\r\n if (!this._useSelection)\r\n IModelApp.accuSnap.enableLocate(true);\r\n\r\n this.showPrompt();\r\n }\r\n\r\n private showPrompt(): void {\r\n CoreTools.outputPromptByKey(this._useSelection ? \"ElementSet.Prompts.ConfirmSelection\" : \"ElementSet.Prompts.IdentifyElement\");\r\n }\r\n\r\n public override autoLockTarget(): void { }\r\n\r\n public override requireWriteableTarget(): boolean { return false; }\r\n\r\n public override async onUnsuspend() {\r\n this.showPrompt();\r\n }\r\n\r\n public override async onPostInstall() {\r\n await super.onPostInstall();\r\n\r\n if (undefined !== this._elementIds)\r\n this.process(this._elementIds).then(async () => {\r\n await this.onReinitialize();\r\n }).catch((err) => {\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Error, err.toString()));\r\n });\r\n else {\r\n this.setupAndPromptForNextAction();\r\n }\r\n }\r\n\r\n public override async onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled> {\r\n if (this._useSelection) {\r\n if (undefined !== ev.viewport) {\r\n const ids: Id64Array = [];\r\n ev.viewport.iModel.selectionSet.elements.forEach((id) => {\r\n if (!Id64.isInvalid(id) && !Id64.isTransient(id))\r\n ids.push(id);\r\n });\r\n\r\n if (0 === ids.length)\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Error, CoreTools.translate(\"ElementSet.Error.NotSupportedElmType\")));\r\n else\r\n await this.process(ids);\r\n\r\n await this.onReinitialize();\r\n return EventHandled.Yes;\r\n }\r\n }\r\n\r\n const hit = await IModelApp.locateManager.doLocate(new LocateResponse(), true, ev.point, ev.viewport, ev.inputSource);\r\n if (undefined === hit || !hit.isElementHit)\r\n return EventHandled.No;\r\n\r\n await this.process([hit.sourceId]);\r\n this.setupAndPromptForNextAction();\r\n return EventHandled.No;\r\n }\r\n\r\n public override async onResetButtonUp(_ev: BeButtonEvent): Promise<EventHandled> {\r\n await this.onReinitialize();\r\n return EventHandled.No;\r\n }\r\n\r\n public override async onReinitialize() {\r\n if (this._useSelection || undefined !== this._elementIds) {\r\n await this.exitTool();\r\n } else {\r\n await this.onRestartTool();\r\n }\r\n }\r\n\r\n public async onRestartTool() {\r\n const tool = new InspectElementTool();\r\n if (!await tool.run())\r\n return this.exitTool();\r\n }\r\n\r\n public override async filterHit(hit: HitDetail, _out: LocateResponse): Promise<LocateFilterStatus> {\r\n return hit.isElementHit ? LocateFilterStatus.Accept : LocateFilterStatus.Reject;\r\n }\r\n\r\n private async process(elementIds: Id64String[]) {\r\n const request = {\r\n elementIds,\r\n options: this._options,\r\n };\r\n let messageDetails: NotifyMessageDetails;\r\n try {\r\n const str = await IModelReadRpcInterface.getClientForRouting(this.iModel.routingContext.token).getGeometrySummary(this.iModel.getRpcProps(), request);\r\n if (this._doCopy)\r\n copyStringToClipboard(str);\r\n\r\n const brief = `Summary ${this._doCopy ? \"copied to clipboard.\" : \"complete.\"}`;\r\n messageDetails = new NotifyMessageDetails(OutputMessagePriority.Info, brief, str);\r\n\r\n if (this._modal) {\r\n const div = document.createElement(\"div\");\r\n const appendText = (toAppend: string) => {\r\n const txt = document.createElement(\"div\");\r\n txt.innerText = toAppend;\r\n div.append(txt);\r\n };\r\n\r\n const lines = str.split(\"\\n\");\r\n const maxLines = 30;\r\n let curLine = 0;\r\n for (const line of lines) {\r\n appendText(line);\r\n if (++curLine > maxLines) {\r\n appendText(\"...\");\r\n break;\r\n }\r\n }\r\n\r\n await IModelApp.notifications.openMessageBox(MessageBoxType.Ok, div, MessageBoxIconType.Information);\r\n }\r\n } catch (err) {\r\n messageDetails = new NotifyMessageDetails(OutputMessagePriority.Error, \"Error occurred while generating summary\", BentleyError.getErrorMessage(err));\r\n }\r\n\r\n IModelApp.notifications.outputMessage(messageDetails);\r\n }\r\n\r\n public override async parseAndRun(...inputArgs: string[]): Promise<boolean> {\r\n const args = parseArgs(inputArgs);\r\n const ids = args.get(\"i\");\r\n if (undefined !== ids)\r\n this._elementIds = ids.split(\",\");\r\n\r\n const verbosity = args.getInteger(\"v\");\r\n if (undefined !== verbosity) {\r\n switch (verbosity) {\r\n case 0:\r\n this._options.geometryVerbosity = GeometrySummaryVerbosity.Basic;\r\n break;\r\n case 1:\r\n this._options.geometryVerbosity = GeometrySummaryVerbosity.Detailed;\r\n break;\r\n case 2:\r\n this._options.geometryVerbosity = GeometrySummaryVerbosity.Full;\r\n break;\r\n }\r\n }\r\n\r\n const symbology = args.getBoolean(\"s\");\r\n if (undefined !== symbology)\r\n this._options.verboseSymbology = symbology;\r\n\r\n const placement = args.getBoolean(\"p\");\r\n if (undefined !== placement)\r\n this._options.includePlacement = placement;\r\n\r\n const parts = args.getBoolean(\"r\");\r\n if (true === parts && undefined !== IModelApp.viewManager.selectedView)\r\n this._options.includePartReferences = IModelApp.viewManager.selectedView.view.is3d() ? \"3d\" : \"2d\";\r\n\r\n const modal = args.getBoolean(\"m\");\r\n if (undefined !== modal)\r\n this._modal = modal;\r\n\r\n const doCopy = args.getBoolean(\"c\");\r\n if (undefined !== doCopy)\r\n this._doCopy = doCopy;\r\n\r\n return this.run();\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"InspectElementTool.js","sourceRoot":"","sources":["../../../src/tools/InspectElementTool.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module Tools\r\n */\r\n\r\nimport { BentleyError, Id64, Id64Array, Id64String } from \"@itwin/core-bentley\";\r\nimport { GeometrySummaryOptions, GeometrySummaryVerbosity, IModelReadRpcInterface } from \"@itwin/core-common\";\r\nimport {\r\n BeButtonEvent, CoreTools, EventHandled, HitDetail, IModelApp, LocateFilterStatus, LocateResponse, MessageBoxIconType, MessageBoxType,\r\n NotifyMessageDetails, OutputMessagePriority, PrimitiveTool,\r\n} from \"@itwin/core-frontend\";\r\nimport { copyStringToClipboard } from \"../ClipboardUtilities\";\r\nimport { parseArgs } from \"./parseArgs\";\r\n\r\n/** Creates a readable text summary of a geometric element or geometry part. The keyin takes the following arguments, all of which are optional:\r\n * - `id=elementId,elementId,elementId` comma-separated list of element Ids where each `elementId` is a hexadecimal element Id such as \"0x12cb\";\r\n * - `symbology=0|1` where 1 indicates detailed symbology information should be included in the output;\r\n * - `placement=0|1` where 1 indicates detailed geometric element placement should be included; and\r\n * - `verbosity=0|1|2` controlling the verbosity of the output for each geometric primitive in the geometry stream. Higher values = more detailed information. Note verbosity=2 can produce megabytes of data for certain types of geometric primitives like large meshes.\r\n * - `modal=0|1` where 1 indicates the output should appear in a modal dialog.\r\n * - `copy=0|1` where 1 indicates the output should be copied to the clipboard. Defaults to true.\r\n * - `refs=0|1` where 1 indicates that for geometry parts a list of all elements referencing that part should be included in the output. This is extremely computationally expensive.\r\n * If no id is specified, the tool runs in interactive mode: first operating upon the selection set (if any), then allowing the user to select additional elements.\r\n * @beta\r\n */\r\nexport class InspectElementTool extends PrimitiveTool {\r\n public static override toolId = \"InspectElement\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 6; }\r\n\r\n private _options: GeometrySummaryOptions = {};\r\n private _elementIds?: Id64String[];\r\n private _modal = false;\r\n private _useSelection = false;\r\n private _doCopy = false;\r\n private _explodeParts = false;\r\n\r\n constructor(options?: GeometrySummaryOptions, elementIds?: Id64String[]) {\r\n super();\r\n if (undefined !== options)\r\n this._options = { ...options };\r\n\r\n this._elementIds = elementIds;\r\n }\r\n\r\n private setupAndPromptForNextAction(): void {\r\n this._useSelection = (undefined !== this.targetView && this.targetView.iModel.selectionSet.isActive);\r\n if (!this._useSelection)\r\n IModelApp.accuSnap.enableLocate(true);\r\n\r\n this.showPrompt();\r\n }\r\n\r\n private showPrompt(): void {\r\n CoreTools.outputPromptByKey(this._useSelection ? \"ElementSet.Prompts.ConfirmSelection\" : \"ElementSet.Prompts.IdentifyElement\");\r\n }\r\n\r\n public override autoLockTarget(): void { }\r\n\r\n public override requireWriteableTarget(): boolean { return false; }\r\n\r\n public override async onUnsuspend() {\r\n this.showPrompt();\r\n }\r\n\r\n public override async onPostInstall() {\r\n await super.onPostInstall();\r\n\r\n if (undefined !== this._elementIds)\r\n this.process(this._elementIds).then(async () => {\r\n await this.onReinitialize();\r\n }).catch((err) => {\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Error, err.toString()));\r\n });\r\n else {\r\n this.setupAndPromptForNextAction();\r\n }\r\n }\r\n\r\n public override async onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled> {\r\n if (this._useSelection) {\r\n if (undefined !== ev.viewport) {\r\n const ids: Id64Array = [];\r\n ev.viewport.iModel.selectionSet.elements.forEach((id) => {\r\n if (!Id64.isInvalid(id) && !Id64.isTransient(id))\r\n ids.push(id);\r\n });\r\n\r\n if (0 === ids.length)\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Error, CoreTools.translate(\"ElementSet.Error.NotSupportedElmType\")));\r\n else\r\n await this.process(ids);\r\n\r\n await this.onReinitialize();\r\n return EventHandled.Yes;\r\n }\r\n }\r\n\r\n const hit = await IModelApp.locateManager.doLocate(new LocateResponse(), true, ev.point, ev.viewport, ev.inputSource);\r\n if (undefined === hit || !hit.isElementHit)\r\n return EventHandled.No;\r\n\r\n await this.process([hit.sourceId]);\r\n this.setupAndPromptForNextAction();\r\n return EventHandled.No;\r\n }\r\n\r\n public override async onResetButtonUp(_ev: BeButtonEvent): Promise<EventHandled> {\r\n await this.onReinitialize();\r\n return EventHandled.No;\r\n }\r\n\r\n public override async onReinitialize() {\r\n if (this._useSelection || undefined !== this._elementIds) {\r\n await this.exitTool();\r\n } else {\r\n await this.onRestartTool();\r\n }\r\n }\r\n\r\n public async onRestartTool() {\r\n const tool = new InspectElementTool();\r\n if (!await tool.run())\r\n return this.exitTool();\r\n }\r\n\r\n public override async filterHit(hit: HitDetail, _out: LocateResponse): Promise<LocateFilterStatus> {\r\n return hit.isElementHit ? LocateFilterStatus.Accept : LocateFilterStatus.Reject;\r\n }\r\n\r\n private async process(elementIds: Id64String[]) {\r\n const request = {\r\n elementIds,\r\n options: this._options,\r\n };\r\n let messageDetails: NotifyMessageDetails;\r\n try {\r\n let str = await IModelReadRpcInterface.getClientForRouting(this.iModel.routingContext.token).getGeometrySummary(this.iModel.getRpcProps(), request);\r\n if (this._explodeParts) {\r\n const regex = /^part id: (0x[a-f0-9]+)/gm;\r\n const partIds = new Set<string>();\r\n let match;\r\n while (null !== (match = regex.exec(str)))\r\n partIds.add(match[1]);\r\n\r\n if (partIds.size > 0) {\r\n request.elementIds = Array.from(partIds);\r\n str += `\\npart ids: ${JSON.stringify(request.elementIds)}\\n`;\r\n str += await IModelReadRpcInterface.getClientForRouting(this.iModel.routingContext.token).getGeometrySummary(this.iModel.getRpcProps(), request);\r\n }\r\n }\r\n\r\n if (this._doCopy)\r\n copyStringToClipboard(str);\r\n\r\n const brief = `Summary ${this._doCopy ? \"copied to clipboard.\" : \"complete.\"}`;\r\n messageDetails = new NotifyMessageDetails(OutputMessagePriority.Info, brief, str);\r\n\r\n if (this._modal) {\r\n const div = document.createElement(\"div\");\r\n const appendText = (toAppend: string) => {\r\n const txt = document.createElement(\"div\");\r\n txt.innerText = toAppend;\r\n div.append(txt);\r\n };\r\n\r\n const lines = str.split(\"\\n\");\r\n const maxLines = 30;\r\n let curLine = 0;\r\n for (const line of lines) {\r\n appendText(line);\r\n if (++curLine > maxLines) {\r\n appendText(\"...\");\r\n break;\r\n }\r\n }\r\n\r\n await IModelApp.notifications.openMessageBox(MessageBoxType.Ok, div, MessageBoxIconType.Information);\r\n }\r\n } catch (err) {\r\n messageDetails = new NotifyMessageDetails(OutputMessagePriority.Error, \"Error occurred while generating summary\", BentleyError.getErrorMessage(err));\r\n }\r\n\r\n IModelApp.notifications.outputMessage(messageDetails);\r\n }\r\n\r\n public override async parseAndRun(...inputArgs: string[]): Promise<boolean> {\r\n const args = parseArgs(inputArgs);\r\n const ids = args.get(\"i\");\r\n if (undefined !== ids)\r\n this._elementIds = ids.split(\",\");\r\n\r\n const verbosity = args.getInteger(\"v\");\r\n if (undefined !== verbosity) {\r\n switch (verbosity) {\r\n case 0:\r\n this._options.geometryVerbosity = GeometrySummaryVerbosity.Basic;\r\n break;\r\n case 1:\r\n this._options.geometryVerbosity = GeometrySummaryVerbosity.Detailed;\r\n break;\r\n case 2:\r\n this._options.geometryVerbosity = GeometrySummaryVerbosity.Full;\r\n break;\r\n }\r\n }\r\n\r\n const symbology = args.getBoolean(\"s\");\r\n if (undefined !== symbology)\r\n this._options.verboseSymbology = symbology;\r\n\r\n const placement = args.getBoolean(\"p\");\r\n if (undefined !== placement)\r\n this._options.includePlacement = placement;\r\n\r\n const parts = args.getBoolean(\"r\");\r\n if (true === parts && undefined !== IModelApp.viewManager.selectedView)\r\n this._options.includePartReferences = IModelApp.viewManager.selectedView.view.is3d() ? \"3d\" : \"2d\";\r\n\r\n const modal = args.getBoolean(\"m\");\r\n if (undefined !== modal)\r\n this._modal = modal;\r\n\r\n const doCopy = args.getBoolean(\"c\");\r\n if (undefined !== doCopy)\r\n this._doCopy = doCopy;\r\n\r\n this._explodeParts = true === args.getBoolean(\"e\");\r\n\r\n return this.run();\r\n }\r\n}\r\n"]}
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
/** @packageDocumentation
|
|
2
|
-
* @module Tools
|
|
3
|
-
*/
|
|
4
1
|
import { ColorDef } from "@itwin/core-common";
|
|
5
2
|
import { MapLayerSource, Tool } from "@itwin/core-frontend";
|
|
6
3
|
/** Base class for attaching map layer tool. */
|
|
@@ -10,6 +7,19 @@ declare class AttachMapLayerBaseTool extends Tool {
|
|
|
10
7
|
constructor(_isBackground?: boolean, _isBase?: boolean);
|
|
11
8
|
protected doAttach(source?: MapLayerSource): void;
|
|
12
9
|
}
|
|
10
|
+
/** Attach a map layer from URL base class. A layer is attached for each unique model in the selection
|
|
11
|
+
* @beta
|
|
12
|
+
*/
|
|
13
|
+
export declare class AttachModelMapLayerTool extends Tool {
|
|
14
|
+
protected _formatId: string;
|
|
15
|
+
static get minArgs(): number;
|
|
16
|
+
static get maxArgs(): number;
|
|
17
|
+
static toolId: string;
|
|
18
|
+
constructor(_formatId: string);
|
|
19
|
+
run(nameIn?: string): Promise<boolean>;
|
|
20
|
+
parseAndRun(...args: string[]): Promise<boolean>;
|
|
21
|
+
onRestartTool(): Promise<void>;
|
|
22
|
+
}
|
|
13
23
|
/** Attach a map layer from URL base class. */
|
|
14
24
|
declare class AttachMapLayerByURLBaseTool extends AttachMapLayerBaseTool {
|
|
15
25
|
protected _formatId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MapLayerTool.d.ts","sourceRoot":"","sources":["../../../src/tools/MapLayerTool.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MapLayerTool.d.ts","sourceRoot":"","sources":["../../../src/tools/MapLayerTool.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,10 +2,7 @@
|
|
|
2
2
|
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
3
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
4
|
*--------------------------------------------------------------------------------------------*/
|
|
5
|
-
|
|
6
|
-
* @module Tools
|
|
7
|
-
*/
|
|
8
|
-
import { BaseMapLayerSettings, ColorDef } from "@itwin/core-common";
|
|
5
|
+
import { BaseMapLayerSettings, ColorDef, ModelMapLayerSettings } from "@itwin/core-common";
|
|
9
6
|
import { IModelApp, MapLayerSource, MapLayerSources, MapLayerSourceStatus, NotifyMessageDetails, OutputMessagePriority, Tool, WmsUtilities } from "@itwin/core-frontend";
|
|
10
7
|
import { parseBoolean } from "./parseBoolean";
|
|
11
8
|
import { parseToggle } from "./parseToggle";
|
|
@@ -52,6 +49,40 @@ class AttachMapLayerBaseTool extends Tool {
|
|
|
52
49
|
});
|
|
53
50
|
}
|
|
54
51
|
}
|
|
52
|
+
/** Attach a map layer from URL base class. A layer is attached for each unique model in the selection
|
|
53
|
+
* @beta
|
|
54
|
+
*/
|
|
55
|
+
export class AttachModelMapLayerTool extends Tool {
|
|
56
|
+
constructor(_formatId) {
|
|
57
|
+
super();
|
|
58
|
+
this._formatId = _formatId;
|
|
59
|
+
}
|
|
60
|
+
static get minArgs() { return 0; }
|
|
61
|
+
static get maxArgs() { return 1; }
|
|
62
|
+
async run(nameIn) {
|
|
63
|
+
const vp = IModelApp.viewManager.selectedView;
|
|
64
|
+
if (!vp)
|
|
65
|
+
return false;
|
|
66
|
+
const iModel = vp.iModel;
|
|
67
|
+
const elements = await iModel.elements.getProps(iModel.selectionSet.elements);
|
|
68
|
+
const modelIds = new Set();
|
|
69
|
+
for (const element of elements)
|
|
70
|
+
modelIds.add(element.model);
|
|
71
|
+
for (const modelId of modelIds) {
|
|
72
|
+
const modelProps = await iModel.models.getProps(modelId);
|
|
73
|
+
const modelName = modelProps[0].name ? modelProps[0].name : modelId;
|
|
74
|
+
const name = nameIn ? (modelIds.size > 1 ? `${nameIn}: ${modelName}` : nameIn) : modelName;
|
|
75
|
+
vp.displayStyle.attachMapLayerSettings(ModelMapLayerSettings.fromJSON({ name, modelId }), false);
|
|
76
|
+
}
|
|
77
|
+
return true;
|
|
78
|
+
}
|
|
79
|
+
async parseAndRun(...args) {
|
|
80
|
+
return this.run(args[0]);
|
|
81
|
+
}
|
|
82
|
+
async onRestartTool() {
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
AttachModelMapLayerTool.toolId = "AttachModelMapLayerTool";
|
|
55
86
|
/** Attach a map layer from URL base class. */
|
|
56
87
|
class AttachMapLayerByURLBaseTool extends AttachMapLayerBaseTool {
|
|
57
88
|
constructor(_formatId) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MapLayerTool.js","sourceRoot":"","sources":["../../../src/tools/MapLayerTool.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module Tools\r\n */\r\n\r\nimport { BaseMapLayerSettings, ColorDef } from \"@itwin/core-common\";\r\nimport { IModelApp, MapLayerSource, MapLayerSources, MapLayerSourceStatus, NotifyMessageDetails, OutputMessagePriority, Tool, WmsUtilities } from \"@itwin/core-frontend\";\r\nimport { parseBoolean } from \"./parseBoolean\";\r\nimport { parseToggle } from \"./parseToggle\";\r\n\r\n/** Base class for attaching map layer tool. */\r\nclass AttachMapLayerBaseTool extends Tool {\r\n constructor(protected _isBackground = true, protected _isBase = false) {\r\n super();\r\n }\r\n\r\n protected doAttach(source?: MapLayerSource) {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (vp === undefined || source === undefined)\r\n return;\r\n\r\n source.validateSource().then((validation) => {\r\n if (validation.status === MapLayerSourceStatus.Valid || validation.status === MapLayerSourceStatus.RequireAuth) {\r\n if (this._isBase) {\r\n vp.displayStyle.backgroundMapBase = BaseMapLayerSettings.fromJSON({ ...source, subLayers: validation.subLayers });\r\n vp.invalidateRenderPlan();\r\n } else {\r\n const layerSettings = source.toLayerSettings(validation.subLayers);\r\n if (layerSettings) {\r\n vp.displayStyle.attachMapLayerSettings(layerSettings, !this._isBackground);\r\n }\r\n }\r\n\r\n if (validation.status === MapLayerSourceStatus.Valid) {\r\n vp.invalidateRenderPlan();\r\n const msg = IModelApp.localization.getLocalizedString(\"FrontendDevTools:tools.AttachMapLayerTool.Messages.MapLayerAttached\", { sourceName: source.name, sourceUrl: source.url });\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Info, msg));\r\n } else if (validation.status === MapLayerSourceStatus.RequireAuth) {\r\n const msg = IModelApp.localization.getLocalizedString(\"FrontendDevTools:tools.AttachMapLayerTool.Messages.MapLayerAttachedRequiresAuth\", { sourceName: source.name });\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Warning, msg));\r\n }\r\n\r\n } else {\r\n const msg = IModelApp.localization.getLocalizedString(\"FrontendDevTools:tools.AttachMapLayerTool.Messages.MapLayerValidationFailed\", { sourceUrl: source.url });\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Error, msg));\r\n }\r\n }).catch((error) => {\r\n const msg = IModelApp.localization.getLocalizedString(\"FrontendDevTools:tools.AttachMapLayerTool.Messages.MapLayerAttachError\", { error, sourceUrl: source.url });\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Error, msg));\r\n });\r\n }\r\n}\r\n/** Attach a map layer from URL base class. */\r\nclass AttachMapLayerByURLBaseTool extends AttachMapLayerBaseTool {\r\n public static override get minArgs() { return 1; }\r\n public static override get maxArgs() { return 4; }\r\n constructor(protected _formatId: string) { super(); }\r\n\r\n public override async run(url: string, name?: string, userName?: string, password?: string): Promise<boolean> {\r\n this.doAttach(MapLayerSource.fromJSON({ url, name: (name ? name : url), formatId: this._formatId, userName, password }));\r\n return true;\r\n }\r\n\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n return this.run(args[0], args[1], args[2], args[3]);\r\n }\r\n}\r\n\r\n/** This tool attaches a WMS map layer from a given URL.\r\n * @beta\r\n */\r\nexport class AttachWmsMapLayerByUrlTool extends AttachMapLayerByURLBaseTool {\r\n public static override toolId = \"AttachWmsMapLayerTool\";\r\n constructor() { super(\"WMS\"); }\r\n /** This method runs the tool, attaching a WMS map layer from a given URL.\r\n * @param args contains url, name, userName, password in array order\r\n */\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n return this.run(WmsUtilities.getBaseUrl(args[0]), args[1], args[2], args[3]);\r\n }\r\n}\r\n\r\n/** This tool attaches a WMTS map layer from a given URL.\r\n * @beta\r\n */\r\nexport class AttachWmtsMapLayerByUrlTool extends AttachMapLayerByURLBaseTool {\r\n public static override toolId = \"AttachWmtsMapLayerTool\";\r\n constructor() { super(\"WMTS\"); }\r\n /** This method runs the tool, attaching a WMTS map layer from a given URL.\r\n * @param args contains url, name, userName, password in array order\r\n */\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n return this.run(WmsUtilities.getBaseUrl(args[0]), args[1], args[2], args[3]);\r\n }\r\n}\r\n\r\n/** This tool attaches an ArcGIS map layer from a given URL.\r\n * @beta\r\n */\r\nexport class AttachArcGISMapLayerByUrlTool extends AttachMapLayerByURLBaseTool {\r\n public static override toolId = \"AttachArcGISMapLayerTool\";\r\n constructor() { super(\"ArcGIS\"); }\r\n}\r\n\r\n/** This tool attaches a map layer from a given tile URL.\r\n * @beta\r\n */\r\nexport class AttachTileURLMapLayerByUrlTool extends AttachMapLayerByURLBaseTool {\r\n public static override toolId = \"AttachTileURLMapLayerTool\";\r\n constructor() { super(\"TileURL\"); }\r\n}\r\n\r\n/** This tool add a Map Layer from a specified name (look up in MapLayerSources.json).\r\n * @beta\r\n */\r\nexport class AttachMapLayerTool extends AttachMapLayerBaseTool {\r\n public static override toolId = \"AttachMapLayerTool\";\r\n public static override get minArgs() { return 1; }\r\n public static override get maxArgs() { return 1; }\r\n\r\n /** This method runs the tool, adding a map layer from a specified name in MayLayerSources.json.\r\n * @param name the name of the map layer to add\r\n */\r\n public override async run(name: string): Promise<boolean> {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (vp === undefined)\r\n return false;\r\n\r\n MapLayerSources.create().then((sources) => {\r\n if (sources !== undefined) {\r\n const source = sources.findByName(name, this._isBase);\r\n if (source !== undefined)\r\n this.doAttach(source);\r\n }\r\n }).catch((_err) => { });\r\n\r\n return true;\r\n }\r\n\r\n /** Executes this tool's run method with args[0] containing `name`.\r\n * @see [[run]]\r\n */\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n return this.run(args[0]);\r\n }\r\n}\r\n/** This tool attaches a Overlay map layer.\r\n * @beta\r\n */\r\nexport class AttachMapOverlayTool extends AttachMapLayerTool {\r\n public static override toolId = \"AttachMapOverlayTool\";\r\n constructor() {\r\n super();\r\n this._isBackground = false;\r\n }\r\n}\r\n\r\n/** Sets map layer base tool.\r\n * @beta\r\n */\r\nexport class SetMapBaseTool extends AttachMapLayerTool {\r\n public static override toolId = \"SetMapBaseTool\";\r\n constructor() {\r\n super();\r\n this._isBase = true;\r\n }\r\n}\r\n\r\n/** Detach Map Layers Tool.\r\n * @beta\r\n */\r\nexport class DetachMapLayersTool extends Tool {\r\n public static override toolId = \"DetachMapLayersTool\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 0; }\r\n public override async parseAndRun(..._args: string[]): Promise<boolean> {\r\n return this.run();\r\n }\r\n\r\n public override async run(): Promise<boolean> {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (vp === undefined)\r\n return false;\r\n vp.displayStyle.detachMapLayerByIndex(-1, true);\r\n vp.displayStyle.detachMapLayerByIndex(-1, false);\r\n vp.invalidateRenderPlan();\r\n return true;\r\n }\r\n}\r\n\r\nfunction parseLayerIndex(args: string[]) {\r\n const layerIndex = args.length > 1 ? parseInt(args[1], 10) : 0;\r\n return isNaN(layerIndex) ? 0 : layerIndex;\r\n}\r\n\r\n/** This tool sets the visibility of the map layer.\r\n * @beta\r\n */\r\nexport class MapLayerVisibilityTool extends Tool {\r\n public static override toolId = \"SetMapLayerVisibility\";\r\n public static override get minArgs() { return 1; }\r\n public static override get maxArgs() { return 2; }\r\n\r\n /** This method runs the tool, setting the visibility of a map layer.\r\n * @param layerIndex the index of the layer to change\r\n * @param visible a boolean that should be true if the layer should be visible\r\n */\r\n public override async run(layerIndex: number, enable?: boolean): Promise<boolean> {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (undefined === vp || !vp.view.isSpatialView())\r\n return false;\r\n\r\n const mapLayer = vp.displayStyle.mapLayerAtIndex(layerIndex, false);\r\n if (undefined === mapLayer)\r\n return false;\r\n\r\n const visible = (enable === undefined) ? !mapLayer.visible : enable;\r\n\r\n vp.displayStyle.changeMapLayerProps({ visible }, layerIndex, false);\r\n vp.invalidateRenderPlan();\r\n\r\n return true;\r\n }\r\n\r\n /** Executes this tool's run method with args[0] containing `enable` and args[1] containing `layerIndex`.\r\n * @see [[run]]\r\n */\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n const enable = parseToggle(args[0]);\r\n const layerIndex = parseLayerIndex(args);\r\n if (typeof enable !== \"string\")\r\n await this.run(layerIndex, enable);\r\n\r\n return true;\r\n }\r\n}\r\n/** This tool reorders map layers.\r\n * @beta\r\n */\r\nexport class ReorderMapLayers extends Tool {\r\n public static override toolId = \"ReorderMapLayers\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 2; }\r\n /** This method runs the tool, reordering the map layers.\r\n * @param from a numeric value specifying the layer index that is being moved\r\n * @param from a numeric value specifying the layer index to move that layer to\r\n */\r\n public override async run(from: number, to: number): Promise<boolean> {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (undefined === vp || !vp.view.isSpatialView())\r\n return false;\r\n\r\n vp.displayStyle.moveMapLayerToIndex(isNaN(from) ? 0 : from, isNaN(to) ? vp.displayStyle.backgroundMapLayers.length : to, false);\r\n vp.invalidateRenderPlan();\r\n return true;\r\n }\r\n /** Executes this tool's run method with args[0] containing `from` and args[1] containing `to`.\r\n * @see [[run]]\r\n */\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n const from = parseInt(args[0], 10);\r\n const to = parseInt(args[1], 10);\r\n await this.run(from, to);\r\n return true;\r\n }\r\n\r\n}\r\n\r\n/** This tool sets the transparency of a map layer.\r\n * @beta\r\n */\r\nexport class MapLayerTransparencyTool extends Tool {\r\n public static override toolId = \"SetMapLayerTransparency\";\r\n public static override get minArgs() { return 1; }\r\n public static override get maxArgs() { return 2; }\r\n /** This method runs the tool, setting the transparency of a map layer.\r\n * @param layerIndex the index of the layer to change\r\n * @param transparency a numeric value in the range 0.0 (fully opaque) to 1.0 (fully transparent)\r\n */\r\n public override async run(layerIndex: number, transparency: number): Promise<boolean> {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (undefined === vp || !vp.view.isSpatialView())\r\n return false;\r\n\r\n vp.displayStyle.changeMapLayerProps({ transparency }, layerIndex, false);\r\n vp.invalidateRenderPlan();\r\n\r\n return true;\r\n }\r\n /** Executes this tool's run method with args[0] containing `transparency` and args[1] containing `layerIndex`.\r\n * @see [[run]]\r\n */\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n const transparency = parseFloat(args[0]);\r\n const layerIndex = parseLayerIndex(args);\r\n if (transparency >= 0 && transparency <= 1)\r\n await this.run(layerIndex, transparency);\r\n\r\n return true;\r\n }\r\n}\r\n/** This tool sets the visibility of the map sublayer.\r\n * @beta\r\n */\r\nexport class MapLayerSubLayerVisibilityTool extends Tool {\r\n public static override toolId = \"SetMapSubLayerVisibility\";\r\n public static override get minArgs() { return 1; }\r\n public static override get maxArgs() { return 2; }\r\n\r\n /** This method runs the tool, setting the visibility of a map sublayer.\r\n * @param layerIndex the index of the layer to change\r\n * @param visible a boolean that should be true if the sublayer should be visible\r\n */\r\n public override async run(layerIndex: number, visible: boolean): Promise<boolean> {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (undefined === vp || !vp.view.isSpatialView())\r\n return false;\r\n\r\n vp.displayStyle.changeMapSubLayerProps({ visible }, -1, layerIndex, false);\r\n vp.invalidateRenderPlan();\r\n\r\n return true;\r\n }\r\n\r\n /** Executes this tool's run method with args[0] containing `transparency` and args[1] containing `layerIndex`.\r\n * @see [[run]]\r\n */\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n const on = args[0] !== \"off\";\r\n const layerIndex = parseLayerIndex(args);\r\n await this.run(layerIndex, on);\r\n\r\n return true;\r\n }\r\n}\r\n\r\n/** This tool changes the viewport so it is zoomed to the range of a map layer.\r\n * @beta\r\n */\r\nexport class MapLayerZoomTool extends Tool {\r\n public static override toolId = \"MapLayerZoom\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 1; }\r\n\r\n /** This method runs the tool, changing the viewport so it is zoomed to the range of a map layer.\r\n * @param layerIndex the index of the layer whose range to zoom to\r\n */\r\n public override async run(layerIndex: number): Promise<boolean> {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (undefined === vp || !vp.view.isSpatialView())\r\n return false;\r\n\r\n vp.displayStyle.viewMapLayerRange(layerIndex, false, vp).then(() => { }).catch(() => { });\r\n\r\n return true;\r\n }\r\n\r\n /** Executes this tool's run method with args[0] containing `layerIndex`.\r\n * @see [[run]]\r\n */\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n const layerIndex = parseLayerIndex(args);\r\n await this.run(layerIndex);\r\n\r\n return true;\r\n }\r\n}\r\n\r\n/** This tool toggles whether to apply terrain heights to the map.\r\n * @beta\r\n */\r\nexport class ToggleTerrainTool extends Tool {\r\n public static override toolId = \"ToggleTerrain\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 1; }\r\n\r\n /** This method runs the tool, changing whether to apply terrain heights to the map.\r\n * @param enable whether or not to enable terrain heights on the map\r\n */\r\n public override async run(enable?: boolean): Promise<boolean> {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (undefined === vp || !vp.view.isSpatialView())\r\n return false;\r\n\r\n const applyTerrain = (enable === undefined) ? !vp.displayStyle.backgroundMapSettings.applyTerrain : enable;\r\n vp.displayStyle.changeBackgroundMapProps({ applyTerrain });\r\n vp.invalidateRenderPlan();\r\n\r\n return true;\r\n }\r\n\r\n /** Executes this tool's run method with args[0] containing `enable`.\r\n * @see [[run]]\r\n */\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n const enable = parseToggle(args[0]);\r\n if (typeof enable !== \"string\")\r\n await this.run(enable);\r\n\r\n return true;\r\n }\r\n}\r\n\r\n/** This tool changes the color of the base map.\r\n * @beta\r\n */\r\nexport class MapBaseColorTool extends Tool {\r\n public static override toolId = \"SetMapBaseColorTool\";\r\n public static override get minArgs() { return 3; }\r\n public static override get maxArgs() { return 3; }\r\n\r\n /** This method runs the tool, changing the color of the base map.\r\n * @param color the color for the base map\r\n */\r\n public override async run(color: ColorDef) {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (undefined === vp || !vp.view.isSpatialView())\r\n return false;\r\n\r\n const curTransparency = vp.displayStyle.backgroundMapBase instanceof ColorDef ? vp.displayStyle.backgroundMapBase.getTransparency() : 0;\r\n vp.displayStyle.backgroundMapBase = color.withTransparency(curTransparency);\r\n vp.invalidateRenderPlan();\r\n\r\n return true;\r\n }\r\n\r\n /** Executes this tool's run method with args[0] containing a 0 to 255 red component, args[1] containing a 0 to 255 green component, and args[2] containing a 0 to 255 blue component.\r\n * These rgb values will be used to construct the `color` parameter passed to this tool's run method.\r\n * @see [[run]]\r\n */\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n const red = parseFloat(args[0]), green = parseFloat(args[1]), blue = parseFloat(args[2]);\r\n\r\n return (isNaN(red) || red < 0 || red > 255 || isNaN(green) || green < 0 || green > 255 || isNaN(blue) || blue < 0 || blue > 255) ? false : this.run(ColorDef.from(red, green, blue));\r\n }\r\n}\r\n/** This tool changes the transparency of the base map.\r\n * @beta\r\n */\r\nexport class MapBaseTransparencyTool extends Tool {\r\n public static override toolId = \"SetMapBaseTransparencyTool\";\r\n public static override get minArgs() { return 1; }\r\n public static override get maxArgs() { return 1; }\r\n\r\n /** This method runs the tool, changing the transparency of the base map.\r\n * @param transparency a numeric value in range 0.0 to 1.0 whether 0.0 means fully opaque and 1.0 means fully transparent\r\n */\r\n public override async run(transparency: number) {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (undefined === vp || !vp.view.isSpatialView())\r\n return false;\r\n\r\n vp.displayStyle.changeBaseMapTransparency(transparency);\r\n vp.invalidateRenderPlan();\r\n\r\n return true;\r\n }\r\n\r\n /** Executes this tool's run method with args[0] containing `transparency`.\r\n * @see [[run]]\r\n */\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n const transparency = parseFloat(args[0]);\r\n\r\n return (isNaN(transparency) || transparency < 0 || transparency > 1) ? false : this.run(transparency);\r\n }\r\n}\r\n\r\n/** This tool changes the visibility of the base map.\r\n * @beta\r\n */\r\nexport class MapBaseVisibilityTool extends Tool {\r\n public static override toolId = \"SetMapBaseVisibilityTool\";\r\n public static override get minArgs() { return 1; }\r\n public static override get maxArgs() { return 1; }\r\n\r\n /** This method runs the tool, changing the visibility of the base map.\r\n * @param visible a boolean which specifies whether or not to make the base map visible\r\n */\r\n public override async run(visible: boolean) {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (undefined === vp || !vp.view.isSpatialView() || vp.displayStyle.backgroundMapBase instanceof ColorDef)\r\n return false;\r\n\r\n vp.displayStyle.backgroundMapBase = vp.displayStyle.backgroundMapBase.clone({ visible });\r\n vp.invalidateRenderPlan();\r\n\r\n return true;\r\n }\r\n\r\n /** Executes this tool's run method with args[0] containing `visible`.\r\n * @see [[run]]\r\n */\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n const visible = parseBoolean(args[0]);\r\n\r\n return (visible !== undefined ? this.run(visible) : false);\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"MapLayerTool.js","sourceRoot":"","sources":["../../../src/tools/MapLayerTool.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module Tools\r\n */\r\n\r\nimport { Id64String } from \"@itwin/core-bentley\";\r\nimport { BaseMapLayerSettings, ColorDef, ModelMapLayerSettings } from \"@itwin/core-common\";\r\nimport { IModelApp, MapLayerSource, MapLayerSources, MapLayerSourceStatus, NotifyMessageDetails, OutputMessagePriority, Tool, WmsUtilities } from \"@itwin/core-frontend\";\r\nimport { parseBoolean } from \"./parseBoolean\";\r\nimport { parseToggle } from \"./parseToggle\";\r\n\r\n/** Base class for attaching map layer tool. */\r\nclass AttachMapLayerBaseTool extends Tool {\r\n constructor(protected _isBackground = true, protected _isBase = false) {\r\n super();\r\n }\r\n\r\n protected doAttach(source?: MapLayerSource) {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (vp === undefined || source === undefined)\r\n return;\r\n\r\n source.validateSource().then((validation) => {\r\n if (validation.status === MapLayerSourceStatus.Valid || validation.status === MapLayerSourceStatus.RequireAuth) {\r\n if (this._isBase) {\r\n vp.displayStyle.backgroundMapBase = BaseMapLayerSettings.fromJSON({ ...source, subLayers: validation.subLayers });\r\n vp.invalidateRenderPlan();\r\n } else {\r\n const layerSettings = source.toLayerSettings(validation.subLayers);\r\n if (layerSettings) {\r\n vp.displayStyle.attachMapLayerSettings(layerSettings, !this._isBackground);\r\n }\r\n }\r\n\r\n if (validation.status === MapLayerSourceStatus.Valid) {\r\n vp.invalidateRenderPlan();\r\n const msg = IModelApp.localization.getLocalizedString(\"FrontendDevTools:tools.AttachMapLayerTool.Messages.MapLayerAttached\", { sourceName: source.name, sourceUrl: source.url });\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Info, msg));\r\n } else if (validation.status === MapLayerSourceStatus.RequireAuth) {\r\n const msg = IModelApp.localization.getLocalizedString(\"FrontendDevTools:tools.AttachMapLayerTool.Messages.MapLayerAttachedRequiresAuth\", { sourceName: source.name });\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Warning, msg));\r\n }\r\n\r\n } else {\r\n const msg = IModelApp.localization.getLocalizedString(\"FrontendDevTools:tools.AttachMapLayerTool.Messages.MapLayerValidationFailed\", { sourceUrl: source.url });\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Error, msg));\r\n }\r\n }).catch((error) => {\r\n const msg = IModelApp.localization.getLocalizedString(\"FrontendDevTools:tools.AttachMapLayerTool.Messages.MapLayerAttachError\", { error, sourceUrl: source.url });\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Error, msg));\r\n });\r\n }\r\n}\r\n\r\n/** Attach a map layer from URL base class. A layer is attached for each unique model in the selection\r\n * @beta\r\n */\r\nexport class AttachModelMapLayerTool extends Tool {\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 1; }\r\n public static override toolId = \"AttachModelMapLayerTool\";\r\n constructor(protected _formatId: string) { super(); }\r\n\r\n public override async run(nameIn?: string): Promise<boolean> {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (!vp)\r\n return false;\r\n\r\n const iModel = vp.iModel;\r\n const elements = await iModel.elements.getProps(iModel.selectionSet.elements);\r\n const modelIds = new Set<Id64String>();\r\n\r\n for (const element of elements)\r\n modelIds.add(element.model);\r\n\r\n for (const modelId of modelIds) {\r\n const modelProps = await iModel.models.getProps(modelId);\r\n const modelName = modelProps[0].name ? modelProps[0].name : modelId;\r\n const name = nameIn ? (modelIds.size > 1 ? `${nameIn}: ${modelName}` : nameIn) : modelName;\r\n vp.displayStyle.attachMapLayerSettings(ModelMapLayerSettings.fromJSON({ name, modelId }), false);\r\n }\r\n return true;\r\n }\r\n\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n return this.run(args[0]);\r\n }\r\n public async onRestartTool() {\r\n }\r\n}\r\n/** Attach a map layer from URL base class. */\r\nclass AttachMapLayerByURLBaseTool extends AttachMapLayerBaseTool {\r\n public static override get minArgs() { return 1; }\r\n public static override get maxArgs() { return 4; }\r\n constructor(protected _formatId: string) { super(); }\r\n\r\n public override async run(url: string, name?: string, userName?: string, password?: string): Promise<boolean> {\r\n this.doAttach(MapLayerSource.fromJSON({ url, name: (name ? name : url), formatId: this._formatId, userName, password }));\r\n return true;\r\n }\r\n\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n return this.run(args[0], args[1], args[2], args[3]);\r\n }\r\n}\r\n\r\n/** This tool attaches a WMS map layer from a given URL.\r\n * @beta\r\n */\r\nexport class AttachWmsMapLayerByUrlTool extends AttachMapLayerByURLBaseTool {\r\n public static override toolId = \"AttachWmsMapLayerTool\";\r\n constructor() { super(\"WMS\"); }\r\n /** This method runs the tool, attaching a WMS map layer from a given URL.\r\n * @param args contains url, name, userName, password in array order\r\n */\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n return this.run(WmsUtilities.getBaseUrl(args[0]), args[1], args[2], args[3]);\r\n }\r\n}\r\n\r\n/** This tool attaches a WMTS map layer from a given URL.\r\n * @beta\r\n */\r\nexport class AttachWmtsMapLayerByUrlTool extends AttachMapLayerByURLBaseTool {\r\n public static override toolId = \"AttachWmtsMapLayerTool\";\r\n constructor() { super(\"WMTS\"); }\r\n /** This method runs the tool, attaching a WMTS map layer from a given URL.\r\n * @param args contains url, name, userName, password in array order\r\n */\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n return this.run(WmsUtilities.getBaseUrl(args[0]), args[1], args[2], args[3]);\r\n }\r\n}\r\n\r\n/** This tool attaches an ArcGIS map layer from a given URL.\r\n * @beta\r\n */\r\nexport class AttachArcGISMapLayerByUrlTool extends AttachMapLayerByURLBaseTool {\r\n public static override toolId = \"AttachArcGISMapLayerTool\";\r\n constructor() { super(\"ArcGIS\"); }\r\n}\r\n\r\n/** This tool attaches a map layer from a given tile URL.\r\n * @beta\r\n */\r\nexport class AttachTileURLMapLayerByUrlTool extends AttachMapLayerByURLBaseTool {\r\n public static override toolId = \"AttachTileURLMapLayerTool\";\r\n constructor() { super(\"TileURL\"); }\r\n}\r\n\r\n/** This tool add a Map Layer from a specified name (look up in MapLayerSources.json).\r\n * @beta\r\n */\r\nexport class AttachMapLayerTool extends AttachMapLayerBaseTool {\r\n public static override toolId = \"AttachMapLayerTool\";\r\n public static override get minArgs() { return 1; }\r\n public static override get maxArgs() { return 1; }\r\n\r\n /** This method runs the tool, adding a map layer from a specified name in MayLayerSources.json.\r\n * @param name the name of the map layer to add\r\n */\r\n public override async run(name: string): Promise<boolean> {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (vp === undefined)\r\n return false;\r\n\r\n MapLayerSources.create().then((sources) => {\r\n if (sources !== undefined) {\r\n const source = sources.findByName(name, this._isBase);\r\n if (source !== undefined)\r\n this.doAttach(source);\r\n }\r\n }).catch((_err) => { });\r\n\r\n return true;\r\n }\r\n\r\n /** Executes this tool's run method with args[0] containing `name`.\r\n * @see [[run]]\r\n */\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n return this.run(args[0]);\r\n }\r\n}\r\n/** This tool attaches a Overlay map layer.\r\n * @beta\r\n */\r\nexport class AttachMapOverlayTool extends AttachMapLayerTool {\r\n public static override toolId = \"AttachMapOverlayTool\";\r\n constructor() {\r\n super();\r\n this._isBackground = false;\r\n }\r\n}\r\n\r\n/** Sets map layer base tool.\r\n * @beta\r\n */\r\nexport class SetMapBaseTool extends AttachMapLayerTool {\r\n public static override toolId = \"SetMapBaseTool\";\r\n constructor() {\r\n super();\r\n this._isBase = true;\r\n }\r\n}\r\n\r\n/** Detach Map Layers Tool.\r\n * @beta\r\n */\r\nexport class DetachMapLayersTool extends Tool {\r\n public static override toolId = \"DetachMapLayersTool\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 0; }\r\n public override async parseAndRun(..._args: string[]): Promise<boolean> {\r\n return this.run();\r\n }\r\n\r\n public override async run(): Promise<boolean> {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (vp === undefined)\r\n return false;\r\n vp.displayStyle.detachMapLayerByIndex(-1, true);\r\n vp.displayStyle.detachMapLayerByIndex(-1, false);\r\n vp.invalidateRenderPlan();\r\n return true;\r\n }\r\n}\r\n\r\nfunction parseLayerIndex(args: string[]) {\r\n const layerIndex = args.length > 1 ? parseInt(args[1], 10) : 0;\r\n return isNaN(layerIndex) ? 0 : layerIndex;\r\n}\r\n\r\n/** This tool sets the visibility of the map layer.\r\n * @beta\r\n */\r\nexport class MapLayerVisibilityTool extends Tool {\r\n public static override toolId = \"SetMapLayerVisibility\";\r\n public static override get minArgs() { return 1; }\r\n public static override get maxArgs() { return 2; }\r\n\r\n /** This method runs the tool, setting the visibility of a map layer.\r\n * @param layerIndex the index of the layer to change\r\n * @param visible a boolean that should be true if the layer should be visible\r\n */\r\n public override async run(layerIndex: number, enable?: boolean): Promise<boolean> {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (undefined === vp || !vp.view.isSpatialView())\r\n return false;\r\n\r\n const mapLayer = vp.displayStyle.mapLayerAtIndex(layerIndex, false);\r\n if (undefined === mapLayer)\r\n return false;\r\n\r\n const visible = (enable === undefined) ? !mapLayer.visible : enable;\r\n\r\n vp.displayStyle.changeMapLayerProps({ visible }, layerIndex, false);\r\n vp.invalidateRenderPlan();\r\n\r\n return true;\r\n }\r\n\r\n /** Executes this tool's run method with args[0] containing `enable` and args[1] containing `layerIndex`.\r\n * @see [[run]]\r\n */\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n const enable = parseToggle(args[0]);\r\n const layerIndex = parseLayerIndex(args);\r\n if (typeof enable !== \"string\")\r\n await this.run(layerIndex, enable);\r\n\r\n return true;\r\n }\r\n}\r\n/** This tool reorders map layers.\r\n * @beta\r\n */\r\nexport class ReorderMapLayers extends Tool {\r\n public static override toolId = \"ReorderMapLayers\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 2; }\r\n /** This method runs the tool, reordering the map layers.\r\n * @param from a numeric value specifying the layer index that is being moved\r\n * @param from a numeric value specifying the layer index to move that layer to\r\n */\r\n public override async run(from: number, to: number): Promise<boolean> {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (undefined === vp || !vp.view.isSpatialView())\r\n return false;\r\n\r\n vp.displayStyle.moveMapLayerToIndex(isNaN(from) ? 0 : from, isNaN(to) ? vp.displayStyle.backgroundMapLayers.length : to, false);\r\n vp.invalidateRenderPlan();\r\n return true;\r\n }\r\n /** Executes this tool's run method with args[0] containing `from` and args[1] containing `to`.\r\n * @see [[run]]\r\n */\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n const from = parseInt(args[0], 10);\r\n const to = parseInt(args[1], 10);\r\n await this.run(from, to);\r\n return true;\r\n }\r\n\r\n}\r\n\r\n/** This tool sets the transparency of a map layer.\r\n * @beta\r\n */\r\nexport class MapLayerTransparencyTool extends Tool {\r\n public static override toolId = \"SetMapLayerTransparency\";\r\n public static override get minArgs() { return 1; }\r\n public static override get maxArgs() { return 2; }\r\n /** This method runs the tool, setting the transparency of a map layer.\r\n * @param layerIndex the index of the layer to change\r\n * @param transparency a numeric value in the range 0.0 (fully opaque) to 1.0 (fully transparent)\r\n */\r\n public override async run(layerIndex: number, transparency: number): Promise<boolean> {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (undefined === vp || !vp.view.isSpatialView())\r\n return false;\r\n\r\n vp.displayStyle.changeMapLayerProps({ transparency }, layerIndex, false);\r\n vp.invalidateRenderPlan();\r\n\r\n return true;\r\n }\r\n /** Executes this tool's run method with args[0] containing `transparency` and args[1] containing `layerIndex`.\r\n * @see [[run]]\r\n */\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n const transparency = parseFloat(args[0]);\r\n const layerIndex = parseLayerIndex(args);\r\n if (transparency >= 0 && transparency <= 1)\r\n await this.run(layerIndex, transparency);\r\n\r\n return true;\r\n }\r\n}\r\n/** This tool sets the visibility of the map sublayer.\r\n * @beta\r\n */\r\nexport class MapLayerSubLayerVisibilityTool extends Tool {\r\n public static override toolId = \"SetMapSubLayerVisibility\";\r\n public static override get minArgs() { return 1; }\r\n public static override get maxArgs() { return 2; }\r\n\r\n /** This method runs the tool, setting the visibility of a map sublayer.\r\n * @param layerIndex the index of the layer to change\r\n * @param visible a boolean that should be true if the sublayer should be visible\r\n */\r\n public override async run(layerIndex: number, visible: boolean): Promise<boolean> {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (undefined === vp || !vp.view.isSpatialView())\r\n return false;\r\n\r\n vp.displayStyle.changeMapSubLayerProps({ visible }, -1, layerIndex, false);\r\n vp.invalidateRenderPlan();\r\n\r\n return true;\r\n }\r\n\r\n /** Executes this tool's run method with args[0] containing `transparency` and args[1] containing `layerIndex`.\r\n * @see [[run]]\r\n */\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n const on = args[0] !== \"off\";\r\n const layerIndex = parseLayerIndex(args);\r\n await this.run(layerIndex, on);\r\n\r\n return true;\r\n }\r\n}\r\n\r\n/** This tool changes the viewport so it is zoomed to the range of a map layer.\r\n * @beta\r\n */\r\nexport class MapLayerZoomTool extends Tool {\r\n public static override toolId = \"MapLayerZoom\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 1; }\r\n\r\n /** This method runs the tool, changing the viewport so it is zoomed to the range of a map layer.\r\n * @param layerIndex the index of the layer whose range to zoom to\r\n */\r\n public override async run(layerIndex: number): Promise<boolean> {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (undefined === vp || !vp.view.isSpatialView())\r\n return false;\r\n\r\n vp.displayStyle.viewMapLayerRange(layerIndex, false, vp).then(() => { }).catch(() => { });\r\n\r\n return true;\r\n }\r\n\r\n /** Executes this tool's run method with args[0] containing `layerIndex`.\r\n * @see [[run]]\r\n */\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n const layerIndex = parseLayerIndex(args);\r\n await this.run(layerIndex);\r\n\r\n return true;\r\n }\r\n}\r\n\r\n/** This tool toggles whether to apply terrain heights to the map.\r\n * @beta\r\n */\r\nexport class ToggleTerrainTool extends Tool {\r\n public static override toolId = \"ToggleTerrain\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 1; }\r\n\r\n /** This method runs the tool, changing whether to apply terrain heights to the map.\r\n * @param enable whether or not to enable terrain heights on the map\r\n */\r\n public override async run(enable?: boolean): Promise<boolean> {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (undefined === vp || !vp.view.isSpatialView())\r\n return false;\r\n\r\n const applyTerrain = (enable === undefined) ? !vp.displayStyle.backgroundMapSettings.applyTerrain : enable;\r\n vp.displayStyle.changeBackgroundMapProps({ applyTerrain });\r\n vp.invalidateRenderPlan();\r\n\r\n return true;\r\n }\r\n\r\n /** Executes this tool's run method with args[0] containing `enable`.\r\n * @see [[run]]\r\n */\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n const enable = parseToggle(args[0]);\r\n if (typeof enable !== \"string\")\r\n await this.run(enable);\r\n\r\n return true;\r\n }\r\n}\r\n\r\n/** This tool changes the color of the base map.\r\n * @beta\r\n */\r\nexport class MapBaseColorTool extends Tool {\r\n public static override toolId = \"SetMapBaseColorTool\";\r\n public static override get minArgs() { return 3; }\r\n public static override get maxArgs() { return 3; }\r\n\r\n /** This method runs the tool, changing the color of the base map.\r\n * @param color the color for the base map\r\n */\r\n public override async run(color: ColorDef) {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (undefined === vp || !vp.view.isSpatialView())\r\n return false;\r\n\r\n const curTransparency = vp.displayStyle.backgroundMapBase instanceof ColorDef ? vp.displayStyle.backgroundMapBase.getTransparency() : 0;\r\n vp.displayStyle.backgroundMapBase = color.withTransparency(curTransparency);\r\n vp.invalidateRenderPlan();\r\n\r\n return true;\r\n }\r\n\r\n /** Executes this tool's run method with args[0] containing a 0 to 255 red component, args[1] containing a 0 to 255 green component, and args[2] containing a 0 to 255 blue component.\r\n * These rgb values will be used to construct the `color` parameter passed to this tool's run method.\r\n * @see [[run]]\r\n */\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n const red = parseFloat(args[0]), green = parseFloat(args[1]), blue = parseFloat(args[2]);\r\n\r\n return (isNaN(red) || red < 0 || red > 255 || isNaN(green) || green < 0 || green > 255 || isNaN(blue) || blue < 0 || blue > 255) ? false : this.run(ColorDef.from(red, green, blue));\r\n }\r\n}\r\n/** This tool changes the transparency of the base map.\r\n * @beta\r\n */\r\nexport class MapBaseTransparencyTool extends Tool {\r\n public static override toolId = \"SetMapBaseTransparencyTool\";\r\n public static override get minArgs() { return 1; }\r\n public static override get maxArgs() { return 1; }\r\n\r\n /** This method runs the tool, changing the transparency of the base map.\r\n * @param transparency a numeric value in range 0.0 to 1.0 whether 0.0 means fully opaque and 1.0 means fully transparent\r\n */\r\n public override async run(transparency: number) {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (undefined === vp || !vp.view.isSpatialView())\r\n return false;\r\n\r\n vp.displayStyle.changeBaseMapTransparency(transparency);\r\n vp.invalidateRenderPlan();\r\n\r\n return true;\r\n }\r\n\r\n /** Executes this tool's run method with args[0] containing `transparency`.\r\n * @see [[run]]\r\n */\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n const transparency = parseFloat(args[0]);\r\n\r\n return (isNaN(transparency) || transparency < 0 || transparency > 1) ? false : this.run(transparency);\r\n }\r\n}\r\n\r\n/** This tool changes the visibility of the base map.\r\n * @beta\r\n */\r\nexport class MapBaseVisibilityTool extends Tool {\r\n public static override toolId = \"SetMapBaseVisibilityTool\";\r\n public static override get minArgs() { return 1; }\r\n public static override get maxArgs() { return 1; }\r\n\r\n /** This method runs the tool, changing the visibility of the base map.\r\n * @param visible a boolean which specifies whether or not to make the base map visible\r\n */\r\n public override async run(visible: boolean) {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (undefined === vp || !vp.view.isSpatialView() || vp.displayStyle.backgroundMapBase instanceof ColorDef)\r\n return false;\r\n\r\n vp.displayStyle.backgroundMapBase = vp.displayStyle.backgroundMapBase.clone({ visible });\r\n vp.invalidateRenderPlan();\r\n\r\n return true;\r\n }\r\n\r\n /** Executes this tool's run method with args[0] containing `visible`.\r\n * @see [[run]]\r\n */\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n const visible = parseBoolean(args[0]);\r\n\r\n return (visible !== undefined ? this.run(visible) : false);\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RealityModelTools.d.ts","sourceRoot":"","sources":["../../../src/tools/RealityModelTools.ts"],"names":[],"mappings":"AAKA;;GAEG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"RealityModelTools.d.ts","sourceRoot":"","sources":["../../../src/tools/RealityModelTools.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* @module Tools
|
|
7
7
|
*/
|
|
8
8
|
import { FeatureAppearance } from "@itwin/core-common";
|
|
9
|
-
import { getCesiumAssetUrl, IModelApp, NotifyMessageDetails, OutputMessagePriority, Tool } from "@itwin/core-frontend";
|
|
9
|
+
import { getCesiumAssetUrl, IModelApp, NotifyMessageDetails, OutputMessagePriority, RealityDataSource, Tool } from "@itwin/core-frontend";
|
|
10
10
|
import { copyStringToClipboard } from "../ClipboardUtilities";
|
|
11
11
|
import { parseBoolean } from "./parseBoolean";
|
|
12
12
|
import { parseToggle } from "./parseToggle";
|
|
@@ -157,14 +157,20 @@ export class DetachRealityModelTool extends Tool {
|
|
|
157
157
|
const vp = IModelApp.viewManager.selectedView;
|
|
158
158
|
if (vp === undefined)
|
|
159
159
|
return false;
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
return
|
|
163
|
-
|
|
164
|
-
|
|
160
|
+
if (index < 0) {
|
|
161
|
+
vp.displayStyle.settings.contextRealityModels.models.forEach((model) => vp.displayStyle.settings.contextRealityModels.delete(model));
|
|
162
|
+
return true;
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
const model = vp.displayStyle.settings.contextRealityModels.models[index];
|
|
166
|
+
if (!model)
|
|
167
|
+
return false;
|
|
168
|
+
vp.displayStyle.settings.contextRealityModels.delete(model);
|
|
169
|
+
return true;
|
|
170
|
+
}
|
|
165
171
|
}
|
|
166
172
|
async parseAndRun(...args) {
|
|
167
|
-
return this.run(args.length >
|
|
173
|
+
return this.run(args.length > 0 ? parseInt(args[0], 10) : -1);
|
|
168
174
|
}
|
|
169
175
|
}
|
|
170
176
|
DetachRealityModelTool.toolId = "ViewportDetachRealityModel";
|
|
@@ -219,7 +225,9 @@ export class AttachCesiumAssetTool extends Tool {
|
|
|
219
225
|
const vp = IModelApp.viewManager.selectedView;
|
|
220
226
|
if (vp === undefined)
|
|
221
227
|
return false;
|
|
222
|
-
const
|
|
228
|
+
const accessKey = requestKey ? requestKey : IModelApp.tileAdmin.cesiumIonKey ? IModelApp.tileAdmin.cesiumIonKey : "";
|
|
229
|
+
const rdSourceKey = RealityDataSource.createCesiumIonAssetKey(assetId, accessKey);
|
|
230
|
+
const props = { rdSourceKey, tilesetUrl: getCesiumAssetUrl(assetId, accessKey) };
|
|
223
231
|
vp.displayStyle.attachRealityModel(props);
|
|
224
232
|
IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Info, `Cesium Asset #${assetId} attached`));
|
|
225
233
|
return true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RealityModelTools.js","sourceRoot":"","sources":["../../../src/tools/RealityModelTools.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module Tools\r\n */\r\n\r\nimport { FeatureAppearance, FeatureAppearanceProps, RgbColorProps } from \"@itwin/core-common\";\r\nimport { getCesiumAssetUrl, IModelApp, NotifyMessageDetails, OutputMessagePriority, Tool, Viewport } from \"@itwin/core-frontend\";\r\nimport { copyStringToClipboard } from \"../ClipboardUtilities\";\r\nimport { parseBoolean } from \"./parseBoolean\";\r\nimport { parseToggle } from \"./parseToggle\";\r\n\r\n/** This tool attaches a specified reality model.\r\n * @beta\r\n */\r\nexport class AttachRealityModelTool extends Tool {\r\n public static override toolId = \"AttachRealityModelTool\";\r\n public static override get minArgs() { return 1; }\r\n public static override get maxArgs() { return 1; }\r\n\r\n /** This method runs the tool, attaching a specified reality model.\r\n * @param data a [[ContextRealityModelProps]] JSON representation\r\n */\r\n public override async run(data: string): Promise<boolean> {\r\n const props = JSON.parse(data);\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (vp === undefined)\r\n return false;\r\n\r\n if (props === undefined || props.tilesetUrl === undefined) {\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Error, `Properties ${props} are not valid`));\r\n }\r\n\r\n vp.displayStyle.attachRealityModel(props);\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Info, `Reality Model ${props.tilesetUrl} attached`));\r\n\r\n return true;\r\n }\r\n\r\n /** Executes this tool's run method with args[0] containing `data`.\r\n * @see [[run]]\r\n */\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n return this.run(args[0]);\r\n }\r\n}\r\n\r\n/** This tool saves a reality model's JSON representation to the system clipboard.\r\n * @beta */\r\nexport class SaveRealityModelTool extends Tool {\r\n public static override toolId = \"SaveRealityModelTool\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 1; }\r\n\r\n /** This method runs the tool, saving a reality model's JSON representation to the system clipboard.\r\n * @param name the name of the reality model to copy; if undefined, copy the last found reality model\r\n */\r\n public override async run(name: string | undefined): Promise<boolean> {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (vp === undefined)\r\n return false;\r\n vp.displayStyle.forEachRealityModel((realityModel) => {\r\n if (name === undefined || realityModel.name === name) {\r\n copyStringToClipboard(JSON.stringify(realityModel.toJSON()));\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Info, `Reality Model ${realityModel.name} copied to clipboard`));\r\n }\r\n });\r\n\r\n return true;\r\n }\r\n\r\n /** Executes this tool's run method with args[0] containing `name`.\r\n * @see [[run]]\r\n */\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n return this.run(args.length > 0 ? args[0] : undefined);\r\n }\r\n}\r\n\r\nfunction changeRealityModelAppearanceOverrides(vp: Viewport, overrides: FeatureAppearanceProps, index: number): boolean {\r\n if (index < 0){\r\n for (const model of vp.displayStyle.settings.contextRealityModels.models)\r\n model.appearanceOverrides = model.appearanceOverrides ? model.appearanceOverrides.clone(overrides) : FeatureAppearance.fromJSON(overrides);\r\n\r\n return vp.displayStyle.settings.contextRealityModels.models.length > 0;\r\n } else {\r\n const model = vp.displayStyle.settings.contextRealityModels.models[index];\r\n if (!model)\r\n return false;\r\n\r\n model.appearanceOverrides = model.appearanceOverrides ? model.appearanceOverrides.clone(overrides) : FeatureAppearance.fromJSON(overrides);\r\n return true;\r\n }\r\n}\r\n\r\nfunction appearanceChangedString(index: number) {\r\n return index < 0 ? `All Reality Models` : `Reality Model at Index: ${index}`;\r\n}\r\n\r\n/** Set reality model appearance override for transparency in display style.\r\n * @beta\r\n */\r\nexport class SetRealityModelTransparencyTool extends Tool {\r\n public static override toolId = \"SetRealityModelTransparencyTool\";\r\n public static override get minArgs() { return 1; }\r\n public static override get maxArgs() { return 2; }\r\n\r\n public override async run(transparency: number, index: number): Promise<boolean> {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (vp === undefined)\r\n return false;\r\n\r\n const changed = changeRealityModelAppearanceOverrides(vp, { transparency }, index);\r\n\r\n if (changed)\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Info,`${appearanceChangedString(index)} set to transparency: ${transparency}`));\r\n\r\n return true;\r\n }\r\n\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n return this.run(parseFloat(args[0]), args.length > 1 ? parseInt(args[1], 10) : -1);\r\n }\r\n}\r\n/** Set reality model appearance override for locatable in display style.\r\n * @beta\r\n */\r\nexport class SetRealityModelLocateTool extends Tool {\r\n public static override toolId = \"SetRealityModelLocateTool\";\r\n public static override get minArgs() { return 1; }\r\n public static override get maxArgs() { return 2; }\r\n\r\n public override async run(locate: boolean, index: number): Promise<boolean> {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (vp === undefined)\r\n return false;\r\n\r\n const nonLocatable = locate ? undefined : true;\r\n const changed = changeRealityModelAppearanceOverrides(vp, { nonLocatable }, index);\r\n\r\n if (changed)\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Info,`${appearanceChangedString(index)} set to locate: ${locate}`));\r\n\r\n return true;\r\n }\r\n\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n const locate = parseBoolean(args[0]);\r\n return locate === undefined ? false : this.run(locate, args.length > 1 ? parseInt(args[1], 10) : -1);\r\n }\r\n}\r\n\r\n/** Set reality model appearance override for emphasized in display style.\r\n * @beta\r\n */\r\nexport class SetRealityModelEmphasizedTool extends Tool {\r\n public static override toolId = \"SetRealityModelEmphasizedTool\";\r\n public static override get minArgs() { return 1; }\r\n public static override get maxArgs() { return 2; }\r\n\r\n public override async run(emphasized: true | undefined, index: number): Promise<boolean> {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (vp === undefined)\r\n return false;\r\n\r\n const changed = changeRealityModelAppearanceOverrides(vp, { emphasized }, index);\r\n\r\n if (changed)\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Info,`${appearanceChangedString(index)} set to emphasized: ${emphasized}`));\r\n\r\n return true;\r\n }\r\n\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n const emphasized = parseBoolean(args[0]);\r\n return emphasized === undefined ? false : this.run(emphasized ? true : undefined, args.length > 1 ? parseInt(args[1], 10) : -1);\r\n }\r\n}\r\n\r\n/** Detach reality model from display style.\r\n * @beta\r\n */\r\nexport class DetachRealityModelTool extends Tool {\r\n public static override toolId = \"ViewportDetachRealityModel\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 1; }\r\n\r\n public override async run(index: number): Promise<boolean> {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (vp === undefined)\r\n return false;\r\n\r\n const model = vp.displayStyle.settings.contextRealityModels.models[index];\r\n if (!model)\r\n return false;\r\n\r\n vp.displayStyle.settings.contextRealityModels.delete(model);\r\n return true;\r\n }\r\n\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n return this.run(args.length > 1 ? parseInt(args[0], 10) : -1);\r\n }\r\n}\r\n\r\n/** Set reality model appearance override for color in display style.\r\n * @beta\r\n */\r\nexport class SetRealityModelColorTool extends Tool {\r\n public static override toolId = \"SetRealityModelColorTool\";\r\n public static override get minArgs() { return 3; }\r\n public static override get maxArgs() { return 4; }\r\n\r\n public override async run(rgb: RgbColorProps, index: number): Promise<boolean> {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (vp === undefined)\r\n return false;\r\n\r\n const changed = changeRealityModelAppearanceOverrides(vp, { rgb }, index);\r\n\r\n if (changed)\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Info,`${appearanceChangedString(index)} set to RGB color: (${rgb.r}, ${rgb.g}, ${rgb.b})`));\r\n\r\n return true;\r\n }\r\n\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n return this.run({ r: parseFloat(args[0]), g: parseFloat(args[1]), b: parseFloat(args[2]) }, args.length > 3 ? parseInt(args[3], 10) : -1);\r\n }\r\n}\r\n\r\n/** Clear reality model appearance override in display style.\r\n * @beta\r\n */\r\nexport class ClearRealityModelAppearanceOverrides extends Tool {\r\n public static override toolId = \"ClearRealityModelAppearanceOverrides\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 1; }\r\n\r\n public override async run(index: number): Promise<boolean> {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (!vp)\r\n return false;\r\n\r\n const model = vp.displayStyle.settings.contextRealityModels.models[index];\r\n if (!model)\r\n return false;\r\n\r\n model.appearanceOverrides = undefined;\r\n return true;\r\n }\r\n\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n return this.run(args[0] === undefined ? -1 : parseInt(args[0], 10));\r\n }\r\n}\r\n\r\n/** Attach a cesium asset from the Ion ID and key.\r\n * @beta\r\n */\r\nexport class AttachCesiumAssetTool extends Tool {\r\n public static override toolId = \"AttachCesiumAssetTool\";\r\n public static override get minArgs() { return 1; }\r\n public static override get maxArgs() { return 2; }\r\n\r\n public override async run(assetId: number, requestKey: string): Promise<boolean> {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (vp === undefined)\r\n return false;\r\n\r\n const props = { tilesetUrl: getCesiumAssetUrl(assetId, requestKey) };\r\n vp.displayStyle.attachRealityModel(props);\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Info, `Cesium Asset #${assetId} attached`));\r\n return true;\r\n }\r\n\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n const assetId = parseInt(args[0], 10);\r\n return Number.isNaN(assetId) ? false : this.run(assetId, args[1]);\r\n }\r\n}\r\n\r\n/** Turn on/off display of OpenStreetMap buildings\r\n * @beta\r\n */\r\nexport class ToggleOSMBuildingDisplay extends Tool {\r\n public static override toolId = \"SetBuildingDisplay\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 2; }\r\n\r\n public override async run(onOff?: boolean, transparency?: number): Promise<boolean> {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (vp === undefined)\r\n return false;\r\n\r\n if (onOff === undefined)\r\n onOff = undefined === vp.displayStyle.getOSMBuildingRealityModel(); // Toggle current state.\r\n\r\n const appearanceOverrides = (transparency !== undefined && transparency > 0 && transparency < 1) ? FeatureAppearance.fromJSON({ transparency }) : undefined;\r\n\r\n vp.displayStyle.setOSMBuildingDisplay({ onOff, appearanceOverrides });\r\n return true;\r\n }\r\n\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n const toggle = parseToggle(args[0]);\r\n const transparency = args.length > 0 ? parseFloat(args[1]) : undefined;\r\n return typeof toggle === \"string\" ? false : this.run(toggle, transparency);\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"RealityModelTools.js","sourceRoot":"","sources":["../../../src/tools/RealityModelTools.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module Tools\r\n */\r\n\r\nimport { ContextRealityModelProps, FeatureAppearance, FeatureAppearanceProps, RgbColorProps } from \"@itwin/core-common\";\r\nimport { getCesiumAssetUrl, IModelApp, NotifyMessageDetails, OutputMessagePriority, RealityDataSource, Tool, Viewport } from \"@itwin/core-frontend\";\r\nimport { copyStringToClipboard } from \"../ClipboardUtilities\";\r\nimport { parseBoolean } from \"./parseBoolean\";\r\nimport { parseToggle } from \"./parseToggle\";\r\n\r\n/** This tool attaches a specified reality model.\r\n * @beta\r\n */\r\nexport class AttachRealityModelTool extends Tool {\r\n public static override toolId = \"AttachRealityModelTool\";\r\n public static override get minArgs() { return 1; }\r\n public static override get maxArgs() { return 1; }\r\n\r\n /** This method runs the tool, attaching a specified reality model.\r\n * @param data a [[ContextRealityModelProps]] JSON representation\r\n */\r\n public override async run(data: string): Promise<boolean> {\r\n const props = JSON.parse(data);\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (vp === undefined)\r\n return false;\r\n\r\n if (props === undefined || props.tilesetUrl === undefined) {\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Error, `Properties ${props} are not valid`));\r\n }\r\n\r\n vp.displayStyle.attachRealityModel(props);\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Info, `Reality Model ${props.tilesetUrl} attached`));\r\n\r\n return true;\r\n }\r\n\r\n /** Executes this tool's run method with args[0] containing `data`.\r\n * @see [[run]]\r\n */\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n return this.run(args[0]);\r\n }\r\n}\r\n\r\n/** This tool saves a reality model's JSON representation to the system clipboard.\r\n * @beta */\r\nexport class SaveRealityModelTool extends Tool {\r\n public static override toolId = \"SaveRealityModelTool\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 1; }\r\n\r\n /** This method runs the tool, saving a reality model's JSON representation to the system clipboard.\r\n * @param name the name of the reality model to copy; if undefined, copy the last found reality model\r\n */\r\n public override async run(name: string | undefined): Promise<boolean> {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (vp === undefined)\r\n return false;\r\n vp.displayStyle.forEachRealityModel((realityModel) => {\r\n if (name === undefined || realityModel.name === name) {\r\n copyStringToClipboard(JSON.stringify(realityModel.toJSON()));\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Info, `Reality Model ${realityModel.name} copied to clipboard`));\r\n }\r\n });\r\n\r\n return true;\r\n }\r\n\r\n /** Executes this tool's run method with args[0] containing `name`.\r\n * @see [[run]]\r\n */\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n return this.run(args.length > 0 ? args[0] : undefined);\r\n }\r\n}\r\n\r\nfunction changeRealityModelAppearanceOverrides(vp: Viewport, overrides: FeatureAppearanceProps, index: number): boolean {\r\n if (index < 0) {\r\n for (const model of vp.displayStyle.settings.contextRealityModels.models)\r\n model.appearanceOverrides = model.appearanceOverrides ? model.appearanceOverrides.clone(overrides) : FeatureAppearance.fromJSON(overrides);\r\n\r\n return vp.displayStyle.settings.contextRealityModels.models.length > 0;\r\n } else {\r\n const model = vp.displayStyle.settings.contextRealityModels.models[index];\r\n if (!model)\r\n return false;\r\n\r\n model.appearanceOverrides = model.appearanceOverrides ? model.appearanceOverrides.clone(overrides) : FeatureAppearance.fromJSON(overrides);\r\n return true;\r\n }\r\n}\r\n\r\nfunction appearanceChangedString(index: number) {\r\n return index < 0 ? `All Reality Models` : `Reality Model at Index: ${index}`;\r\n}\r\n\r\n/** Set reality model appearance override for transparency in display style.\r\n * @beta\r\n */\r\nexport class SetRealityModelTransparencyTool extends Tool {\r\n public static override toolId = \"SetRealityModelTransparencyTool\";\r\n public static override get minArgs() { return 1; }\r\n public static override get maxArgs() { return 2; }\r\n\r\n public override async run(transparency: number, index: number): Promise<boolean> {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (vp === undefined)\r\n return false;\r\n\r\n const changed = changeRealityModelAppearanceOverrides(vp, { transparency }, index);\r\n\r\n if (changed)\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Info, `${appearanceChangedString(index)} set to transparency: ${transparency}`));\r\n\r\n return true;\r\n }\r\n\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n return this.run(parseFloat(args[0]), args.length > 1 ? parseInt(args[1], 10) : -1);\r\n }\r\n}\r\n/** Set reality model appearance override for locatable in display style.\r\n * @beta\r\n */\r\nexport class SetRealityModelLocateTool extends Tool {\r\n public static override toolId = \"SetRealityModelLocateTool\";\r\n public static override get minArgs() { return 1; }\r\n public static override get maxArgs() { return 2; }\r\n\r\n public override async run(locate: boolean, index: number): Promise<boolean> {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (vp === undefined)\r\n return false;\r\n\r\n const nonLocatable = locate ? undefined : true;\r\n const changed = changeRealityModelAppearanceOverrides(vp, { nonLocatable }, index);\r\n\r\n if (changed)\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Info, `${appearanceChangedString(index)} set to locate: ${locate}`));\r\n\r\n return true;\r\n }\r\n\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n const locate = parseBoolean(args[0]);\r\n return locate === undefined ? false : this.run(locate, args.length > 1 ? parseInt(args[1], 10) : -1);\r\n }\r\n}\r\n\r\n/** Set reality model appearance override for emphasized in display style.\r\n * @beta\r\n */\r\nexport class SetRealityModelEmphasizedTool extends Tool {\r\n public static override toolId = \"SetRealityModelEmphasizedTool\";\r\n public static override get minArgs() { return 1; }\r\n public static override get maxArgs() { return 2; }\r\n\r\n public override async run(emphasized: true | undefined, index: number): Promise<boolean> {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (vp === undefined)\r\n return false;\r\n\r\n const changed = changeRealityModelAppearanceOverrides(vp, { emphasized }, index);\r\n\r\n if (changed)\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Info, `${appearanceChangedString(index)} set to emphasized: ${emphasized}`));\r\n\r\n return true;\r\n }\r\n\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n const emphasized = parseBoolean(args[0]);\r\n return emphasized === undefined ? false : this.run(emphasized ? true : undefined, args.length > 1 ? parseInt(args[1], 10) : -1);\r\n }\r\n}\r\n\r\n/** Detach reality model from display style.\r\n * @beta\r\n */\r\nexport class DetachRealityModelTool extends Tool {\r\n public static override toolId = \"ViewportDetachRealityModel\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 1; }\r\n\r\n public override async run(index: number): Promise<boolean> {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (vp === undefined)\r\n return false;\r\n\r\n if (index < 0) {\r\n vp.displayStyle.settings.contextRealityModels.models.forEach((model) => vp.displayStyle.settings.contextRealityModels.delete(model));\r\n return true;\r\n } else {\r\n const model = vp.displayStyle.settings.contextRealityModels.models[index];\r\n if (!model)\r\n return false;\r\n\r\n vp.displayStyle.settings.contextRealityModels.delete(model);\r\n return true;\r\n }\r\n }\r\n\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n return this.run(args.length > 0 ? parseInt(args[0], 10) : -1);\r\n }\r\n}\r\n\r\n/** Set reality model appearance override for color in display style.\r\n * @beta\r\n */\r\nexport class SetRealityModelColorTool extends Tool {\r\n public static override toolId = \"SetRealityModelColorTool\";\r\n public static override get minArgs() { return 3; }\r\n public static override get maxArgs() { return 4; }\r\n\r\n public override async run(rgb: RgbColorProps, index: number): Promise<boolean> {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (vp === undefined)\r\n return false;\r\n\r\n const changed = changeRealityModelAppearanceOverrides(vp, { rgb }, index);\r\n\r\n if (changed)\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Info, `${appearanceChangedString(index)} set to RGB color: (${rgb.r}, ${rgb.g}, ${rgb.b})`));\r\n\r\n return true;\r\n }\r\n\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n return this.run({ r: parseFloat(args[0]), g: parseFloat(args[1]), b: parseFloat(args[2]) }, args.length > 3 ? parseInt(args[3], 10) : -1);\r\n }\r\n}\r\n\r\n/** Clear reality model appearance override in display style.\r\n * @beta\r\n */\r\nexport class ClearRealityModelAppearanceOverrides extends Tool {\r\n public static override toolId = \"ClearRealityModelAppearanceOverrides\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 1; }\r\n\r\n public override async run(index: number): Promise<boolean> {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (!vp)\r\n return false;\r\n\r\n const model = vp.displayStyle.settings.contextRealityModels.models[index];\r\n if (!model)\r\n return false;\r\n\r\n model.appearanceOverrides = undefined;\r\n return true;\r\n }\r\n\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n return this.run(args[0] === undefined ? -1 : parseInt(args[0], 10));\r\n }\r\n}\r\n\r\n/** Attach a cesium asset from the Ion ID and key.\r\n * @beta\r\n */\r\nexport class AttachCesiumAssetTool extends Tool {\r\n public static override toolId = \"AttachCesiumAssetTool\";\r\n public static override get minArgs() { return 1; }\r\n public static override get maxArgs() { return 2; }\r\n\r\n public override async run(assetId: number, requestKey: string): Promise<boolean> {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (vp === undefined)\r\n return false;\r\n\r\n const accessKey = requestKey ? requestKey : IModelApp.tileAdmin.cesiumIonKey ? IModelApp.tileAdmin.cesiumIonKey : \"\";\r\n const rdSourceKey = RealityDataSource.createCesiumIonAssetKey(assetId, accessKey);\r\n const props: ContextRealityModelProps = { rdSourceKey, tilesetUrl: getCesiumAssetUrl(assetId, accessKey) };\r\n\r\n vp.displayStyle.attachRealityModel(props);\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Info, `Cesium Asset #${assetId} attached`));\r\n return true;\r\n }\r\n\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n const assetId = parseInt(args[0], 10);\r\n return Number.isNaN(assetId) ? false : this.run(assetId, args[1]);\r\n }\r\n}\r\n\r\n/** Turn on/off display of OpenStreetMap buildings\r\n * @beta\r\n */\r\nexport class ToggleOSMBuildingDisplay extends Tool {\r\n public static override toolId = \"SetBuildingDisplay\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 2; }\r\n\r\n public override async run(onOff?: boolean, transparency?: number): Promise<boolean> {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (vp === undefined)\r\n return false;\r\n\r\n if (onOff === undefined)\r\n onOff = undefined === vp.displayStyle.getOSMBuildingRealityModel(); // Toggle current state.\r\n\r\n const appearanceOverrides = (transparency !== undefined && transparency > 0 && transparency < 1) ? FeatureAppearance.fromJSON({ transparency }) : undefined;\r\n\r\n vp.displayStyle.setOSMBuildingDisplay({ onOff, appearanceOverrides });\r\n return true;\r\n }\r\n\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n const toggle = parseToggle(args[0]);\r\n const transparency = args.length > 0 ? parseFloat(args[1]) : undefined;\r\n return typeof toggle === \"string\" ? false : this.run(toggle, transparency);\r\n }\r\n}\r\n"]}
|
|
@@ -22,7 +22,7 @@ class TileRequestDecoration {
|
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
24
|
decorate(context) {
|
|
25
|
-
const tiles = IModelApp.tileAdmin.
|
|
25
|
+
const tiles = IModelApp.tileAdmin.getRequestsForUser(this._targetVp);
|
|
26
26
|
if (undefined === tiles)
|
|
27
27
|
return;
|
|
28
28
|
const map = new Map();
|