@mlightcad/data-model 1.12.0 → 1.12.2

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 (78) hide show
  1. package/README.md +2 -2
  2. package/dist/data-model.cjs +15 -15
  3. package/lib/acis/AcDbAcisDecrypt.d.ts +0 -2
  4. package/lib/acis/AcDbAcisDecrypt.d.ts.map +1 -1
  5. package/lib/acis/AcDbAcisDecrypt.js +0 -2
  6. package/lib/acis/AcDbAcisDecrypt.js.map +1 -1
  7. package/lib/acis/AcDbAcisSab.d.ts.map +1 -1
  8. package/lib/acis/AcDbAcisSab.js +0 -10
  9. package/lib/acis/AcDbAcisSab.js.map +1 -1
  10. package/lib/base/AcDbDxfPairReader.d.ts +5 -4
  11. package/lib/base/AcDbDxfPairReader.d.ts.map +1 -1
  12. package/lib/base/AcDbDxfPairReader.js +60 -19
  13. package/lib/base/AcDbDxfPairReader.js.map +1 -1
  14. package/lib/base/AcDbObject.d.ts +8 -0
  15. package/lib/base/AcDbObject.d.ts.map +1 -1
  16. package/lib/base/AcDbObject.js +22 -3
  17. package/lib/base/AcDbObject.js.map +1 -1
  18. package/lib/base/index.d.ts +1 -1
  19. package/lib/base/index.d.ts.map +1 -1
  20. package/lib/base/index.js +1 -1
  21. package/lib/base/index.js.map +1 -1
  22. package/lib/converter/AcDbBatchProcessing.d.ts +2 -2
  23. package/lib/converter/AcDbBatchProcessing.d.ts.map +1 -1
  24. package/lib/converter/AcDbBatchProcessing.js +15 -16
  25. package/lib/converter/AcDbBatchProcessing.js.map +1 -1
  26. package/lib/converter/worker/AcDbWorkerManager.d.ts.map +1 -1
  27. package/lib/converter/worker/AcDbWorkerManager.js +8 -5
  28. package/lib/converter/worker/AcDbWorkerManager.js.map +1 -1
  29. package/lib/database/AcDbDatabase.d.ts.map +1 -1
  30. package/lib/database/AcDbDatabase.js +27 -11
  31. package/lib/database/AcDbDatabase.js.map +1 -1
  32. package/lib/database/AcDbDatabaseConverterManager.d.ts +7 -2
  33. package/lib/database/AcDbDatabaseConverterManager.d.ts.map +1 -1
  34. package/lib/database/AcDbDatabaseConverterManager.js +9 -2
  35. package/lib/database/AcDbDatabaseConverterManager.js.map +1 -1
  36. package/lib/database/AcDbSysVarManager.d.ts.map +1 -1
  37. package/lib/database/AcDbSysVarManager.js +11 -0
  38. package/lib/database/AcDbSysVarManager.js.map +1 -1
  39. package/lib/database/AcDbSystemVariables.d.ts +7 -1
  40. package/lib/database/AcDbSystemVariables.d.ts.map +1 -1
  41. package/lib/database/AcDbSystemVariables.js +6 -0
  42. package/lib/database/AcDbSystemVariables.js.map +1 -1
  43. package/lib/dxf/AcDbDxfDocumentReader.d.ts +10 -6
  44. package/lib/dxf/AcDbDxfDocumentReader.d.ts.map +1 -1
  45. package/lib/dxf/AcDbDxfDocumentReader.js +12 -19
  46. package/lib/dxf/AcDbDxfDocumentReader.js.map +1 -1
  47. package/lib/dxf/AcDbNativeDxfConverter.d.ts +3 -2
  48. package/lib/dxf/AcDbNativeDxfConverter.d.ts.map +1 -1
  49. package/lib/dxf/AcDbNativeDxfConverter.js +18 -27
  50. package/lib/dxf/AcDbNativeDxfConverter.js.map +1 -1
  51. package/lib/entity/AcDbEntity.d.ts.map +1 -1
  52. package/lib/entity/AcDbEntity.js +6 -16
  53. package/lib/entity/AcDbEntity.js.map +1 -1
  54. package/lib/entity/AcDbOle2Frame.d.ts +11 -0
  55. package/lib/entity/AcDbOle2Frame.d.ts.map +1 -1
  56. package/lib/entity/AcDbOle2Frame.js +20 -0
  57. package/lib/entity/AcDbOle2Frame.js.map +1 -1
  58. package/lib/index.d.ts +2 -3
  59. package/lib/index.d.ts.map +1 -1
  60. package/lib/index.js +2 -5
  61. package/lib/index.js.map +1 -1
  62. package/lib/misc/AcDbOle2FrameGeometry.d.ts +49 -0
  63. package/lib/misc/AcDbOle2FrameGeometry.d.ts.map +1 -0
  64. package/lib/misc/AcDbOle2FrameGeometry.js +66 -0
  65. package/lib/misc/AcDbOle2FrameGeometry.js.map +1 -0
  66. package/lib/misc/AcDbRenderingCache.d.ts +159 -8
  67. package/lib/misc/AcDbRenderingCache.d.ts.map +1 -1
  68. package/lib/misc/AcDbRenderingCache.js +460 -70
  69. package/lib/misc/AcDbRenderingCache.js.map +1 -1
  70. package/lib/misc/index.d.ts +3 -0
  71. package/lib/misc/index.d.ts.map +1 -1
  72. package/lib/misc/index.js +1 -0
  73. package/lib/misc/index.js.map +1 -1
  74. package/package.json +5 -7
  75. package/lib/dxf/registerNativeDxfConverter.d.ts +0 -2
  76. package/lib/dxf/registerNativeDxfConverter.d.ts.map +0 -1
  77. package/lib/dxf/registerNativeDxfConverter.js +0 -12
  78. package/lib/dxf/registerNativeDxfConverter.js.map +0 -1
