@itwin/core-backend 3.5.0-dev.16 → 3.5.0-dev.19

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 (226) hide show
  1. package/CHANGELOG.md +8 -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 +350 -349
  36. package/lib/cjs/CloudSqlite.d.ts.map +1 -1
  37. package/lib/cjs/CloudSqlite.js +152 -151
  38. package/lib/cjs/CloudSqlite.js.map +1 -1
  39. package/lib/cjs/CloudStorageBackend.d.ts +58 -58
  40. package/lib/cjs/CloudStorageBackend.js +173 -173
  41. package/lib/cjs/CloudStorageBackend.js.map +1 -1
  42. package/lib/cjs/CodeService.d.ts +396 -396
  43. package/lib/cjs/CodeService.js +63 -63
  44. package/lib/cjs/CodeService.js.map +1 -1
  45. package/lib/cjs/CodeSpecs.d.ts +50 -50
  46. package/lib/cjs/CodeSpecs.js +112 -112
  47. package/lib/cjs/CodeSpecs.js.map +1 -1
  48. package/lib/cjs/ConcurrentQuery.d.ts +11 -11
  49. package/lib/cjs/ConcurrentQuery.js +30 -30
  50. package/lib/cjs/ConcurrentQuery.js.map +1 -1
  51. package/lib/cjs/CustomViewState3dCreator.d.ts +32 -32
  52. package/lib/cjs/CustomViewState3dCreator.js +113 -113
  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 +1420 -1420
  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.d.ts.map +1 -1
  104. package/lib/cjs/IModelDb.js +2329 -2324
  105. package/lib/cjs/IModelDb.js.map +1 -1
  106. package/lib/cjs/IModelHost.d.ts +361 -361
  107. package/lib/cjs/IModelHost.js +489 -489
  108. package/lib/cjs/IModelHost.js.map +1 -1
  109. package/lib/cjs/IModelJsFs.d.ts +62 -62
  110. package/lib/cjs/IModelJsFs.js +140 -140
  111. package/lib/cjs/IModelJsFs.js.map +1 -1
  112. package/lib/cjs/IpcHost.d.ts +98 -98
  113. package/lib/cjs/IpcHost.js +234 -234
  114. package/lib/cjs/IpcHost.js.map +1 -1
  115. package/lib/cjs/LineStyle.d.ts +311 -311
  116. package/lib/cjs/LineStyle.js +295 -295
  117. package/lib/cjs/LineStyle.js.map +1 -1
  118. package/lib/cjs/LocalHub.d.ts +162 -162
  119. package/lib/cjs/LocalHub.js +587 -587
  120. package/lib/cjs/LocalHub.js.map +1 -1
  121. package/lib/cjs/LocalhostIpcHost.d.ts +20 -20
  122. package/lib/cjs/LocalhostIpcHost.js +81 -81
  123. package/lib/cjs/LocalhostIpcHost.js.map +1 -1
  124. package/lib/cjs/Material.d.ts +103 -103
  125. package/lib/cjs/Material.js +147 -147
  126. package/lib/cjs/Material.js.map +1 -1
  127. package/lib/cjs/Model.d.ts +386 -386
  128. package/lib/cjs/Model.js +471 -471
  129. package/lib/cjs/Model.js.map +1 -1
  130. package/lib/cjs/NativeAppStorage.d.ts +51 -51
  131. package/lib/cjs/NativeAppStorage.js +202 -202
  132. package/lib/cjs/NativeAppStorage.js.map +1 -1
  133. package/lib/cjs/NativeHost.d.ts +52 -52
  134. package/lib/cjs/NativeHost.js +168 -168
  135. package/lib/cjs/NativeHost.js.map +1 -1
  136. package/lib/cjs/NavigationRelationship.d.ts +156 -156
  137. package/lib/cjs/NavigationRelationship.js +225 -225
  138. package/lib/cjs/NavigationRelationship.js.map +1 -1
  139. package/lib/cjs/PromiseMemoizer.d.ts +51 -51
  140. package/lib/cjs/PromiseMemoizer.js +101 -101
  141. package/lib/cjs/PromiseMemoizer.js.map +1 -1
  142. package/lib/cjs/PropertyStore.d.ts +132 -132
  143. package/lib/cjs/PropertyStore.js +11 -11
  144. package/lib/cjs/PropertyStore.js.map +1 -1
  145. package/lib/cjs/Relationship.d.ts +400 -400
  146. package/lib/cjs/Relationship.js +465 -465
  147. package/lib/cjs/Relationship.js.map +1 -1
  148. package/lib/cjs/RpcBackend.d.ts +28 -28
  149. package/lib/cjs/RpcBackend.js +126 -126
  150. package/lib/cjs/RpcBackend.js.map +1 -1
  151. package/lib/cjs/SQLiteDb.d.ts +219 -219
  152. package/lib/cjs/SQLiteDb.js +214 -214
  153. package/lib/cjs/SQLiteDb.js.map +1 -1
  154. package/lib/cjs/Schema.d.ts +55 -55
  155. package/lib/cjs/Schema.js +83 -83
  156. package/lib/cjs/Schema.js.map +1 -1
  157. package/lib/cjs/ServerBasedLocks.d.ts +57 -57
  158. package/lib/cjs/ServerBasedLocks.js +168 -168
  159. package/lib/cjs/ServerBasedLocks.js.map +1 -1
  160. package/lib/cjs/SqliteStatement.d.ts +360 -283
  161. package/lib/cjs/SqliteStatement.d.ts.map +1 -1
  162. package/lib/cjs/SqliteStatement.js +586 -448
  163. package/lib/cjs/SqliteStatement.js.map +1 -1
  164. package/lib/cjs/Texture.d.ts +58 -58
  165. package/lib/cjs/Texture.js +82 -82
  166. package/lib/cjs/Texture.js.map +1 -1
  167. package/lib/cjs/TileStorage.d.ts +18 -18
  168. package/lib/cjs/TileStorage.js +90 -90
  169. package/lib/cjs/TileStorage.js.map +1 -1
  170. package/lib/cjs/TxnManager.d.ts +202 -202
  171. package/lib/cjs/TxnManager.js +356 -356
  172. package/lib/cjs/TxnManager.js.map +1 -1
  173. package/lib/cjs/ViewDefinition.d.ts +435 -435
  174. package/lib/cjs/ViewDefinition.js +635 -635
  175. package/lib/cjs/ViewDefinition.js.map +1 -1
  176. package/lib/cjs/ViewStateHydrator.d.ts +13 -13
  177. package/lib/cjs/ViewStateHydrator.js +103 -103
  178. package/lib/cjs/ViewStateHydrator.js.map +1 -1
  179. package/lib/cjs/assets/IModelChange.02.00.00.ecschema.xml +90 -90
  180. package/lib/cjs/assets/Settings/Schemas/Cloud.Schema.json +67 -67
  181. package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +31 -31
  182. package/lib/cjs/assets/Settings/Schemas/Workspace.Schema.json +52 -52
  183. package/lib/cjs/assets/Settings/backend.setting.json5 +138 -138
  184. package/lib/cjs/core-backend.d.ts +182 -182
  185. package/lib/cjs/core-backend.js +202 -202
  186. package/lib/cjs/core-backend.js.map +1 -1
  187. package/lib/cjs/domains/FunctionalElements.d.ts +101 -101
  188. package/lib/cjs/domains/FunctionalElements.js +145 -145
  189. package/lib/cjs/domains/FunctionalElements.js.map +1 -1
  190. package/lib/cjs/domains/FunctionalSchema.d.ts +13 -13
  191. package/lib/cjs/domains/FunctionalSchema.js +40 -40
  192. package/lib/cjs/domains/FunctionalSchema.js.map +1 -1
  193. package/lib/cjs/domains/GenericElements.d.ts +177 -177
  194. package/lib/cjs/domains/GenericElements.js +263 -263
  195. package/lib/cjs/domains/GenericElements.js.map +1 -1
  196. package/lib/cjs/domains/GenericSchema.d.ts +10 -10
  197. package/lib/cjs/domains/GenericSchema.js +28 -28
  198. package/lib/cjs/domains/GenericSchema.js.map +1 -1
  199. package/lib/cjs/rpc-impl/DevToolsRpcImpl.d.ts +15 -15
  200. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js +32 -32
  201. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  202. package/lib/cjs/rpc-impl/IModelReadRpcImpl.d.ts +45 -45
  203. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js +262 -262
  204. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  205. package/lib/cjs/rpc-impl/IModelTileRpcImpl.d.ts +22 -22
  206. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js +204 -204
  207. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  208. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.d.ts +36 -36
  209. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js +168 -168
  210. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  211. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.d.ts +16 -16
  212. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js +43 -43
  213. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  214. package/lib/cjs/rpc-impl/WipRpcImpl.d.ts +15 -15
  215. package/lib/cjs/rpc-impl/WipRpcImpl.js +37 -37
  216. package/lib/cjs/rpc-impl/WipRpcImpl.js.map +1 -1
  217. package/lib/cjs/workspace/Settings.d.ts +186 -186
  218. package/lib/cjs/workspace/Settings.js +155 -155
  219. package/lib/cjs/workspace/Settings.js.map +1 -1
  220. package/lib/cjs/workspace/SettingsSchemas.d.ts +75 -75
  221. package/lib/cjs/workspace/SettingsSchemas.js +191 -191
  222. package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
  223. package/lib/cjs/workspace/Workspace.d.ts +414 -414
  224. package/lib/cjs/workspace/Workspace.js +543 -543
  225. package/lib/cjs/workspace/Workspace.js.map +1 -1
  226. package/package.json +11 -11
