@itwin/core-backend 3.4.0-dev.61 → 3.4.0-dev.63

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