@mlightcad/cad-simple-viewer 1.7.5 → 1.7.6-preview.0
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.
- package/dist/cad-simple-viewer.js +8295 -7508
- package/dist/cad-simple-viewer.umd.cjs +83 -83
- package/dist/mtext-renderer-worker.js +2987 -2815
- package/find.ts +7 -0
- package/lib/app/AcApDocManager.d.ts +5 -0
- package/lib/app/AcApDocManager.d.ts.map +1 -1
- package/lib/app/AcApDocManager.js +28 -15
- package/lib/app/AcApDocManager.js.map +1 -1
- package/lib/app/AcApOpenDatabaseOptions.d.ts +8 -6
- package/lib/app/AcApOpenDatabaseOptions.d.ts.map +1 -1
- package/lib/app/AcApOpenFileProgressController.d.ts +17 -9
- package/lib/app/AcApOpenFileProgressController.d.ts.map +1 -1
- package/lib/app/AcApOpenFileProgressController.js +41 -20
- package/lib/app/AcApOpenFileProgressController.js.map +1 -1
- package/lib/app/AcApProgress.d.ts +5 -0
- package/lib/app/AcApProgress.d.ts.map +1 -1
- package/lib/app/AcApProgress.js +10 -0
- package/lib/app/AcApProgress.js.map +1 -1
- package/lib/app/openFileProgress.d.ts +8 -1
- package/lib/app/openFileProgress.d.ts.map +1 -1
- package/lib/app/openFileProgress.js +13 -2
- package/lib/app/openFileProgress.js.map +1 -1
- package/lib/app/syncCurrentSpaceFromTileMode.d.ts +25 -0
- package/lib/app/syncCurrentSpaceFromTileMode.d.ts.map +1 -0
- package/lib/app/syncCurrentSpaceFromTileMode.js +85 -0
- package/lib/app/syncCurrentSpaceFromTileMode.js.map +1 -0
- package/lib/find/AcApFindNavigator.d.ts +59 -0
- package/lib/find/AcApFindNavigator.d.ts.map +1 -0
- package/lib/find/AcApFindNavigator.js +145 -0
- package/lib/find/AcApFindNavigator.js.map +1 -0
- package/lib/find/findDrawing.d.ts +100 -0
- package/lib/find/findDrawing.d.ts.map +1 -0
- package/lib/find/findDrawing.js +183 -0
- package/lib/find/findDrawing.js.map +1 -0
- package/lib/find/findText.d.ts +147 -0
- package/lib/find/findText.d.ts.map +1 -0
- package/lib/find/findText.js +527 -0
- package/lib/find/findText.js.map +1 -0
- package/lib/find/index.d.ts +3 -0
- package/lib/find/index.d.ts.map +1 -0
- package/lib/find/index.js +3 -0
- package/lib/find/index.js.map +1 -0
- package/lib/index.d.ts +2 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -0
- package/lib/index.js.map +1 -1
- package/lib/spatialIndex/AcTrHierarchicalSpatialIndex.d.ts +29 -7
- package/lib/spatialIndex/AcTrHierarchicalSpatialIndex.d.ts.map +1 -1
- package/lib/spatialIndex/AcTrHierarchicalSpatialIndex.js +77 -38
- package/lib/spatialIndex/AcTrHierarchicalSpatialIndex.js.map +1 -1
- package/lib/view/AcTrConvertQueue.d.ts +78 -0
- package/lib/view/AcTrConvertQueue.d.ts.map +1 -0
- package/lib/view/AcTrConvertQueue.js +143 -0
- package/lib/view/AcTrConvertQueue.js.map +1 -0
- package/lib/view/AcTrGroupWcsBboxAssert.d.ts +9 -0
- package/lib/view/AcTrGroupWcsBboxAssert.d.ts.map +1 -1
- package/lib/view/AcTrGroupWcsBboxAssert.js +12 -0
- package/lib/view/AcTrGroupWcsBboxAssert.js.map +1 -1
- package/lib/view/AcTrLayer.d.ts.map +1 -1
- package/lib/view/AcTrLayer.js +5 -1
- package/lib/view/AcTrLayer.js.map +1 -1
- package/lib/view/AcTrLayout.d.ts.map +1 -1
- package/lib/view/AcTrLayout.js +15 -0
- package/lib/view/AcTrLayout.js.map +1 -1
- package/lib/view/AcTrLayoutView.d.ts.map +1 -1
- package/lib/view/AcTrLayoutView.js +3 -1
- package/lib/view/AcTrLayoutView.js.map +1 -1
- package/lib/view/AcTrProgressiveOpenFitController.d.ts +1 -0
- package/lib/view/AcTrProgressiveOpenFitController.d.ts.map +1 -1
- package/lib/view/AcTrProgressiveOpenFitController.js +2 -1
- package/lib/view/AcTrProgressiveOpenFitController.js.map +1 -1
- package/lib/view/AcTrView2d.d.ts +167 -18
- package/lib/view/AcTrView2d.d.ts.map +1 -1
- package/lib/view/AcTrView2d.js +746 -212
- package/lib/view/AcTrView2d.js.map +1 -1
- package/package.json +17 -10
- package/src/find/AcApFindNavigator.ts +190 -0
- package/src/find/findDrawing.ts +211 -0
- package/src/find/findText.ts +595 -0
- package/src/find/index.ts +2 -0
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { AcDbObjectId } from '@mlightcad/data-model';
|
|
2
2
|
import { AcTrGroup } from '@mlightcad/three-renderer';
|
|
3
|
+
import * as THREE from 'three';
|
|
3
4
|
import { AcEdSpatialQueryResultItem, AcEdSpatialQueryResultItemEx } from '../editor/view/AcEdSpatialQueryResult';
|
|
4
5
|
import { AcTrSpatialIndex, AcTrSpatialIndexBBox, AcTrSpatialIndexStats, AcTrSpatialSearchOptions } from './AcTrSpatialIndex';
|
|
5
6
|
/**
|
|
@@ -32,10 +33,21 @@ import { AcTrSpatialIndex, AcTrSpatialIndexBBox, AcTrSpatialIndexStats, AcTrSpat
|
|
|
32
33
|
* where entities are grouped hierarchically but still require fast
|
|
33
34
|
* spatial queries such as selection, picking, and hit-testing.
|
|
34
35
|
*/
|
|
36
|
+
/**
|
|
37
|
+
* Block-local child boxes plus the INSERT matrix that maps them into WCS.
|
|
38
|
+
*
|
|
39
|
+
* Stored once per block reference until a spatial query needs the expanded
|
|
40
|
+
* child index. The box array is shared across instances of one template.
|
|
41
|
+
*/
|
|
42
|
+
export interface AcTrLazySpatialChildren {
|
|
43
|
+
boxes: readonly AcEdSpatialQueryResultItem[];
|
|
44
|
+
matrix: THREE.Matrix4;
|
|
45
|
+
}
|
|
35
46
|
export declare class AcTrHierarchicalSpatialIndex implements AcTrSpatialIndex {
|
|
36
47
|
static THRESHOLD: number;
|
|
37
48
|
private readonly rootIndex;
|
|
38
49
|
private readonly childIndexes;
|
|
50
|
+
private readonly lazyChildren;
|
|
39
51
|
/**
|
|
40
52
|
* Creates a hierarchical spatial index instance.
|
|
41
53
|
*
|
|
@@ -136,6 +148,7 @@ export declare class AcTrHierarchicalSpatialIndex implements AcTrSpatialIndex {
|
|
|
136
148
|
*
|
|
137
149
|
* A fast root-level rejection is performed first. If root-level candidates
|
|
138
150
|
* exist, each candidate is checked as follows:
|
|
151
|
+
* - deferred INSERT children are expanded first, same as {@link search};
|
|
139
152
|
* - without child index: treated as colliding immediately;
|
|
140
153
|
* - with child index: delegated to child-level `collides`.
|
|
141
154
|
*
|
|
@@ -171,6 +184,17 @@ export declare class AcTrHierarchicalSpatialIndex implements AcTrSpatialIndex {
|
|
|
171
184
|
* @returns `true` if a child index is registered for `id`.
|
|
172
185
|
*/
|
|
173
186
|
hasChildIndex(id: AcDbObjectId): boolean;
|
|
187
|
+
/**
|
|
188
|
+
* Remembers block-local child boxes for one INSERT without copying them.
|
|
189
|
+
*
|
|
190
|
+
* {@link search} expands the boxes into a child index the first time a query
|
|
191
|
+
* hits this id. Extents queries that only read {@link all} stay on the root
|
|
192
|
+
* box.
|
|
193
|
+
*
|
|
194
|
+
* @param id - INSERT object id.
|
|
195
|
+
* @param source - Shared template boxes and this instance's matrix.
|
|
196
|
+
*/
|
|
197
|
+
setLazyChildSource(id: AcDbObjectId, source: AcTrLazySpatialChildren): void;
|
|
174
198
|
/**
|
|
175
199
|
* Returns the first-level (root) item for {@link id}, when present.
|
|
176
200
|
*
|
|
@@ -209,16 +233,14 @@ export declare class AcTrHierarchicalSpatialIndex implements AcTrSpatialIndex {
|
|
|
209
233
|
*/
|
|
210
234
|
createChildIndex(group: AcTrGroup): AcTrSpatialIndex<AcEdSpatialQueryResultItem> | undefined;
|
|
211
235
|
/**
|
|
212
|
-
*
|
|
236
|
+
* Expands a deferred INSERT into a child index.
|
|
213
237
|
*
|
|
214
|
-
*
|
|
215
|
-
*
|
|
216
|
-
* - `0 < size <= THRESHOLD`: use linear index to minimize setup overhead;
|
|
217
|
-
* - `size <= 0`: return `undefined` (no index required).
|
|
238
|
+
* No-op when the id was already expanded or has no lazy source. Does not
|
|
239
|
+
* insert another root box; the caller registered the aggregate bbox.
|
|
218
240
|
*
|
|
219
|
-
* @param
|
|
220
|
-
* @returns A child index instance or `undefined` for empty datasets.
|
|
241
|
+
* @param id - INSERT object id whose query hit needs child boxes.
|
|
221
242
|
*/
|
|
243
|
+
private materializeLazyChildren;
|
|
222
244
|
private createIndexBySize;
|
|
223
245
|
}
|
|
224
246
|
//# sourceMappingURL=AcTrHierarchicalSpatialIndex.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AcTrHierarchicalSpatialIndex.d.ts","sourceRoot":"","sources":["../../src/spatialIndex/AcTrHierarchicalSpatialIndex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"AcTrHierarchicalSpatialIndex.d.ts","sourceRoot":"","sources":["../../src/spatialIndex/AcTrHierarchicalSpatialIndex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AACrD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,EAG7B,MAAM,uCAAuC,CAAA;AAI9C,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,EAEzB,MAAM,oBAAoB,CAAA;AAE3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,SAAS,0BAA0B,EAAE,CAAA;IAC5C,MAAM,EAAE,KAAK,CAAC,OAAO,CAAA;CACtB;AAED,qBAAa,4BAA6B,YAAW,gBAAgB;IACnE,MAAM,CAAC,SAAS,SAAM;IACtB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA8C;IACxE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsC;IACnE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA6C;IAE1E;;;;;;;;OAQG;gBACS,SAAS,CAAC,EAAE,gBAAgB,CAAC,0BAA0B,CAAC;IAIpE;;;;;;;;OAQG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAIxD;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAIlC;;;;;;OAMG;IACH,MAAM,CAAC,IAAI,EAAE,0BAA0B,GAAG,IAAI;IAI9C;;;;;;OAMG;IACH,IAAI,CAAC,KAAK,EAAE,SAAS,0BAA0B,EAAE,GAAG,IAAI;IAIxD;;;;;;;;OAQG;IACH,MAAM,CACJ,IAAI,EAAE,0BAA0B,EAChC,MAAM,CAAC,EAAE,CACP,CAAC,EAAE,0BAA0B,EAC7B,CAAC,EAAE,0BAA0B,KAC1B,OAAO,GACX,IAAI;IAMP;;;;OAIG;IACH,UAAU,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI;IAMlC;;;;;OAKG;IACH,KAAK,IAAI,IAAI;IAOb;;;;;;;;;;;;;;;;;;;OAmBG;IACH,MAAM,CACJ,IAAI,EAAE,oBAAoB,EAC1B,OAAO,CAAC,EAAE,wBAAwB,GACjC,4BAA4B,EAAE;IAiCjC;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAiB5B;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO;IAW7C;;;;;;;;OAQG;IACH,GAAG,IAAI,0BAA0B,EAAE;IAYnC;;;;;;;OAOG;IACG,QAAQ,CAAC,IAAI,CAAC,EAAE;QACpB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;KAC5B,GAAG,OAAO,CAAC,0BAA0B,EAAE,CAAC;IA6BzC;;;;;OAKG;IACH,aAAa,CAAC,EAAE,EAAE,YAAY;IAI9B;;;;;;;;;OASG;IACH,kBAAkB,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,uBAAuB;IAIpE;;;;OAIG;IACH,WAAW,CAAC,EAAE,EAAE,YAAY,GAAG,0BAA0B,GAAG,SAAS;IAOrE;;OAEG;IACH,QAAQ,IAAI,qBAAqB;IA8BjC;;;;;;;;;;;;;;;OAeG;IACH,gBAAgB,CACd,EAAE,EAAE,YAAY,EAChB,KAAK,EAAE,SAAS,0BAA0B,EAAE;IAgC9C;;;;;;;;OAQG;IACH,gBAAgB,CAAC,KAAK,EAAE,SAAS;IAIjC;;;;;;;OAOG;IACH,OAAO,CAAC,uBAAuB;IAmB/B,OAAO,CAAC,iBAAiB;CAS1B"}
|
|
@@ -86,36 +86,6 @@ import { isFiniteSpatialBBox } from '../view/AcTrGroupWcsBboxAssert';
|
|
|
86
86
|
import { AcTrLinearSpatialIndex } from './AcTrLinearSpatialIndex';
|
|
87
87
|
import { AcTrRBushSpatialIndex } from './AcTrRBushSpatialIndex';
|
|
88
88
|
import { isSpatialBoxFullyInside } from './AcTrSpatialIndex';
|
|
89
|
-
/**
|
|
90
|
-
* A two-level (hierarchical) spatial index designed for complex CAD
|
|
91
|
-
* scene structures such as blocks, groups, layers, or nested entities.
|
|
92
|
-
*
|
|
93
|
-
* The index consists of:
|
|
94
|
-
*
|
|
95
|
-
* 1. A first-level spatial index that stores coarse bounding boxes
|
|
96
|
-
* (AcEdSpatialQueryResultItem) and maps each result to an `id`.
|
|
97
|
-
*
|
|
98
|
-
* 2. A second-level map from `id` to another spatial index, which
|
|
99
|
-
* contains more detailed spatial data for that specific entity,
|
|
100
|
-
* block, or group.
|
|
101
|
-
*
|
|
102
|
-
* Spatial queries are executed in two phases:
|
|
103
|
-
* - First, the query is performed against the root spatial index to
|
|
104
|
-
* find candidate items.
|
|
105
|
-
* - Then, for each candidate, the corresponding second-level spatial
|
|
106
|
-
* index (if present) is queried for more precise results.
|
|
107
|
-
* - Results from both levels are merged into a single query result.
|
|
108
|
-
*
|
|
109
|
-
* This design allows:
|
|
110
|
-
* - Mixing different spatial index implementations (e.g. R-tree and
|
|
111
|
-
* linear scan) at different hierarchy levels
|
|
112
|
-
* - Efficient querying of large, nested CAD datasets
|
|
113
|
-
* - Lazy or selective construction of fine-grained spatial indexes
|
|
114
|
-
*
|
|
115
|
-
* This class is particularly suitable for CAD viewers and editors
|
|
116
|
-
* where entities are grouped hierarchically but still require fast
|
|
117
|
-
* spatial queries such as selection, picking, and hit-testing.
|
|
118
|
-
*/
|
|
119
89
|
var AcTrHierarchicalSpatialIndex = /** @class */ (function () {
|
|
120
90
|
/**
|
|
121
91
|
* Creates a hierarchical spatial index instance.
|
|
@@ -128,6 +98,7 @@ var AcTrHierarchicalSpatialIndex = /** @class */ (function () {
|
|
|
128
98
|
*/
|
|
129
99
|
function AcTrHierarchicalSpatialIndex(rootIndex) {
|
|
130
100
|
this.childIndexes = new Map();
|
|
101
|
+
this.lazyChildren = new Map();
|
|
131
102
|
this.rootIndex = rootIndex !== null && rootIndex !== void 0 ? rootIndex : new AcTrRBushSpatialIndex();
|
|
132
103
|
}
|
|
133
104
|
/**
|
|
@@ -184,6 +155,7 @@ var AcTrHierarchicalSpatialIndex = /** @class */ (function () {
|
|
|
184
155
|
AcTrHierarchicalSpatialIndex.prototype.remove = function (item, equals) {
|
|
185
156
|
this.rootIndex.remove(item, equals);
|
|
186
157
|
this.childIndexes.delete(item.id);
|
|
158
|
+
this.lazyChildren.delete(item.id);
|
|
187
159
|
};
|
|
188
160
|
/**
|
|
189
161
|
* Removes one first-level item by id and clears its child index.
|
|
@@ -193,6 +165,7 @@ var AcTrHierarchicalSpatialIndex = /** @class */ (function () {
|
|
|
193
165
|
AcTrHierarchicalSpatialIndex.prototype.removeById = function (id) {
|
|
194
166
|
this.rootIndex.removeById(id);
|
|
195
167
|
this.childIndexes.delete(id);
|
|
168
|
+
this.lazyChildren.delete(id);
|
|
196
169
|
};
|
|
197
170
|
/**
|
|
198
171
|
* Clears all indexed data from both hierarchy levels.
|
|
@@ -204,6 +177,7 @@ var AcTrHierarchicalSpatialIndex = /** @class */ (function () {
|
|
|
204
177
|
this.rootIndex.clear();
|
|
205
178
|
this.childIndexes.forEach(function (i) { return i.clear(); });
|
|
206
179
|
this.childIndexes.clear();
|
|
180
|
+
this.lazyChildren.clear();
|
|
207
181
|
};
|
|
208
182
|
/**
|
|
209
183
|
* Performs a hierarchical search against the given bounding box.
|
|
@@ -232,6 +206,7 @@ var AcTrHierarchicalSpatialIndex = /** @class */ (function () {
|
|
|
232
206
|
try {
|
|
233
207
|
for (var level1_1 = __values(level1), level1_1_1 = level1_1.next(); !level1_1_1.done; level1_1_1 = level1_1.next()) {
|
|
234
208
|
var hit = level1_1_1.value;
|
|
209
|
+
this.materializeLazyChildren(hit.id);
|
|
235
210
|
var child = this.childIndexes.get(hit.id);
|
|
236
211
|
if (!child) {
|
|
237
212
|
if ((options === null || options === void 0 ? void 0 : options.selectionMode) !== 'window' ||
|
|
@@ -279,6 +254,7 @@ var AcTrHierarchicalSpatialIndex = /** @class */ (function () {
|
|
|
279
254
|
*
|
|
280
255
|
* A fast root-level rejection is performed first. If root-level candidates
|
|
281
256
|
* exist, each candidate is checked as follows:
|
|
257
|
+
* - deferred INSERT children are expanded first, same as {@link search};
|
|
282
258
|
* - without child index: treated as colliding immediately;
|
|
283
259
|
* - with child index: delegated to child-level `collides`.
|
|
284
260
|
*
|
|
@@ -291,6 +267,7 @@ var AcTrHierarchicalSpatialIndex = /** @class */ (function () {
|
|
|
291
267
|
return false;
|
|
292
268
|
var level1 = this.rootIndex.search(bbox);
|
|
293
269
|
return level1.some(function (hit) {
|
|
270
|
+
_this.materializeLazyChildren(hit.id);
|
|
294
271
|
var child = _this.childIndexes.get(hit.id);
|
|
295
272
|
return child ? child.collides(bbox) : true;
|
|
296
273
|
});
|
|
@@ -389,7 +366,20 @@ var AcTrHierarchicalSpatialIndex = /** @class */ (function () {
|
|
|
389
366
|
* @returns `true` if a child index is registered for `id`.
|
|
390
367
|
*/
|
|
391
368
|
AcTrHierarchicalSpatialIndex.prototype.hasChildIndex = function (id) {
|
|
392
|
-
return this.childIndexes.has(id);
|
|
369
|
+
return this.childIndexes.has(id) || this.lazyChildren.has(id);
|
|
370
|
+
};
|
|
371
|
+
/**
|
|
372
|
+
* Remembers block-local child boxes for one INSERT without copying them.
|
|
373
|
+
*
|
|
374
|
+
* {@link search} expands the boxes into a child index the first time a query
|
|
375
|
+
* hits this id. Extents queries that only read {@link all} stay on the root
|
|
376
|
+
* box.
|
|
377
|
+
*
|
|
378
|
+
* @param id - INSERT object id.
|
|
379
|
+
* @param source - Shared template boxes and this instance's matrix.
|
|
380
|
+
*/
|
|
381
|
+
AcTrHierarchicalSpatialIndex.prototype.setLazyChildSource = function (id, source) {
|
|
382
|
+
this.lazyChildren.set(id, source);
|
|
393
383
|
};
|
|
394
384
|
/**
|
|
395
385
|
* Returns the first-level (root) item for {@link id}, when present.
|
|
@@ -497,16 +487,36 @@ var AcTrHierarchicalSpatialIndex = /** @class */ (function () {
|
|
|
497
487
|
return this.ensureChildIndex(group.objectId, group.wcsChildBoxes);
|
|
498
488
|
};
|
|
499
489
|
/**
|
|
500
|
-
*
|
|
490
|
+
* Expands a deferred INSERT into a child index.
|
|
501
491
|
*
|
|
502
|
-
*
|
|
503
|
-
*
|
|
504
|
-
* - `0 < size <= THRESHOLD`: use linear index to minimize setup overhead;
|
|
505
|
-
* - `size <= 0`: return `undefined` (no index required).
|
|
492
|
+
* No-op when the id was already expanded or has no lazy source. Does not
|
|
493
|
+
* insert another root box; the caller registered the aggregate bbox.
|
|
506
494
|
*
|
|
507
|
-
* @param
|
|
508
|
-
* @returns A child index instance or `undefined` for empty datasets.
|
|
495
|
+
* @param id - INSERT object id whose query hit needs child boxes.
|
|
509
496
|
*/
|
|
497
|
+
AcTrHierarchicalSpatialIndex.prototype.materializeLazyChildren = function (id) {
|
|
498
|
+
if (this.childIndexes.has(id))
|
|
499
|
+
return;
|
|
500
|
+
var source = this.lazyChildren.get(id);
|
|
501
|
+
if (!source)
|
|
502
|
+
return;
|
|
503
|
+
this.lazyChildren.delete(id);
|
|
504
|
+
var items = [];
|
|
505
|
+
for (var i = 0; i < source.boxes.length; i++) {
|
|
506
|
+
var box = source.boxes[i];
|
|
507
|
+
if (!box || !isFiniteSpatialBBox(box))
|
|
508
|
+
continue;
|
|
509
|
+
items.push(transformSpatialBox(box, source.matrix));
|
|
510
|
+
}
|
|
511
|
+
var finiteItems = uniquifySpatialItemIds(items);
|
|
512
|
+
if (finiteItems.length === 0)
|
|
513
|
+
return;
|
|
514
|
+
var spatialIndex = this.createIndexBySize(finiteItems.length);
|
|
515
|
+
if (!spatialIndex)
|
|
516
|
+
return;
|
|
517
|
+
spatialIndex.load(finiteItems);
|
|
518
|
+
this.setChildIndex(id, spatialIndex);
|
|
519
|
+
};
|
|
510
520
|
AcTrHierarchicalSpatialIndex.prototype.createIndexBySize = function (size) {
|
|
511
521
|
if (size > AcTrHierarchicalSpatialIndex.THRESHOLD) {
|
|
512
522
|
return new AcTrRBushSpatialIndex();
|
|
@@ -520,4 +530,33 @@ var AcTrHierarchicalSpatialIndex = /** @class */ (function () {
|
|
|
520
530
|
return AcTrHierarchicalSpatialIndex;
|
|
521
531
|
}());
|
|
522
532
|
export { AcTrHierarchicalSpatialIndex };
|
|
533
|
+
/**
|
|
534
|
+
* Maps one block-local AABB through an INSERT matrix into a WCS AABB.
|
|
535
|
+
*
|
|
536
|
+
* @param box - Axis-aligned box in block space.
|
|
537
|
+
* @param matrix - INSERT transform.
|
|
538
|
+
* @returns The transformed axis-aligned box, with the same id.
|
|
539
|
+
*/
|
|
540
|
+
function transformSpatialBox(box, matrix) {
|
|
541
|
+
var e = matrix.elements;
|
|
542
|
+
var minX = Infinity;
|
|
543
|
+
var minY = Infinity;
|
|
544
|
+
var maxX = -Infinity;
|
|
545
|
+
var maxY = -Infinity;
|
|
546
|
+
var xs = [box.minX, box.maxX];
|
|
547
|
+
var ys = [box.minY, box.maxY];
|
|
548
|
+
for (var i = 0; i < 2; i++) {
|
|
549
|
+
for (var j = 0; j < 2; j++) {
|
|
550
|
+
var x = xs[i];
|
|
551
|
+
var y = ys[j];
|
|
552
|
+
var wx = e[0] * x + e[4] * y + e[12];
|
|
553
|
+
var wy = e[1] * x + e[5] * y + e[13];
|
|
554
|
+
minX = Math.min(minX, wx);
|
|
555
|
+
minY = Math.min(minY, wy);
|
|
556
|
+
maxX = Math.max(maxX, wx);
|
|
557
|
+
maxY = Math.max(maxY, wy);
|
|
558
|
+
}
|
|
559
|
+
}
|
|
560
|
+
return { minX: minX, minY: minY, maxX: maxX, maxY: maxY, id: box.id };
|
|
561
|
+
}
|
|
523
562
|
//# sourceMappingURL=AcTrHierarchicalSpatialIndex.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AcTrHierarchicalSpatialIndex.js","sourceRoot":"","sources":["../../src/spatialIndex/AcTrHierarchicalSpatialIndex.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"AcTrHierarchicalSpatialIndex.js","sourceRoot":"","sources":["../../src/spatialIndex/AcTrHierarchicalSpatialIndex.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Entity waiting in {@link AcTrView2d}'s convert queue.
|
|
3
|
+
*
|
|
4
|
+
* Only `ownerId` matters for scheduling: paper-space sheets must be converted
|
|
5
|
+
* before the model-space block references queued ahead of them.
|
|
6
|
+
*/
|
|
7
|
+
export interface AcTrConvertQueueEntity {
|
|
8
|
+
ownerId?: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Remainder of a convert batch plus the active layout that ordered it.
|
|
12
|
+
*/
|
|
13
|
+
export interface AcTrConvertPendingState<T extends AcTrConvertQueueEntity> {
|
|
14
|
+
pending: T[];
|
|
15
|
+
/** Index of the next entity in {@link pending} to convert. */
|
|
16
|
+
cursor: number;
|
|
17
|
+
activeOwnerId: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Stable-partitions `entities` so those owned by `activeOwnerId` come first.
|
|
21
|
+
*
|
|
22
|
+
* Returns the same array when it is already in that order (or when there is
|
|
23
|
+
* nothing to split) so a large model-space queue is not copied on every slice.
|
|
24
|
+
*
|
|
25
|
+
* @param entities - Queue contents in arrival order.
|
|
26
|
+
* @param activeOwnerId - Block table record id of the layout on screen.
|
|
27
|
+
* @returns `entities`, or a new array with the active layout's entities first.
|
|
28
|
+
*/
|
|
29
|
+
export declare function orderActiveLayoutFirst<T extends AcTrConvertQueueEntity>(entities: T[], activeOwnerId: string): T[];
|
|
30
|
+
/**
|
|
31
|
+
* Seeds a drain from the entities queued so far.
|
|
32
|
+
*
|
|
33
|
+
* @param entities - Everything currently in the convert queue.
|
|
34
|
+
* @param activeOwnerId - Layout that should convert first.
|
|
35
|
+
*/
|
|
36
|
+
export declare function createConvertPending<T extends AcTrConvertQueueEntity>(entities: T[], activeOwnerId: string): AcTrConvertPendingState<T>;
|
|
37
|
+
/**
|
|
38
|
+
* Folds entities queued during a slice, and a layout activated meanwhile,
|
|
39
|
+
* into the not-yet-converted remainder.
|
|
40
|
+
*
|
|
41
|
+
* Active-layout entities jump ahead of the remainder. Other arrivals stay
|
|
42
|
+
* behind it, without copying the remainder, so a long model-space tail is
|
|
43
|
+
* not recopied on every flush chunk.
|
|
44
|
+
*
|
|
45
|
+
* @param state - Remainder of the current drain.
|
|
46
|
+
* @param queued - Entities appended since the previous slice.
|
|
47
|
+
* @param activeOwnerId - Layout that is active now.
|
|
48
|
+
*/
|
|
49
|
+
export declare function absorbConvertQueue<T extends AcTrConvertQueueEntity>(state: AcTrConvertPendingState<T>, queued: T[], activeOwnerId: string): AcTrConvertPendingState<T>;
|
|
50
|
+
/**
|
|
51
|
+
* Whether the not-yet-converted remainder still holds entities owned by the
|
|
52
|
+
* active layout. Used to grow slices more aggressively once only model-space
|
|
53
|
+
* (or other layouts) remain.
|
|
54
|
+
*/
|
|
55
|
+
export declare function hasPendingActiveOwner<T extends AcTrConvertQueueEntity>(state: AcTrConvertPendingState<T>): boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Grows or shrinks the next convert slice from the previous slice's wall time.
|
|
58
|
+
*
|
|
59
|
+
* When a paper layout still has pending entities, grow by 2× so the sheet can
|
|
60
|
+
* interleave soon. Once only other owners remain — or the active layout is
|
|
61
|
+
* already model space, where fine interleaving does not help first paint —
|
|
62
|
+
* grow by 4× so a long model-space tail does not pay per-slice overhead.
|
|
63
|
+
*
|
|
64
|
+
* @param slice - Entities converted in the previous slice (≥ 1).
|
|
65
|
+
* @param tookMs - Wall time of that slice.
|
|
66
|
+
* @param budgetMs - Target wall time per slice.
|
|
67
|
+
* @param maxSlice - Upper bound on entities per slice.
|
|
68
|
+
* @param activeLayoutPending - True to prefer responsive 2× growth (paper
|
|
69
|
+
* sheet still converting); false for 4× throughput.
|
|
70
|
+
*/
|
|
71
|
+
export declare function adaptConvertSliceSize(options: {
|
|
72
|
+
slice: number;
|
|
73
|
+
tookMs: number;
|
|
74
|
+
budgetMs: number;
|
|
75
|
+
maxSlice: number;
|
|
76
|
+
activeLayoutPending: boolean;
|
|
77
|
+
}): number;
|
|
78
|
+
//# sourceMappingURL=AcTrConvertQueue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AcTrConvertQueue.d.ts","sourceRoot":"","sources":["../../src/view/AcTrConvertQueue.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB,CAAC,CAAC,SAAS,sBAAsB;IACvE,OAAO,EAAE,CAAC,EAAE,CAAA;IACZ,8DAA8D;IAC9D,MAAM,EAAE,MAAM,CAAA;IACd,aAAa,EAAE,MAAM,CAAA;CACtB;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,sBAAsB,EACrE,QAAQ,EAAE,CAAC,EAAE,EACb,aAAa,EAAE,MAAM,GACpB,CAAC,EAAE,CAyBL;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,sBAAsB,EACnE,QAAQ,EAAE,CAAC,EAAE,EACb,aAAa,EAAE,MAAM,GACpB,uBAAuB,CAAC,CAAC,CAAC,CAM5B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,sBAAsB,EACjE,KAAK,EAAE,uBAAuB,CAAC,CAAC,CAAC,EACjC,MAAM,EAAE,CAAC,EAAE,EACX,aAAa,EAAE,MAAM,GACpB,uBAAuB,CAAC,CAAC,CAAC,CAwC5B;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,sBAAsB,EACpE,KAAK,EAAE,uBAAuB,CAAC,CAAC,CAAC,GAChC,OAAO,CAOT;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE;IAC7C,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,mBAAmB,EAAE,OAAO,CAAA;CAC7B,GAAG,MAAM,CAWT"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stable-partitions `entities` so those owned by `activeOwnerId` come first.
|
|
3
|
+
*
|
|
4
|
+
* Returns the same array when it is already in that order (or when there is
|
|
5
|
+
* nothing to split) so a large model-space queue is not copied on every slice.
|
|
6
|
+
*
|
|
7
|
+
* @param entities - Queue contents in arrival order.
|
|
8
|
+
* @param activeOwnerId - Block table record id of the layout on screen.
|
|
9
|
+
* @returns `entities`, or a new array with the active layout's entities first.
|
|
10
|
+
*/
|
|
11
|
+
export function orderActiveLayoutFirst(entities, activeOwnerId) {
|
|
12
|
+
if (!activeOwnerId || entities.length < 2)
|
|
13
|
+
return entities;
|
|
14
|
+
var firstActive = -1;
|
|
15
|
+
var firstOther = -1;
|
|
16
|
+
for (var i = 0; i < entities.length; i++) {
|
|
17
|
+
if (entities[i].ownerId === activeOwnerId) {
|
|
18
|
+
if (firstActive < 0)
|
|
19
|
+
firstActive = i;
|
|
20
|
+
}
|
|
21
|
+
else if (firstOther < 0) {
|
|
22
|
+
firstOther = i;
|
|
23
|
+
}
|
|
24
|
+
if (firstActive >= 0 && firstOther >= 0)
|
|
25
|
+
break;
|
|
26
|
+
}
|
|
27
|
+
if (firstActive < 0 || firstOther < 0 || firstActive < firstOther) {
|
|
28
|
+
return entities;
|
|
29
|
+
}
|
|
30
|
+
var first = [];
|
|
31
|
+
var rest = [];
|
|
32
|
+
for (var i = 0; i < entities.length; i++) {
|
|
33
|
+
var entity = entities[i];
|
|
34
|
+
if (entity.ownerId === activeOwnerId)
|
|
35
|
+
first.push(entity);
|
|
36
|
+
else
|
|
37
|
+
rest.push(entity);
|
|
38
|
+
}
|
|
39
|
+
return first.concat(rest);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Seeds a drain from the entities queued so far.
|
|
43
|
+
*
|
|
44
|
+
* @param entities - Everything currently in the convert queue.
|
|
45
|
+
* @param activeOwnerId - Layout that should convert first.
|
|
46
|
+
*/
|
|
47
|
+
export function createConvertPending(entities, activeOwnerId) {
|
|
48
|
+
return {
|
|
49
|
+
pending: orderActiveLayoutFirst(entities, activeOwnerId),
|
|
50
|
+
cursor: 0,
|
|
51
|
+
activeOwnerId: activeOwnerId
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Folds entities queued during a slice, and a layout activated meanwhile,
|
|
56
|
+
* into the not-yet-converted remainder.
|
|
57
|
+
*
|
|
58
|
+
* Active-layout entities jump ahead of the remainder. Other arrivals stay
|
|
59
|
+
* behind it, without copying the remainder, so a long model-space tail is
|
|
60
|
+
* not recopied on every flush chunk.
|
|
61
|
+
*
|
|
62
|
+
* @param state - Remainder of the current drain.
|
|
63
|
+
* @param queued - Entities appended since the previous slice.
|
|
64
|
+
* @param activeOwnerId - Layout that is active now.
|
|
65
|
+
*/
|
|
66
|
+
export function absorbConvertQueue(state, queued, activeOwnerId) {
|
|
67
|
+
if (queued.length === 0 && activeOwnerId === state.activeOwnerId) {
|
|
68
|
+
return state;
|
|
69
|
+
}
|
|
70
|
+
var rest = state.cursor === 0 ? state.pending : state.pending.slice(state.cursor);
|
|
71
|
+
if (activeOwnerId !== state.activeOwnerId) {
|
|
72
|
+
return {
|
|
73
|
+
pending: orderActiveLayoutFirst(queued.length > 0 ? queued.concat(rest) : rest, activeOwnerId),
|
|
74
|
+
cursor: 0,
|
|
75
|
+
activeOwnerId: activeOwnerId
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
var hasActive = false;
|
|
79
|
+
var front = [];
|
|
80
|
+
var back = [];
|
|
81
|
+
for (var i = 0; i < queued.length; i++) {
|
|
82
|
+
if (activeOwnerId && queued[i].ownerId === activeOwnerId) {
|
|
83
|
+
hasActive = true;
|
|
84
|
+
front.push(queued[i]);
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
back.push(queued[i]);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
if (hasActive) {
|
|
91
|
+
return {
|
|
92
|
+
pending: front.concat(rest, back),
|
|
93
|
+
cursor: 0,
|
|
94
|
+
activeOwnerId: activeOwnerId
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
for (var i = 0; i < back.length; i++)
|
|
98
|
+
state.pending.push(back[i]);
|
|
99
|
+
return state;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Whether the not-yet-converted remainder still holds entities owned by the
|
|
103
|
+
* active layout. Used to grow slices more aggressively once only model-space
|
|
104
|
+
* (or other layouts) remain.
|
|
105
|
+
*/
|
|
106
|
+
export function hasPendingActiveOwner(state) {
|
|
107
|
+
var pending = state.pending, cursor = state.cursor, activeOwnerId = state.activeOwnerId;
|
|
108
|
+
if (!activeOwnerId)
|
|
109
|
+
return false;
|
|
110
|
+
for (var i = cursor; i < pending.length; i++) {
|
|
111
|
+
if (pending[i].ownerId === activeOwnerId)
|
|
112
|
+
return true;
|
|
113
|
+
}
|
|
114
|
+
return false;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Grows or shrinks the next convert slice from the previous slice's wall time.
|
|
118
|
+
*
|
|
119
|
+
* When a paper layout still has pending entities, grow by 2× so the sheet can
|
|
120
|
+
* interleave soon. Once only other owners remain — or the active layout is
|
|
121
|
+
* already model space, where fine interleaving does not help first paint —
|
|
122
|
+
* grow by 4× so a long model-space tail does not pay per-slice overhead.
|
|
123
|
+
*
|
|
124
|
+
* @param slice - Entities converted in the previous slice (≥ 1).
|
|
125
|
+
* @param tookMs - Wall time of that slice.
|
|
126
|
+
* @param budgetMs - Target wall time per slice.
|
|
127
|
+
* @param maxSlice - Upper bound on entities per slice.
|
|
128
|
+
* @param activeLayoutPending - True to prefer responsive 2× growth (paper
|
|
129
|
+
* sheet still converting); false for 4× throughput.
|
|
130
|
+
*/
|
|
131
|
+
export function adaptConvertSliceSize(options) {
|
|
132
|
+
var tookMs = options.tookMs, budgetMs = options.budgetMs, maxSlice = options.maxSlice, activeLayoutPending = options.activeLayoutPending;
|
|
133
|
+
var slice = Math.max(1, options.slice);
|
|
134
|
+
var growBy = activeLayoutPending ? 2 : 4;
|
|
135
|
+
if (tookMs < budgetMs / 2) {
|
|
136
|
+
return Math.min(slice * growBy, maxSlice);
|
|
137
|
+
}
|
|
138
|
+
if (tookMs > budgetMs * 2) {
|
|
139
|
+
return Math.max(1, slice >> 1);
|
|
140
|
+
}
|
|
141
|
+
return slice;
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=AcTrConvertQueue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AcTrConvertQueue.js","sourceRoot":"","sources":["../../src/view/AcTrConvertQueue.ts"],"names":[],"mappings":"AAoBA;;;;;;;;;GASG;AACH,MAAM,UAAU,sBAAsB,CACpC,QAAa,EACb,aAAqB;IAErB,IAAI,CAAC,aAAa,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,QAAQ,CAAA;IAE1D,IAAI,WAAW,GAAG,CAAC,CAAC,CAAA;IACpB,IAAI,UAAU,GAAG,CAAC,CAAC,CAAA;IACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,aAAa,EAAE,CAAC;YAC1C,IAAI,WAAW,GAAG,CAAC;gBAAE,WAAW,GAAG,CAAC,CAAA;QACtC,CAAC;aAAM,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;YAC1B,UAAU,GAAG,CAAC,CAAA;QAChB,CAAC;QACD,IAAI,WAAW,IAAI,CAAC,IAAI,UAAU,IAAI,CAAC;YAAE,MAAK;IAChD,CAAC;IACD,IAAI,WAAW,GAAG,CAAC,IAAI,UAAU,GAAG,CAAC,IAAI,WAAW,GAAG,UAAU,EAAE,CAAC;QAClE,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,IAAM,KAAK,GAAQ,EAAE,CAAA;IACrB,IAAM,IAAI,GAAQ,EAAE,CAAA;IACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,IAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;QAC1B,IAAI,MAAM,CAAC,OAAO,KAAK,aAAa;YAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;;YACnD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACxB,CAAC;IACD,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;AAC3B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAClC,QAAa,EACb,aAAqB;IAErB,OAAO;QACL,OAAO,EAAE,sBAAsB,CAAC,QAAQ,EAAE,aAAa,CAAC;QACxD,MAAM,EAAE,CAAC;QACT,aAAa,eAAA;KACd,CAAA;AACH,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAAiC,EACjC,MAAW,EACX,aAAqB;IAErB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,aAAa,KAAK,KAAK,CAAC,aAAa,EAAE,CAAC;QACjE,OAAO,KAAK,CAAA;IACd,CAAC;IAED,IAAM,IAAI,GACR,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IAExE,IAAI,aAAa,KAAK,KAAK,CAAC,aAAa,EAAE,CAAC;QAC1C,OAAO;YACL,OAAO,EAAE,sBAAsB,CAC7B,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAC9C,aAAa,CACd;YACD,MAAM,EAAE,CAAC;YACT,aAAa,eAAA;SACd,CAAA;IACH,CAAC;IAED,IAAI,SAAS,GAAG,KAAK,CAAA;IACrB,IAAM,KAAK,GAAQ,EAAE,CAAA;IACrB,IAAM,IAAI,GAAQ,EAAE,CAAA;IACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,IAAI,aAAa,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,aAAa,EAAE,CAAC;YACzD,SAAS,GAAG,IAAI,CAAA;YAChB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QACvB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QACtB,CAAC;IACH,CAAC;IACD,IAAI,SAAS,EAAE,CAAC;QACd,OAAO;YACL,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC;YACjC,MAAM,EAAE,CAAC;YACT,aAAa,eAAA;SACd,CAAA;IACH,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;IACjE,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CACnC,KAAiC;IAEzB,IAAA,OAAO,GAA4B,KAAK,QAAjC,EAAE,MAAM,GAAoB,KAAK,OAAzB,EAAE,aAAa,GAAK,KAAK,cAAV,CAAU;IAChD,IAAI,CAAC,aAAa;QAAE,OAAO,KAAK,CAAA;IAChC,KAAK,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7C,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,aAAa;YAAE,OAAO,IAAI,CAAA;IACvD,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAMrC;IACS,IAAA,MAAM,GAA8C,OAAO,OAArD,EAAE,QAAQ,GAAoC,OAAO,SAA3C,EAAE,QAAQ,GAA0B,OAAO,SAAjC,EAAE,mBAAmB,GAAK,OAAO,oBAAZ,CAAY;IACnE,IAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;IACxC,IAAM,MAAM,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC1C,IAAI,MAAM,GAAG,QAAQ,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,MAAM,EAAE,QAAQ,CAAC,CAAA;IAC3C,CAAC;IACD,IAAI,MAAM,GAAG,QAAQ,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAA;IAChC,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC"}
|
|
@@ -29,6 +29,12 @@ export declare function isFiniteSpatialBBox(box: {
|
|
|
29
29
|
* {@link AcTrGroup.syncWcsBboxFromChildBoxes}.
|
|
30
30
|
*/
|
|
31
31
|
export declare function unionGroupWcsChildBoxes(group: AcTrGroupWcsBboxLike): THREE.Box3;
|
|
32
|
+
/**
|
|
33
|
+
* Max child boxes checked on the open hot path. Whole-floor INSERTs can have
|
|
34
|
+
* 100k+ children; unioning them in dev-only asserts freezes the main thread
|
|
35
|
+
* after progressive overlay hides (preview/production skips the assert).
|
|
36
|
+
*/
|
|
37
|
+
export declare const AC_TR_GROUP_WCS_BBOX_ASSERT_MAX_CHILDREN = 2048;
|
|
32
38
|
/**
|
|
33
39
|
* Verifies that a block group's aggregate {@link AcTrGroup.wcsBbox} matches the
|
|
34
40
|
* union of its per-child {@link AcTrGroup.wcsChildBoxes}.
|
|
@@ -36,6 +42,9 @@ export declare function unionGroupWcsChildBoxes(group: AcTrGroupWcsBboxLike): TH
|
|
|
36
42
|
* Called from {@link AcTrView2d.handleGroup} in non-production builds. After
|
|
37
43
|
* {@link AcDbRenderingCache.draw} applies the INSERT transform via
|
|
38
44
|
* `applyMatrix`, both fields must stay in sync for spatial indexing.
|
|
45
|
+
*
|
|
46
|
+
* Oversized groups are skipped — unit tests still cover the consistency rule
|
|
47
|
+
* with small fixtures.
|
|
39
48
|
*/
|
|
40
49
|
export declare function assertGroupWcsBboxesConsistent(group: AcTrGroupWcsBboxLike): void;
|
|
41
50
|
/** @internal Narrow helper for handleGroup dev checks. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AcTrGroupWcsBboxAssert.d.ts","sourceRoot":"","sources":["../../src/view/AcTrGroupWcsBboxAssert.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAA;IACnB,aAAa,EAAE,aAAa,CAAC;QAC3B,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,EAAE,MAAM,CAAA;KACb,CAAC,CAAA;CACH;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE;IACvC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb,GAAG,OAAO,CAOV;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,oBAAoB,GAC1B,KAAK,CAAC,IAAI,CAcZ;AAED
|
|
1
|
+
{"version":3,"file":"AcTrGroupWcsBboxAssert.d.ts","sourceRoot":"","sources":["../../src/view/AcTrGroupWcsBboxAssert.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAA;IACnB,aAAa,EAAE,aAAa,CAAC;QAC3B,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,EAAE,MAAM,CAAA;KACb,CAAC,CAAA;CACH;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE;IACvC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb,GAAG,OAAO,CAOV;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,oBAAoB,GAC1B,KAAK,CAAC,IAAI,CAcZ;AAED;;;;GAIG;AACH,eAAO,MAAM,wCAAwC,OAAO,CAAA;AAE5D;;;;;;;;;;GAUG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,oBAAoB,GAC1B,IAAI,CA2BN;AAED,0DAA0D;AAC1D,wBAAgB,kCAAkC,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAEzE"}
|
|
@@ -51,6 +51,12 @@ export function unionGroupWcsChildBoxes(group) {
|
|
|
51
51
|
}
|
|
52
52
|
return union;
|
|
53
53
|
}
|
|
54
|
+
/**
|
|
55
|
+
* Max child boxes checked on the open hot path. Whole-floor INSERTs can have
|
|
56
|
+
* 100k+ children; unioning them in dev-only asserts freezes the main thread
|
|
57
|
+
* after progressive overlay hides (preview/production skips the assert).
|
|
58
|
+
*/
|
|
59
|
+
export var AC_TR_GROUP_WCS_BBOX_ASSERT_MAX_CHILDREN = 2048;
|
|
54
60
|
/**
|
|
55
61
|
* Verifies that a block group's aggregate {@link AcTrGroup.wcsBbox} matches the
|
|
56
62
|
* union of its per-child {@link AcTrGroup.wcsChildBoxes}.
|
|
@@ -58,11 +64,17 @@ export function unionGroupWcsChildBoxes(group) {
|
|
|
58
64
|
* Called from {@link AcTrView2d.handleGroup} in non-production builds. After
|
|
59
65
|
* {@link AcDbRenderingCache.draw} applies the INSERT transform via
|
|
60
66
|
* `applyMatrix`, both fields must stay in sync for spatial indexing.
|
|
67
|
+
*
|
|
68
|
+
* Oversized groups are skipped — unit tests still cover the consistency rule
|
|
69
|
+
* with small fixtures.
|
|
61
70
|
*/
|
|
62
71
|
export function assertGroupWcsBboxesConsistent(group) {
|
|
63
72
|
if (group.wcsChildBoxes.length === 0) {
|
|
64
73
|
return;
|
|
65
74
|
}
|
|
75
|
+
if (group.wcsChildBoxes.length > AC_TR_GROUP_WCS_BBOX_ASSERT_MAX_CHILDREN) {
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
66
78
|
var union = unionGroupWcsChildBoxes(group);
|
|
67
79
|
var wcs = group.wcsBbox;
|
|
68
80
|
var cornersMatch = Math.abs(wcs.min.x - union.min.x) <= WCS_BBOX_TOLERANCE &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AcTrGroupWcsBboxAssert.js","sourceRoot":"","sources":["../../src/view/AcTrGroupWcsBboxAssert.ts"],"names":[],"mappings":";;;;;;;;;;;AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,IAAM,kBAAkB,GAAG,IAAI,CAAA;AAY/B;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAKnC;IACC,OAAO,CACL,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;QACzB,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;QACzB,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;QACzB,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAC1B,CAAA;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CACrC,KAA2B;;IAE3B,IAAM,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAA;;QAC9B,KAAkB,IAAA,KAAA,SAAA,KAAK,CAAC,aAAa,CAAA,gBAAA,4BAAE,CAAC;YAAnC,IAAM,GAAG,WAAA;YACZ,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC9B,SAAQ;YACV,CAAC;YACD,KAAK,CAAC,KAAK,CACT,IAAI,KAAK,CAAC,IAAI,CACZ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,EACxC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CACzC,CACF,CAAA;QACH,CAAC;;;;;;;;;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"AcTrGroupWcsBboxAssert.js","sourceRoot":"","sources":["../../src/view/AcTrGroupWcsBboxAssert.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AcTrLayer.d.ts","sourceRoot":"","sources":["../../src/view/AcTrLayer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AACzE,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,oBAAoB,EACpB,UAAU,EACV,wBAAwB,EACxB,YAAY,EACZ,gBAAgB,EACjB,MAAM,2BAA2B,CAAA;AAClC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAEzC;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,qBAAqB,GAAG;IACnD,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,uDAAuD;IACvD,SAAS,EAAE;QACT,KAAK,EAAE,MAAM,CAAA;QACb,YAAY,EAAE,MAAM,CAAA;QACpB,MAAM,EAAE;YACN,IAAI,EAAE,MAAM,CAAA;YACZ,IAAI,EAAE,MAAM,CAAA;YACZ,KAAK,EAAE,MAAM,CAAA;YACb,KAAK,EAAE,MAAM,CAAA;SACd,CAAA;KACF,CAAA;CACF,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,qBAAa,SAAS;IACpB;;;;;OAKG;IACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO;IAInD;;OAEG;IACH,OAAO,CAAC,KAAK,CAAQ;IACrB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAkB;IAEhC;;OAEG;IACH,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,SAAS,CAAS;IAE1B;;;OAGG;gBACS,KAAK,EAAE,aAAa;
|
|
1
|
+
{"version":3,"file":"AcTrLayer.d.ts","sourceRoot":"","sources":["../../src/view/AcTrLayer.ts"],"names":[],"mappings":"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"}
|