@itwin/frontend-devtools 3.0.0-dev.72

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.
Files changed (244) hide show
  1. package/CHANGELOG.md +723 -0
  2. package/LICENSE.md +9 -0
  3. package/README.md +321 -0
  4. package/lib/ClipboardUtilities.d.ts +9 -0
  5. package/lib/ClipboardUtilities.d.ts.map +1 -0
  6. package/lib/ClipboardUtilities.js +27 -0
  7. package/lib/ClipboardUtilities.js.map +1 -0
  8. package/lib/FrontEndDevTools.d.ts +19 -0
  9. package/lib/FrontEndDevTools.d.ts.map +1 -0
  10. package/lib/FrontEndDevTools.js +203 -0
  11. package/lib/FrontEndDevTools.js.map +1 -0
  12. package/lib/effects/Convolution.d.ts +69 -0
  13. package/lib/effects/Convolution.d.ts.map +1 -0
  14. package/lib/effects/Convolution.js +166 -0
  15. package/lib/effects/Convolution.js.map +1 -0
  16. package/lib/effects/EffectTools.d.ts +34 -0
  17. package/lib/effects/EffectTools.d.ts.map +1 -0
  18. package/lib/effects/EffectTools.js +69 -0
  19. package/lib/effects/EffectTools.js.map +1 -0
  20. package/lib/effects/Explosion.d.ts +13 -0
  21. package/lib/effects/Explosion.d.ts.map +1 -0
  22. package/lib/effects/Explosion.js +168 -0
  23. package/lib/effects/Explosion.js.map +1 -0
  24. package/lib/effects/FlipImage.d.ts +31 -0
  25. package/lib/effects/FlipImage.d.ts.map +1 -0
  26. package/lib/effects/FlipImage.js +100 -0
  27. package/lib/effects/FlipImage.js.map +1 -0
  28. package/lib/effects/LensDistortion.d.ts +35 -0
  29. package/lib/effects/LensDistortion.d.ts.map +1 -0
  30. package/lib/effects/LensDistortion.js +110 -0
  31. package/lib/effects/LensDistortion.js.map +1 -0
  32. package/lib/effects/Random.d.ts +25 -0
  33. package/lib/effects/Random.d.ts.map +1 -0
  34. package/lib/effects/Random.js +50 -0
  35. package/lib/effects/Random.js.map +1 -0
  36. package/lib/effects/Saturation.d.ts +31 -0
  37. package/lib/effects/Saturation.d.ts.map +1 -0
  38. package/lib/effects/Saturation.js +86 -0
  39. package/lib/effects/Saturation.js.map +1 -0
  40. package/lib/effects/Snow.d.ts +77 -0
  41. package/lib/effects/Snow.d.ts.map +1 -0
  42. package/lib/effects/Snow.js +187 -0
  43. package/lib/effects/Snow.js.map +1 -0
  44. package/lib/effects/Vignette.d.ts +40 -0
  45. package/lib/effects/Vignette.d.ts.map +1 -0
  46. package/lib/effects/Vignette.js +109 -0
  47. package/lib/effects/Vignette.js.map +1 -0
  48. package/lib/frontend-devtools.d.ts +82 -0
  49. package/lib/frontend-devtools.d.ts.map +1 -0
  50. package/lib/frontend-devtools.js +98 -0
  51. package/lib/frontend-devtools.js.map +1 -0
  52. package/lib/public/locales/en/FrontendDevTools.json +449 -0
  53. package/lib/public/sprites/particle_explosion.png +0 -0
  54. package/lib/public/sprites/particle_flame.png +0 -0
  55. package/lib/public/sprites/particle_snow.png +0 -0
  56. package/lib/tools/AnimationIntervalTool.d.ts +16 -0
  57. package/lib/tools/AnimationIntervalTool.d.ts.map +1 -0
  58. package/lib/tools/AnimationIntervalTool.js +31 -0
  59. package/lib/tools/AnimationIntervalTool.js.map +1 -0
  60. package/lib/tools/ChangeUnitsTool.d.ts +16 -0
  61. package/lib/tools/ChangeUnitsTool.d.ts.map +1 -0
  62. package/lib/tools/ChangeUnitsTool.js +42 -0
  63. package/lib/tools/ChangeUnitsTool.js.map +1 -0
  64. package/lib/tools/ClipTools.d.ts +68 -0
  65. package/lib/tools/ClipTools.d.ts.map +1 -0
  66. package/lib/tools/ClipTools.js +162 -0
  67. package/lib/tools/ClipTools.js.map +1 -0
  68. package/lib/tools/DisplayStyleTools.d.ts +99 -0
  69. package/lib/tools/DisplayStyleTools.d.ts.map +1 -0
  70. package/lib/tools/DisplayStyleTools.js +242 -0
  71. package/lib/tools/DisplayStyleTools.js.map +1 -0
  72. package/lib/tools/EmphasizeElementsTool.d.ts +61 -0
  73. package/lib/tools/EmphasizeElementsTool.d.ts.map +1 -0
  74. package/lib/tools/EmphasizeElementsTool.js +155 -0
  75. package/lib/tools/EmphasizeElementsTool.js.map +1 -0
  76. package/lib/tools/FrustumDecoration.d.ts +58 -0
  77. package/lib/tools/FrustumDecoration.d.ts.map +1 -0
  78. package/lib/tools/FrustumDecoration.js +372 -0
  79. package/lib/tools/FrustumDecoration.js.map +1 -0
  80. package/lib/tools/InspectElementTool.d.ts +42 -0
  81. package/lib/tools/InspectElementTool.d.ts.map +1 -0
  82. package/lib/tools/InspectElementTool.js +185 -0
  83. package/lib/tools/InspectElementTool.js.map +1 -0
  84. package/lib/tools/MapLayerTool.d.ts +248 -0
  85. package/lib/tools/MapLayerTool.d.ts.map +1 -0
  86. package/lib/tools/MapLayerTool.js +462 -0
  87. package/lib/tools/MapLayerTool.js.map +1 -0
  88. package/lib/tools/MeasureTileLoadTime.d.ts +13 -0
  89. package/lib/tools/MeasureTileLoadTime.d.ts.map +1 -0
  90. package/lib/tools/MeasureTileLoadTime.js +61 -0
  91. package/lib/tools/MeasureTileLoadTime.js.map +1 -0
  92. package/lib/tools/ModelAppearanceTools.d.ts +87 -0
  93. package/lib/tools/ModelAppearanceTools.d.ts.map +1 -0
  94. package/lib/tools/ModelAppearanceTools.js +184 -0
  95. package/lib/tools/ModelAppearanceTools.js.map +1 -0
  96. package/lib/tools/PlanProjectionTools.d.ts +41 -0
  97. package/lib/tools/PlanProjectionTools.d.ts.map +1 -0
  98. package/lib/tools/PlanProjectionTools.js +150 -0
  99. package/lib/tools/PlanProjectionTools.js.map +1 -0
  100. package/lib/tools/PlanarMaskTools.d.ts +182 -0
  101. package/lib/tools/PlanarMaskTools.d.ts.map +1 -0
  102. package/lib/tools/PlanarMaskTools.js +366 -0
  103. package/lib/tools/PlanarMaskTools.js.map +1 -0
  104. package/lib/tools/ProjectExtents.d.ts +41 -0
  105. package/lib/tools/ProjectExtents.d.ts.map +1 -0
  106. package/lib/tools/ProjectExtents.js +108 -0
  107. package/lib/tools/ProjectExtents.js.map +1 -0
  108. package/lib/tools/RealityModelTools.d.ts +117 -0
  109. package/lib/tools/RealityModelTools.d.ts.map +1 -0
  110. package/lib/tools/RealityModelTools.js +269 -0
  111. package/lib/tools/RealityModelTools.js.map +1 -0
  112. package/lib/tools/RealityTransitionTool.d.ts +26 -0
  113. package/lib/tools/RealityTransitionTool.d.ts.map +1 -0
  114. package/lib/tools/RealityTransitionTool.js +110 -0
  115. package/lib/tools/RealityTransitionTool.js.map +1 -0
  116. package/lib/tools/RenderSystemTools.d.ts +46 -0
  117. package/lib/tools/RenderSystemTools.d.ts.map +1 -0
  118. package/lib/tools/RenderSystemTools.js +81 -0
  119. package/lib/tools/RenderSystemTools.js.map +1 -0
  120. package/lib/tools/RenderTargetTools.d.ts +101 -0
  121. package/lib/tools/RenderTargetTools.d.ts.map +1 -0
  122. package/lib/tools/RenderTargetTools.js +167 -0
  123. package/lib/tools/RenderTargetTools.js.map +1 -0
  124. package/lib/tools/ReportWebGLCompatibilityTool.d.ts +12 -0
  125. package/lib/tools/ReportWebGLCompatibilityTool.d.ts.map +1 -0
  126. package/lib/tools/ReportWebGLCompatibilityTool.js +31 -0
  127. package/lib/tools/ReportWebGLCompatibilityTool.js.map +1 -0
  128. package/lib/tools/SavedViews.d.ts +47 -0
  129. package/lib/tools/SavedViews.d.ts.map +1 -0
  130. package/lib/tools/SavedViews.js +137 -0
  131. package/lib/tools/SavedViews.js.map +1 -0
  132. package/lib/tools/SelectionTools.d.ts +17 -0
  133. package/lib/tools/SelectionTools.d.ts.map +1 -0
  134. package/lib/tools/SelectionTools.js +28 -0
  135. package/lib/tools/SelectionTools.js.map +1 -0
  136. package/lib/tools/SetGpuMemoryLimitTool.d.ts +16 -0
  137. package/lib/tools/SetGpuMemoryLimitTool.d.ts.map +1 -0
  138. package/lib/tools/SetGpuMemoryLimitTool.js +34 -0
  139. package/lib/tools/SetGpuMemoryLimitTool.js.map +1 -0
  140. package/lib/tools/SourceAspectIdTools.d.ts +41 -0
  141. package/lib/tools/SourceAspectIdTools.d.ts.map +1 -0
  142. package/lib/tools/SourceAspectIdTools.js +105 -0
  143. package/lib/tools/SourceAspectIdTools.js.map +1 -0
  144. package/lib/tools/TileRequestDecoration.d.ts +13 -0
  145. package/lib/tools/TileRequestDecoration.d.ts.map +1 -0
  146. package/lib/tools/TileRequestDecoration.js +84 -0
  147. package/lib/tools/TileRequestDecoration.js.map +1 -0
  148. package/lib/tools/TileTreeBoundsDecoration.d.ts +12 -0
  149. package/lib/tools/TileTreeBoundsDecoration.d.ts.map +1 -0
  150. package/lib/tools/TileTreeBoundsDecoration.js +75 -0
  151. package/lib/tools/TileTreeBoundsDecoration.js.map +1 -0
  152. package/lib/tools/ToolTipProvider.d.ts +16 -0
  153. package/lib/tools/ToolTipProvider.d.ts.map +1 -0
  154. package/lib/tools/ToolTipProvider.js +67 -0
  155. package/lib/tools/ToolTipProvider.js.map +1 -0
  156. package/lib/tools/ViewportTools.d.ts +194 -0
  157. package/lib/tools/ViewportTools.d.ts.map +1 -0
  158. package/lib/tools/ViewportTools.js +451 -0
  159. package/lib/tools/ViewportTools.js.map +1 -0
  160. package/lib/tools/parseArgs.d.ts +24 -0
  161. package/lib/tools/parseArgs.d.ts.map +1 -0
  162. package/lib/tools/parseArgs.js +52 -0
  163. package/lib/tools/parseArgs.js.map +1 -0
  164. package/lib/tools/parseBoolean.d.ts +9 -0
  165. package/lib/tools/parseBoolean.d.ts.map +1 -0
  166. package/lib/tools/parseBoolean.js +27 -0
  167. package/lib/tools/parseBoolean.js.map +1 -0
  168. package/lib/tools/parseToggle.d.ts +9 -0
  169. package/lib/tools/parseToggle.d.ts.map +1 -0
  170. package/lib/tools/parseToggle.js +26 -0
  171. package/lib/tools/parseToggle.js.map +1 -0
  172. package/lib/ui/Button.d.ts +30 -0
  173. package/lib/ui/Button.d.ts.map +1 -0
  174. package/lib/ui/Button.js +27 -0
  175. package/lib/ui/Button.js.map +1 -0
  176. package/lib/ui/CheckBox.d.ts +24 -0
  177. package/lib/ui/CheckBox.d.ts.map +1 -0
  178. package/lib/ui/CheckBox.js +28 -0
  179. package/lib/ui/CheckBox.js.map +1 -0
  180. package/lib/ui/ColorInput.d.ts +28 -0
  181. package/lib/ui/ColorInput.d.ts.map +1 -0
  182. package/lib/ui/ColorInput.js +54 -0
  183. package/lib/ui/ColorInput.js.map +1 -0
  184. package/lib/ui/ComboBox.d.ts +29 -0
  185. package/lib/ui/ComboBox.d.ts.map +1 -0
  186. package/lib/ui/ComboBox.js +43 -0
  187. package/lib/ui/ComboBox.js.map +1 -0
  188. package/lib/ui/DataList.d.ts +28 -0
  189. package/lib/ui/DataList.d.ts.map +1 -0
  190. package/lib/ui/DataList.js +40 -0
  191. package/lib/ui/DataList.js.map +1 -0
  192. package/lib/ui/NestedMenu.d.ts +20 -0
  193. package/lib/ui/NestedMenu.d.ts.map +1 -0
  194. package/lib/ui/NestedMenu.js +47 -0
  195. package/lib/ui/NestedMenu.js.map +1 -0
  196. package/lib/ui/NumericInput.d.ts +35 -0
  197. package/lib/ui/NumericInput.d.ts.map +1 -0
  198. package/lib/ui/NumericInput.js +60 -0
  199. package/lib/ui/NumericInput.js.map +1 -0
  200. package/lib/ui/RadioBox.d.ts +29 -0
  201. package/lib/ui/RadioBox.d.ts.map +1 -0
  202. package/lib/ui/RadioBox.js +77 -0
  203. package/lib/ui/RadioBox.js.map +1 -0
  204. package/lib/ui/Slider.d.ts +25 -0
  205. package/lib/ui/Slider.d.ts.map +1 -0
  206. package/lib/ui/Slider.js +33 -0
  207. package/lib/ui/Slider.js.map +1 -0
  208. package/lib/ui/TextBox.d.ts +33 -0
  209. package/lib/ui/TextBox.d.ts.map +1 -0
  210. package/lib/ui/TextBox.js +57 -0
  211. package/lib/ui/TextBox.js.map +1 -0
  212. package/lib/widgets/DiagnosticsPanel.d.ts +36 -0
  213. package/lib/widgets/DiagnosticsPanel.d.ts.map +1 -0
  214. package/lib/widgets/DiagnosticsPanel.js +76 -0
  215. package/lib/widgets/DiagnosticsPanel.js.map +1 -0
  216. package/lib/widgets/FpsTracker.d.ts +20 -0
  217. package/lib/widgets/FpsTracker.d.ts.map +1 -0
  218. package/lib/widgets/FpsTracker.js +57 -0
  219. package/lib/widgets/FpsTracker.js.map +1 -0
  220. package/lib/widgets/GpuProfiler.d.ts +17 -0
  221. package/lib/widgets/GpuProfiler.d.ts.map +1 -0
  222. package/lib/widgets/GpuProfiler.js +193 -0
  223. package/lib/widgets/GpuProfiler.js.map +1 -0
  224. package/lib/widgets/KeyinField.d.ts +62 -0
  225. package/lib/widgets/KeyinField.d.ts.map +1 -0
  226. package/lib/widgets/KeyinField.js +188 -0
  227. package/lib/widgets/KeyinField.js.map +1 -0
  228. package/lib/widgets/MemoryTracker.d.ts +28 -0
  229. package/lib/widgets/MemoryTracker.d.ts.map +1 -0
  230. package/lib/widgets/MemoryTracker.js +244 -0
  231. package/lib/widgets/MemoryTracker.js.map +1 -0
  232. package/lib/widgets/TileMemoryBreakdown.d.ts +31 -0
  233. package/lib/widgets/TileMemoryBreakdown.d.ts.map +1 -0
  234. package/lib/widgets/TileMemoryBreakdown.js +205 -0
  235. package/lib/widgets/TileMemoryBreakdown.js.map +1 -0
  236. package/lib/widgets/TileStatisticsTracker.d.ts +22 -0
  237. package/lib/widgets/TileStatisticsTracker.d.ts.map +1 -0
  238. package/lib/widgets/TileStatisticsTracker.js +143 -0
  239. package/lib/widgets/TileStatisticsTracker.js.map +1 -0
  240. package/lib/widgets/ToolSettingsTracker.d.ts +10 -0
  241. package/lib/widgets/ToolSettingsTracker.d.ts.map +1 -0
  242. package/lib/widgets/ToolSettingsTracker.js +182 -0
  243. package/lib/widgets/ToolSettingsTracker.js.map +1 -0
  244. package/package.json +59 -0