@@ -2,12 +2,77 @@ import { AcCmColor } from '@mlightcad/common';
2
2
  import { AcGeMatrix3d, AcGeVector3d } from '@mlightcad/geometry-engine';
3
3
  import { AcGiEntity, AcGiRenderer } from '@mlightcad/graphic-interface';
4
4
  import { AcDbBlockTableRecord } from '../database/AcDbBlockTableRecord';
5
+ /**
6
+ * Optional timing counters for one cache-miss block build during
7
+ * {@link AcDbRenderingCache.draw}. Enable with
8
+ * {@link AcDbRenderingCache.profiling} = true.
9
+ */
10
+ export interface AcDbRenderingCacheBlockMissProfile {
11
+ /** Block table record name (or `'(unnamed)'`). */
12
+ blockName: string;
13
+ /** Entity `worldDraw` + `group` time in ms (excludes compact). */
14
+ buildMs: number;
15
+ /** `compactForInstancing` time in ms. */
16
+ compactMs: number;
17
+ /** Time spent cloning the template in {@link AcDbRenderingCache.set}. */
18
+ setCloneMs: number;
19
+ }
20
+ /**
21
+ * Accumulated timing counters for {@link AcDbRenderingCache}.
22
+ * Only updated while {@link AcDbRenderingCache.profiling} is true.
23
+ */
24
+ export interface AcDbRenderingCacheProfileStats {
25
+ /** Cache hit count (template already built). */
26
+ hits: number;
27
+ /** Cache miss count (template built on this call). */
28
+ misses: number;
29
+ /** Total time spent on hit path before apply/attribs (includes clone). */
30
+ hitMs: number;
31
+ /** Miss path: entity worldDraw + group, excluding compact. */
32
+ missBuildMs: number;
33
+ /** Miss path: compactForInstancing. */
34
+ missCompactMs: number;
35
+ /** Time spent in get() → fastDeepClone (hit clones). */
36
+ cloneMs: number;
37
+ /** Time spent in set() → fastDeepClone (store template). */
38
+ setCloneMs: number;
39
+ /** applyMatrix + attribute attach after template ready. */
40
+ applyMs: number;
41
+ /**
42
+ * Same counters as above but only for outermost `draw()` calls
43
+ * (excludes nested INSERT draws while building a parent template).
44
+ */
45
+ topLevel: {
46
+ /** Top-level cache hits. */
47
+ hits: number;
48
+ /** Top-level cache misses. */
49
+ misses: number;
50
+ /** Top-level hit-path time in ms. */
51
+ hitMs: number;
52
+ /** Top-level miss build time in ms. */
53
+ missBuildMs: number;
54
+ /** Top-level compact time in ms. */
55
+ missCompactMs: number;
56
+ /** Top-level hit-clone time in ms. */
57
+ cloneMs: number;
58
+ /** Top-level set-clone time in ms. */
59
+ setCloneMs: number;
60
+ /** Top-level apply/attribute time in ms. */
61
+ applyMs: number;
62
+ };
63
+ /** Per-block miss breakdown (all depths). */
64
+ blockMisses: AcDbRenderingCacheBlockMissProfile[];
65
+ }
5
66
  /**
6
67
  * Internal class used to cache rendered results to avoid duplicated rendering.
7
68
  *
8
69
  * This class can be used to improve performance when rendering block references.
9
- * Because different colors will result in different materials, the block name and
10
- * color are used together to create the cache key.
70
+ * Blocks without ByBlock-colored entities share one color-independent template.
71
+ * Blocks that contain ByBlock entities still key by block name and color because
72
+ * different INSERT colors produce different materials.
73
+ *
74
+ * Templates are compacted (same-material leaves merged) before caching so each
75
+ * INSERT clones O(material) geometries instead of O(entity) geometries.
11
76
  *
12
77
  * @internal
13
78
  *
@@ -20,10 +85,30 @@ import { AcDbBlockTableRecord } from '../database/AcDbBlockTableRecord';
20
85
  * ```
21
86
  */