@@ -1,381 +1,381 @@
1
- "use strict";
2
- /*---------------------------------------------------------------------------------------------
3
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
- * See LICENSE.md in the project root for license terms and full copyright notice.
5
- *--------------------------------------------------------------------------------------------*/
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.generateGeometrySummaries = void 0;
8
- const core_bentley_1 = require("@itwin/core-bentley");
9
- const core_geometry_1 = require("@itwin/core-geometry");
10
- const core_common_1 = require("@itwin/core-common");
11
- const Element_1 = require("./Element");
12
- // cspell:ignore earlin
13
- /** Generates an array of GeometryStreamResponseProps. */
14
- class ResponseGenerator {
15
- constructor(request, iModel) {
16
- this.verbosity = core_common_1.GeometrySummaryVerbosity.Basic;
17
- this.includePlacement = false;
18
- this.verboseSymbology = false;
19
- this.elementIds = request.elementIds;
20
- this.iModel = iModel;
21
- const opts = request.options;
22
- if (undefined !== opts) {
23
- this.verbosity = undefined !== opts.geometryVerbosity ? opts.geometryVerbosity : core_common_1.GeometrySummaryVerbosity.Basic;
24
- this.includePlacement = true === opts.includePlacement;
25
- this.includePartReferences = opts.includePartReferences;
26
- this.verboseSymbology = true === opts.verboseSymbology;
27
- }
28
- }
29
- get wantSquish() { return core_common_1.GeometrySummaryVerbosity.Full !== this.verbosity; }
30
- generateSummaries() {
31
- const summaries = [];
32
- for (const elementId of this.elementIds)
33
- summaries.push(this.generateSummary(elementId));
34
- return summaries.join("\n");
35
- }
36
- generateSummary(id) {
37
- let lines = [`[Geometry Summary for Element ${id}]`];
38
- try {
39
- const geom = this.getElementGeom(id);
40
- if (undefined === geom)
41
- throw new core_common_1.IModelError(core_bentley_1.IModelStatus.NoGeometry, "Element is neither a geometric element nor a geometry part");
42
- if (undefined !== geom.geometricElement)
43
- lines.push(this.summarizeElement(geom.geometricElement));
44
- else if (undefined !== this.includePartReferences)
45
- lines.push(this.summarizePartReferences(id, "2d" === this.includePartReferences)); // NB: Hideously inefficient if more than one element's summary was requested.
46
- let curGeomParams;
47
- let curLocalRange;
48
- for (const entry of geom.iterator) {
49
- if (this.verboseSymbology && (undefined === curGeomParams || !curGeomParams.isEquivalent(entry.geomParams))) {
50
- lines.push(`Symbology: ${this.stringify(entry.geomParams)}`);
51
- curGeomParams = entry.geomParams.clone();
52
- }
53
- if (undefined !== entry.localRange && (undefined === curLocalRange || !curLocalRange.isAlmostEqual(entry.localRange))) {
54
- lines.push(this.summarizeRange3d(entry.localRange));
55
- curLocalRange = entry.localRange;
56
- }
57
- const prim = entry.primitive;
58
- switch (prim.type) {
59
- case "textString":
60
- case "image":
61
- this.summarizePrimitive(lines, prim);
62
- break;
63
- case "brep":
64
- this.summarizeBRep(lines, prim.brep);
65
- break;
66
- case "geometryQuery":
67
- this.summarizeGeometryQuery(lines, prim.geometry);
68
- break;
69
- case "partReference":
70
- lines.push(this.summarizePartReference(prim.part.id, prim.part.toLocal));
71
- break;
72
- }
73
- }
74
- }
75
- catch (err) {
76
- lines = lines.slice(0, 1);
77
- lines.push(`ERROR: ${core_bentley_1.BentleyError.getErrorMessage(err)}`);
78
- }
79
- return lines.filter((line) => line !== "").join("\n");
80
- }
81
- summarizeElement(elem) {
82
- const lines = [];
83
- lines.push(`(${elem.is2d() ? "2D" : "3D"}) Category: ${elem.category}`);
84
- lines.push(`Model: ${elem.model}`);
85
- if (this.includePlacement) {
86
- lines.push(`Range: ${this.stringify(elem.calculateRange3d())}`);
87
- lines.push(`Transform: ${this.stringify(elem.getPlacementTransform())}`);
88
- }
89
- return lines.join("\n");
90
- }
91
- summarizePartReferences(id, is2d) {
92
- const refIds = this.iModel.nativeDb.findGeometryPartReferences([id], is2d);
93
- return `Part references (${refIds.length}): ${refIds.join()}`;
94
- }
95
- getElementGeom(id) {
96
- const elem = this.iModel.elements.getElement({ id, wantGeometry: true });
97
- let iterator;
98
- let geometricElement;
99
- if (elem instanceof Element_1.GeometricElement) {
100
- geometricElement = elem;
101
- if (geometricElement.is2d()) {
102
- iterator = core_common_1.GeometryStreamIterator.fromGeometricElement2d(geometricElement);
103
- }
104
- else {
105
- (0, core_bentley_1.assert)(geometricElement.is3d());
106
- iterator = core_common_1.GeometryStreamIterator.fromGeometricElement3d(geometricElement);
107
- }
108
- }
109
- else if (elem instanceof Element_1.GeometryPart) {
110
- iterator = core_common_1.GeometryStreamIterator.fromGeometryPart(elem);
111
- }
112
- return undefined !== iterator ? { iterator, geometricElement } : undefined;
113
- }
114
- summarizeRange3d(range) {
115
- return `SubGraphicRange: ${this.stringify(range)}`;
116
- }
117
- summarizePrimitive(lines, primitive) {
118
- const summary = primitive.type;
119
- if (core_common_1.GeometrySummaryVerbosity.Basic >= this.verbosity) {
120
- lines.push(summary);
121
- return;
122
- }
123
- const json = this.stringify(primitive.type === "textString" ? primitive.textString : primitive.image);
124
- if (core_common_1.GeometrySummaryVerbosity.Detailed >= this.verbosity) {
125
- lines.push(`${summary}: ${json}`);
126
- return;
127
- }
128
- lines.push(`${summary}:`);
129
- lines.push(json);
130
- }
131
- summarizeBRep(lines, brep) {
132
- const summary = "brep";
133
- if (core_common_1.GeometrySummaryVerbosity.Basic >= this.verbosity) {
134
- lines.push(summary);
135
- return;
136
- }
137
- const json = this.stringify({ type: brep.type, transform: brep.transform, faceSymbology: brep.faceSymbology });
138
- if (core_common_1.GeometrySummaryVerbosity.Detailed >= this.verbosity) {
139
- lines.push(`${summary}: ${json}`);
140
- return;
141
- }
142
- lines.push(`${summary}:`);
143
- lines.push(json);
144
- }
145
- summarizePartReference(partId, partToLocal) {
146
- let line = `part id: ${partId}`;
147
- if (undefined !== partToLocal)
148
- line = `${line} transform: ${this.stringify(partToLocal)}`;
149
- return line;
150
- }
151
- summarizeGeometryQuery(lines, query) {
152
- switch (this.verbosity) {
153
- case core_common_1.GeometrySummaryVerbosity.Detailed:
154
- lines.push(this.summarizeGeometryQueryDetailed(query));
155
- break;
156
- case core_common_1.GeometrySummaryVerbosity.Full:
157
- lines.push(this.summarizeGeometryQueryFull(query));
158
- break;
159
- default:
160
- lines.push(this.summarizeGeometryQueryBasic(query));
161
- break;
162
- }
163
- }
164
- summarizeGeometryQueryBasic(query) {
165
- switch (query.geometryCategory) {
166
- case "solid":
167
- return query.solidPrimitiveType;
168
- case "curvePrimitive":
169
- return query.curvePrimitiveType;
170
- case "curveCollection":
171
- return query.curveCollectionType;
172
- default:
173
- return query.geometryCategory;
174
- }
175
- }
176
- summarizeGeometryQueryFull(query) {
177
- return this.geometryQueryToJson(query);
178
- }
179
- geometryQueryToJson(query) {
180
- try {
181
- const json = core_geometry_1.IModelJson.Writer.toIModelJson(query);
182
- const str = JSON.stringify(json);
183
- return this.wantSquish ? this.squish(str) : str;
184
- }
185
- catch (err) {
186
- return core_bentley_1.BentleyError.getErrorMessage(err);
187
- }
188
- }
189
- // Earlin likes to put tons of whitespace + newlines into his JSON. Remove it.
190
- squish(str) {
191
- return str.replace(/\s+/g, "");
192
- }
193
- stringify(obj) {
194
- const json = JSON.stringify(obj);
195
- return this.wantSquish ? this.squish(json) : json;
196
- }
197
- summarizeGeometryQueryDetailed(query) {
198
- let summary = `${this.summarizeGeometryQueryBasic(query)}: `;
199
- switch (query.geometryCategory) {
200
- case "solid":
201
- return summary + this.summarizeSolidPrimitive(query);
202
- case "curvePrimitive":
203
- return summary + this.summarizeCurvePrimitive(query);
204
- case "curveCollection":
205
- return summary + this.summarizeCurveCollection(query);
206
- case "pointCollection":
207
- return `${summary} numPoints: ${query.points.length}`;
208
- case "bsurf":
209
- return `${summary}'
210
- ' poleDimension: ${query.poleDimension}'
211
- ' numPolesTotal: ${query.numPolesTotal()}'
212
- ' degree[U,V]: ${JSON.stringify([query.degreeUV(core_geometry_1.UVSelect.uDirection), query.degreeUV(core_geometry_1.UVSelect.VDirection)])}'
213
- ' order[U,V]: ${JSON.stringify([query.orderUV(core_geometry_1.UVSelect.uDirection), query.orderUV(core_geometry_1.UVSelect.VDirection)])}'
214
- ' numSpan[U,V]: ${JSON.stringify([query.numSpanUV(core_geometry_1.UVSelect.uDirection), query.numSpanUV(core_geometry_1.UVSelect.VDirection)])}'
215
- ' numPoles[U,V]: ${JSON.stringify([query.numPolesUV(core_geometry_1.UVSelect.uDirection), query.numPolesUV(core_geometry_1.UVSelect.VDirection)])}'
216
- ' poleStep[U,V]: ${JSON.stringify([query.poleStepUV(core_geometry_1.UVSelect.uDirection), query.poleStepUV(core_geometry_1.UVSelect.VDirection)])}`;
217
- case "polyface": {
218
- const data = query.data;
219
- summary = `${summary} pointCount: ${data.point.length}'
220
- ' pointIndexCount: ${data.pointIndex.length}`;
221
- if (query.twoSided)
222
- summary = `${summary} (two-sided)`;
223
- if (undefined !== data.normal)
224
- summary = `${summary} normalCount: ${data.normal.length}`;
225
- if (undefined !== data.param)
226
- summary = `${summary} paramCount: ${data.param.length}`;
227
- if (undefined !== data.color)
228
- summary = `${summary} colorCount: ${data.color.length}`;
229
- return summary;
230
- }
231
- case "point":
232
- return summary + this.geometryQueryToJson(query);
233
- }
234
- }
235
- summarizeSolidPrimitive(solid) {
236
- const summary = solid.capped ? " capped" : " uncapped";
237
- switch (solid.solidPrimitiveType) {
238
- case "box":
239
- const box = solid;
240
- return `${summary}'
241
- ' origin: ${JSON.stringify(box.getBaseOrigin().toJSON())}'
242
- ' topOrigin: ${JSON.stringify(box.getTopOrigin().toJSON())}'
243
- ' baseX: ${box.getBaseX()}'
244
- ' baseY: ${box.getBaseY()}`;
245
- case "cone":
246
- const cone = solid;
247
- return `${summary}'
248
- ' baseCenterPoint: ${JSON.stringify(cone.getCenterA())}'
249
- ' topCenterPoint: ${JSON.stringify(cone.getCenterB())}'
250
- ' baseCenterRadius: ${JSON.stringify(cone.getRadiusA())}'
251
- ' topCenterRadius: ${JSON.stringify(cone.getRadiusB())}`;
252
- case "sphere":
253
- const sphere = solid;
254
- return `${summary}'
255
- ' centerPoint: ${JSON.stringify(sphere.cloneCenter().toJSON())}'
256
- ' radius: ${JSON.stringify(sphere.trueSphereRadius())}`;
257
- case "linearSweep":
258
- const linearSweep = solid;
259
- return `${summary}'
260
- ' vector: ${linearSweep.cloneSweepVector().toJSON()}'
261
- ' curves${this.summarizeCurveCollection(linearSweep.getCurvesRef())}`;
262
- case "rotationalSweep":
263
- const rotationalSweep = solid;
264
- const axis = rotationalSweep.cloneAxisRay();
265
- return `${summary}'
266
- ' center: ${axis.origin.toJSON()}'
267
- ' axis: ${JSON.stringify(axis.direction.toJSON())}'
268
- ' sweepAngle: ${rotationalSweep.getSweep().degrees}`;
269
- case "ruledSweep":
270
- const ruledSweep = solid;
271
- const summarizedCollection = ruledSweep.cloneContours().map((curveCollection) => this.summarizeCurveCollection(curveCollection));
272
- return `${summary}'
273
- ' isClosedVolume${ruledSweep.isClosedVolume}'
274
- ' contours: ${JSON.stringify(summarizedCollection)}`;
275
- case "torusPipe":
276
- const torusPipe = solid;
277
- const vectorX = torusPipe.cloneVectorX();
278
- const vectorY = torusPipe.cloneVectorY();
279
- const sweep = torusPipe.getSweepAngle();
280
- if (torusPipe.getIsReversed()) {
281
- vectorY.scaleInPlace(-1.0);
282
- sweep.setRadians(-sweep.radians);
283
- }
284
- return `${summary}'
285
- ' center: ${torusPipe.cloneCenter().toJSON()}'
286
- ' xyVectors: ${JSON.stringify([vectorX.toJSON(), vectorY.toJSON()])}'
287
- ' majorRadius: ${torusPipe.getMajorRadius()}'
288
- ' minorRadius: ${torusPipe.getMinorRadius()}'
289
- ' sweepAngle: ${sweep.degrees}`;
290
- }
291
- }
292
- summarizeCurvePrimitive(curve) {
293
- let summary = "";
294
- const writer = new core_geometry_1.IModelJson.Writer();
295
- switch (curve.curvePrimitiveType) {
296
- case "arc":
297
- const arc = curve;
298
- summary = `${summary} center: ${JSON.stringify(arc.center.toJSON())}`;
299
- if (undefined !== arc.circularRadius)
300
- summary = `${summary} radius: ${arc.circularRadius()}`;
301
- summary = `${summary}'
302
- ' vectorX:${arc.vector0.toJSON()}'
303
- ' vectorY:${arc.vector90.toJSON()}'
304
- ' sweepStartEnd [${arc.sweep.startDegrees}, ${arc.sweep.endDegrees}]`
305
- + ` curveLength: ${curve.curveLength()}`;
306
- return summary;
307
- case "lineSegment":
308
- const lineSegment = curve;
309
- summary = `${summary} points: ${JSON.stringify(lineSegment.toJSON())}`;
310
- summary = `${summary} curveLength: ${curve.curveLength()}`;
311
- return summary;
312
- case "lineString":
313
- const lineString = curve;
314
- summary = `${summary} pointCount: ${lineString.numPoints()}'
315
- ' curveLength: ${curve.curveLength()}`;
316
- return summary;
317
- case "bsplineCurve":
318
- const bsplineCurve = curve;
319
- summary = `${summary}'
320
- ' curveOrder: ${bsplineCurve.order}'
321
- ' controlPointsCount: ${bsplineCurve.numPoles}'
322
- ' curveLength: ${curve.curveLength()}`;
323
- return summary;
324
- case "interpolationCurve":
325
- const interpolationCurve = curve;
326
- const interpolationProps = interpolationCurve.cloneProps();
327
- summary = `${summary}'
328
- ' curveOrder: ${interpolationProps.order}'
329
- ' controlPointsCount: ${interpolationProps.fitPoints.length}`;
330
- return summary;
331
- case "akimaCurve":
332
- const akimaCurve = curve;
333
- const akimaProps = akimaCurve.cloneProps();
334
- summary = `${summary}'
335
- ' controlPointsCount: ${akimaProps.fitPoints.length}`;
336
- return summary;
337
- case "bezierCurve":
338
- const bezierCurve = curve;
339
- summary = `${summary}'
340
- ' curveOrder: ${bezierCurve.order}'
341
- ' controlPointsCount: ${bezierCurve.numPoles}'
342
- ' curveLength: ${curve.curveLength()}`;
343
- return summary;
344
- case "transitionSpiral":
345
- const transitionSpiral = curve;
346
- const json = writer.handleTransitionSpiral(transitionSpiral);
347
- summary = summary + JSON.stringify(json);
348
- return summary;
349
- case "curveChainWithDistanceIndex":
350
- const curveChainWithDistanceIndex = curve;
351
- const path = curveChainWithDistanceIndex.path;
352
- summary = `${summary}'
353
- ' curveLength: ${curve.curveLength()}'
354
- ' isOpen: ${path.isOpenPath}`;
355
- return summary;
356
- }
357
- }
358
- summarizeCurveCollection(curves) {
359
- let summary = "";
360
- switch (curves.curveCollectionType) {
361
- case "loop":
362
- const loop = curves;
363
- summary = `${summary} isInner: ${loop.isInner}`;
364
- break;
365
- case "path":
366
- const path = curves;
367
- summary = `${summary} isOpen: ${path.isOpenPath}`;
368
- break;
369
- }
370
- return `${summary}'
371
- ' numCurves: ${curves.collectCurvePrimitives().length}'
372
- ' boundary: ${curves.dgnBoundaryType()}`;
373
- }
374
- }
375
- /** @internal */
376
- function generateGeometrySummaries(request, iModel) {
377
- const generator = new ResponseGenerator(request, iModel);
378
- return generator.generateSummaries();
379
- }
380
- exports.generateGeometrySummaries = generateGeometrySummaries;
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
+ * See LICENSE.md in the project root for license terms and full copyright notice.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.generateGeometrySummaries = void 0;
8
+ const core_bentley_1 = require("@itwin/core-bentley");
9
+ const core_geometry_1 = require("@itwin/core-geometry");
10
+ const core_common_1 = require("@itwin/core-common");
11
+ const Element_1 = require("./Element");
12
+ // cspell:ignore earlin
13
+ /** Generates an array of GeometryStreamResponseProps. */
14
+ class ResponseGenerator {
15
+ constructor(request, iModel) {
16
+ this.verbosity = core_common_1.GeometrySummaryVerbosity.Basic;
17
+ this.includePlacement = false;
18
+ this.verboseSymbology = false;
19
+ this.elementIds = request.elementIds;
20
+ this.iModel = iModel;
21
+ const opts = request.options;
22
+ if (undefined !== opts) {
23
+ this.verbosity = undefined !== opts.geometryVerbosity ? opts.geometryVerbosity : core_common_1.GeometrySummaryVerbosity.Basic;
24
+ this.includePlacement = true === opts.includePlacement;
25
+ this.includePartReferences = opts.includePartReferences;
26
+ this.verboseSymbology = true === opts.verboseSymbology;
27
+ }
28
+ }
29
+ get wantSquish() { return core_common_1.GeometrySummaryVerbosity.Full !== this.verbosity; }
30
+ generateSummaries() {
31
+ const summaries = [];
32
+ for (const elementId of this.elementIds)
33
+ summaries.push(this.generateSummary(elementId));
34
+ return summaries.join("\n");
35
+ }
36
+ generateSummary(id) {
37
+ let lines = [`[Geometry Summary for Element ${id}]`];
38
+ try {
39
+ const geom = this.getElementGeom(id);
40
+ if (undefined === geom)
41
+ throw new core_common_1.IModelError(core_bentley_1.IModelStatus.NoGeometry, "Element is neither a geometric element nor a geometry part");
42
+ if (undefined !== geom.geometricElement)
43
+ lines.push(this.summarizeElement(geom.geometricElement));
44
+ else if (undefined !== this.includePartReferences)
45
+ lines.push(this.summarizePartReferences(id, "2d" === this.includePartReferences)); // NB: Hideously inefficient if more than one element's summary was requested.
46
+ let curGeomParams;
47
+ let curLocalRange;
48
+ for (const entry of geom.iterator) {
49
+ if (this.verboseSymbology && (undefined === curGeomParams || !curGeomParams.isEquivalent(entry.geomParams))) {
50
+ lines.push(`Symbology: ${this.stringify(entry.geomParams)}`);
51
+ curGeomParams = entry.geomParams.clone();
52
+ }
53
+ if (undefined !== entry.localRange && (undefined === curLocalRange || !curLocalRange.isAlmostEqual(entry.localRange))) {
54
+ lines.push(this.summarizeRange3d(entry.localRange));
55
+ curLocalRange = entry.localRange;
56
+ }
57
+ const prim = entry.primitive;
58
+ switch (prim.type) {
59
+ case "textString":
60
+ case "image":
61
+ this.summarizePrimitive(lines, prim);
62
+ break;
63
+ case "brep":
64
+ this.summarizeBRep(lines, prim.brep);
65
+ break;
66
+ case "geometryQuery":
67
+ this.summarizeGeometryQuery(lines, prim.geometry);
68
+ break;
69
+ case "partReference":
70
+ lines.push(this.summarizePartReference(prim.part.id, prim.part.toLocal));
71
+ break;
72
+ }
73
+ }
74
+ }
75
+ catch (err) {
76
+ lines = lines.slice(0, 1);
77
+ lines.push(`ERROR: ${core_bentley_1.BentleyError.getErrorMessage(err)}`);
78
+ }
79
+ return lines.filter((line) => line !== "").join("\n");
80
+ }
81
+ summarizeElement(elem) {
82
+ const lines = [];
83
+ lines.push(`(${elem.is2d() ? "2D" : "3D"}) Category: ${elem.category}`);
84
+ lines.push(`Model: ${elem.model}`);
85
+ if (this.includePlacement) {
86
+ lines.push(`Range: ${this.stringify(elem.calculateRange3d())}`);
87
+ lines.push(`Transform: ${this.stringify(elem.getPlacementTransform())}`);
88
+ }
89
+ return lines.join("\n");
90
+ }
91
+ summarizePartReferences(id, is2d) {
92
+ const refIds = this.iModel.nativeDb.findGeometryPartReferences([id], is2d);
93
+ return `Part references (${refIds.length}): ${refIds.join()}`;
94
+ }
95
+ getElementGeom(id) {
96
+ const elem = this.iModel.elements.getElement({ id, wantGeometry: true });
97
+ let iterator;
98
+ let geometricElement;
99
+ if (elem instanceof Element_1.GeometricElement) {
100
+ geometricElement = elem;
101
+ if (geometricElement.is2d()) {
102
+ iterator = core_common_1.GeometryStreamIterator.fromGeometricElement2d(geometricElement);
103
+ }
104
+ else {
105
+ (0, core_bentley_1.assert)(geometricElement.is3d());
106
+ iterator = core_common_1.GeometryStreamIterator.fromGeometricElement3d(geometricElement);
107
+ }
108
+ }
109
+ else if (elem instanceof Element_1.GeometryPart) {
110
+ iterator = core_common_1.GeometryStreamIterator.fromGeometryPart(elem);
111
+ }
112
+ return undefined !== iterator ? { iterator, geometricElement } : undefined;
113
+ }
114
+ summarizeRange3d(range) {
115
+ return `SubGraphicRange: ${this.stringify(range)}`;
116
+ }
117
+ summarizePrimitive(lines, primitive) {
118
+ const summary = primitive.type;
119
+ if (core_common_1.GeometrySummaryVerbosity.Basic >= this.verbosity) {
120
+ lines.push(summary);
121
+ return;
122
+ }
123
+ const json = this.stringify(primitive.type === "textString" ? primitive.textString : primitive.image);
124
+ if (core_common_1.GeometrySummaryVerbosity.Detailed >= this.verbosity) {
125
+ lines.push(`${summary}: ${json}`);
126
+ return;
127
+ }
128
+ lines.push(`${summary}:`);
129
+ lines.push(json);
130
+ }
131
+ summarizeBRep(lines, brep) {
132
+ const summary = "brep";
133
+ if (core_common_1.GeometrySummaryVerbosity.Basic >= this.verbosity) {
134
+ lines.push(summary);
135
+ return;
136
+ }
137
+ const json = this.stringify({ type: brep.type, transform: brep.transform, faceSymbology: brep.faceSymbology });
138
+ if (core_common_1.GeometrySummaryVerbosity.Detailed >= this.verbosity) {
139
+ lines.push(`${summary}: ${json}`);
140
+ return;
141
+ }
142
+ lines.push(`${summary}:`);
143
+ lines.push(json);
144
+ }
145
+ summarizePartReference(partId, partToLocal) {
146
+ let line = `part id: ${partId}`;
147
+ if (undefined !== partToLocal)
148
+ line = `${line} transform: ${this.stringify(partToLocal)}`;
149
+ return line;
150
+ }
151
+ summarizeGeometryQuery(lines, query) {
152
+ switch (this.verbosity) {
153
+ case core_common_1.GeometrySummaryVerbosity.Detailed:
154
+ lines.push(this.summarizeGeometryQueryDetailed(query));
155
+ break;
156
+ case core_common_1.GeometrySummaryVerbosity.Full:
157
+ lines.push(this.summarizeGeometryQueryFull(query));
158
+ break;
159
+ default:
160
+ lines.push(this.summarizeGeometryQueryBasic(query));
161
+ break;
162
+ }
163
+ }
164
+ summarizeGeometryQueryBasic(query) {
165
+ switch (query.geometryCategory) {
166
+ case "solid":
167
+ return query.solidPrimitiveType;
168
+ case "curvePrimitive":
169
+ return query.curvePrimitiveType;
170
+ case "curveCollection":
171
+ return query.curveCollectionType;
172
+ default:
173
+ return query.geometryCategory;
174
+ }
175
+ }
176
+ summarizeGeometryQueryFull(query) {
177
+ return this.geometryQueryToJson(query);
178
+ }
179
+ geometryQueryToJson(query) {
180
+ try {
181
+ const json = core_geometry_1.IModelJson.Writer.toIModelJson(query);
182
+ const str = JSON.stringify(json);
183
+ return this.wantSquish ? this.squish(str) : str;
184
+ }
185
+ catch (err) {
186
+ return core_bentley_1.BentleyError.getErrorMessage(err);
187
+ }
188
+ }
189
+ // Earlin likes to put tons of whitespace + newlines into his JSON. Remove it.
190
+ squish(str) {
191
+ return str.replace(/\s+/g, "");
192
+ }
193
+ stringify(obj) {
194
+ const json = JSON.stringify(obj);
195
+ return this.wantSquish ? this.squish(json) : json;
196
+ }
197
+ summarizeGeometryQueryDetailed(query) {
198
+ let summary = `${this.summarizeGeometryQueryBasic(query)}: `;
199
+ switch (query.geometryCategory) {
200
+ case "solid":
201
+ return summary + this.summarizeSolidPrimitive(query);
202
+ case "curvePrimitive":
203
+ return summary + this.summarizeCurvePrimitive(query);
204
+ case "curveCollection":
205
+ return summary + this.summarizeCurveCollection(query);
206
+ case "pointCollection":
207
+ return `${summary} numPoints: ${query.points.length}`;
208
+ case "bsurf":
209
+ return `${summary}'
210
+ ' poleDimension: ${query.poleDimension}'
211
+ ' numPolesTotal: ${query.numPolesTotal()}'
212
+ ' degree[U,V]: ${JSON.stringify([query.degreeUV(core_geometry_1.UVSelect.uDirection), query.degreeUV(core_geometry_1.UVSelect.VDirection)])}'
213
+ ' order[U,V]: ${JSON.stringify([query.orderUV(core_geometry_1.UVSelect.uDirection), query.orderUV(core_geometry_1.UVSelect.VDirection)])}'
214
+ ' numSpan[U,V]: ${JSON.stringify([query.numSpanUV(core_geometry_1.UVSelect.uDirection), query.numSpanUV(core_geometry_1.UVSelect.VDirection)])}'
215
+ ' numPoles[U,V]: ${JSON.stringify([query.numPolesUV(core_geometry_1.UVSelect.uDirection), query.numPolesUV(core_geometry_1.UVSelect.VDirection)])}'
216
+ ' poleStep[U,V]: ${JSON.stringify([query.poleStepUV(core_geometry_1.UVSelect.uDirection), query.poleStepUV(core_geometry_1.UVSelect.VDirection)])}`;
217
+ case "polyface": {
218
+ const data = query.data;
219
+ summary = `${summary} pointCount: ${data.point.length}'
220
+ ' pointIndexCount: ${data.pointIndex.length}`;
221
+ if (query.twoSided)
222
+ summary = `${summary} (two-sided)`;
223
+ if (undefined !== data.normal)
224
+ summary = `${summary} normalCount: ${data.normal.length}`;
225
+ if (undefined !== data.param)
226
+ summary = `${summary} paramCount: ${data.param.length}`;
227
+ if (undefined !== data.color)
228
+ summary = `${summary} colorCount: ${data.color.length}`;
229
+ return summary;
230
+ }
231
+ case "point":
232
+ return summary + this.geometryQueryToJson(query);
233
+ }
234
+ }
235
+ summarizeSolidPrimitive(solid) {
236
+ const summary = solid.capped ? " capped" : " uncapped";
237
+ switch (solid.solidPrimitiveType) {
238
+ case "box":
239
+ const box = solid;
240
+ return `${summary}'
241
+ ' origin: ${JSON.stringify(box.getBaseOrigin().toJSON())}'
242
+ ' topOrigin: ${JSON.stringify(box.getTopOrigin().toJSON())}'
243
+ ' baseX: ${box.getBaseX()}'
244
+ ' baseY: ${box.getBaseY()}`;
245
+ case "cone":
246
+ const cone = solid;
247
+ return `${summary}'
248
+ ' baseCenterPoint: ${JSON.stringify(cone.getCenterA())}'
249
+ ' topCenterPoint: ${JSON.stringify(cone.getCenterB())}'
250
+ ' baseCenterRadius: ${JSON.stringify(cone.getRadiusA())}'
251
+ ' topCenterRadius: ${JSON.stringify(cone.getRadiusB())}`;
252
+ case "sphere":
253
+ const sphere = solid;
254
+ return `${summary}'
255
+ ' centerPoint: ${JSON.stringify(sphere.cloneCenter().toJSON())}'
256
+ ' radius: ${JSON.stringify(sphere.trueSphereRadius())}`;
257
+ case "linearSweep":
258
+ const linearSweep = solid;
259
+ return `${summary}'
260
+ ' vector: ${linearSweep.cloneSweepVector().toJSON()}'
261
+ ' curves${this.summarizeCurveCollection(linearSweep.getCurvesRef())}`;
262
+ case "rotationalSweep":
263
+ const rotationalSweep = solid;
264
+ const axis = rotationalSweep.cloneAxisRay();
265
+ return `${summary}'
266
+ ' center: ${axis.origin.toJSON()}'
267
+ ' axis: ${JSON.stringify(axis.direction.toJSON())}'
268
+ ' sweepAngle: ${rotationalSweep.getSweep().degrees}`;
269
+ case "ruledSweep":
270
+ const ruledSweep = solid;
271
+ const summarizedCollection = ruledSweep.cloneContours().map((curveCollection) => this.summarizeCurveCollection(curveCollection));
272
+ return `${summary}'
273
+ ' isClosedVolume${ruledSweep.isClosedVolume}'
274
+ ' contours: ${JSON.stringify(summarizedCollection)}`;
275
+ case "torusPipe":
276
+ const torusPipe = solid;
277
+ const vectorX = torusPipe.cloneVectorX();
278
+ const vectorY = torusPipe.cloneVectorY();
279
+ const sweep = torusPipe.getSweepAngle();
280
+ if (torusPipe.getIsReversed()) {
281
+ vectorY.scaleInPlace(-1.0);
282
+ sweep.setRadians(-sweep.radians);
283
+ }
284
+ return `${summary}'
285
+ ' center: ${torusPipe.cloneCenter().toJSON()}'
286
+ ' xyVectors: ${JSON.stringify([vectorX.toJSON(), vectorY.toJSON()])}'
287
+ ' majorRadius: ${torusPipe.getMajorRadius()}'
288
+ ' minorRadius: ${torusPipe.getMinorRadius()}'
289
+ ' sweepAngle: ${sweep.degrees}`;
290
+ }
291
+ }
292
+ summarizeCurvePrimitive(curve) {
293
+ let summary = "";
294
+ const writer = new core_geometry_1.IModelJson.Writer();
295
+ switch (curve.curvePrimitiveType) {
296
+ case "arc":
297
+ const arc = curve;
298
+ summary = `${summary} center: ${JSON.stringify(arc.center.toJSON())}`;
299
+ if (undefined !== arc.circularRadius)
300
+ summary = `${summary} radius: ${arc.circularRadius()}`;
301
+ summary = `${summary}'
302
+ ' vectorX:${arc.vector0.toJSON()}'
303
+ ' vectorY:${arc.vector90.toJSON()}'
304
+ ' sweepStartEnd [${arc.sweep.startDegrees}, ${arc.sweep.endDegrees}]`
305
+ + ` curveLength: ${curve.curveLength()}`;
306
+ return summary;
307
+ case "lineSegment":
308
+ const lineSegment = curve;
309
+ summary = `${summary} points: ${JSON.stringify(lineSegment.toJSON())}`;
310
+ summary = `${summary} curveLength: ${curve.curveLength()}`;
311
+ return summary;
312
+ case "lineString":
313
+ const lineString = curve;
314
+ summary = `${summary} pointCount: ${lineString.numPoints()}'
315
+ ' curveLength: ${curve.curveLength()}`;
316
+ return summary;
317
+ case "bsplineCurve":
318
+ const bsplineCurve = curve;
319
+ summary = `${summary}'
320
+ ' curveOrder: ${bsplineCurve.order}'
321
+ ' controlPointsCount: ${bsplineCurve.numPoles}'
322
+ ' curveLength: ${curve.curveLength()}`;
323
+ return summary;
324
+ case "interpolationCurve":
325
+ const interpolationCurve = curve;
326
+ const interpolationProps = interpolationCurve.cloneProps();
327
+ summary = `${summary}'
328
+ ' curveOrder: ${interpolationProps.order}'
329
+ ' controlPointsCount: ${interpolationProps.fitPoints.length}`;
330
+ return summary;
331
+ case "akimaCurve":
332
+ const akimaCurve = curve;
333
+ const akimaProps = akimaCurve.cloneProps();
334
+ summary = `${summary}'
335
+ ' controlPointsCount: ${akimaProps.fitPoints.length}`;
336
+ return summary;
337
+ case "bezierCurve":
338
+ const bezierCurve = curve;
339
+ summary = `${summary}'
340
+ ' curveOrder: ${bezierCurve.order}'
341
+ ' controlPointsCount: ${bezierCurve.numPoles}'
342
+ ' curveLength: ${curve.curveLength()}`;
343
+ return summary;
344
+ case "transitionSpiral":
345
+ const transitionSpiral = curve;
346
+ const json = writer.handleTransitionSpiral(transitionSpiral);
347
+ summary = summary + JSON.stringify(json);
348
+ return summary;
349
+ case "curveChainWithDistanceIndex":
350
+ const curveChainWithDistanceIndex = curve;
351
+ const path = curveChainWithDistanceIndex.path;
352
+ summary = `${summary}'
353
+ ' curveLength: ${curve.curveLength()}'
354
+ ' isOpen: ${path.isOpenPath}`;
355
+ return summary;
356
+ }
357
+ }
358
+ summarizeCurveCollection(curves) {
359
+ let summary = "";
360
+ switch (curves.curveCollectionType) {
361
+ case "loop":
362
+ const loop = curves;
363
+ summary = `${summary} isInner: ${loop.isInner}`;
364
+ break;
365
+ case "path":
366
+ const path = curves;
367
+ summary = `${summary} isOpen: ${path.isOpenPath}`;
368
+ break;
369
+ }
370
+ return `${summary}'
371
+ ' numCurves: ${curves.collectCurvePrimitives().length}'
372
+ ' boundary: ${curves.dgnBoundaryType()}`;
373
+ }
374
+ }
375
+ /** @internal */
376
+ function generateGeometrySummaries(request, iModel) {
377
+ const generator = new ResponseGenerator(request, iModel);
378
+ return generator.generateSummaries();
379
+ }
380
+ exports.generateGeometrySummaries = generateGeometrySummaries;
381
381
  //# sourceMappingURL=GeometrySummary.js.map