@itwin/core-backend 3.4.0-dev.48 → 3.4.0-dev.50

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 (221) hide show
  1. package/lib/cjs/AliCloudStorageService.d.ts +17 -17
  2. package/lib/cjs/AliCloudStorageService.js +68 -68
  3. package/lib/cjs/AliCloudStorageService.js.map +1 -1
  4. package/lib/cjs/BackendHubAccess.d.ts +224 -224
  5. package/lib/cjs/BackendHubAccess.js +41 -41
  6. package/lib/cjs/BackendHubAccess.js.map +1 -1
  7. package/lib/cjs/BackendLoggerCategory.d.ts +87 -82
  8. package/lib/cjs/BackendLoggerCategory.d.ts.map +1 -1
  9. package/lib/cjs/BackendLoggerCategory.js +95 -90
  10. package/lib/cjs/BackendLoggerCategory.js.map +1 -1
  11. package/lib/cjs/BisCoreSchema.d.ts +21 -21
  12. package/lib/cjs/BisCoreSchema.js +60 -60
  13. package/lib/cjs/BisCoreSchema.js.map +1 -1
  14. package/lib/cjs/BriefcaseManager.d.ts +165 -165
  15. package/lib/cjs/BriefcaseManager.js +405 -405
  16. package/lib/cjs/BriefcaseManager.js.map +1 -1
  17. package/lib/cjs/Category.d.ts +153 -153
  18. package/lib/cjs/Category.js +243 -243
  19. package/lib/cjs/Category.js.map +1 -1
  20. package/lib/cjs/ChangeSummaryManager.d.ts +187 -187
  21. package/lib/cjs/ChangeSummaryManager.js +445 -445
  22. package/lib/cjs/ChangeSummaryManager.js.map +1 -1
  23. package/lib/cjs/ChangedElementsDb.d.ts +99 -99
  24. package/lib/cjs/ChangedElementsDb.js +165 -165
  25. package/lib/cjs/ChangedElementsDb.js.map +1 -1
  26. package/lib/cjs/ChangedElementsManager.d.ts +39 -39
  27. package/lib/cjs/ChangedElementsManager.js +88 -88
  28. package/lib/cjs/ChangedElementsManager.js.map +1 -1
  29. package/lib/cjs/CheckpointManager.d.ts +122 -122
  30. package/lib/cjs/CheckpointManager.js +354 -354
  31. package/lib/cjs/CheckpointManager.js.map +1 -1
  32. package/lib/cjs/ClassRegistry.d.ts +71 -71
  33. package/lib/cjs/ClassRegistry.js +213 -213
  34. package/lib/cjs/ClassRegistry.js.map +1 -1
  35. package/lib/cjs/CloudSqlite.d.ts +328 -328
  36. package/lib/cjs/CloudSqlite.js +135 -135
  37. package/lib/cjs/CloudSqlite.js.map +1 -1
  38. package/lib/cjs/CloudStorageBackend.d.ts +46 -46
  39. package/lib/cjs/CloudStorageBackend.js +164 -164
  40. package/lib/cjs/CloudStorageBackend.js.map +1 -1
  41. package/lib/cjs/CodeService.d.ts +391 -391
  42. package/lib/cjs/CodeService.js +61 -61
  43. package/lib/cjs/CodeService.js.map +1 -1
  44. package/lib/cjs/CodeSpecs.d.ts +50 -50
  45. package/lib/cjs/CodeSpecs.js +112 -112
  46. package/lib/cjs/CodeSpecs.js.map +1 -1
  47. package/lib/cjs/ConcurrentQuery.d.ts +11 -11
  48. package/lib/cjs/ConcurrentQuery.js +30 -30
  49. package/lib/cjs/ConcurrentQuery.js.map +1 -1
  50. package/lib/cjs/CustomViewState3dCreator.d.ts +32 -32
  51. package/lib/cjs/CustomViewState3dCreator.d.ts.map +1 -1
  52. package/lib/cjs/CustomViewState3dCreator.js +107 -99
  53. package/lib/cjs/CustomViewState3dCreator.js.map +1 -1
  54. package/lib/cjs/DevTools.d.ts +71 -71
  55. package/lib/cjs/DevTools.js +154 -154
  56. package/lib/cjs/DevTools.js.map +1 -1
  57. package/lib/cjs/DisplayStyle.d.ts +106 -106
  58. package/lib/cjs/DisplayStyle.js +256 -256
  59. package/lib/cjs/DisplayStyle.js.map +1 -1
  60. package/lib/cjs/ECDb.d.ts +191 -191
  61. package/lib/cjs/ECDb.js +350 -350
  62. package/lib/cjs/ECDb.js.map +1 -1
  63. package/lib/cjs/ECSchemaXmlContext.d.ts +18 -18
  64. package/lib/cjs/ECSchemaXmlContext.js +41 -41
  65. package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
  66. package/lib/cjs/ECSqlStatement.d.ts +466 -466
  67. package/lib/cjs/ECSqlStatement.js +791 -791
  68. package/lib/cjs/ECSqlStatement.js.map +1 -1
  69. package/lib/cjs/Element.d.ts +1109 -1109
  70. package/lib/cjs/Element.js +1421 -1421
  71. package/lib/cjs/Element.js.map +1 -1
  72. package/lib/cjs/ElementAspect.d.ts +156 -156
  73. package/lib/cjs/ElementAspect.js +178 -178
  74. package/lib/cjs/ElementAspect.js.map +1 -1
  75. package/lib/cjs/ElementGraphics.d.ts +9 -9
  76. package/lib/cjs/ElementGraphics.js +41 -41
  77. package/lib/cjs/ElementGraphics.js.map +1 -1
  78. package/lib/cjs/ElementTreeWalker.d.ts +162 -162
  79. package/lib/cjs/ElementTreeWalker.js +409 -409
  80. package/lib/cjs/ElementTreeWalker.js.map +1 -1
  81. package/lib/cjs/Entity.d.ts +76 -76
  82. package/lib/cjs/Entity.js +82 -82
  83. package/lib/cjs/Entity.js.map +1 -1
  84. package/lib/cjs/ExportGraphics.d.ts +317 -317
  85. package/lib/cjs/ExportGraphics.js +208 -208
  86. package/lib/cjs/ExportGraphics.js.map +1 -1
  87. package/lib/cjs/ExternalSource.d.ts +94 -94
  88. package/lib/cjs/ExternalSource.js +125 -125
  89. package/lib/cjs/ExternalSource.js.map +1 -1
  90. package/lib/cjs/GeoCoordConfig.d.ts +19 -19
  91. package/lib/cjs/GeoCoordConfig.js +82 -82
  92. package/lib/cjs/GeoCoordConfig.js.map +1 -1
  93. package/lib/cjs/GeometrySummary.d.ts +4 -4
  94. package/lib/cjs/GeometrySummary.js +380 -380
  95. package/lib/cjs/GeometrySummary.js.map +1 -1
  96. package/lib/cjs/HubMock.d.ts +93 -93
  97. package/lib/cjs/HubMock.js +190 -190
  98. package/lib/cjs/HubMock.js.map +1 -1
  99. package/lib/cjs/IModelCloneContext.d.ts +85 -85
  100. package/lib/cjs/IModelCloneContext.js +150 -150
  101. package/lib/cjs/IModelCloneContext.js.map +1 -1
  102. package/lib/cjs/IModelDb.d.ts +1164 -1164
  103. package/lib/cjs/IModelDb.js +2321 -2321
  104. package/lib/cjs/IModelDb.js.map +1 -1
  105. package/lib/cjs/IModelHost.d.ts +347 -347
  106. package/lib/cjs/IModelHost.js +457 -457
  107. package/lib/cjs/IModelHost.js.map +1 -1
  108. package/lib/cjs/IModelJsFs.d.ts +62 -62
  109. package/lib/cjs/IModelJsFs.js +140 -140
  110. package/lib/cjs/IModelJsFs.js.map +1 -1
  111. package/lib/cjs/IpcHost.d.ts +98 -98
  112. package/lib/cjs/IpcHost.js +234 -234
  113. package/lib/cjs/IpcHost.js.map +1 -1
  114. package/lib/cjs/LineStyle.d.ts +311 -311
  115. package/lib/cjs/LineStyle.js +295 -295
  116. package/lib/cjs/LineStyle.js.map +1 -1
  117. package/lib/cjs/LocalHub.d.ts +162 -162
  118. package/lib/cjs/LocalHub.js +587 -587
  119. package/lib/cjs/LocalHub.js.map +1 -1
  120. package/lib/cjs/LocalhostIpcHost.d.ts +20 -20
  121. package/lib/cjs/LocalhostIpcHost.js +81 -81
  122. package/lib/cjs/LocalhostIpcHost.js.map +1 -1
  123. package/lib/cjs/Material.d.ts +103 -103
  124. package/lib/cjs/Material.js +147 -147
  125. package/lib/cjs/Material.js.map +1 -1
  126. package/lib/cjs/Model.d.ts +386 -386
  127. package/lib/cjs/Model.js +468 -468
  128. package/lib/cjs/Model.js.map +1 -1
  129. package/lib/cjs/NativeAppStorage.d.ts +51 -51
  130. package/lib/cjs/NativeAppStorage.js +202 -202
  131. package/lib/cjs/NativeAppStorage.js.map +1 -1
  132. package/lib/cjs/NativeHost.d.ts +52 -52
  133. package/lib/cjs/NativeHost.js +168 -168
  134. package/lib/cjs/NativeHost.js.map +1 -1
  135. package/lib/cjs/NavigationRelationship.d.ts +156 -156
  136. package/lib/cjs/NavigationRelationship.js +225 -225
  137. package/lib/cjs/NavigationRelationship.js.map +1 -1
  138. package/lib/cjs/PromiseMemoizer.d.ts +51 -51
  139. package/lib/cjs/PromiseMemoizer.js +95 -95
  140. package/lib/cjs/PromiseMemoizer.js.map +1 -1
  141. package/lib/cjs/PropertyStore.d.ts +132 -132
  142. package/lib/cjs/PropertyStore.js +11 -11
  143. package/lib/cjs/PropertyStore.js.map +1 -1
  144. package/lib/cjs/Relationship.d.ts +400 -400
  145. package/lib/cjs/Relationship.js +465 -465
  146. package/lib/cjs/Relationship.js.map +1 -1
  147. package/lib/cjs/RpcBackend.d.ts +28 -28
  148. package/lib/cjs/RpcBackend.js +126 -126
  149. package/lib/cjs/RpcBackend.js.map +1 -1
  150. package/lib/cjs/SQLiteDb.d.ts +219 -219
  151. package/lib/cjs/SQLiteDb.js +214 -214
  152. package/lib/cjs/SQLiteDb.js.map +1 -1
  153. package/lib/cjs/Schema.d.ts +55 -55
  154. package/lib/cjs/Schema.js +83 -83
  155. package/lib/cjs/Schema.js.map +1 -1
  156. package/lib/cjs/ServerBasedLocks.d.ts +57 -57
  157. package/lib/cjs/ServerBasedLocks.js +168 -168
  158. package/lib/cjs/ServerBasedLocks.js.map +1 -1
  159. package/lib/cjs/SqliteStatement.d.ts +283 -283
  160. package/lib/cjs/SqliteStatement.js +448 -448
  161. package/lib/cjs/SqliteStatement.js.map +1 -1
  162. package/lib/cjs/Texture.d.ts +58 -58
  163. package/lib/cjs/Texture.js +82 -82
  164. package/lib/cjs/Texture.js.map +1 -1
  165. package/lib/cjs/TxnManager.d.ts +202 -202
  166. package/lib/cjs/TxnManager.js +353 -353
  167. package/lib/cjs/TxnManager.js.map +1 -1
  168. package/lib/cjs/ViewDefinition.d.ts +435 -435
  169. package/lib/cjs/ViewDefinition.js +629 -629
  170. package/lib/cjs/ViewDefinition.js.map +1 -1
  171. package/lib/cjs/ViewStateHydrator.d.ts +13 -13
  172. package/lib/cjs/ViewStateHydrator.js +103 -103
  173. package/lib/cjs/ViewStateHydrator.js.map +1 -1
  174. package/lib/cjs/assets/IModelChange.02.00.00.ecschema.xml +90 -90
  175. package/lib/cjs/assets/Settings/Schemas/Cloud.Schema.json +67 -67
  176. package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +31 -31
  177. package/lib/cjs/assets/Settings/Schemas/Workspace.Schema.json +52 -52
  178. package/lib/cjs/assets/Settings/backend.setting.json5 +138 -138
  179. package/lib/cjs/core-backend.d.ts +178 -178
  180. package/lib/cjs/core-backend.js +198 -198
  181. package/lib/cjs/core-backend.js.map +1 -1
  182. package/lib/cjs/domains/FunctionalElements.d.ts +101 -101
  183. package/lib/cjs/domains/FunctionalElements.js +145 -145
  184. package/lib/cjs/domains/FunctionalElements.js.map +1 -1
  185. package/lib/cjs/domains/FunctionalSchema.d.ts +13 -13
  186. package/lib/cjs/domains/FunctionalSchema.js +40 -40
  187. package/lib/cjs/domains/FunctionalSchema.js.map +1 -1
  188. package/lib/cjs/domains/GenericElements.d.ts +177 -177
  189. package/lib/cjs/domains/GenericElements.js +263 -263
  190. package/lib/cjs/domains/GenericElements.js.map +1 -1
  191. package/lib/cjs/domains/GenericSchema.d.ts +10 -10
  192. package/lib/cjs/domains/GenericSchema.js +28 -28
  193. package/lib/cjs/domains/GenericSchema.js.map +1 -1
  194. package/lib/cjs/rpc-impl/DevToolsRpcImpl.d.ts +15 -15
  195. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js +32 -32
  196. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  197. package/lib/cjs/rpc-impl/IModelReadRpcImpl.d.ts +45 -45
  198. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js +262 -262
  199. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  200. package/lib/cjs/rpc-impl/IModelTileRpcImpl.d.ts +20 -20
  201. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js +195 -195
  202. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  203. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.d.ts +36 -36
  204. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js +165 -165
  205. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  206. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.d.ts +16 -16
  207. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js +43 -43
  208. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  209. package/lib/cjs/rpc-impl/WipRpcImpl.d.ts +15 -15
  210. package/lib/cjs/rpc-impl/WipRpcImpl.js +37 -37
  211. package/lib/cjs/rpc-impl/WipRpcImpl.js.map +1 -1
  212. package/lib/cjs/workspace/Settings.d.ts +186 -186
  213. package/lib/cjs/workspace/Settings.js +152 -152
  214. package/lib/cjs/workspace/Settings.js.map +1 -1
  215. package/lib/cjs/workspace/SettingsSchemas.d.ts +75 -75
  216. package/lib/cjs/workspace/SettingsSchemas.js +191 -191
  217. package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
  218. package/lib/cjs/workspace/Workspace.d.ts +405 -405
  219. package/lib/cjs/workspace/Workspace.js +539 -539
  220. package/lib/cjs/workspace/Workspace.js.map +1 -1
  221. package/package.json +11 -11