22
87
  export declare class AcDbRenderingCache {
23
- /** Map of cached rendering results indexed by key */
88
+ /** Map of cached rendering results indexed by key. */
24
89
  private _blocks;
25
- /** Singleton instance of the cache */
90
+ /** Singleton instance of the cache. */
26
91
  private static _instance?;
92
+ /**
93
+ * When true, {@link draw} / {@link get} / {@link set} accumulate
94
+ * {@link profileStats}. Off by default (zero overhead when false).
95
+ */
96
+ static profiling: boolean;
97
+ /**
98
+ * Mutable profile accumulator used while {@link profiling} is true.
99
+ */
100
+ private static _profileStats;
101
+ /** Nesting depth of {@link draw} while profiling (1 = outermost). */
102
+ private static _drawDepth;
103
+ /**
104
+ * Accumulated profile counters. Only updated while {@link profiling} is true.
105
+ */
106
+ static get profileStats(): Readonly<AcDbRenderingCacheProfileStats>;
107
+ /**
108
+ * Clears {@link profileStats} and draw nesting depth.
109
+ * Leaves {@link profiling} unchanged.
110
+ */
111
+ static resetProfile(): void;
27
112
  /**
28
113
  * Gets the singleton instance of the rendering cache.
29
114
  *
@@ -47,6 +132,9 @@ export declare class AcDbRenderingCache {
47
132
  /**
48
133
  * Creates a cache key by combining the block name and color.
49
134
  *
135
+ * Prefer {@link createCacheKey} when the block's ByBlock dependency is known,
136
+ * so color-independent blocks can share one template.
137
+ *
50
138
  * @param name - The block name
51
139
  * @param color - The resolved block color
52
140
  * @returns A unique key for the cache entry
@@ -59,9 +147,24 @@ export declare class AcDbRenderingCache {
59
147
  * ```
60
148
  */
61
149
  createKey(name: string, color: AcCmColor): string;
150
+ /**
151
+ * Creates a cache key, omitting color when the block has no ByBlock entities.
152
+ *
153
+ * Color-independent keys let INSERTs that differ only by layer (ByLayer
154
+ * traits remapped at instance time) share one compacted template.
155
+ *
156
+ * @param name - The block name
157
+ * @param color - The resolved INSERT color (used only when `hasByBlockColor`)
158
+ * @param hasByBlockColor - Whether any entity in the block uses ByBlock color
159
+ * @returns Cache key: `name` alone, or `name_color` when ByBlock entities exist
160
+ */
161
+ createCacheKey(name: string, color: AcCmColor, hasByBlockColor: boolean): string;
62
162
  /**
63
163
  * Stores rendering results of a block in the cache.
64
164
  *
165
+ * Deep-clones `group` so later mutations of the live instance cannot corrupt
166
+ * the cached template.
167
+ *
65
168
  * @param key - The key for the rendering results
66
169
  * @param group - The rendering results to store
67
170
  * @returns The stored rendering results (deep cloned)
@@ -75,8 +178,11 @@ export declare class AcDbRenderingCache {
75
178
  /**
76
179
  * Gets rendering results with the specified key.
77
180
  *
181
+ * Returns a deep clone so callers can transform the instance without
182
+ * mutating the cached template.
183
+ *
78
184
  * @param name - The key of the rendering results
79
- * @returns The rendering results with the specified key, or undefined if not found
185
+ * @returns The cloned rendering results, or `undefined` if not found
80
186
  *
81
187
  * @example
82
188
  * ```typescript
@@ -102,7 +208,7 @@ export declare class AcDbRenderingCache {
102
208
  */
103
209
  has(name: string): boolean;
104
210
  /**
105
- * Clears all cached rendering results.
211
+ * Clears all cached rendering results and disposes owned geometry.
106
212
  *
107
213
  * @example
108
214
  * ```typescript
@@ -111,6 +217,18 @@ export declare class AcDbRenderingCache {
111
217
  * ```
112
218
  */
113
219
  clear(): void;
220
+ /**
221
+ * Prebuilds color-independent block templates before entity flush.
222
+ *
223
+ * Skips layout blocks (`*Model_Space` / `*Paper_Space*`), empty blocks,
224
+ * anonymous `*U` blocks, and blocks that contain ByBlock-colored entities
225
+ * (those require the INSERT color and are built on demand).
226
+ *
227
+ * @param renderer - Renderer used to convert block entities
228
+ * @param blocks - Iterator over block table records
229
+ * @param progress - Optional progress callback `(built, total, blockName)`
230
+ */
231
+ prebuildAll(renderer: AcGiRenderer, blocks: Iterable<AcDbBlockTableRecord>, progress?: (built: number, total: number, blockName: string) => void | Promise<void>): Promise<void>;
114
232
  /**
115
233
  * Draws a block table record and optionally caches the result.
116
234
  *
@@ -120,9 +238,11 @@ export declare class AcDbRenderingCache {
120
238
  * @param renderer - The renderer to use for drawing
121
239
  * @param blockTableRecord - The block table record to draw
122
240
  * @param blockColor - The resolved color to use for rendering
241
+ * @param attributes - Attribute graphics to attach (WCS); converted to
242
+ * block-local space when `transform` is provided
123
243
  * @param cache - Whether to cache the rendering result (default: true)
124
- * @param transform - Optional transformation matrix to apply
125
- * @param normal - Optional normal vector
244
+ * @param transform - Optional block-reference transformation matrix
245
+ * @param normal - Optional extrusion / normal vector
126
246
  * @returns The rendered entity
127
247
  *
128
248
  * @example
@@ -131,6 +251,7 @@ export declare class AcDbRenderingCache {
131
251
  * renderer,
132
252
  * blockRecord,
133
253
  * new AcCmColor().setRGBValue(0xFF0000),
254
+ * [],
134
255
  * true,
135
256
  * transform,
136
257
  * normal
@@ -138,7 +259,37 @@ export declare class AcDbRenderingCache {
138
259
  * ```
139
260
  */
140
261
  draw(renderer: AcGiRenderer, blockTableRecord: AcDbBlockTableRecord, blockColor: AcCmColor, attributes?: AcGiEntity[], cache?: boolean, transform?: AcGeMatrix3d, normal?: AcGeVector3d): AcGiEntity | undefined;
262
+ /**
263
+ * Returns whether `block` should be excluded from {@link prebuildAll}.
264
+ *
265
+ * Skips layout blocks, anonymous `*U` blocks, blocks with ByBlock colors
266
+ * (key depends on INSERT color), and blocks with no visible entities.
267
+ *
268
+ * @param block - Block table record to evaluate.
269
+ * @returns `true` when the block should not be prebuilt.
270
+ */
271
+ private shouldSkipPrebuild;
272
+ /**
273
+ * Returns whether any visible entity in the block uses ByBlock color.
274
+ *
275
+ * @param blockTableRecord - Block whose entities are scanned.
276
+ * @returns `true` when at least one visible ByBlock-colored entity exists.
277
+ */
278
+ private blockHasByBlockColor;
279
+ /**
280
+ * Draws one visible entity and appends its graphic result to `results`.
281
+ *
282
+ * @param entity - Database entity to convert.
283
+ * @param results - Accumulator for graphic-interface entities.
284
+ * @param renderer - Renderer used for `worldDraw`.
285
+ */
141
286
  private addEntity;
287
+ /**
288
+ * Copies database identity/layer/visibility onto a graphic-interface entity.
289
+ *
290
+ * @param target - Graphic entity produced by `worldDraw`.
291
+ * @param source - Source database entity.
292
+ */
142
293
  private attachEntityInfo;
143
294
  }