@@ -0,0 +1,87 @@
1
+ /** @packageDocumentation
2
+ * @module Tools
3
+ */
4
+ import { LinePixels, RgbColorProps } from "@itwin/core-common";
5
+ import { Tool } from "@itwin/core-frontend";
6
+ /** Set model appearance override for transparency in display style.
7
+ * @beta
8
+ */
9
+ export declare class SetModelTransparencyTool extends Tool {
10
+ static toolId: string;
11
+ static get minArgs(): number;
12
+ static get maxArgs(): number;
13
+ run(transparency: number, name: string): Promise<boolean>;
14
+ parseAndRun(...args: string[]): Promise<boolean>;
15
+ }
16
+ /** Set model appearance override for line weight in display style.
17
+ * @beta
18
+ */
19
+ export declare class SetModelLineWeightTool extends Tool {
20
+ static toolId: string;
21
+ static get minArgs(): number;
22
+ static get maxArgs(): number;
23
+ run(weight: number, name: string): Promise<boolean>;
24
+ parseAndRun(...args: string[]): Promise<boolean>;
25
+ }
26
+ /** Set model appearance override for line code in display style.
27
+ * @beta
28
+ */
29
+ export declare class SetModelLineCodeTool extends Tool {
30
+ static toolId: string;
31
+ static get minArgs(): number;
32
+ static get maxArgs(): number;
33
+ static linePixels: LinePixels[];
34
+ run(lineCode: number, name: string): Promise<boolean>;
35
+ parseAndRun(...args: string[]): Promise<boolean>;
36
+ }
37
+ /** Set model appearance override for nonLocatable in display style.
38
+ * @beta
39
+ */
40
+ export declare class SetModelLocateTool extends Tool {
41
+ static toolId: string;
42
+ static get minArgs(): number;
43
+ static get maxArgs(): number;
44
+ run(locate: boolean, name: string): Promise<boolean>;
45
+ parseAndRun(...args: string[]): Promise<boolean>;
46
+ }
47
+ /** Set model appearance override for emphasized in display style.
48
+ * @beta
49
+ */
50
+ export declare class SetModelEmphasizedTool extends Tool {
51
+ static toolId: string;
52
+ static get minArgs(): number;
53
+ static get maxArgs(): number;
54
+ run(emphasized: true | undefined, name: string): Promise<boolean>;
55
+ parseAndRun(...args: string[]): Promise<boolean>;
56
+ }
57
+ /** Set model appearance override for ignoreMaterials in display style.
58
+ * @beta
59
+ */
60
+ export declare class SetModelIgnoresMaterialsTool extends Tool {
61
+ static toolId: string;
62
+ static get minArgs(): number;
63
+ static get maxArgs(): number;
64
+ run(ignoresMaterial: true | undefined, name: string): Promise<boolean>;
65
+ parseAndRun(...args: string[]): Promise<boolean>;
66
+ }
67
+ /** Set model appearance override for color in display style.
68
+ * @beta
69
+ */
70
+ export declare class SetModelColorTool extends Tool {
71
+ static toolId: string;
72
+ static get minArgs(): number;
73
+ static get maxArgs(): number;
74
+ run(rgb: RgbColorProps, name: string): Promise<boolean>;
75
+ parseAndRun(...args: string[]): Promise<boolean>;
76
+ }
77
+ /** clear model appearance overrides in display style.
78
+ * @beta
79
+ */
80
+ export declare class ClearModelAppearanceOverrides extends Tool {
81
+ static toolId: string;
82
+ static get minArgs(): number;
83
+ static get maxArgs(): number;
84
+ run(name?: string): Promise<boolean>;
85
+ parseAndRun(...args: string[]): Promise<boolean>;
86
+ }
87
+ //# sourceMappingURL=ModelAppearanceTools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModelAppearanceTools.d.ts","sourceRoot":"","sources":["../../src/tools/ModelAppearanceTools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,184 @@
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
+ * See LICENSE.md in the project root for license terms and full copyright notice.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.ClearModelAppearanceOverrides = exports.SetModelColorTool = exports.SetModelIgnoresMaterialsTool = exports.SetModelEmphasizedTool = exports.SetModelLocateTool = exports.SetModelLineCodeTool = exports.SetModelLineWeightTool = exports.SetModelTransparencyTool = void 0;
8
+ /** @packageDocumentation
9
+ * @module Tools
10
+ */
11
+ const core_common_1 = require("@itwin/core-common");
12
+ const core_frontend_1 = require("@itwin/core-frontend");
13
+ const parseBoolean_1 = require("./parseBoolean");
14
+ function changeModelAppearanceOverrides(vp, overrides, name) {
15
+ let changed = false;
16
+ if (vp !== undefined && vp.view instanceof core_frontend_1.SpatialViewState)
17
+ vp.view.forEachModel((model) => {
18
+ if (name === undefined || model.name === name) {
19
+ changed = true;
20
+ const existingOverrides = vp.displayStyle.settings.getModelAppearanceOverride(model.id);
21
+ vp.overrideModelAppearance(model.id, existingOverrides ? existingOverrides.clone(overrides) : core_common_1.FeatureAppearance.fromJSON(overrides));
22
+ }
23
+ });
24
+ return changed;
25
+ }
26
+ function modelChangedString(name) {
27
+ return name === undefined ? `All Models` : `Model: ${name}`;
28
+ }
29
+ /** Set model appearance override for transparency in display style.
30
+ * @beta
31
+ */
32
+ class SetModelTransparencyTool extends core_frontend_1.Tool {
33
+ static get minArgs() { return 1; }
34
+ static get maxArgs() { return 2; }
35
+ async run(transparency, name) {
36
+ const changed = changeModelAppearanceOverrides(core_frontend_1.IModelApp.viewManager.selectedView, { transparency }, name);
37
+ if (changed)
38
+ core_frontend_1.IModelApp.notifications.outputMessage(new core_frontend_1.NotifyMessageDetails(core_frontend_1.OutputMessagePriority.Info, `${modelChangedString(name)} set to transparency: ${transparency}`));
39
+ return changed;
40
+ }
41
+ async parseAndRun(...args) {
42
+ return this.run(parseFloat(args[0]), args[1]);
43
+ }
44
+ }
45
+ exports.SetModelTransparencyTool = SetModelTransparencyTool;
46
+ SetModelTransparencyTool.toolId = "SetModelTransparencyTool";
47
+ /** Set model appearance override for line weight in display style.
48
+ * @beta
49
+ */
50
+ class SetModelLineWeightTool extends core_frontend_1.Tool {
51
+ static get minArgs() { return 1; }
52
+ static get maxArgs() { return 2; }
53
+ async run(weight, name) {
54
+ const changed = changeModelAppearanceOverrides(core_frontend_1.IModelApp.viewManager.selectedView, { weight }, name);
55
+ if (changed)
56
+ core_frontend_1.IModelApp.notifications.outputMessage(new core_frontend_1.NotifyMessageDetails(core_frontend_1.OutputMessagePriority.Info, `${modelChangedString(name)} set to line weight: ${weight}`));
57
+ return changed;
58
+ }
59
+ async parseAndRun(...args) {
60
+ return this.run(parseFloat(args[0]), args[1]);
61
+ }
62
+ }
63
+ exports.SetModelLineWeightTool = SetModelLineWeightTool;
64
+ SetModelLineWeightTool.toolId = "SetModelLineWeightTool";
65
+ /** Set model appearance override for line code in display style.
66
+ * @beta
67
+ */
68
+ class SetModelLineCodeTool extends core_frontend_1.Tool {
69
+ static get minArgs() { return 1; }
70
+ static get maxArgs() { return 2; }
71
+ async run(lineCode, name) {
72
+ if (lineCode < 0 || lineCode >= SetModelLineCodeTool.linePixels.length)
73
+ return false;
74
+ const changed = changeModelAppearanceOverrides(core_frontend_1.IModelApp.viewManager.selectedView, { linePixels: SetModelLineCodeTool.linePixels[lineCode] }, name);
75
+ if (changed)
76
+ core_frontend_1.IModelApp.notifications.outputMessage(new core_frontend_1.NotifyMessageDetails(core_frontend_1.OutputMessagePriority.Info, `${modelChangedString(name)} set to line code: ${lineCode}`));
77
+ return changed;
78
+ }
79
+ async parseAndRun(...args) {
80
+ return this.run(parseFloat(args[0]), args[1]);
81
+ }
82
+ }
83
+ exports.SetModelLineCodeTool = SetModelLineCodeTool;
84
+ SetModelLineCodeTool.toolId = "SetModelLineCodeTool";
85
+ SetModelLineCodeTool.linePixels = [core_common_1.LinePixels.Code0, core_common_1.LinePixels.Code1, core_common_1.LinePixels.Code2, core_common_1.LinePixels.Code3, core_common_1.LinePixels.Code4, core_common_1.LinePixels.Code5, core_common_1.LinePixels.Code6, core_common_1.LinePixels.Code7];
86
+ /** Set model appearance override for nonLocatable in display style.
87
+ * @beta
88
+ */
89
+ class SetModelLocateTool extends core_frontend_1.Tool {
90
+ static get minArgs() { return 1; }
91
+ static get maxArgs() { return 2; }
92
+ async run(locate, name) {
93
+ const nonLocatable = locate ? undefined : true;
94
+ const changed = changeModelAppearanceOverrides(core_frontend_1.IModelApp.viewManager.selectedView, { nonLocatable }, name);
95
+ if (changed)
96
+ core_frontend_1.IModelApp.notifications.outputMessage(new core_frontend_1.NotifyMessageDetails(core_frontend_1.OutputMessagePriority.Info, `${modelChangedString(name)} set to locate: ${locate}`));
97
+ return changed;
98
+ }
99
+ async parseAndRun(...args) {
100
+ const locate = (0, parseBoolean_1.parseBoolean)(args[0]);
101
+ return locate === undefined ? false : this.run(locate, args[1]);
102
+ }
103
+ }
104
+ exports.SetModelLocateTool = SetModelLocateTool;
105
+ SetModelLocateTool.toolId = "SetModelLocateTool";
106
+ /** Set model appearance override for emphasized in display style.
107
+ * @beta
108
+ */
109
+ class SetModelEmphasizedTool extends core_frontend_1.Tool {
110
+ static get minArgs() { return 1; }
111
+ static get maxArgs() { return 2; }
112
+ async run(emphasized, name) {
113
+ const changed = changeModelAppearanceOverrides(core_frontend_1.IModelApp.viewManager.selectedView, { emphasized }, name);
114
+ if (changed)
115
+ core_frontend_1.IModelApp.notifications.outputMessage(new core_frontend_1.NotifyMessageDetails(core_frontend_1.OutputMessagePriority.Info, `Mode: ${name} set to emphasized: ${emphasized}`));
116
+ return changed;
117
+ }
118
+ async parseAndRun(...args) {
119
+ const emphasized = (0, parseBoolean_1.parseBoolean)(args[0]);
120
+ return emphasized === undefined ? false : this.run(emphasized ? true : undefined, args[1]);
121
+ }
122
+ }
123
+ exports.SetModelEmphasizedTool = SetModelEmphasizedTool;
124
+ SetModelEmphasizedTool.toolId = "SetModelEmphasizedTool";
125
+ /** Set model appearance override for ignoreMaterials in display style.
126
+ * @beta
127
+ */
128
+ class SetModelIgnoresMaterialsTool extends core_frontend_1.Tool {
129
+ static get minArgs() { return 1; }
130
+ static get maxArgs() { return 2; }
131
+ async run(ignoresMaterial, name) {
132
+ const changed = changeModelAppearanceOverrides(core_frontend_1.IModelApp.viewManager.selectedView, { ignoresMaterial }, name);
133
+ if (changed)
134
+ core_frontend_1.IModelApp.notifications.outputMessage(new core_frontend_1.NotifyMessageDetails(core_frontend_1.OutputMessagePriority.Info, `Mode: ${name} set to ignore Materials: ${ignoresMaterial}`));
135
+ return changed;
136
+ }
137
+ async parseAndRun(...args) {
138
+ const ignoresMaterial = (0, parseBoolean_1.parseBoolean)(args[0]);
139
+ return ignoresMaterial === undefined ? false : this.run(ignoresMaterial ? true : undefined, args[1]);
140
+ }
141
+ }
142
+ exports.SetModelIgnoresMaterialsTool = SetModelIgnoresMaterialsTool;
143
+ SetModelIgnoresMaterialsTool.toolId = "SetModelIgnoresMaterialsTool";
144
+ /** Set model appearance override for color in display style.
145
+ * @beta
146
+ */
147
+ class SetModelColorTool extends core_frontend_1.Tool {
148
+ static get minArgs() { return 3; }
149
+ static get maxArgs() { return 4; }
150
+ async run(rgb, name) {
151
+ const changed = changeModelAppearanceOverrides(core_frontend_1.IModelApp.viewManager.selectedView, { rgb }, name);
152
+ if (changed)
153
+ core_frontend_1.IModelApp.notifications.outputMessage(new core_frontend_1.NotifyMessageDetails(core_frontend_1.OutputMessagePriority.Info, `${modelChangedString(name)} set to RGB color: (${rgb.r}, ${rgb.g}, ${rgb.b})`));
154
+ return true;
155
+ }
156
+ async parseAndRun(...args) {
157
+ return this.run({ r: parseFloat(args[0]), g: parseFloat(args[1]), b: parseFloat(args[2]) }, args[3]);
158
+ }
159
+ }
160
+ exports.SetModelColorTool = SetModelColorTool;
161
+ SetModelColorTool.toolId = "SetModelColorTool";
162
+ /** clear model appearance overrides in display style.
163
+ * @beta
164
+ */
165
+ class ClearModelAppearanceOverrides extends core_frontend_1.Tool {
166
+ static get minArgs() { return 0; }
167
+ static get maxArgs() { return 1; }
168
+ async run(name) {
169
+ const vp = core_frontend_1.IModelApp.viewManager.selectedView;
170
+ if (vp !== undefined && vp.view instanceof core_frontend_1.SpatialViewState) {
171
+ vp.view.forEachModel((model) => {
172
+ if (name === undefined || model.name === name)
173
+ vp.dropModelAppearanceOverride(model.id);
174
+ });
175
+ }
176
+ return true;
177
+ }
178
+ async parseAndRun(...args) {
179
+ return this.run(args[0]);
180
+ }
181
+ }
182
+ exports.ClearModelAppearanceOverrides = ClearModelAppearanceOverrides;
183
+ ClearModelAppearanceOverrides.toolId = "ClearModelAppearanceOverrides";
184
+ //# sourceMappingURL=ModelAppearanceTools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModelAppearanceTools.js","sourceRoot":"","sources":["../../src/tools/ModelAppearanceTools.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, LinePixels, RgbColorProps } from \"@itwin/core-common\";\r\nimport { IModelApp, NotifyMessageDetails, OutputMessagePriority, SpatialViewState, Tool, Viewport } from \"@itwin/core-frontend\";\r\nimport { parseBoolean } from \"./parseBoolean\";\r\n\r\nfunction changeModelAppearanceOverrides(vp: Viewport | undefined, overrides: FeatureAppearanceProps, name: string): boolean {\r\n let changed = false;\r\n if (vp !== undefined && vp.view instanceof SpatialViewState)\r\n vp.view.forEachModel((model) => {\r\n if (name === undefined || model.name === name) {\r\n changed = true;\r\n const existingOverrides = vp.displayStyle.settings.getModelAppearanceOverride(model.id);\r\n vp.overrideModelAppearance(model.id, existingOverrides ? existingOverrides.clone(overrides) : FeatureAppearance.fromJSON(overrides));\r\n }\r\n });\r\n\r\n return changed;\r\n}\r\n\r\nfunction modelChangedString(name: string) {\r\n return name === undefined ? `All Models` : `Model: ${name}`;\r\n}\r\n\r\n/** Set model appearance override for transparency in display style.\r\n * @beta\r\n */\r\nexport class SetModelTransparencyTool extends Tool {\r\n public static override toolId = \"SetModelTransparencyTool\";\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, name: string): Promise<boolean> {\r\n const changed = changeModelAppearanceOverrides(IModelApp.viewManager.selectedView, { transparency }, name);\r\n\r\n if (changed)\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Info, `${modelChangedString(name)} set to transparency: ${transparency}`));\r\n\r\n return changed;\r\n }\r\n\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n return this.run(parseFloat(args[0]), args[1]);\r\n }\r\n}\r\n\r\n/** Set model appearance override for line weight in display style.\r\n * @beta\r\n */\r\nexport class SetModelLineWeightTool extends Tool {\r\n public static override toolId = \"SetModelLineWeightTool\";\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(weight: number, name: string): Promise<boolean> {\r\n const changed = changeModelAppearanceOverrides(IModelApp.viewManager.selectedView, { weight }, name);\r\n\r\n if (changed)\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Info, `${modelChangedString(name)} set to line weight: ${weight}`));\r\n\r\n return changed;\r\n }\r\n\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n return this.run(parseFloat(args[0]), args[1]);\r\n }\r\n}\r\n\r\n/** Set model appearance override for line code in display style.\r\n * @beta\r\n */\r\nexport class SetModelLineCodeTool extends Tool {\r\n public static override toolId = \"SetModelLineCodeTool\";\r\n public static override get minArgs() { return 1; }\r\n public static override get maxArgs() { return 2; }\r\n public static linePixels = [LinePixels.Code0, LinePixels.Code1, LinePixels.Code2, LinePixels.Code3, LinePixels.Code4, LinePixels.Code5, LinePixels.Code6, LinePixels.Code7];\r\n\r\n public override async run(lineCode: number, name: string): Promise<boolean> {\r\n if (lineCode < 0 || lineCode >= SetModelLineCodeTool.linePixels.length)\r\n return false;\r\n\r\n const changed = changeModelAppearanceOverrides(IModelApp.viewManager.selectedView, { linePixels: SetModelLineCodeTool.linePixels[lineCode] }, name);\r\n\r\n if (changed)\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Info, `${modelChangedString(name)} set to line code: ${lineCode}`));\r\n\r\n return changed;\r\n }\r\n\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n return this.run(parseFloat(args[0]), args[1]);\r\n }\r\n}\r\n\r\n/** Set model appearance override for nonLocatable in display style.\r\n * @beta\r\n */\r\nexport class SetModelLocateTool extends Tool {\r\n public static override toolId = \"SetModelLocateTool\";\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, name: string): Promise<boolean> {\r\n const nonLocatable = locate ? undefined : true;\r\n const changed = changeModelAppearanceOverrides(IModelApp.viewManager.selectedView, { nonLocatable }, name);\r\n\r\n if (changed)\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Info, `${modelChangedString(name)} set to locate: ${locate}`));\r\n\r\n return changed;\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[1]);\r\n }\r\n}\r\n\r\n/** Set model appearance override for emphasized in display style.\r\n * @beta\r\n */\r\nexport class SetModelEmphasizedTool extends Tool {\r\n public static override toolId = \"SetModelEmphasizedTool\";\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, name: string): Promise<boolean> {\r\n const changed = changeModelAppearanceOverrides(IModelApp.viewManager.selectedView, { emphasized }, name);\r\n\r\n if (changed)\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Info, `Mode: ${name} set to emphasized: ${emphasized}`));\r\n\r\n return changed;\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[1]);\r\n }\r\n}\r\n\r\n/** Set model appearance override for ignoreMaterials in display style.\r\n * @beta\r\n */\r\nexport class SetModelIgnoresMaterialsTool extends Tool {\r\n public static override toolId = \"SetModelIgnoresMaterialsTool\";\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(ignoresMaterial: true | undefined, name: string): Promise<boolean> {\r\n const changed = changeModelAppearanceOverrides(IModelApp.viewManager.selectedView, { ignoresMaterial }, name);\r\n\r\n if (changed)\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Info, `Mode: ${name} set to ignore Materials: ${ignoresMaterial}`));\r\n\r\n return changed;\r\n }\r\n\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n const ignoresMaterial = parseBoolean(args[0]);\r\n return ignoresMaterial === undefined ? false : this.run(ignoresMaterial ? true : undefined, args[1]);\r\n }\r\n}\r\n\r\n/** Set model appearance override for color in display style.\r\n * @beta\r\n */\r\nexport class SetModelColorTool extends Tool {\r\n public static override toolId = \"SetModelColorTool\";\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, name: string): Promise<boolean> {\r\n const changed = changeModelAppearanceOverrides(IModelApp.viewManager.selectedView, { rgb }, name);\r\n\r\n if (changed)\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Info, `${modelChangedString(name)} 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[3]);\r\n }\r\n}\r\n\r\n/** clear model appearance overrides in display style.\r\n * @beta\r\n */\r\nexport class ClearModelAppearanceOverrides extends Tool {\r\n public static override toolId = \"ClearModelAppearanceOverrides\";\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(name?: string): Promise<boolean> {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (vp !== undefined && vp.view instanceof SpatialViewState) {\r\n vp.view.forEachModel((model) => {\r\n if (name === undefined || model.name === name)\r\n vp.dropModelAppearanceOverride(model.id);\r\n });\r\n }\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}\r\n"]}
@@ -0,0 +1,41 @@
1
+ import { Viewport } from "@itwin/core-frontend";
2
+ import { DisplayStyleTool } from "./DisplayStyleTools";
3
+ /** Dumps a JSON representation of the plan projection settings for the current viewport.
4
+ * @beta
5
+ */
6
+ export declare class DumpPlanProjectionSettingsTool extends DisplayStyleTool {
7
+ static toolId: string;
8
+ static get minArgs(): number;
9
+ static get maxArgs(): number;
10
+ private _copyToClipboard;
11
+ protected get require3d(): boolean;
12
+ protected parse(args: string[]): boolean;
13
+ protected execute(vp: Viewport): boolean;
14
+ }
15
+ /** Changes subcategory display priority.
16
+ * @beta
17
+ */
18
+ export declare abstract class OverrideSubCategoryPriorityTool extends DisplayStyleTool {
19
+ static toolId: string;
20
+ static get minArgs(): number;
21
+ static get maxArgs(): number;
22
+ private readonly _subcatIds;
23
+ private _priority?;
24
+ protected execute(vp: Viewport): boolean;
25
+ protected parse(args: string[]): boolean;
26
+ }
27
+ /** Changes plan projection settings for one or more models.
28
+ * @beta
29
+ */
30
+ export declare abstract class ChangePlanProjectionSettingsTool extends DisplayStyleTool {
31
+ static toolId: string;
32
+ static get minArgs(): number;
33
+ static get maxArgs(): number;
34
+ private readonly _modelIds;
35
+ private _settings?;
36
+ protected get require3d(): boolean;
37
+ protected execute(vp: Viewport): boolean;
38
+ protected parse(inputArgs: string[]): boolean;
39
+ private parseModels;
40
+ }
41
+ //# sourceMappingURL=PlanProjectionTools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlanProjectionTools.d.ts","sourceRoot":"","sources":["../../src/tools/PlanProjectionTools.ts"],"names":[],"mappings":"AAUA,OAAO,EAA2F,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEzI,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGvD;;GAEG;AACH,qBAAa,8BAA+B,SAAQ,gBAAgB;IAClE,OAAuB,MAAM,SAAuB;IACpD,WAA2B,OAAO,WAAgB;IAClD,WAA2B,OAAO,WAAgB;IAElD,OAAO,CAAC,gBAAgB,CAAS;IAEjC,cAAuB,SAAS,YAAmB;IAEnD,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE;IAO9B,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO;CAoBzC;AAED;;GAEG;AACH,8BAAsB,+BAAgC,SAAQ,gBAAgB;IAC5E,OAAuB,MAAM,SAAiC;IAC9D,WAA2B,OAAO,WAAgB;IAClD,WAA2B,OAAO,WAAgB;IAElD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;IAChD,OAAO,CAAC,SAAS,CAAC,CAAS;IAE3B,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO;IAiBxC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE;CAU/B;AAED;;GAEG;AACH,8BAAsB,gCAAiC,SAAQ,gBAAgB;IAC7E,OAAuB,MAAM,SAAyB;IACtD,WAA2B,OAAO,WAAgB;IAClD,WAA2B,OAAO,WAAgB;IAElD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqB;IAC/C,OAAO,CAAC,SAAS,CAAC,CAAyB;IAE3C,cAAuB,SAAS,YAAmB;IAEnD,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO;IAQxC,SAAS,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE;IAgBnC,OAAO,CAAC,WAAW;CAmCpB"}
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
+ * See LICENSE.md in the project root for license terms and full copyright notice.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.ChangePlanProjectionSettingsTool = exports.OverrideSubCategoryPriorityTool = exports.DumpPlanProjectionSettingsTool = void 0;
8
+ /** @packageDocumentation
9
+ * @module Tools
10
+ */
11
+ const core_common_1 = require("@itwin/core-common");
12
+ const core_frontend_1 = require("@itwin/core-frontend");
13
+ const ClipboardUtilities_1 = require("../ClipboardUtilities");
14
+ const DisplayStyleTools_1 = require("./DisplayStyleTools");
15
+ const parseArgs_1 = require("./parseArgs");
16
+ /** Dumps a JSON representation of the plan projection settings for the current viewport.
17
+ * @beta
18
+ */
19
+ class DumpPlanProjectionSettingsTool extends DisplayStyleTools_1.DisplayStyleTool {
20
+ constructor() {
21
+ super(...arguments);
22
+ this._copyToClipboard = false;
23
+ }
24
+ static get minArgs() { return 0; }
25
+ static get maxArgs() { return 1; }
26
+ get require3d() { return true; }
27
+ parse(args) {
28
+ if (1 === args.length)
29
+ this._copyToClipboard = "c" === args[0].toLowerCase();
30
+ return true;
31
+ }
32
+ execute(vp) {
33
+ const settings = vp.displayStyle.settings.planProjectionSettings;
34
+ if (undefined === settings) {
35
+ core_frontend_1.IModelApp.notifications.outputMessage(new core_frontend_1.NotifyMessageDetails(core_frontend_1.OutputMessagePriority.Info, "No plan projection settings defined"));
36
+ return false;
37
+ }
38
+ const props = [];
39
+ for (const [modelId, value] of settings)
40
+ props.push({ modelId, settings: value.toJSON() });
41
+ const json = JSON.stringify(props);
42
+ if (this._copyToClipboard)
43
+ (0, ClipboardUtilities_1.copyStringToClipboard)(json);
44
+ const messageDetails = new core_frontend_1.NotifyMessageDetails(core_frontend_1.OutputMessagePriority.Info, "Dumped plan projection settings", json);
45
+ core_frontend_1.IModelApp.notifications.outputMessage(messageDetails);
46
+ return false;
47
+ }
48
+ }
49
+ exports.DumpPlanProjectionSettingsTool = DumpPlanProjectionSettingsTool;
50
+ DumpPlanProjectionSettingsTool.toolId = "DumpLayerSettings";
51
+ /** Changes subcategory display priority.
52
+ * @beta
53
+ */
54
+ class OverrideSubCategoryPriorityTool extends DisplayStyleTools_1.DisplayStyleTool {
55
+ constructor() {
56
+ super(...arguments);
57
+ this._subcatIds = new Set();
58
+ }
59
+ static get minArgs() { return 1; }
60
+ static get maxArgs() { return 2; }
61
+ execute(vp) {
62
+ const style = vp.displayStyle;
63
+ for (const id of this._subcatIds) {
64
+ const ovr = style.getSubCategoryOverride(id);
65
+ if (undefined === ovr) {
66
+ if (undefined !== this._priority)
67
+ style.overrideSubCategory(id, core_common_1.SubCategoryOverride.fromJSON({ priority: this._priority }));
68
+ }
69
+ else {
70
+ const props = ovr.toJSON();
71
+ props.priority = this._priority;
72
+ style.overrideSubCategory(id, core_common_1.SubCategoryOverride.fromJSON(props));
73
+ }
74
+ }
75
+ return true;
76
+ }
77
+ parse(args) {
78
+ for (const id of args[0].split(","))
79
+ this._subcatIds.add(id);
80
+ const priority = parseInt(args[1], 10);
81
+ if (!Number.isNaN(priority))
82
+ this._priority = priority;
83
+ return true;
84
+ }
85
+ }
86
+ exports.OverrideSubCategoryPriorityTool = OverrideSubCategoryPriorityTool;
87
+ OverrideSubCategoryPriorityTool.toolId = "OverrideSubCategoryPriority";
88
+ /** Changes plan projection settings for one or more models.
89
+ * @beta
90
+ */
91
+ class ChangePlanProjectionSettingsTool extends DisplayStyleTools_1.DisplayStyleTool {
92
+ constructor() {
93
+ super(...arguments);
94
+ this._modelIds = new Set();
95
+ }
96
+ static get minArgs() { return 1; }
97
+ static get maxArgs() { return 5; }
98
+ get require3d() { return true; }
99
+ execute(vp) {
100
+ const settings = vp.displayStyle.settings;
101
+ for (const modelId of this._modelIds)
102
+ settings.setPlanProjectionSettings(modelId, this._settings);
103
+ return true;
104
+ }
105
+ parse(inputArgs) {
106
+ if (!this.parseModels(inputArgs[0]))
107
+ return false;
108
+ const args = (0, parseArgs_1.parseArgs)(inputArgs.slice(1));
109
+ const props = {};
110
+ props.transparency = args.getFloat("t");
111
+ props.overlay = args.getBoolean("o");
112
+ props.enforceDisplayPriority = args.getBoolean("p");
113
+ props.elevation = args.getFloat("e");
114
+ this._settings = core_common_1.PlanProjectionSettings.fromJSON(props);
115
+ return true;
116
+ }
117
+ parseModels(models) {
118
+ const vp = core_frontend_1.IModelApp.viewManager.selectedView; // already validated by super.parseAndRun
119
+ models = models.toLowerCase();
120
+ const isPlanProjection = (modelId) => {
121
+ const model = vp.iModel.models.getLoaded(modelId);
122
+ return undefined !== model && isPlanProjectionModel(model);
123
+ };
124
+ const isPlanProjectionModel = (model) => {
125
+ const model3d = model.asGeometricModel3d;
126
+ return undefined !== model3d && model3d.isPlanProjection;
127
+ };
128
+ switch (models[0]) {
129
+ case "a": // all models in selector
130
+ vp.view.forEachModel((model) => {
131
+ if (isPlanProjectionModel(model))
132
+ this._modelIds.add(model.id);
133
+ });
134
+ break;
135
+ case "0": // comma-separated list of Ids
136
+ for (const modelId of models.split(","))
137
+ if (isPlanProjection(modelId))
138
+ this._modelIds.add(modelId);
139
+ break;
140
+ }
141
+ if (this._modelIds.size === 0) {
142
+ core_frontend_1.IModelApp.notifications.outputMessage(new core_frontend_1.NotifyMessageDetails(core_frontend_1.OutputMessagePriority.Error, "No plan projection models"));
143
+ return false;
144
+ }
145
+ return true;
146
+ }
147
+ }
148
+ exports.ChangePlanProjectionSettingsTool = ChangePlanProjectionSettingsTool;
149
+ ChangePlanProjectionSettingsTool.toolId = "ChangeLayerSettings";
150
+ //# sourceMappingURL=PlanProjectionTools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlanProjectionTools.js","sourceRoot":"","sources":["../../src/tools/PlanProjectionTools.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 { PlanProjectionSettings, PlanProjectionSettingsProps, SubCategoryOverride } from \"@itwin/core-common\";\r\nimport { DisplayStyle3dState, IModelApp, ModelState, NotifyMessageDetails, OutputMessagePriority, Viewport } from \"@itwin/core-frontend\";\r\nimport { copyStringToClipboard } from \"../ClipboardUtilities\";\r\nimport { DisplayStyleTool } from \"./DisplayStyleTools\";\r\nimport { parseArgs } from \"./parseArgs\";\r\n\r\n/** Dumps a JSON representation of the plan projection settings for the current viewport.\r\n * @beta\r\n */\r\nexport class DumpPlanProjectionSettingsTool extends DisplayStyleTool {\r\n public static override toolId = \"DumpLayerSettings\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 1; }\r\n\r\n private _copyToClipboard = false;\r\n\r\n protected override get require3d() { return true; }\r\n\r\n protected parse(args: string[]) {\r\n if (1 === args.length)\r\n this._copyToClipboard = \"c\" === args[0].toLowerCase();\r\n\r\n return true;\r\n }\r\n\r\n protected execute(vp: Viewport): boolean {\r\n const settings = (vp.displayStyle as DisplayStyle3dState).settings.planProjectionSettings;\r\n if (undefined === settings) {\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Info, \"No plan projection settings defined\"));\r\n return false;\r\n }\r\n\r\n const props = [];\r\n for (const [modelId, value] of settings)\r\n props.push({ modelId, settings: value.toJSON() });\r\n\r\n const json = JSON.stringify(props);\r\n if (this._copyToClipboard)\r\n copyStringToClipboard(json);\r\n\r\n const messageDetails = new NotifyMessageDetails(OutputMessagePriority.Info, \"Dumped plan projection settings\", json);\r\n IModelApp.notifications.outputMessage(messageDetails);\r\n\r\n return false;\r\n }\r\n}\r\n\r\n/** Changes subcategory display priority.\r\n * @beta\r\n */\r\nexport abstract class OverrideSubCategoryPriorityTool extends DisplayStyleTool {\r\n public static override toolId = \"OverrideSubCategoryPriority\";\r\n public static override get minArgs() { return 1; }\r\n public static override get maxArgs() { return 2; }\r\n\r\n private readonly _subcatIds = new Set<string>();\r\n private _priority?: number;\r\n\r\n protected execute(vp: Viewport): boolean {\r\n const style = vp.displayStyle;\r\n for (const id of this._subcatIds) {\r\n const ovr = style.getSubCategoryOverride(id);\r\n if (undefined === ovr) {\r\n if (undefined !== this._priority)\r\n style.overrideSubCategory(id, SubCategoryOverride.fromJSON({ priority: this._priority }));\r\n } else {\r\n const props = ovr.toJSON();\r\n props.priority = this._priority;\r\n style.overrideSubCategory(id, SubCategoryOverride.fromJSON(props));\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n protected parse(args: string[]) {\r\n for (const id of args[0].split(\",\"))\r\n this._subcatIds.add(id);\r\n\r\n const priority = parseInt(args[1], 10);\r\n if (!Number.isNaN(priority))\r\n this._priority = priority;\r\n\r\n return true;\r\n }\r\n}\r\n\r\n/** Changes plan projection settings for one or more models.\r\n * @beta\r\n */\r\nexport abstract class ChangePlanProjectionSettingsTool extends DisplayStyleTool {\r\n public static override toolId = \"ChangeLayerSettings\";\r\n public static override get minArgs() { return 1; }\r\n public static override get maxArgs() { return 5; }\r\n\r\n private readonly _modelIds = new Set<string>();\r\n private _settings?: PlanProjectionSettings;\r\n\r\n protected override get require3d() { return true; }\r\n\r\n protected execute(vp: Viewport): boolean {\r\n const settings = (vp.displayStyle as DisplayStyle3dState).settings;\r\n for (const modelId of this._modelIds)\r\n settings.setPlanProjectionSettings(modelId, this._settings);\r\n\r\n return true;\r\n }\r\n\r\n protected parse(inputArgs: string[]) {\r\n if (!this.parseModels(inputArgs[0]))\r\n return false;\r\n\r\n const args = parseArgs(inputArgs.slice(1));\r\n const props: PlanProjectionSettingsProps = {};\r\n\r\n props.transparency = args.getFloat(\"t\");\r\n props.overlay = args.getBoolean(\"o\");\r\n props.enforceDisplayPriority = args.getBoolean(\"p\");\r\n props.elevation = args.getFloat(\"e\");\r\n\r\n this._settings = PlanProjectionSettings.fromJSON(props);\r\n return true;\r\n }\r\n\r\n private parseModels(models: string) {\r\n const vp = IModelApp.viewManager.selectedView!; // already validated by super.parseAndRun\r\n models = models.toLowerCase();\r\n\r\n const isPlanProjection = (modelId: string) => {\r\n const model = vp.iModel.models.getLoaded(modelId);\r\n return undefined !== model && isPlanProjectionModel(model);\r\n };\r\n const isPlanProjectionModel = (model: ModelState) => {\r\n const model3d = model.asGeometricModel3d;\r\n return undefined !== model3d && model3d.isPlanProjection;\r\n };\r\n\r\n switch (models[0]) {\r\n case \"a\": // all models in selector\r\n vp.view.forEachModel((model) => {\r\n if (isPlanProjectionModel(model))\r\n this._modelIds.add(model.id);\r\n });\r\n break;\r\n case \"0\": // comma-separated list of Ids\r\n for (const modelId of models.split(\",\"))\r\n if (isPlanProjection(modelId))\r\n this._modelIds.add(modelId);\r\n\r\n break;\r\n }\r\n\r\n if (this._modelIds.size === 0) {\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Error, \"No plan projection models\"));\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n}\r\n"]}