@@ -1,630 +1,630 @@
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
- /** @packageDocumentation
7
- * @module ViewDefinitions
8
- */
9
- var _a, _b, _c, _d;
10
- Object.defineProperty(exports, "__esModule", { value: true });
11
- exports.LightLocation = exports.ViewAttachment = exports.AuxCoordSystemSpatial = exports.AuxCoordSystem3d = exports.AuxCoordSystem2d = exports.AuxCoordSystem = exports.TemplateViewDefinition3d = exports.TemplateViewDefinition2d = exports.SheetViewDefinition = exports.DrawingViewDefinition = exports.ViewDefinition2d = exports.OrthographicViewDefinition = exports.SpatialViewDefinition = exports.ViewDefinition3d = exports.ViewDefinition = exports.CategorySelector = exports.ModelSelector = void 0;
12
- const core_bentley_1 = require("@itwin/core-bentley");
13
- const core_geometry_1 = require("@itwin/core-geometry");
14
- const core_common_1 = require("@itwin/core-common");
15
- const Element_1 = require("./Element");
16
- /** Holds the list of Ids of GeometricModels displayed by a [[SpatialViewDefinition]]. Multiple SpatialViewDefinitions may point to the same ModelSelector.
17
- * @see [ModelSelectorState]($frontend)
18
- * See [how to create a ModelSelector]$(docs/learning/backend/CreateElements.md#ModelSelector).
19
- * @public
20
- */
21
- class ModelSelector extends Element_1.DefinitionElement {
22
- /** @internal */
23
- constructor(props, iModel) { super(props, iModel); this.models = props.models; }
24
- /** @internal */
25
- static get className() { return "ModelSelector"; }
26
- /** @internal */
27
- toJSON() {
28
- const val = super.toJSON();
29
- val.models = this.models;
30
- return val;
31
- }
32
- /** @internal */
33
- collectReferenceIds(referenceIds) {
34
- super.collectReferenceIds(referenceIds);
35
- this.models.forEach((modelId) => referenceIds.add(modelId));
36
- }
37
- /** Create a Code for a ModelSelector given a name that is meant to be unique within the scope of the specified DefinitionModel.
38
- * @param iModel The IModelDb
39
- * @param scopeModelId The Id of the DefinitionModel that contains the ModelSelector and provides the scope for its name.
40
- * @param codeValue The ModelSelector name
41
- */
42
- static createCode(iModel, scopeModelId, codeValue) {
43
- const codeSpec = iModel.codeSpecs.getByName(core_common_1.BisCodeSpec.modelSelector);
44
- return new core_common_1.Code({ spec: codeSpec.id, scope: scopeModelId, value: codeValue });
45
- }
46
- /**
47
- * Create a ModelSelector to select which Models are displayed by a ViewDefinition.
48
- * @param iModelDb The iModel
49
- * @param definitionModelId The [[DefinitionModel]]
50
- * @param name The name/CodeValue of the ModelSelector
51
- * @param models Array of models to select for display
52
- * @returns The newly constructed ModelSelector element.
53
- * @throws [[IModelError]] if unable to create the element.
54
- */
55
- static create(iModelDb, definitionModelId, name, models) {
56
- const modelSelectorProps = {
57
- classFullName: this.classFullName,
58
- code: this.createCode(iModelDb, definitionModelId, name),
59
- model: definitionModelId,
60
- models,
61
- isPrivate: false,
62
- };
63
- return new ModelSelector(modelSelectorProps, iModelDb);
64
- }
65
- /**
66
- * Insert a ModelSelector to select which Models are displayed by a ViewDefinition.
67
- * @param iModelDb Insert into this iModel
68
- * @param definitionModelId Insert the new ModelSelector into this DefinitionModel
69
- * @param name The name/CodeValue of the ModelSelector
70
- * @param models Array of models to select for display
71
- * @returns The Id of the newly inserted ModelSelector element.
72
- * @throws [[IModelError]] if unable to insert the element.
73
- */
74
- static insert(iModelDb, definitionModelId, name, models) {
75
- const modelSelector = this.create(iModelDb, definitionModelId, name, models);
76
- return iModelDb.elements.insertElement(modelSelector.toJSON());
77
- }
78
- }
79
- exports.ModelSelector = ModelSelector;
80
- /** Holds a list of Ids of Categories to be displayed in a view.
81
- * @see [CategorySelectorState]($frontend)
82
- * See [how to create a CategorySelector]$(docs/learning/backend/CreateElements.md#CategorySelector).
83
- * @public
84
- */
85
- class CategorySelector extends Element_1.DefinitionElement {
86
- /** @internal */
87
- constructor(props, iModel) { super(props, iModel); this.categories = props.categories; }
88
- /** @internal */
89
- static get className() { return "CategorySelector"; }
90
- /** @internal */
91
- toJSON() {
92
- const val = super.toJSON();
93
- val.categories = this.categories;
94
- return val;
95
- }
96
- /** @internal */
97
- collectReferenceIds(referenceIds) {
98
- super.collectReferenceIds(referenceIds);
99
- this.categories.forEach((categoryId) => referenceIds.add(categoryId));
100
- }
101
- /** Create a Code for a CategorySelector given a name that is meant to be unique within the scope of the specified DefinitionModel.
102
- * @param iModel The IModelDb
103
- * @param scopeModelId The Id of the DefinitionModel that contains the CategorySelector and provides the scope for its name.
104
- * @param codeValue The CategorySelector name
105
- */
106
- static createCode(iModel, scopeModelId, codeValue) {
107
- const codeSpec = iModel.codeSpecs.getByName(core_common_1.BisCodeSpec.categorySelector);
108
- return new core_common_1.Code({ spec: codeSpec.id, scope: scopeModelId, value: codeValue });
109
- }
110
- /**
111
- * Create a CategorySelector to select which categories are displayed by a ViewDefinition.
112
- * @param iModelDb The iModel
113
- * @param definitionModelId The [[DefinitionModel]]
114
- * @param name The name of the CategorySelector
115
- * @param categories Array of categories to select for display
116
- * @returns The newly constructed CategorySelector element.
117
- * @throws [[IModelError]] if unable to create the element.
118
- */
119
- static create(iModelDb, definitionModelId, name, categories) {
120
- const categorySelectorProps = {
121
- classFullName: this.classFullName,
122
- code: this.createCode(iModelDb, definitionModelId, name),
123
- model: definitionModelId,
124
- categories,
125
- isPrivate: false,
126
- };
127
- return new CategorySelector(categorySelectorProps, iModelDb);
128
- }
129
- /**
130
- * Insert a CategorySelector to select which categories are displayed by a ViewDefinition.
131
- * @param iModelDb Insert into this iModel
132
- * @param definitionModelId Insert the new CategorySelector into this DefinitionModel
133
- * @param name The name of the CategorySelector
134
- * @param categories Array of categories to select for display
135
- * @returns The Id of the newly inserted CategorySelector element.
136
- * @throws [[IModelError]] if unable to insert the element.
137
- */
138
- static insert(iModelDb, definitionModelId, name, categories) {
139
- const categorySelector = this.create(iModelDb, definitionModelId, name, categories);
140
- return iModelDb.elements.insertElement(categorySelector.toJSON());
141
- }
142
- }
143
- exports.CategorySelector = CategorySelector;
144
- /**
145
- * The definition element for a view. ViewDefinitions specify the area/volume that is viewed, the Ids of a DisplayStyle and a CategorySelector,
146
- * plus additional view-specific parameters in their [[Element.jsonProperties]].
147
- *
148
- * Subclasses of ViewDefinition determine which model(s) are viewed.
149
- *
150
- * **Example: Obtaining the background color for a view**
151
- * ``` ts
152
- * [[include:ViewDefinition.getBackgroundColor]]
153
- * ```
154
- *
155
- * @note ViewDefinition is only available in the backend. See [ViewState]($frontend) for usage in the frontend.
156
- * @public
157
- */
158
- class ViewDefinition extends (_b = Element_1.DefinitionElement) {
159
- /** @internal */
160
- constructor(props, iModel) {
161
- super(props, iModel);
162
- this.categorySelectorId = core_bentley_1.Id64.fromJSON(props.categorySelectorId);
163
- if (!core_bentley_1.Id64.isValid(this.categorySelectorId))
164
- throw new core_common_1.IModelError(core_bentley_1.IModelStatus.BadArg, `categorySelectorId is invalid`);
165
- this.displayStyleId = core_bentley_1.Id64.fromJSON(props.displayStyleId);
166
- if (!core_bentley_1.Id64.isValid(this.displayStyleId))
167
- throw new core_common_1.IModelError(core_bentley_1.IModelStatus.BadArg, `displayStyleId is invalid`);
168
- }
169
- /** @internal */
170
- static get className() { return "ViewDefinition"; }
171
- /** @internal */
172
- toJSON() {
173
- const json = super.toJSON();
174
- json.categorySelectorId = this.categorySelectorId;
175
- json.displayStyleId = this.displayStyleId;
176
- return json;
177
- }
178
- /** @internal */
179
- collectReferenceIds(referenceIds) {
180
- super.collectReferenceIds(referenceIds);
181
- referenceIds.add(this.categorySelectorId);
182
- referenceIds.add(this.displayStyleId);
183
- const acsId = this.getAuxiliaryCoordinateSystemId();
184
- if (core_bentley_1.Id64.isValidId64(acsId)) {
185
- referenceIds.add(acsId);
186
- }
187
- }
188
- /** @internal */
189
- static onCloned(context, sourceElementProps, targetElementProps) {
190
- super.onCloned(context, sourceElementProps, targetElementProps);
191
- if (context.isBetweenIModels && targetElementProps.jsonProperties && targetElementProps.jsonProperties.viewDetails) {
192
- const acsId = core_bentley_1.Id64.fromJSON(targetElementProps.jsonProperties.viewDetails.acs);
193
- if (core_bentley_1.Id64.isValidId64(acsId)) {
194
- targetElementProps.jsonProperties.viewDetails.acs = context.findTargetElementId(acsId);
195
- }
196
- }
197
- }
198
- /** Type guard for `instanceof ViewDefinition3d` */
199
- isView3d() { return this instanceof ViewDefinition3d; }
200
- /** Type guard for 'instanceof ViewDefinition2d` */
201
- isView2d() { return this instanceof ViewDefinition2d; }
202
- /** Type guard for `instanceof SpatialViewDefinition` */
203
- isSpatialView() { return this instanceof SpatialViewDefinition; }
204
- /** Type guard for 'instanceof DrawingViewDefinition' */
205
- isDrawingView() { return this instanceof DrawingViewDefinition; }
206
- /** Load this view's DisplayStyle from the IModelDb. */
207
- loadDisplayStyle() { return this.iModel.elements.getElement(this.displayStyleId); }
208
- /** Load this view's CategorySelector from the IModelDb. */
209
- loadCategorySelector() { return this.iModel.elements.getElement(this.categorySelectorId); }
210
- /** The Id of the AuxiliaryCoordinateSystem for this ViewDefinition, or an invalid Id if no ACS is defined. */
211
- getAuxiliaryCoordinateSystemId() {
212
- return this.details.auxiliaryCoordinateSystemId;
213
- }
214
- /** Set or clear the AuxiliaryCoordinateSystem for this ViewDefinition.
215
- * @param acsId The Id of the new AuxiliaryCoordinateSystem. If `Id64.invalid` is passed, then no AuxiliaryCoordinateSystem will be used.
216
- */
217
- setAuxiliaryCoordinateSystemId(acsId) {
218
- this.details.auxiliaryCoordinateSystemId = acsId;
219
- }
220
- /** Create a Code for a ViewDefinition given a name that is meant to be unique within the scope of the specified DefinitionModel.
221
- * @param iModel The IModelDb
222
- * @param scopeModelId The Id of the DefinitionModel to contain the ViewDefinition and provides the scope for its name.
223
- * @param codeValue The ViewDefinition name
224
- */
225
- static createCode(iModel, scopeModelId, codeValue) {
226
- const codeSpec = iModel.codeSpecs.getByName(core_common_1.BisCodeSpec.viewDefinition);
227
- return new core_common_1.Code({ spec: codeSpec.id, scope: scopeModelId, value: codeValue });
228
- }
229
- }
230
- exports.ViewDefinition = ViewDefinition;
231
- _a = ViewDefinition;
232
- /** @beta */
233
- ViewDefinition.requiredReferenceKeys = [...Reflect.get(_b, "requiredReferenceKeys", _a), "categorySelectorId", "displayStyleId"];
234
- /** Defines a view of one or more 3d models.
235
- * @public
236
- */
237
- class ViewDefinition3d extends ViewDefinition {
238
- /** @internal */
239
- constructor(props, iModel) {
240
- super(props, iModel);
241
- this.cameraOn = core_bentley_1.JsonUtils.asBool(props.cameraOn);
242
- this.origin = core_geometry_1.Point3d.fromJSON(props.origin);
243
- this.extents = core_geometry_1.Vector3d.fromJSON(props.extents);
244
- this.angles = core_geometry_1.YawPitchRollAngles.fromJSON(props.angles);
245
- this.camera = new core_common_1.Camera(props.camera);
246
- this._details = new core_common_1.ViewDetails3d(this.jsonProperties);
247
- }
248
- /** @internal */
249
- static get className() { return "ViewDefinition3d"; }
250
- /** @internal */
251
- toJSON() {
252
- const val = super.toJSON();
253
- val.cameraOn = this.cameraOn;
254
- val.origin = this.origin;
255
- val.extents = this.extents;
256
- val.angles = this.angles;
257
- val.camera = this.camera;
258
- return val;
259
- }
260
- /** Provides access to optional detail settings for this view. */
261
- get details() { return this._details; }
262
- /** Load this view's DisplayStyle3d from the IModelDb. */
263
- loadDisplayStyle3d() { return this.iModel.elements.getElement(this.displayStyleId); }
264
- }
265
- exports.ViewDefinition3d = ViewDefinition3d;
266
- /** Defines a view of one or more SpatialModels.
267
- * The list of viewed models is stored by the ModelSelector.
268
- *
269
- * This is how a SpatialViewDefinition selects the elements to display:
270
- *
271
- * SpatialViewDefinition
272
- * * ModelSelector
273
- * * ModelIds -------> SpatialModels <----------GeometricElement3d.Model
274
- * * CategorySelector
275
- * * CategoryIds -----> SpatialCategories <----------GeometricElement3d.Category
276
- * @public
277
- */
278
- class SpatialViewDefinition extends (_d = ViewDefinition3d) {
279
- /** @internal */
280
- constructor(props, iModel) {
281
- super(props, iModel);
282
- this.modelSelectorId = core_bentley_1.Id64.fromJSON(props.modelSelectorId);
283
- if (!core_bentley_1.Id64.isValid(this.modelSelectorId))
284
- throw new core_common_1.IModelError(core_bentley_1.IModelStatus.BadArg, `modelSelectorId is invalid`);
285
- }
286
- /** @internal */
287
- static get className() { return "SpatialViewDefinition"; }
288
- /** @internal */
289
- toJSON() {
290
- const json = super.toJSON();
291
- json.modelSelectorId = this.modelSelectorId;
292
- return json;
293
- }
294
- /** @internal */
295
- collectReferenceIds(referenceIds) {
296
- super.collectReferenceIds(referenceIds);
297
- referenceIds.add(this.modelSelectorId);
298
- }
299
- /** Load this view's ModelSelector from the IModelDb. */
300
- loadModelSelector() { return this.iModel.elements.getElement(this.modelSelectorId); }
301
- /**
302
- * Create an SpatialViewDefinition with camera.
303
- * @param iModelDb The iModel
304
- * @param definitionModelId The [[DefinitionModel]]
305
- * @param name The name/CodeValue of the view
306
- * @param modelSelectorId The [[ModelSelector]] that this view should use
307
- * @param categorySelectorId The [[CategorySelector]] that this view should use
308
- * @param displayStyleId The [[DisplayStyle3d]] that this view should use
309
- * @param range Defines the view origin and extents
310
- * @param standardView Optionally defines the view's rotation
311
- * @param cameraAngle Camera angle in radians.
312
- * @returns The newly constructed OrthographicViewDefinition element
313
- * @throws [[IModelError]] if there is a problem creating the view
314
- */
315
- static createWithCamera(iModelDb, definitionModelId, name, modelSelectorId, categorySelectorId, displayStyleId, range, standardView = core_geometry_1.StandardViewIndex.Iso, cameraAngle = core_geometry_1.Angle.piOver2Radians) {
316
- const rotation = core_geometry_1.Matrix3d.createStandardWorldToView(standardView);
317
- const angles = core_geometry_1.YawPitchRollAngles.createFromMatrix3d(rotation);
318
- const rotationTransform = core_geometry_1.Transform.createOriginAndMatrix(undefined, rotation);
319
- const rotatedRange = rotationTransform.multiplyRange(range);
320
- const cameraDistance = 2 * (rotatedRange.diagonal().magnitudeXY() / 2.0) / Math.tan(cameraAngle / 2.0);
321
- const cameraLocation = rotatedRange.diagonalFractionToPoint(.5); // Start at center.
322
- cameraLocation.z += cameraDistance; // Back up by camera distance.
323
- rotation.multiplyTransposeVectorInPlace(cameraLocation);
324
- const viewDefinitionProps = {
325
- classFullName: this.classFullName,
326
- model: definitionModelId,
327
- code: this.createCode(iModelDb, definitionModelId, name),
328
- modelSelectorId,
329
- categorySelectorId,
330
- displayStyleId,
331
- origin: rotation.multiplyTransposeXYZ(rotatedRange.low.x, rotatedRange.low.y, rotatedRange.low.z),
332
- extents: rotatedRange.diagonal(),
333
- angles,
334
- cameraOn: true,
335
- camera: { lens: { radians: cameraAngle }, focusDist: cameraDistance, eye: cameraLocation },
336
- };
337
- return new SpatialViewDefinition(viewDefinitionProps, iModelDb);
338
- }
339
- /**
340
- * Insert an SpatialViewDefinition with camera On
341
- * @param iModelDb Insert into this iModel
342
- * @param definitionModelId Insert the new OrthographicViewDefinition into this DefinitionModel
343
- * @param name The name/CodeValue of the view
344
- * @param modelSelectorId The [[ModelSelector]] that this view should use
345
- * @param categorySelectorId The [[CategorySelector]] that this view should use
346
- * @param displayStyleId The [[DisplayStyle3d]] that this view should use
347
- * @param range Defines the view origin and extents
348
- * @param standardView Optionally defines the view's rotation
349
- * @param cameraAngle Camera angle in radians.
350
- * @returns The Id of the newly inserted OrthographicViewDefinition element
351
- * @throws [[IModelError]] if there is an insert problem.
352
- */
353
- static insertWithCamera(iModelDb, definitionModelId, name, modelSelectorId, categorySelectorId, displayStyleId, range, standardView = core_geometry_1.StandardViewIndex.Iso, cameraAngle = core_geometry_1.Angle.piOver2Radians) {
354
- const viewDefinition = this.createWithCamera(iModelDb, definitionModelId, name, modelSelectorId, categorySelectorId, displayStyleId, range, standardView, cameraAngle);
355
- return iModelDb.elements.insertElement(viewDefinition.toJSON());
356
- }
357
- }
358
- exports.SpatialViewDefinition = SpatialViewDefinition;
359
- _c = SpatialViewDefinition;
360
- /** @beta */
361
- SpatialViewDefinition.requiredReferenceKeys = [...Reflect.get(_d, "requiredReferenceKeys", _c), "modelSelectorId"];
362
- /** Defines a spatial view that displays geometry on the image plane using a parallel orthographic projection.
363
- * See [how to create a OrthographicViewDefinition]$(docs/learning/backend/CreateElements.md#OrthographicViewDefinition).
364
- * @public
365
- */
366
- class OrthographicViewDefinition extends SpatialViewDefinition {
367
- /** @internal */
368
- static get className() { return "OrthographicViewDefinition"; }
369
- constructor(props, iModel) { super(props, iModel); }
370
- /**
371
- * Create an OrthographicViewDefinition
372
- * @param iModelDb The iModel
373
- * @param definitionModelId The [[DefinitionModel]]
374
- * @param name The name/CodeValue of the view
375
- * @param modelSelectorId The [[ModelSelector]] that this view should use
376
- * @param categorySelectorId The [[CategorySelector]] that this view should use
377
- * @param displayStyleId The [[DisplayStyle3d]] that this view should use
378
- * @param range Defines the view origin and extents
379
- * @param standardView Optionally defines the view's rotation
380
- * @returns The newly constructed OrthographicViewDefinition element
381
- * @throws [[IModelError]] if there is a problem creating the view
382
- */
383
- static create(iModelDb, definitionModelId, name, modelSelectorId, categorySelectorId, displayStyleId, range, standardView = core_geometry_1.StandardViewIndex.Iso) {
384
- const rotation = core_geometry_1.Matrix3d.createStandardWorldToView(standardView);
385
- const angles = core_geometry_1.YawPitchRollAngles.createFromMatrix3d(rotation);
386
- const rotationTransform = core_geometry_1.Transform.createOriginAndMatrix(undefined, rotation);
387
- const rotatedRange = rotationTransform.multiplyRange(range);
388
- const viewDefinitionProps = {
389
- classFullName: this.classFullName,
390
- model: definitionModelId,
391
- code: this.createCode(iModelDb, definitionModelId, name),
392
- modelSelectorId,
393
- categorySelectorId,
394
- displayStyleId,
395
- origin: rotation.multiplyTransposeXYZ(rotatedRange.low.x, rotatedRange.low.y, rotatedRange.low.z),
396
- extents: rotatedRange.diagonal(),
397
- angles,
398
- cameraOn: false,
399
- camera: new core_common_1.Camera(), // not used when cameraOn === false
400
- };
401
- return new OrthographicViewDefinition(viewDefinitionProps, iModelDb);
402
- }
403
- /**
404
- * Insert an OrthographicViewDefinition
405
- * @param iModelDb Insert into this iModel
406
- * @param definitionModelId Insert the new OrthographicViewDefinition into this DefinitionModel
407
- * @param name The name/CodeValue of the view
408
- * @param modelSelectorId The [[ModelSelector]] that this view should use
409
- * @param categorySelectorId The [[CategorySelector]] that this view should use
410
- * @param displayStyleId The [[DisplayStyle3d]] that this view should use
411
- * @param range Defines the view origin and extents
412
- * @param standardView Optionally defines the view's rotation
413
- * @returns The Id of the newly inserted OrthographicViewDefinition element
414
- * @throws [[IModelError]] if there is an insert problem.
415
- */
416
- static insert(iModelDb, definitionModelId, name, modelSelectorId, categorySelectorId, displayStyleId, range, standardView = core_geometry_1.StandardViewIndex.Iso) {
417
- const viewDefinition = this.create(iModelDb, definitionModelId, name, modelSelectorId, categorySelectorId, displayStyleId, range, standardView);
418
- return iModelDb.elements.insertElement(viewDefinition.toJSON());
419
- }
420
- /** Set a new viewed range without changing the rotation or any other properties. */
421
- setRange(range) {
422
- const rotation = this.angles.toMatrix3d();
423
- const rotationTransform = core_geometry_1.Transform.createOriginAndMatrix(undefined, rotation);
424
- const rotatedRange = rotationTransform.multiplyRange(range);
425
- this.origin = core_geometry_1.Point3d.createFrom(rotation.multiplyTransposeXYZ(rotatedRange.low.x, rotatedRange.low.y, rotatedRange.low.z));
426
- this.extents = rotatedRange.diagonal();
427
- }
428
- }
429
- exports.OrthographicViewDefinition = OrthographicViewDefinition;
430
- /** Defines a view of a single 2d model. Each 2d model has its own coordinate system, so only one may appear per view.
431
- * @public
432
- */
433
- class ViewDefinition2d extends ViewDefinition {
434
- /** @internal */
435
- constructor(props, iModel) {
436
- super(props, iModel);
437
- this.baseModelId = core_bentley_1.Id64.fromJSON(props.baseModelId);
438
- this.origin = core_geometry_1.Point2d.fromJSON(props.origin);
439
- this.delta = core_geometry_1.Point2d.fromJSON(props.delta);
440
- this.angle = core_geometry_1.Angle.fromJSON(props.angle);
441
- this._details = new core_common_1.ViewDetails(this.jsonProperties);
442
- }
443
- /** @internal */
444
- static get className() { return "ViewDefinition2d"; }
445
- /** @internal */
446
- toJSON() {
447
- const val = super.toJSON();
448
- val.baseModelId = this.baseModelId;
449
- val.origin = this.origin;
450
- val.delta = this.delta;
451
- val.angle = this.angle;
452
- return val;
453
- }
454
- /** @internal */
455
- collectReferenceIds(referenceIds) {
456
- super.collectReferenceIds(referenceIds);
457
- referenceIds.add(this.baseModelId);
458
- }
459
- /** Provides access to optional detail settings for this view. */
460
- get details() { return this._details; }
461
- /** Load this view's DisplayStyle2d from the IModelDb. */
462
- loadDisplayStyle2d() { return this.iModel.elements.getElement(this.displayStyleId); }
463
- }
464
- exports.ViewDefinition2d = ViewDefinition2d;
465
- /** Defines a view of a [[DrawingModel]].
466
- * @public
467
- */
468
- class DrawingViewDefinition extends ViewDefinition2d {
469
- /** @internal */
470
- static get className() { return "DrawingViewDefinition"; }
471
- /** @internal */
472
- constructor(props, iModel) {
473
- super(props, iModel);
474
- }
475
- /** Create a DrawingViewDefinition
476
- * @param iModelDb The iModel
477
- * @param definitionModelId The [[DefinitionModel]]
478
- * @param name The name/CodeValue of the view
479
- * @param baseModelId The base [[DrawingModel]]
480
- * @param categorySelectorId The [[CategorySelector]] that this view should use
481
- * @param displayStyleId The [[DisplayStyle2d]] that this view should use
482
- * @param range Defines the view origin and extents
483
- * @throws [[IModelError]] if there is a problem creating the element.
484
- */
485
- static create(iModelDb, definitionModelId, name, baseModelId, categorySelectorId, displayStyleId, range) {
486
- const viewDefinitionProps = {
487
- classFullName: this.classFullName,
488
- model: definitionModelId,
489
- code: this.createCode(iModelDb, definitionModelId, name),
490
- baseModelId,
491
- categorySelectorId,
492
- displayStyleId,
493
- origin: { x: range.low.x, y: range.low.y },
494
- delta: range.diagonal(),
495
- angle: 0,
496
- };
497
- return new DrawingViewDefinition(viewDefinitionProps, iModelDb);
498
- }
499
- /** Insert a DrawingViewDefinition
500
- * @param iModelDb Insert into this iModel
501
- * @param definitionModelId Insert the new DrawingViewDefinition into this [[DefinitionModel]]
502
- * @param name The name/CodeValue of the view
503
- * @param baseModelId The base [[DrawingModel]]
504
- * @param categorySelectorId The [[CategorySelector]] that this view should use
505
- * @param displayStyleId The [[DisplayStyle2d]] that this view should use
506
- * @param range Defines the view origin and extents
507
- * @throws [[IModelError]] if there is an insert problem.
508
- */
509
- static insert(iModelDb, definitionModelId, name, baseModelId, categorySelectorId, displayStyleId, range) {
510
- const viewDefinition = this.create(iModelDb, definitionModelId, name, baseModelId, categorySelectorId, displayStyleId, range);
511
- return iModelDb.elements.insertElement(viewDefinition.toJSON());
512
- }
513
- }
514
- exports.DrawingViewDefinition = DrawingViewDefinition;
515
- /** Defines a view of a [[SheetModel]].
516
- * @public
517
- */
518
- class SheetViewDefinition extends ViewDefinition2d {
519
- /** @internal */
520
- static get className() { return "SheetViewDefinition"; }
521
- }
522
- exports.SheetViewDefinition = SheetViewDefinition;
523
- /** A ViewDefinition used to display a 2d template model.
524
- * @internal
525
- */
526
- class TemplateViewDefinition2d extends ViewDefinition2d {
527
- /** @internal */
528
- static get className() { return "TemplateViewDefinition2d"; }
529
- }
530
- exports.TemplateViewDefinition2d = TemplateViewDefinition2d;
531
- /** A ViewDefinition used to display a 3d template model.
532
- * @internal
533
- */
534
- class TemplateViewDefinition3d extends ViewDefinition3d {
535
- /** @internal */
536
- static get className() { return "TemplateViewDefinition3d"; }
537
- }
538
- exports.TemplateViewDefinition3d = TemplateViewDefinition3d;
539
- /** An auxiliary coordinate system element. Auxiliary coordinate systems can be used by views to show
540
- * coordinate information in different units and/or orientations.
541
- * @public
542
- */
543
- class AuxCoordSystem extends Element_1.DefinitionElement {
544
- constructor(props, iModel) { super(props, iModel); }
545
- /** @internal */
546
- static get className() { return "AuxCoordSystem"; }
547
- }
548
- exports.AuxCoordSystem = AuxCoordSystem;
549
- /** A 2d auxiliary coordinate system.
550
- * @public
551
- */
552
- class AuxCoordSystem2d extends AuxCoordSystem {
553
- constructor(props, iModel) { super(props, iModel); }
554
- /** @internal */
555
- static get className() { return "AuxCoordSystem2d"; }
556
- /** Create a Code for a AuxCoordSystem2d element given a name that is meant to be unique within the scope of the specified DefinitionModel.
557
- * @param iModel The IModelDb
558
- * @param scopeModelId The Id of the DefinitionModel that contains the AuxCoordSystem2d element and provides the scope for its name.
559
- * @param codeValue The AuxCoordSystem2d name
560
- */
561
- static createCode(iModel, scopeModelId, codeValue) {
562
- const codeSpec = iModel.codeSpecs.getByName(core_common_1.BisCodeSpec.auxCoordSystem2d);
563
- return new core_common_1.Code({ spec: codeSpec.id, scope: scopeModelId, value: codeValue });
564
- }
565
- }
566
- exports.AuxCoordSystem2d = AuxCoordSystem2d;
567
- /** A 3d auxiliary coordinate system.
568
- * @public
569
- */
570
- class AuxCoordSystem3d extends AuxCoordSystem {
571
- constructor(props, iModel) { super(props, iModel); }
572
- /** @internal */
573
- static get className() { return "AuxCoordSystem3d"; }
574
- /** Create a Code for a AuxCoordSystem3d element given a name that is meant to be unique within the scope of the specified DefinitionModel.
575
- * @param iModel The IModelDb
576
- * @param scopeModelId The Id of the DefinitionModel that contains the AuxCoordSystem3d element and provides the scope for its name.
577
- * @param codeValue The AuxCoordSystem3d name
578
- */
579
- static createCode(iModel, scopeModelId, codeValue) {
580
- const codeSpec = iModel.codeSpecs.getByName(core_common_1.BisCodeSpec.auxCoordSystem3d);
581
- return new core_common_1.Code({ spec: codeSpec.id, scope: scopeModelId, value: codeValue });
582
- }
583
- }
584
- exports.AuxCoordSystem3d = AuxCoordSystem3d;
585
- /** A spatial auxiliary coordinate system.
586
- * @public
587
- */
588
- class AuxCoordSystemSpatial extends AuxCoordSystem3d {
589
- /** @internal */
590
- static get className() { return "AuxCoordSystemSpatial"; }
591
- /** Create a Code for a AuxCoordSystemSpatial element given a name that is meant to be unique within the scope of the specified DefinitionModel.
592
- * @param iModel The IModelDb
593
- * @param scopeModelId The Id of the DefinitionModel that contains the AuxCoordSystemSpatial element and provides the scope for its name.
594
- * @param codeValue The AuxCoordSystemSpatial name
595
- */
596
- static createCode(iModel, scopeModelId, codeValue) {
597
- const codeSpec = iModel.codeSpecs.getByName(core_common_1.BisCodeSpec.auxCoordSystemSpatial);
598
- return new core_common_1.Code({ spec: codeSpec.id, scope: scopeModelId, value: codeValue });
599
- }
600
- }
601
- exports.AuxCoordSystemSpatial = AuxCoordSystemSpatial;
602
- /** Represents an *attachment* of a [[ViewDefinition]] to a [[Sheet]].
603
- * @public
604
- */
605
- class ViewAttachment extends Element_1.GraphicalElement2d {
606
- constructor(props, iModel) {
607
- super(props, iModel);
608
- this.view = new core_common_1.RelatedElement(props.view);
609
- // ###NOTE: scale, displayPriority, and clipping vectors are stored in ViewAttachmentProps.jsonProperties.
610
- }
611
- /** @internal */
612
- static get className() { return "ViewAttachment"; }
613
- /** @internal */
614
- collectReferenceIds(referenceIds) {
615
- super.collectReferenceIds(referenceIds);
616
- referenceIds.add(this.view.id);
617
- }
618
- }
619
- exports.ViewAttachment = ViewAttachment;
620
- /** The position in space of a Light.
621
- * @internal
622
- */
623
- class LightLocation extends Element_1.SpatialLocationElement {
624
- /** @internal */
625
- constructor(props, iModel) { super(props, iModel); }
626
- /** @internal */
627
- static get className() { return "LightLocation"; }
628
- }
629
- exports.LightLocation = LightLocation;
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
+ /** @packageDocumentation
7
+ * @module ViewDefinitions
8
+ */
9
+ var _a, _b, _c, _d;
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.LightLocation = exports.ViewAttachment = exports.AuxCoordSystemSpatial = exports.AuxCoordSystem3d = exports.AuxCoordSystem2d = exports.AuxCoordSystem = exports.TemplateViewDefinition3d = exports.TemplateViewDefinition2d = exports.SheetViewDefinition = exports.DrawingViewDefinition = exports.ViewDefinition2d = exports.OrthographicViewDefinition = exports.SpatialViewDefinition = exports.ViewDefinition3d = exports.ViewDefinition = exports.CategorySelector = exports.ModelSelector = void 0;
12
+ const core_bentley_1 = require("@itwin/core-bentley");
13
+ const core_geometry_1 = require("@itwin/core-geometry");
14
+ const core_common_1 = require("@itwin/core-common");
15
+ const Element_1 = require("./Element");
16
+ /** Holds the list of Ids of GeometricModels displayed by a [[SpatialViewDefinition]]. Multiple SpatialViewDefinitions may point to the same ModelSelector.
17
+ * @see [ModelSelectorState]($frontend)
18
+ * See [how to create a ModelSelector]$(docs/learning/backend/CreateElements.md#ModelSelector).
19
+ * @public
20
+ */
21
+ class ModelSelector extends Element_1.DefinitionElement {
22
+ /** @internal */
23
+ constructor(props, iModel) { super(props, iModel); this.models = props.models; }
24
+ /** @internal */
25
+ static get className() { return "ModelSelector"; }
26
+ /** @internal */
27
+ toJSON() {
28
+ const val = super.toJSON();
29
+ val.models = this.models;
30
+ return val;
31
+ }
32
+ /** @internal */
33
+ collectReferenceIds(referenceIds) {
34
+ super.collectReferenceIds(referenceIds);
35
+ this.models.forEach((modelId) => referenceIds.add(modelId));
36
+ }
37
+ /** Create a Code for a ModelSelector given a name that is meant to be unique within the scope of the specified DefinitionModel.
38
+ * @param iModel The IModelDb
39
+ * @param scopeModelId The Id of the DefinitionModel that contains the ModelSelector and provides the scope for its name.
40
+ * @param codeValue The ModelSelector name
41
+ */
42
+ static createCode(iModel, scopeModelId, codeValue) {
43
+ const codeSpec = iModel.codeSpecs.getByName(core_common_1.BisCodeSpec.modelSelector);
44
+ return new core_common_1.Code({ spec: codeSpec.id, scope: scopeModelId, value: codeValue });
45
+ }
46
+ /**
47
+ * Create a ModelSelector to select which Models are displayed by a ViewDefinition.
48
+ * @param iModelDb The iModel
49
+ * @param definitionModelId The [[DefinitionModel]]
50
+ * @param name The name/CodeValue of the ModelSelector
51
+ * @param models Array of models to select for display
52
+ * @returns The newly constructed ModelSelector element.
53
+ * @throws [[IModelError]] if unable to create the element.
54
+ */
55
+ static create(iModelDb, definitionModelId, name, models) {
56
+ const modelSelectorProps = {
57
+ classFullName: this.classFullName,
58
+ code: this.createCode(iModelDb, definitionModelId, name),
59
+ model: definitionModelId,
60
+ models,
61
+ isPrivate: false,
62
+ };
63
+ return new ModelSelector(modelSelectorProps, iModelDb);
64
+ }
65
+ /**
66
+ * Insert a ModelSelector to select which Models are displayed by a ViewDefinition.
67
+ * @param iModelDb Insert into this iModel
68
+ * @param definitionModelId Insert the new ModelSelector into this DefinitionModel
69
+ * @param name The name/CodeValue of the ModelSelector
70
+ * @param models Array of models to select for display
71
+ * @returns The Id of the newly inserted ModelSelector element.
72
+ * @throws [[IModelError]] if unable to insert the element.
73
+ */
74
+ static insert(iModelDb, definitionModelId, name, models) {
75
+ const modelSelector = this.create(iModelDb, definitionModelId, name, models);
76
+ return iModelDb.elements.insertElement(modelSelector.toJSON());
77
+ }
78
+ }
79
+ exports.ModelSelector = ModelSelector;
80
+ /** Holds a list of Ids of Categories to be displayed in a view.
81
+ * @see [CategorySelectorState]($frontend)
82
+ * See [how to create a CategorySelector]$(docs/learning/backend/CreateElements.md#CategorySelector).
83
+ * @public
84
+ */
85
+ class CategorySelector extends Element_1.DefinitionElement {
86
+ /** @internal */
87
+ constructor(props, iModel) { super(props, iModel); this.categories = props.categories; }
88
+ /** @internal */
89
+ static get className() { return "CategorySelector"; }
90
+ /** @internal */
91
+ toJSON() {
92
+ const val = super.toJSON();
93
+ val.categories = this.categories;
94
+ return val;
95
+ }
96
+ /** @internal */
97
+ collectReferenceIds(referenceIds) {
98
+ super.collectReferenceIds(referenceIds);
99
+ this.categories.forEach((categoryId) => referenceIds.add(categoryId));
100
+ }
101
+ /** Create a Code for a CategorySelector given a name that is meant to be unique within the scope of the specified DefinitionModel.
102
+ * @param iModel The IModelDb
103
+ * @param scopeModelId The Id of the DefinitionModel that contains the CategorySelector and provides the scope for its name.
104
+ * @param codeValue The CategorySelector name
105
+ */
106
+ static createCode(iModel, scopeModelId, codeValue) {
107
+ const codeSpec = iModel.codeSpecs.getByName(core_common_1.BisCodeSpec.categorySelector);
108
+ return new core_common_1.Code({ spec: codeSpec.id, scope: scopeModelId, value: codeValue });
109
+ }
110
+ /**
111
+ * Create a CategorySelector to select which categories are displayed by a ViewDefinition.
112
+ * @param iModelDb The iModel
113
+ * @param definitionModelId The [[DefinitionModel]]
114
+ * @param name The name of the CategorySelector
115
+ * @param categories Array of categories to select for display
116
+ * @returns The newly constructed CategorySelector element.
117
+ * @throws [[IModelError]] if unable to create the element.
118
+ */
119
+ static create(iModelDb, definitionModelId, name, categories) {
120
+ const categorySelectorProps = {
121
+ classFullName: this.classFullName,
122
+ code: this.createCode(iModelDb, definitionModelId, name),
123
+ model: definitionModelId,
124
+ categories,
125
+ isPrivate: false,
126
+ };
127
+ return new CategorySelector(categorySelectorProps, iModelDb);
128
+ }
129
+ /**
130
+ * Insert a CategorySelector to select which categories are displayed by a ViewDefinition.
131
+ * @param iModelDb Insert into this iModel
132
+ * @param definitionModelId Insert the new CategorySelector into this DefinitionModel
133
+ * @param name The name of the CategorySelector
134
+ * @param categories Array of categories to select for display
135
+ * @returns The Id of the newly inserted CategorySelector element.
136
+ * @throws [[IModelError]] if unable to insert the element.
137
+ */
138
+ static insert(iModelDb, definitionModelId, name, categories) {
139
+ const categorySelector = this.create(iModelDb, definitionModelId, name, categories);
140
+ return iModelDb.elements.insertElement(categorySelector.toJSON());
141
+ }
142
+ }
143
+ exports.CategorySelector = CategorySelector;
144
+ /**
145
+ * The definition element for a view. ViewDefinitions specify the area/volume that is viewed, the Ids of a DisplayStyle and a CategorySelector,
146
+ * plus additional view-specific parameters in their [[Element.jsonProperties]].
147
+ *
148
+ * Subclasses of ViewDefinition determine which model(s) are viewed.
149
+ *
150
+ * **Example: Obtaining the background color for a view**
151
+ * ``` ts
152
+ * [[include:ViewDefinition.getBackgroundColor]]
153
+ * ```
154
+ *
155
+ * @note ViewDefinition is only available in the backend. See [ViewState]($frontend) for usage in the frontend.
156
+ * @public
157
+ */
158
+ class ViewDefinition extends (_b = Element_1.DefinitionElement) {
159
+ /** @internal */
160
+ constructor(props, iModel) {
161
+ super(props, iModel);
162
+ this.categorySelectorId = core_bentley_1.Id64.fromJSON(props.categorySelectorId);
163
+ if (!core_bentley_1.Id64.isValid(this.categorySelectorId))
164
+ throw new core_common_1.IModelError(core_bentley_1.IModelStatus.BadArg, `categorySelectorId is invalid`);
165
+ this.displayStyleId = core_bentley_1.Id64.fromJSON(props.displayStyleId);
166
+ if (!core_bentley_1.Id64.isValid(this.displayStyleId))
167
+ throw new core_common_1.IModelError(core_bentley_1.IModelStatus.BadArg, `displayStyleId is invalid`);
168
+ }
169
+ /** @internal */
170
+ static get className() { return "ViewDefinition"; }
171
+ /** @internal */
172
+ toJSON() {
173
+ const json = super.toJSON();
174
+ json.categorySelectorId = this.categorySelectorId;
175
+ json.displayStyleId = this.displayStyleId;
176
+ return json;
177
+ }
178
+ /** @internal */
179
+ collectReferenceIds(referenceIds) {
180
+ super.collectReferenceIds(referenceIds);
181
+ referenceIds.add(this.categorySelectorId);
182
+ referenceIds.add(this.displayStyleId);
183
+ const acsId = this.getAuxiliaryCoordinateSystemId();
184
+ if (core_bentley_1.Id64.isValidId64(acsId)) {
185
+ referenceIds.add(acsId);
186
+ }
187
+ }
188
+ /** @internal */
189
+ static onCloned(context, sourceElementProps, targetElementProps) {
190
+ super.onCloned(context, sourceElementProps, targetElementProps);
191
+ if (context.isBetweenIModels && targetElementProps.jsonProperties && targetElementProps.jsonProperties.viewDetails) {
192
+ const acsId = core_bentley_1.Id64.fromJSON(targetElementProps.jsonProperties.viewDetails.acs);
193
+ if (core_bentley_1.Id64.isValidId64(acsId)) {
194
+ targetElementProps.jsonProperties.viewDetails.acs = context.findTargetElementId(acsId);
195
+ }
196
+ }
197
+ }
198
+ /** Type guard for `instanceof ViewDefinition3d` */
199
+ isView3d() { return this instanceof ViewDefinition3d; }
200
+ /** Type guard for 'instanceof ViewDefinition2d` */
201
+ isView2d() { return this instanceof ViewDefinition2d; }
202
+ /** Type guard for `instanceof SpatialViewDefinition` */
203
+ isSpatialView() { return this instanceof SpatialViewDefinition; }
204
+ /** Type guard for 'instanceof DrawingViewDefinition' */
205
+ isDrawingView() { return this instanceof DrawingViewDefinition; }
206
+ /** Load this view's DisplayStyle from the IModelDb. */
207
+ loadDisplayStyle() { return this.iModel.elements.getElement(this.displayStyleId); }
208
+ /** Load this view's CategorySelector from the IModelDb. */
209
+ loadCategorySelector() { return this.iModel.elements.getElement(this.categorySelectorId); }
210
+ /** The Id of the AuxiliaryCoordinateSystem for this ViewDefinition, or an invalid Id if no ACS is defined. */
211
+ getAuxiliaryCoordinateSystemId() {
212
+ return this.details.auxiliaryCoordinateSystemId;
213
+ }
214
+ /** Set or clear the AuxiliaryCoordinateSystem for this ViewDefinition.
215
+ * @param acsId The Id of the new AuxiliaryCoordinateSystem. If `Id64.invalid` is passed, then no AuxiliaryCoordinateSystem will be used.
216
+ */
217
+ setAuxiliaryCoordinateSystemId(acsId) {
218
+ this.details.auxiliaryCoordinateSystemId = acsId;
219
+ }
220
+ /** Create a Code for a ViewDefinition given a name that is meant to be unique within the scope of the specified DefinitionModel.
221
+ * @param iModel The IModelDb
222
+ * @param scopeModelId The Id of the DefinitionModel to contain the ViewDefinition and provides the scope for its name.
223
+ * @param codeValue The ViewDefinition name
224
+ */
225
+ static createCode(iModel, scopeModelId, codeValue) {
226
+ const codeSpec = iModel.codeSpecs.getByName(core_common_1.BisCodeSpec.viewDefinition);
227
+ return new core_common_1.Code({ spec: codeSpec.id, scope: scopeModelId, value: codeValue });
228
+ }
229
+ }
230
+ exports.ViewDefinition = ViewDefinition;
231
+ _a = ViewDefinition;
232
+ /** @beta */
233
+ ViewDefinition.requiredReferenceKeys = [...Reflect.get(_b, "requiredReferenceKeys", _a), "categorySelectorId", "displayStyleId"];
234
+ /** Defines a view of one or more 3d models.
235
+ * @public
236
+ */
237
+ class ViewDefinition3d extends ViewDefinition {
238
+ /** @internal */
239
+ constructor(props, iModel) {
240
+ super(props, iModel);
241
+ this.cameraOn = core_bentley_1.JsonUtils.asBool(props.cameraOn);
242
+ this.origin = core_geometry_1.Point3d.fromJSON(props.origin);
243
+ this.extents = core_geometry_1.Vector3d.fromJSON(props.extents);
244
+ this.angles = core_geometry_1.YawPitchRollAngles.fromJSON(props.angles);
245
+ this.camera = new core_common_1.Camera(props.camera);
246
+ this._details = new core_common_1.ViewDetails3d(this.jsonProperties);
247
+ }
248
+ /** @internal */
249
+ static get className() { return "ViewDefinition3d"; }
250
+ /** @internal */
251
+ toJSON() {
252
+ const val = super.toJSON();
253
+ val.cameraOn = this.cameraOn;
254
+ val.origin = this.origin;
255
+ val.extents = this.extents;
256
+ val.angles = this.angles;
257
+ val.camera = this.camera;
258
+ return val;
259
+ }
260
+ /** Provides access to optional detail settings for this view. */
261
+ get details() { return this._details; }
262
+ /** Load this view's DisplayStyle3d from the IModelDb. */
263
+ loadDisplayStyle3d() { return this.iModel.elements.getElement(this.displayStyleId); }
264
+ }
265
+ exports.ViewDefinition3d = ViewDefinition3d;
266
+ /** Defines a view of one or more SpatialModels.
267
+ * The list of viewed models is stored by the ModelSelector.
268
+ *
269
+ * This is how a SpatialViewDefinition selects the elements to display:
270
+ *
271
+ * SpatialViewDefinition
272
+ * * ModelSelector
273
+ * * ModelIds -------> SpatialModels <----------GeometricElement3d.Model
274
+ * * CategorySelector
275
+ * * CategoryIds -----> SpatialCategories <----------GeometricElement3d.Category
276
+ * @public
277
+ */
278
+ class SpatialViewDefinition extends (_d = ViewDefinition3d) {
279
+ /** @internal */
280
+ constructor(props, iModel) {
281
+ super(props, iModel);
282
+ this.modelSelectorId = core_bentley_1.Id64.fromJSON(props.modelSelectorId);
283
+ if (!core_bentley_1.Id64.isValid(this.modelSelectorId))
284
+ throw new core_common_1.IModelError(core_bentley_1.IModelStatus.BadArg, `modelSelectorId is invalid`);
285
+ }
286
+ /** @internal */
287
+ static get className() { return "SpatialViewDefinition"; }
288
+ /** @internal */
289
+ toJSON() {
290
+ const json = super.toJSON();
291
+ json.modelSelectorId = this.modelSelectorId;
292
+ return json;
293
+ }
294
+ /** @internal */
295
+ collectReferenceIds(referenceIds) {
296
+ super.collectReferenceIds(referenceIds);
297
+ referenceIds.add(this.modelSelectorId);
298
+ }
299
+ /** Load this view's ModelSelector from the IModelDb. */
300
+ loadModelSelector() { return this.iModel.elements.getElement(this.modelSelectorId); }
301
+ /**
302
+ * Create an SpatialViewDefinition with camera.
303
+ * @param iModelDb The iModel
304
+ * @param definitionModelId The [[DefinitionModel]]
305
+ * @param name The name/CodeValue of the view
306
+ * @param modelSelectorId The [[ModelSelector]] that this view should use
307
+ * @param categorySelectorId The [[CategorySelector]] that this view should use
308
+ * @param displayStyleId The [[DisplayStyle3d]] that this view should use
309
+ * @param range Defines the view origin and extents
310
+ * @param standardView Optionally defines the view's rotation
311
+ * @param cameraAngle Camera angle in radians.
312
+ * @returns The newly constructed OrthographicViewDefinition element
313
+ * @throws [[IModelError]] if there is a problem creating the view
314
+ */
315
+ static createWithCamera(iModelDb, definitionModelId, name, modelSelectorId, categorySelectorId, displayStyleId, range, standardView = core_geometry_1.StandardViewIndex.Iso, cameraAngle = core_geometry_1.Angle.piOver2Radians) {
316
+ const rotation = core_geometry_1.Matrix3d.createStandardWorldToView(standardView);
317
+ const angles = core_geometry_1.YawPitchRollAngles.createFromMatrix3d(rotation);
318
+ const rotationTransform = core_geometry_1.Transform.createOriginAndMatrix(undefined, rotation);
319
+ const rotatedRange = rotationTransform.multiplyRange(range);
320
+ const cameraDistance = 2 * (rotatedRange.diagonal().magnitudeXY() / 2.0) / Math.tan(cameraAngle / 2.0);
321
+ const cameraLocation = rotatedRange.diagonalFractionToPoint(.5); // Start at center.
322
+ cameraLocation.z += cameraDistance; // Back up by camera distance.
323
+ rotation.multiplyTransposeVectorInPlace(cameraLocation);
324
+ const viewDefinitionProps = {
325
+ classFullName: this.classFullName,
326
+ model: definitionModelId,
327
+ code: this.createCode(iModelDb, definitionModelId, name),
328
+ modelSelectorId,
329
+ categorySelectorId,
330
+ displayStyleId,
331
+ origin: rotation.multiplyTransposeXYZ(rotatedRange.low.x, rotatedRange.low.y, rotatedRange.low.z),
332
+ extents: rotatedRange.diagonal(),
333
+ angles,
334
+ cameraOn: true,
335
+ camera: { lens: { radians: cameraAngle }, focusDist: cameraDistance, eye: cameraLocation },
336
+ };
337
+ return new SpatialViewDefinition(viewDefinitionProps, iModelDb);
338
+ }
339
+ /**
340
+ * Insert an SpatialViewDefinition with camera On
341
+ * @param iModelDb Insert into this iModel
342
+ * @param definitionModelId Insert the new OrthographicViewDefinition into this DefinitionModel
343
+ * @param name The name/CodeValue of the view
344
+ * @param modelSelectorId The [[ModelSelector]] that this view should use
345
+ * @param categorySelectorId The [[CategorySelector]] that this view should use
346
+ * @param displayStyleId The [[DisplayStyle3d]] that this view should use
347
+ * @param range Defines the view origin and extents
348
+ * @param standardView Optionally defines the view's rotation
349
+ * @param cameraAngle Camera angle in radians.
350
+ * @returns The Id of the newly inserted OrthographicViewDefinition element
351
+ * @throws [[IModelError]] if there is an insert problem.
352
+ */
353
+ static insertWithCamera(iModelDb, definitionModelId, name, modelSelectorId, categorySelectorId, displayStyleId, range, standardView = core_geometry_1.StandardViewIndex.Iso, cameraAngle = core_geometry_1.Angle.piOver2Radians) {
354
+ const viewDefinition = this.createWithCamera(iModelDb, definitionModelId, name, modelSelectorId, categorySelectorId, displayStyleId, range, standardView, cameraAngle);
355
+ return iModelDb.elements.insertElement(viewDefinition.toJSON());
356
+ }
357
+ }
358
+ exports.SpatialViewDefinition = SpatialViewDefinition;
359
+ _c = SpatialViewDefinition;
360
+ /** @beta */
361
+ SpatialViewDefinition.requiredReferenceKeys = [...Reflect.get(_d, "requiredReferenceKeys", _c), "modelSelectorId"];
362
+ /** Defines a spatial view that displays geometry on the image plane using a parallel orthographic projection.
363
+ * See [how to create a OrthographicViewDefinition]$(docs/learning/backend/CreateElements.md#OrthographicViewDefinition).
364
+ * @public
365
+ */
366
+ class OrthographicViewDefinition extends SpatialViewDefinition {
367
+ /** @internal */
368
+ static get className() { return "OrthographicViewDefinition"; }
369
+ constructor(props, iModel) { super(props, iModel); }
370
+ /**
371
+ * Create an OrthographicViewDefinition
372
+ * @param iModelDb The iModel
373
+ * @param definitionModelId The [[DefinitionModel]]
374
+ * @param name The name/CodeValue of the view
375
+ * @param modelSelectorId The [[ModelSelector]] that this view should use
376
+ * @param categorySelectorId The [[CategorySelector]] that this view should use
377
+ * @param displayStyleId The [[DisplayStyle3d]] that this view should use
378
+ * @param range Defines the view origin and extents
379
+ * @param standardView Optionally defines the view's rotation
380
+ * @returns The newly constructed OrthographicViewDefinition element
381
+ * @throws [[IModelError]] if there is a problem creating the view
382
+ */
383
+ static create(iModelDb, definitionModelId, name, modelSelectorId, categorySelectorId, displayStyleId, range, standardView = core_geometry_1.StandardViewIndex.Iso) {
384
+ const rotation = core_geometry_1.Matrix3d.createStandardWorldToView(standardView);
385
+ const angles = core_geometry_1.YawPitchRollAngles.createFromMatrix3d(rotation);
386
+ const rotationTransform = core_geometry_1.Transform.createOriginAndMatrix(undefined, rotation);
387
+ const rotatedRange = rotationTransform.multiplyRange(range);
388
+ const viewDefinitionProps = {
389
+ classFullName: this.classFullName,
390
+ model: definitionModelId,
391
+ code: this.createCode(iModelDb, definitionModelId, name),
392
+ modelSelectorId,
393
+ categorySelectorId,
394
+ displayStyleId,
395
+ origin: rotation.multiplyTransposeXYZ(rotatedRange.low.x, rotatedRange.low.y, rotatedRange.low.z),
396
+ extents: rotatedRange.diagonal(),
397
+ angles,
398
+ cameraOn: false,
399
+ camera: new core_common_1.Camera(), // not used when cameraOn === false
400
+ };
401
+ return new OrthographicViewDefinition(viewDefinitionProps, iModelDb);
402
+ }
403
+ /**
404
+ * Insert an OrthographicViewDefinition
405
+ * @param iModelDb Insert into this iModel
406
+ * @param definitionModelId Insert the new OrthographicViewDefinition into this DefinitionModel
407
+ * @param name The name/CodeValue of the view
408
+ * @param modelSelectorId The [[ModelSelector]] that this view should use
409
+ * @param categorySelectorId The [[CategorySelector]] that this view should use
410
+ * @param displayStyleId The [[DisplayStyle3d]] that this view should use
411
+ * @param range Defines the view origin and extents
412
+ * @param standardView Optionally defines the view's rotation
413
+ * @returns The Id of the newly inserted OrthographicViewDefinition element
414
+ * @throws [[IModelError]] if there is an insert problem.
415
+ */
416
+ static insert(iModelDb, definitionModelId, name, modelSelectorId, categorySelectorId, displayStyleId, range, standardView = core_geometry_1.StandardViewIndex.Iso) {
417
+ const viewDefinition = this.create(iModelDb, definitionModelId, name, modelSelectorId, categorySelectorId, displayStyleId, range, standardView);
418
+ return iModelDb.elements.insertElement(viewDefinition.toJSON());
419
+ }
420
+ /** Set a new viewed range without changing the rotation or any other properties. */
421
+ setRange(range) {
422
+ const rotation = this.angles.toMatrix3d();
423
+ const rotationTransform = core_geometry_1.Transform.createOriginAndMatrix(undefined, rotation);
424
+ const rotatedRange = rotationTransform.multiplyRange(range);
425
+ this.origin = core_geometry_1.Point3d.createFrom(rotation.multiplyTransposeXYZ(rotatedRange.low.x, rotatedRange.low.y, rotatedRange.low.z));
426
+ this.extents = rotatedRange.diagonal();
427
+ }
428
+ }
429
+ exports.OrthographicViewDefinition = OrthographicViewDefinition;
430
+ /** Defines a view of a single 2d model. Each 2d model has its own coordinate system, so only one may appear per view.
431
+ * @public
432
+ */
433
+ class ViewDefinition2d extends ViewDefinition {
434
+ /** @internal */
435
+ constructor(props, iModel) {
436
+ super(props, iModel);
437
+ this.baseModelId = core_bentley_1.Id64.fromJSON(props.baseModelId);
438
+ this.origin = core_geometry_1.Point2d.fromJSON(props.origin);
439
+ this.delta = core_geometry_1.Point2d.fromJSON(props.delta);
440
+ this.angle = core_geometry_1.Angle.fromJSON(props.angle);
441
+ this._details = new core_common_1.ViewDetails(this.jsonProperties);
442
+ }
443
+ /** @internal */
444
+ static get className() { return "ViewDefinition2d"; }
445
+ /** @internal */
446
+ toJSON() {
447
+ const val = super.toJSON();
448
+ val.baseModelId = this.baseModelId;
449
+ val.origin = this.origin;
450
+ val.delta = this.delta;
451
+ val.angle = this.angle;
452
+ return val;
453
+ }
454
+ /** @internal */
455
+ collectReferenceIds(referenceIds) {
456
+ super.collectReferenceIds(referenceIds);
457
+ referenceIds.add(this.baseModelId);
458
+ }
459
+ /** Provides access to optional detail settings for this view. */
460
+ get details() { return this._details; }
461
+ /** Load this view's DisplayStyle2d from the IModelDb. */
462
+ loadDisplayStyle2d() { return this.iModel.elements.getElement(this.displayStyleId); }
463
+ }
464
+ exports.ViewDefinition2d = ViewDefinition2d;
465
+ /** Defines a view of a [[DrawingModel]].
466
+ * @public
467
+ */
468
+ class DrawingViewDefinition extends ViewDefinition2d {
469
+ /** @internal */
470
+ static get className() { return "DrawingViewDefinition"; }
471
+ /** @internal */
472
+ constructor(props, iModel) {
473
+ super(props, iModel);
474
+ }
475
+ /** Create a DrawingViewDefinition
476
+ * @param iModelDb The iModel
477
+ * @param definitionModelId The [[DefinitionModel]]
478
+ * @param name The name/CodeValue of the view
479
+ * @param baseModelId The base [[DrawingModel]]
480
+ * @param categorySelectorId The [[CategorySelector]] that this view should use
481
+ * @param displayStyleId The [[DisplayStyle2d]] that this view should use
482
+ * @param range Defines the view origin and extents
483
+ * @throws [[IModelError]] if there is a problem creating the element.
484
+ */
485
+ static create(iModelDb, definitionModelId, name, baseModelId, categorySelectorId, displayStyleId, range) {
486
+ const viewDefinitionProps = {
487
+ classFullName: this.classFullName,
488
+ model: definitionModelId,
489
+ code: this.createCode(iModelDb, definitionModelId, name),
490
+ baseModelId,
491
+ categorySelectorId,
492
+ displayStyleId,
493
+ origin: { x: range.low.x, y: range.low.y },
494
+ delta: range.diagonal(),
495
+ angle: 0,
496
+ };
497
+ return new DrawingViewDefinition(viewDefinitionProps, iModelDb);
498
+ }
499
+ /** Insert a DrawingViewDefinition
500
+ * @param iModelDb Insert into this iModel
501
+ * @param definitionModelId Insert the new DrawingViewDefinition into this [[DefinitionModel]]
502
+ * @param name The name/CodeValue of the view
503
+ * @param baseModelId The base [[DrawingModel]]
504
+ * @param categorySelectorId The [[CategorySelector]] that this view should use
505
+ * @param displayStyleId The [[DisplayStyle2d]] that this view should use
506
+ * @param range Defines the view origin and extents
507
+ * @throws [[IModelError]] if there is an insert problem.
508
+ */
509
+ static insert(iModelDb, definitionModelId, name, baseModelId, categorySelectorId, displayStyleId, range) {
510
+ const viewDefinition = this.create(iModelDb, definitionModelId, name, baseModelId, categorySelectorId, displayStyleId, range);
511
+ return iModelDb.elements.insertElement(viewDefinition.toJSON());
512
+ }
513
+ }
514
+ exports.DrawingViewDefinition = DrawingViewDefinition;
515
+ /** Defines a view of a [[SheetModel]].
516
+ * @public
517
+ */
518
+ class SheetViewDefinition extends ViewDefinition2d {
519
+ /** @internal */
520
+ static get className() { return "SheetViewDefinition"; }
521
+ }
522
+ exports.SheetViewDefinition = SheetViewDefinition;
523
+ /** A ViewDefinition used to display a 2d template model.
524
+ * @internal
525
+ */
526
+ class TemplateViewDefinition2d extends ViewDefinition2d {
527
+ /** @internal */
528
+ static get className() { return "TemplateViewDefinition2d"; }
529
+ }
530
+ exports.TemplateViewDefinition2d = TemplateViewDefinition2d;
531
+ /** A ViewDefinition used to display a 3d template model.
532
+ * @internal
533
+ */
534
+ class TemplateViewDefinition3d extends ViewDefinition3d {
535
+ /** @internal */
536
+ static get className() { return "TemplateViewDefinition3d"; }
537
+ }
538
+ exports.TemplateViewDefinition3d = TemplateViewDefinition3d;
539
+ /** An auxiliary coordinate system element. Auxiliary coordinate systems can be used by views to show
540
+ * coordinate information in different units and/or orientations.
541
+ * @public
542
+ */
543
+ class AuxCoordSystem extends Element_1.DefinitionElement {
544
+ constructor(props, iModel) { super(props, iModel); }
545
+ /** @internal */
546
+ static get className() { return "AuxCoordSystem"; }
547
+ }
548
+ exports.AuxCoordSystem = AuxCoordSystem;
549
+ /** A 2d auxiliary coordinate system.
550
+ * @public
551
+ */
552
+ class AuxCoordSystem2d extends AuxCoordSystem {
553
+ constructor(props, iModel) { super(props, iModel); }
554
+ /** @internal */
555
+ static get className() { return "AuxCoordSystem2d"; }
556
+ /** Create a Code for a AuxCoordSystem2d element given a name that is meant to be unique within the scope of the specified DefinitionModel.
557
+ * @param iModel The IModelDb
558
+ * @param scopeModelId The Id of the DefinitionModel that contains the AuxCoordSystem2d element and provides the scope for its name.
559
+ * @param codeValue The AuxCoordSystem2d name
560
+ */
561
+ static createCode(iModel, scopeModelId, codeValue) {
562
+ const codeSpec = iModel.codeSpecs.getByName(core_common_1.BisCodeSpec.auxCoordSystem2d);
563
+ return new core_common_1.Code({ spec: codeSpec.id, scope: scopeModelId, value: codeValue });
564
+ }
565
+ }
566
+ exports.AuxCoordSystem2d = AuxCoordSystem2d;
567
+ /** A 3d auxiliary coordinate system.
568
+ * @public
569
+ */
570
+ class AuxCoordSystem3d extends AuxCoordSystem {
571
+ constructor(props, iModel) { super(props, iModel); }
572
+ /** @internal */
573
+ static get className() { return "AuxCoordSystem3d"; }
574
+ /** Create a Code for a AuxCoordSystem3d element given a name that is meant to be unique within the scope of the specified DefinitionModel.
575
+ * @param iModel The IModelDb
576
+ * @param scopeModelId The Id of the DefinitionModel that contains the AuxCoordSystem3d element and provides the scope for its name.
577
+ * @param codeValue The AuxCoordSystem3d name
578
+ */
579
+ static createCode(iModel, scopeModelId, codeValue) {
580
+ const codeSpec = iModel.codeSpecs.getByName(core_common_1.BisCodeSpec.auxCoordSystem3d);
581
+ return new core_common_1.Code({ spec: codeSpec.id, scope: scopeModelId, value: codeValue });
582
+ }
583
+ }
584
+ exports.AuxCoordSystem3d = AuxCoordSystem3d;
585
+ /** A spatial auxiliary coordinate system.
586
+ * @public
587
+ */
588
+ class AuxCoordSystemSpatial extends AuxCoordSystem3d {
589
+ /** @internal */
590
+ static get className() { return "AuxCoordSystemSpatial"; }
591
+ /** Create a Code for a AuxCoordSystemSpatial element given a name that is meant to be unique within the scope of the specified DefinitionModel.
592
+ * @param iModel The IModelDb
593
+ * @param scopeModelId The Id of the DefinitionModel that contains the AuxCoordSystemSpatial element and provides the scope for its name.
594
+ * @param codeValue The AuxCoordSystemSpatial name
595
+ */
596
+ static createCode(iModel, scopeModelId, codeValue) {
597
+ const codeSpec = iModel.codeSpecs.getByName(core_common_1.BisCodeSpec.auxCoordSystemSpatial);
598
+ return new core_common_1.Code({ spec: codeSpec.id, scope: scopeModelId, value: codeValue });
599
+ }
600
+ }
601
+ exports.AuxCoordSystemSpatial = AuxCoordSystemSpatial;
602
+ /** Represents an *attachment* of a [[ViewDefinition]] to a [[Sheet]].
603
+ * @public
604
+ */
605
+ class ViewAttachment extends Element_1.GraphicalElement2d {
606
+ constructor(props, iModel) {
607
+ super(props, iModel);
608
+ this.view = new core_common_1.RelatedElement(props.view);
609
+ // ###NOTE: scale, displayPriority, and clipping vectors are stored in ViewAttachmentProps.jsonProperties.
610
+ }
611
+ /** @internal */
612
+ static get className() { return "ViewAttachment"; }
613
+ /** @internal */
614
+ collectReferenceIds(referenceIds) {
615
+ super.collectReferenceIds(referenceIds);
616
+ referenceIds.add(this.view.id);
617
+ }
618
+ }
619
+ exports.ViewAttachment = ViewAttachment;
620
+ /** The position in space of a Light.
621
+ * @internal
622
+ */
623
+ class LightLocation extends Element_1.SpatialLocationElement {
624
+ /** @internal */
625
+ constructor(props, iModel) { super(props, iModel); }
626
+ /** @internal */
627
+ static get className() { return "LightLocation"; }
628
+ }
629
+ exports.LightLocation = LightLocation;
630
630
  //# sourceMappingURL=ViewDefinition.js.map