144
295
  //# sourceMappingURL=AcDbRenderingCache.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AcDbRenderingCache.d.ts","sourceRoot":"","sources":["../../src/misc/AcDbRenderingCache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACvE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAEvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAA;AAGvE;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,kBAAkB;IAC7B,qDAAqD;IACrD,OAAO,CAAC,OAAO,CAAyB;IACxC,sCAAsC;IACtC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAoB;IAE7C;;;;;;;;;OASG;IACH,MAAM,KAAK,QAAQ,uBAKlB;IAED;;;;;;;OAOG;;IAKH;;;;;;;;;;;;;OAaG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS;IAQxC;;;;;;;;;;;OAWG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU;IAMlC;;;;;;;;;;;;;OAaG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM;IAQhB;;;;;;;;;;;;OAYG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM;IAIhB;;;;;;;;OAQG;IACH,KAAK;IAIL;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,IAAI,CACF,QAAQ,EAAE,YAAY,EACtB,gBAAgB,EAAE,oBAAoB,EACtC,UAAU,EAAE,SAAS,EACrB,UAAU,GAAE,UAAU,EAAO,EAC7B,KAAK,GAAE,OAAc,EACrB,SAAS,CAAC,EAAE,YAAY,EACxB,MAAM,CAAC,EAAE,YAAY;IAwEvB,OAAO,CAAC,SAAS;IAejB,OAAO,CAAC,gBAAgB;CAMzB"}
1
+ {"version":3,"file":"AcDbRenderingCache.d.ts","sourceRoot":"","sources":["../../src/misc/AcDbRenderingCache.ts"],"names":[],"mappings":"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"}