@mlightcad/cad-simple-viewer 1.7.6-preview.0 → 1.7.7-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.
Files changed (157) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +190 -190
  3. package/dist/cad-simple-viewer.js +7925 -7381
  4. package/dist/cad-simple-viewer.umd.cjs +116 -116
  5. package/dist/mtext-renderer-worker.js +14124 -8730
  6. package/find.ts +7 -7
  7. package/icons.ts +7 -7
  8. package/lib/app/AcApDocManager.d.ts.map +1 -1
  9. package/lib/app/AcApDocManager.js +67 -72
  10. package/lib/app/AcApDocManager.js.map +1 -1
  11. package/lib/app/AcApOpenDatabaseOptions.d.ts +8 -2
  12. package/lib/app/AcApOpenDatabaseOptions.d.ts.map +1 -1
  13. package/lib/command/convert/AcApEntityPreviewCmd.d.ts.map +1 -1
  14. package/lib/command/convert/AcApEntityPreviewCmd.js +1 -0
  15. package/lib/command/convert/AcApEntityPreviewCmd.js.map +1 -1
  16. package/lib/command/convert/AcApRasterImageConvertor.d.ts +17 -8
  17. package/lib/command/convert/AcApRasterImageConvertor.d.ts.map +1 -1
  18. package/lib/command/convert/AcApRasterImageConvertor.js +50 -12
  19. package/lib/command/convert/AcApRasterImageConvertor.js.map +1 -1
  20. package/lib/command/draw/AcApHatchCmd.d.ts.map +1 -1
  21. package/lib/command/draw/AcApHatchCmd.js +1 -0
  22. package/lib/command/draw/AcApHatchCmd.js.map +1 -1
  23. package/lib/command/layer/AcApLayerIsoCmd.d.ts.map +1 -1
  24. package/lib/command/layer/AcApLayerIsoCmd.js +1 -0
  25. package/lib/command/layer/AcApLayerIsoCmd.js.map +1 -1
  26. package/lib/editor/grip/AcEdGripEditSession.d.ts.map +1 -1
  27. package/lib/editor/grip/AcEdGripEditSession.js +6 -1
  28. package/lib/editor/grip/AcEdGripEditSession.js.map +1 -1
  29. package/lib/editor/grip/AcEdGripManager.d.ts.map +1 -1
  30. package/lib/editor/grip/AcEdGripManager.js +2 -1
  31. package/lib/editor/grip/AcEdGripManager.js.map +1 -1
  32. package/lib/editor/input/AcEdOsnapCenterMarks.d.ts +15 -2
  33. package/lib/editor/input/AcEdOsnapCenterMarks.d.ts.map +1 -1
  34. package/lib/editor/input/AcEdOsnapCenterMarks.js +63 -13
  35. package/lib/editor/input/AcEdOsnapCenterMarks.js.map +1 -1
  36. package/lib/editor/input/AcEdOsnapResolver.d.ts +14 -0
  37. package/lib/editor/input/AcEdOsnapResolver.d.ts.map +1 -1
  38. package/lib/editor/input/AcEdOsnapResolver.js +246 -32
  39. package/lib/editor/input/AcEdOsnapResolver.js.map +1 -1
  40. package/lib/editor/input/AcEdSelectionFilter.d.ts +6 -0
  41. package/lib/editor/input/AcEdSelectionFilter.d.ts.map +1 -1
  42. package/lib/editor/input/AcEdSelectionFilter.js +19 -2
  43. package/lib/editor/input/AcEdSelectionFilter.js.map +1 -1
  44. package/lib/editor/input/AcEditor.d.ts +6 -0
  45. package/lib/editor/input/AcEditor.d.ts.map +1 -1
  46. package/lib/editor/input/AcEditor.js +9 -0
  47. package/lib/editor/input/AcEditor.js.map +1 -1
  48. package/lib/editor/input/prompt/AcEdPromptSelectionOptions.d.ts +8 -0
  49. package/lib/editor/input/prompt/AcEdPromptSelectionOptions.d.ts.map +1 -1
  50. package/lib/editor/input/prompt/AcEdPromptSelectionOptions.js +16 -0
  51. package/lib/editor/input/prompt/AcEdPromptSelectionOptions.js.map +1 -1
  52. package/lib/editor/input/ui/AcEdCommandLine.d.ts +12 -0
  53. package/lib/editor/input/ui/AcEdCommandLine.d.ts.map +1 -1
  54. package/lib/editor/input/ui/AcEdCommandLine.js +54 -16
  55. package/lib/editor/input/ui/AcEdCommandLine.js.map +1 -1
  56. package/lib/editor/input/ui/AcEdInputManager.d.ts +15 -0
  57. package/lib/editor/input/ui/AcEdInputManager.d.ts.map +1 -1
  58. package/lib/editor/input/ui/AcEdInputManager.js +47 -16
  59. package/lib/editor/input/ui/AcEdInputManager.js.map +1 -1
  60. package/lib/editor/view/AcEdBaseView.d.ts +50 -0
  61. package/lib/editor/view/AcEdBaseView.d.ts.map +1 -1
  62. package/lib/editor/view/AcEdBaseView.js +73 -44
  63. package/lib/editor/view/AcEdBaseView.js.map +1 -1
  64. package/lib/editor/view/AcEdSpatialQueryResult.d.ts +7 -0
  65. package/lib/editor/view/AcEdSpatialQueryResult.d.ts.map +1 -1
  66. package/lib/editor/view/AcEdSpatialQueryResult.js.map +1 -1
  67. package/lib/find/findText.d.ts.map +1 -1
  68. package/lib/find/findText.js +49 -15
  69. package/lib/find/findText.js.map +1 -1
  70. package/lib/i18n/ar/jig.d.ts +2 -0
  71. package/lib/i18n/ar/jig.d.ts.map +1 -1
  72. package/lib/i18n/ar/jig.js +1 -1
  73. package/lib/i18n/ar/jig.js.map +1 -1
  74. package/lib/i18n/ar/main.d.ts +1 -0
  75. package/lib/i18n/ar/main.d.ts.map +1 -1
  76. package/lib/i18n/ar/main.js +1 -0
  77. package/lib/i18n/ar/main.js.map +1 -1
  78. package/lib/i18n/cs/jig.d.ts +2 -0
  79. package/lib/i18n/cs/jig.d.ts.map +1 -1
  80. package/lib/i18n/cs/jig.js +2 -0
  81. package/lib/i18n/cs/jig.js.map +1 -1
  82. package/lib/i18n/cs/main.d.ts +1 -0
  83. package/lib/i18n/cs/main.d.ts.map +1 -1
  84. package/lib/i18n/cs/main.js +1 -0
  85. package/lib/i18n/cs/main.js.map +1 -1
  86. package/lib/i18n/en/jig.d.ts +2 -0
  87. package/lib/i18n/en/jig.d.ts.map +1 -1
  88. package/lib/i18n/en/jig.js +2 -0
  89. package/lib/i18n/en/jig.js.map +1 -1
  90. package/lib/i18n/en/main.d.ts +1 -0
  91. package/lib/i18n/en/main.d.ts.map +1 -1
  92. package/lib/i18n/en/main.js +1 -0
  93. package/lib/i18n/en/main.js.map +1 -1
  94. package/lib/i18n/tr/jig.d.ts +2 -0
  95. package/lib/i18n/tr/jig.d.ts.map +1 -1
  96. package/lib/i18n/tr/jig.js +2 -0
  97. package/lib/i18n/tr/jig.js.map +1 -1
  98. package/lib/i18n/tr/main.d.ts +1 -0
  99. package/lib/i18n/tr/main.d.ts.map +1 -1
  100. package/lib/i18n/tr/main.js +1 -0
  101. package/lib/i18n/tr/main.js.map +1 -1
  102. package/lib/i18n/zh/jig.d.ts +2 -0
  103. package/lib/i18n/zh/jig.d.ts.map +1 -1
  104. package/lib/i18n/zh/jig.js +2 -0
  105. package/lib/i18n/zh/jig.js.map +1 -1
  106. package/lib/i18n/zh/main.d.ts +1 -0
  107. package/lib/i18n/zh/main.d.ts.map +1 -1
  108. package/lib/i18n/zh/main.js +1 -0
  109. package/lib/i18n/zh/main.js.map +1 -1
  110. package/lib/service/AcApEntitySelection.d.ts.map +1 -1
  111. package/lib/service/AcApEntitySelection.js +34 -4
  112. package/lib/service/AcApEntitySelection.js.map +1 -1
  113. package/lib/service/AcApEntityService.d.ts.map +1 -1
  114. package/lib/service/AcApEntityService.js +11 -0
  115. package/lib/service/AcApEntityService.js.map +1 -1
  116. package/lib/service/AcApLayerService.d.ts +8 -1
  117. package/lib/service/AcApLayerService.d.ts.map +1 -1
  118. package/lib/service/AcApLayerService.js +10 -0
  119. package/lib/service/AcApLayerService.js.map +1 -1
  120. package/lib/service/AcApLockedLayer.d.ts +23 -0
  121. package/lib/service/AcApLockedLayer.d.ts.map +1 -0
  122. package/lib/service/AcApLockedLayer.js +94 -0
  123. package/lib/service/AcApLockedLayer.js.map +1 -0
  124. package/lib/service/index.d.ts +1 -0
  125. package/lib/service/index.d.ts.map +1 -1
  126. package/lib/service/index.js +1 -0
  127. package/lib/service/index.js.map +1 -1
  128. package/lib/ui/icons.d.ts +5 -2
  129. package/lib/ui/icons.d.ts.map +1 -1
  130. package/lib/ui/icons.js +5 -2
  131. package/lib/ui/icons.js.map +1 -1
  132. package/lib/util/AcApLayoutViewFraming.d.ts +68 -0
  133. package/lib/util/AcApLayoutViewFraming.d.ts.map +1 -0
  134. package/lib/util/AcApLayoutViewFraming.js +146 -0
  135. package/lib/util/AcApLayoutViewFraming.js.map +1 -0
  136. package/lib/util/index.d.ts +1 -0
  137. package/lib/util/index.d.ts.map +1 -1
  138. package/lib/util/index.js +1 -0
  139. package/lib/util/index.js.map +1 -1
  140. package/lib/view/AcTrDirectBatch.d.ts +4 -14
  141. package/lib/view/AcTrDirectBatch.d.ts.map +1 -1
  142. package/lib/view/AcTrDirectBatch.js +4 -120
  143. package/lib/view/AcTrDirectBatch.js.map +1 -1
  144. package/lib/view/AcTrScene.d.ts +1 -1
  145. package/lib/view/AcTrScene.d.ts.map +1 -1
  146. package/lib/view/AcTrView2d.d.ts +75 -38
  147. package/lib/view/AcTrView2d.d.ts.map +1 -1
  148. package/lib/view/AcTrView2d.js +313 -141
  149. package/lib/view/AcTrView2d.js.map +1 -1
  150. package/lib/view/AcTrViewSessionState.d.ts +7 -0
  151. package/lib/view/AcTrViewSessionState.d.ts.map +1 -1
  152. package/package.json +11 -11
  153. package/src/find/AcApFindNavigator.ts +190 -190
  154. package/src/find/findDrawing.ts +211 -211
  155. package/src/find/findText.ts +624 -595
  156. package/src/find/index.ts +2 -2
  157. package/src/ui/icons.ts +411 -408
@@ -84,13 +84,25 @@ function transformMark(mark, matrix) {
84
84
  }
85
85
  /**
86
86
  * Child spatial-index ids may get a `#n` suffix when the same object appears
87
- * more than once in a block. Strip that before matching database object ids.
87
+ * more than once in a block (see {@link uniquifySpatialItemIds}). Strip that
88
+ * before matching database object ids.
88
89
  */
89
90
  export function canonicalGsMark(id) {
90
91
  if (typeof id !== 'string')
91
92
  return id;
92
93
  return id.replace(/#\d+$/, '');
93
94
  }
95
+ /**
96
+ * 0-based occurrence index encoded in a spatial-index child id (`id` → 0,
97
+ * `id#1` → 1, …). Matches depth-first leaf order used when flattening nested
98
+ * INSERT child boxes.
99
+ */
100
+ export function gsMarkOccurrence(id) {
101
+ if (typeof id !== 'string')
102
+ return 0;
103
+ var match = /#(\d+)$/.exec(id);
104
+ return match ? Number(match[1]) : 0;
105
+ }
94
106
  function polylineVertices(entity) {
95
107
  var _a;
96
108
  if (entity instanceof AcDb2dPolyline) {
@@ -165,25 +177,63 @@ function fullInsertionTransform(blockRef) {
165
177
  *
166
178
  * Returns the leaf entity and the cumulative transform that maps its local
167
179
  * geometry into the caller space (typically WCS).
180
+ *
181
+ * When `gsMark` carries a `#n` suffix, the n-th depth-first match of the
182
+ * canonical object id is returned so duplicate nested INSERT instances are
183
+ * disambiguated (#745). When no suffix is present and `hintPoint` is given,
184
+ * nested INSERTs whose extents do not contain the hint are skipped so the
185
+ * instance under the cursor is preferred over the first DFS match.
168
186
  */
169
- export function resolveBlockSubEntity(blockRef, gsMark, parentMat) {
170
- var e_1, _a;
187
+ export function resolveBlockSubEntity(blockRef, gsMark, parentMat, hintPoint) {
171
188
  if (parentMat === void 0) { parentMat = new AcGeMatrix3d(); }
189
+ var occurrence = gsMarkOccurrence(gsMark);
190
+ var result = resolveBlockSubEntityOccurrence(blockRef, canonicalGsMark(gsMark), occurrence, parentMat, hintPoint,
191
+ /* allowHintPrune */ occurrence === 0 && hintPoint != null);
192
+ return result.found;
193
+ }
194
+ /** XY containment with padding — spatial child boxes have no Z (#745). */
195
+ function extentsContainXY(extents, point, pad) {
196
+ if (pad === void 0) { pad = 1e-4; }
197
+ return (point.x >= extents.min.x - pad &&
198
+ point.x <= extents.max.x + pad &&
199
+ point.y >= extents.min.y - pad &&
200
+ point.y <= extents.max.y + pad);
201
+ }
202
+ function resolveBlockSubEntityOccurrence(blockRef, targetId, remaining, parentMat, hintPoint, allowHintPrune) {
203
+ var e_1, _a;
172
204
  var blockTableRecord = blockRef.blockTableRecord;
173
- if (!blockTableRecord)
174
- return undefined;
205
+ if (!blockTableRecord) {
206
+ return { found: undefined, remaining: remaining };
207
+ }
175
208
  var thisMat = new AcGeMatrix3d().multiplyMatrices(parentMat, fullInsertionTransform(blockRef));
176
- var targetId = canonicalGsMark(gsMark);
209
+ var localHint;
210
+ if (allowHintPrune && hintPoint != null && remaining === 0) {
211
+ localHint = new AcGePoint3d(hintPoint).applyMatrix4(thisMat.clone().invert());
212
+ }
177
213
  try {
178
214
  for (var _b = __values(blockTableRecord.newIterator()), _c = _b.next(); !_c.done; _c = _b.next()) {
179
215
  var entity = _c.value;
180
- if (entity.objectId === gsMark || entity.objectId === targetId) {
181
- return { entity: entity, transform: thisMat };
216
+ if (entity.objectId === targetId) {
217
+ if (remaining > 0) {
218
+ remaining -= 1;
219
+ continue;
220
+ }
221
+ return { found: { entity: entity, transform: thisMat }, remaining: 0 };
182
222
  }
183
223
  if (entity instanceof AcDbBlockReference) {
184
- var nested = resolveBlockSubEntity(entity, gsMark, thisMat);
185
- if (nested)
224
+ if (allowHintPrune && remaining === 0 && localHint) {
225
+ var extents = entity.geometricExtents;
226
+ // Spatial hints are XY-only (childBoxHint uses z: 0). A full 3D
227
+ // containsPoint would drop elevated nested INSERTs whose Z range
228
+ // does not include 0 after the parent invert.
229
+ if (!extents.isEmpty() && !extentsContainXY(extents, localHint)) {
230
+ continue;
231
+ }
232
+ }
233
+ var nested = resolveBlockSubEntityOccurrence(entity, targetId, remaining, thisMat, hintPoint, allowHintPrune);
234
+ if (nested.found)
186
235
  return nested;
236
+ remaining = nested.remaining;
187
237
  }
188
238
  }
189
239
  }
@@ -194,15 +244,15 @@ export function resolveBlockSubEntity(blockRef, gsMark, parentMat) {
194
244
  }
195
245
  finally { if (e_1) throw e_1.error; }
196
246
  }
197
- return undefined;
247
+ return { found: undefined, remaining: remaining };
198
248
  }
199
249
  function collectBlockCenterMarks(blockRef, pickPoint, gsMark) {
200
250
  if (!gsMark) {
201
251
  return collectFromOsnapCenter(blockRef, pickPoint);
202
252
  }
203
- var found = resolveBlockSubEntity(blockRef, gsMark);
253
+ var found = resolveBlockSubEntity(blockRef, gsMark, new AcGeMatrix3d(), pickPoint);
204
254
  if (!found) {
205
- return collectFromOsnapCenter(blockRef, pickPoint, canonicalGsMark(gsMark));
255
+ return collectFromOsnapCenter(blockRef, pickPoint, gsMark);
206
256
  }
207
257
  var inverse = found.transform.clone().invert();
208
258
  var localPick = new AcGePoint3d(pickPoint).applyMatrix4(inverse);
@@ -1 +1 @@
1
- {"version":3,"file":"AcEdOsnapCenterMarks.js","sourceRoot":"","sources":["../../../src/editor/input/AcEdOsnapCenterMarks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AcEdOsnapCenterMarks.js","sourceRoot":"","sources":["../../../src/editor/input/AcEdOsnapCenterMarks.ts"],"names":[],"mappings":"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"}
@@ -45,7 +45,21 @@ export declare class AcEdOsnapResolver {
45
45
  private static osnapModePriority;
46
46
  private collectOsnapPointsByMode;
47
47
  private collectOsnapPointsInAvailableModes;
48
+ /**
49
+ * Collects enabled osnap modes from an already-resolved block sub-entity so
50
+ * each hit child is walked once instead of once per mode (#745).
51
+ */
52
+ private collectOsnapPointsFromResolvedSubEntity;
53
+ private static childBoxHint;
48
54
  private collectIntersectionOsnapPoints;
55
+ /**
56
+ * Looks an entity up by id with no block-table-record owner check, so a
57
+ * hit is resolved the same way whether it came from the active layout's
58
+ * own spatial index (paper space) or was drilled through a paper-space
59
+ * viewport into model space (#746) — a BTR-scoped `getIdAt` only resolves
60
+ * entities it owns and silently drops every other hit.
61
+ */
62
+ private static getEntityById;
49
63
  private collectOsnapPoints;
50
64
  private updateAcquiredCenters;
51
65
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AcEdOsnapResolver.d.ts","sourceRoot":"","sources":["../../../src/editor/input/AcEdOsnapResolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAUL,aAAa,EAIb,eAAe,EAEf,eAAe,EAChB,MAAM,uBAAuB,CAAA;AAG9B,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAKnD,OAAO,EACL,KAAK,mBAAmB,EAMzB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEpD,YAAY,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAEjE,MAAM,MAAM,cAAc,GAAG,eAAe,GAAG;IAC7C,IAAI,EAAE,aAAa,CAAA;CACpB,CAAA;AAED,MAAM,WAAW,uBAAuB;IACtC,gEAAgE;IAChE,SAAS,EAAE,eAAe,CAAA;IAC1B,qDAAqD;IACrD,SAAS,CAAC,EAAE,eAAe,CAAA;IAC3B,mDAAmD;IACnD,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAwJD;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAc;IACpC,OAAO,CAAC,gBAAgB,CAA4B;gBAExC,IAAI,EAAE,YAAY;IAI9B;;;;OAIG;IACH,IAAI,mBAAmB,IAAI,SAAS,mBAAmB,EAAE,CAExD;IAED,qEAAqE;IACrE,oBAAoB;IAIpB;;;OAGG;IACH,MAAM,CAAC,kBAAkB,CACvB,KAAK,EAAE,SAAS,mBAAmB,EAAE,EACrC,IAAI,CAAC,EAAE,cAAc,GACpB,mBAAmB,EAAE;IAOxB;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,uBAAuB,GAAG,cAAc,GAAG,SAAS;IAiDrE;;OAEG;IACH,MAAM,CAAC,qBAAqB,CAAC,SAAS,EAAE,aAAa,GAAG,cAAc;IAmBtE,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAgBhC,OAAO,CAAC,wBAAwB;IAsBhC,OAAO,CAAC,kCAAkC;IAsB1C,OAAO,CAAC,8BAA8B;IAgGtC,OAAO,CAAC,kBAAkB;IAyD1B,OAAO,CAAC,qBAAqB;CA0C9B"}
1
+ {"version":3,"file":"AcEdOsnapResolver.d.ts","sourceRoot":"","sources":["../../../src/editor/input/AcEdOsnapResolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAUL,aAAa,EAIb,eAAe,EAEf,eAAe,EAChB,MAAM,uBAAuB,CAAA;AAG9B,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAKnD,OAAO,EACL,KAAK,mBAAmB,EAKzB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEpD,YAAY,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAEjE,MAAM,MAAM,cAAc,GAAG,eAAe,GAAG;IAC7C,IAAI,EAAE,aAAa,CAAA;CACpB,CAAA;AAED,MAAM,WAAW,uBAAuB;IACtC,gEAAgE;IAChE,SAAS,EAAE,eAAe,CAAA;IAC1B,qDAAqD;IACrD,SAAS,CAAC,EAAE,eAAe,CAAA;IAC3B,mDAAmD;IACnD,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAiKD;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAc;IACpC,OAAO,CAAC,gBAAgB,CAA4B;gBAExC,IAAI,EAAE,YAAY;IAI9B;;;;OAIG;IACH,IAAI,mBAAmB,IAAI,SAAS,mBAAmB,EAAE,CAExD;IAED,qEAAqE;IACrE,oBAAoB;IAIpB;;;OAGG;IACH,MAAM,CAAC,kBAAkB,CACvB,KAAK,EAAE,SAAS,mBAAmB,EAAE,EACrC,IAAI,CAAC,EAAE,cAAc,GACpB,mBAAmB,EAAE;IAOxB;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,uBAAuB,GAAG,cAAc,GAAG,SAAS;IAiDrE;;OAEG;IACH,MAAM,CAAC,qBAAqB,CAAC,SAAS,EAAE,aAAa,GAAG,cAAc;IAmBtE,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAgBhC,OAAO,CAAC,wBAAwB;IAsBhC,OAAO,CAAC,kCAAkC;IAsB1C;;;OAGG;IACH,OAAO,CAAC,uCAAuC;IAqD/C,OAAO,CAAC,MAAM,CAAC,YAAY;IAqB3B,OAAO,CAAC,8BAA8B;IA6HtC;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAQ5B,OAAO,CAAC,kBAAkB;IA8G1B,OAAO,CAAC,qBAAqB;CAyD9B"}
@@ -1,3 +1,14 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
1
12
  var __values = (this && this.__values) || function(o) {
2
13
  var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
3
14
  if (m) return m.call(o);
@@ -34,10 +45,10 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
34
45
  }
35
46
  return to.concat(ar || Array.prototype.slice.call(from));
36
47
  };
37
- import { AcDbArc, AcDbBlockReference, AcDbCircle, acdbHasOsnapMode, acdbHostApplicationServices, AcDbLine, acdbMaskToOsnapModes, AcDbOsnapMode, AcGeBox3d, AcGeGeometryUtil, AcGeMatrix3d, AcGePoint3d } from '@mlightcad/data-model';
48
+ import { AcDbArc, AcDbBlockReference, AcDbCircle, AcDbEntity, acdbHasOsnapMode, acdbHostApplicationServices, AcDbLine, acdbMaskToOsnapModes, AcDbOsnapMode, AcGeBox3d, AcGeGeometryUtil, AcGeMatrix3d, AcGePoint3d } from '@mlightcad/data-model';
38
49
  import { AcApSettingManager } from '../../app/AcApSettingManager';
39
50
  import { isEffectiveSpatialQueryHit } from '../view/AcEdSpatialQueryResult';
40
- import { canonicalGsMark, centerMarksCoincide, collectCenterMarksFromEntity, mergeAcquiredCenterMarks, resolveBlockSubEntity } from './AcEdOsnapCenterMarks';
51
+ import { centerMarksCoincide, collectCenterMarksFromEntity, mergeAcquiredCenterMarks, resolveBlockSubEntity } from './AcEdOsnapCenterMarks';
41
52
  var DEFAULT_HIT_RADIUS_PX = 20;
42
53
  /**
43
54
  * Max nearby geometry sources considered per intersection query.
@@ -267,8 +278,93 @@ var AcEdOsnapResolver = /** @class */ (function () {
267
278
  _this.collectOsnapPointsByMode(entity, mode, osnapPoints, pickPoint, lastPoint, gsMark);
268
279
  });
269
280
  };
270
- AcEdOsnapResolver.prototype.collectIntersectionOsnapPoints = function (pickResults, modelSpace, osnapPoints, cursorWcs, threshold) {
281
+ /**
282
+ * Collects enabled osnap modes from an already-resolved block sub-entity so
283
+ * each hit child is walked once instead of once per mode (#745).
284
+ */
285
+ AcEdOsnapResolver.prototype.collectOsnapPointsFromResolvedSubEntity = function (found, osnapPoints, pickPoint, lastPoint) {
271
286
  var e_2, _a, e_3, _b, e_4, _c;
287
+ var _d;
288
+ var inverse = found.transform.clone().invert();
289
+ var localPick = new AcGePoint3d(pickPoint).applyMatrix4(inverse);
290
+ var localLast = new AcGePoint3d(lastPoint).applyMatrix4(inverse);
291
+ var modes = acdbMaskToOsnapModes(AcApSettingManager.instance.osnapModes);
292
+ var isNestedInsert = found.entity instanceof AcDbBlockReference;
293
+ try {
294
+ for (var modes_1 = __values(modes), modes_1_1 = modes_1.next(); !modes_1_1.done; modes_1_1 = modes_1.next()) {
295
+ var mode = modes_1_1.value;
296
+ if (mode === AcDbOsnapMode.Intersection)
297
+ continue;
298
+ var localSnapPoints = [];
299
+ if (isNestedInsert) {
300
+ // Preserve INSERT self-marker semantics used by subEntityGetOsnapPoints.
301
+ found.entity.subGetOsnapPoints(mode, localPick, localLast, localSnapPoints, found.entity.objectId, found.transform);
302
+ try {
303
+ for (var localSnapPoints_1 = (e_3 = void 0, __values(localSnapPoints)), localSnapPoints_1_1 = localSnapPoints_1.next(); !localSnapPoints_1_1.done; localSnapPoints_1_1 = localSnapPoints_1.next()) {
304
+ var point = localSnapPoints_1_1.value;
305
+ osnapPoints.push({
306
+ x: point.x,
307
+ y: point.y,
308
+ z: (_d = point.z) !== null && _d !== void 0 ? _d : 0,
309
+ type: mode
310
+ });
311
+ }
312
+ }
313
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
314
+ finally {
315
+ try {
316
+ if (localSnapPoints_1_1 && !localSnapPoints_1_1.done && (_b = localSnapPoints_1.return)) _b.call(localSnapPoints_1);
317
+ }
318
+ finally { if (e_3) throw e_3.error; }
319
+ }
320
+ }
321
+ else {
322
+ found.entity.subGetOsnapPoints(mode, localPick, localLast, localSnapPoints);
323
+ try {
324
+ for (var localSnapPoints_2 = (e_4 = void 0, __values(localSnapPoints)), localSnapPoints_2_1 = localSnapPoints_2.next(); !localSnapPoints_2_1.done; localSnapPoints_2_1 = localSnapPoints_2.next()) {
325
+ var point = localSnapPoints_2_1.value;
326
+ var world = new AcGePoint3d(point).applyMatrix4(found.transform);
327
+ osnapPoints.push({
328
+ x: world.x,
329
+ y: world.y,
330
+ z: world.z,
331
+ type: mode
332
+ });
333
+ }
334
+ }
335
+ catch (e_4_1) { e_4 = { error: e_4_1 }; }
336
+ finally {
337
+ try {
338
+ if (localSnapPoints_2_1 && !localSnapPoints_2_1.done && (_c = localSnapPoints_2.return)) _c.call(localSnapPoints_2);
339
+ }
340
+ finally { if (e_4) throw e_4.error; }
341
+ }
342
+ }
343
+ }
344
+ }
345
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
346
+ finally {
347
+ try {
348
+ if (modes_1_1 && !modes_1_1.done && (_a = modes_1.return)) _a.call(modes_1);
349
+ }
350
+ finally { if (e_2) throw e_2.error; }
351
+ }
352
+ };
353
+ AcEdOsnapResolver.childBoxHint = function (child) {
354
+ if (child.minX == null ||
355
+ child.minY == null ||
356
+ child.maxX == null ||
357
+ child.maxY == null) {
358
+ return undefined;
359
+ }
360
+ return {
361
+ x: (child.minX + child.maxX) / 2,
362
+ y: (child.minY + child.maxY) / 2,
363
+ z: 0
364
+ };
365
+ };
366
+ AcEdOsnapResolver.prototype.collectIntersectionOsnapPoints = function (pickResults, db, osnapPoints, cursorWcs, threshold) {
367
+ var e_5, _a, e_6, _b, e_7, _c;
272
368
  var sources = [];
273
369
  var seenKeys = new Set();
274
370
  var tryAdd = function (source) {
@@ -290,28 +386,37 @@ var AcEdOsnapResolver = /** @class */ (function () {
290
386
  break;
291
387
  if (!isEffectiveSpatialQueryHit(item))
292
388
  continue;
293
- var entity = modelSpace.getIdAt(item.id);
389
+ var entity = AcEdOsnapResolver.getEntityById(db, item.id);
294
390
  if (!entity)
295
391
  continue;
392
+ var viewportId = item.viewportId;
393
+ // Drill-through hits without a live mapper must not be treated as
394
+ // paper-space geometry — their boxes are still in model WCS.
395
+ if (viewportId != null &&
396
+ !this._view.getViewportCoordinateMapper(viewportId)) {
397
+ continue;
398
+ }
296
399
  if (item.children && item.children.length > 0) {
297
400
  try {
298
401
  // INSERT (and other hierarchical hits): only the aperture-hit children.
299
402
  // Never expand the whole block definition into INT snap.
300
- for (var _d = (e_3 = void 0, __values(item.children)), _e = _d.next(); !_e.done; _e = _d.next()) {
403
+ for (var _d = (e_6 = void 0, __values(item.children)), _e = _d.next(); !_e.done; _e = _d.next()) {
301
404
  var child = _e.value;
302
405
  if (sources.length >= MAX_INTERSECTION_SOURCES)
303
406
  break;
304
- var gsMark = canonicalGsMark(child.id);
305
- var key = "".concat(item.id, ":").concat(gsMark);
407
+ // Keep the `#n` occurrence suffix so two instances of the same part
408
+ // do not collapse to one INT source (#745).
409
+ var key = "".concat(item.id, ":").concat(child.id);
306
410
  if (entity instanceof AcDbBlockReference) {
307
- var found = resolveBlockSubEntity(entity, gsMark);
411
+ var found = resolveBlockSubEntity(entity, child.id, new AcGeMatrix3d(), AcEdOsnapResolver.childBoxHint(child));
308
412
  if (!found)
309
413
  continue;
310
414
  tryAdd({
311
415
  key: key,
312
416
  box: boxFromSpatialItem(child),
313
417
  entity: found.entity,
314
- transform: found.transform
418
+ transform: found.transform,
419
+ viewportId: viewportId
315
420
  });
316
421
  }
317
422
  else {
@@ -319,17 +424,18 @@ var AcEdOsnapResolver = /** @class */ (function () {
319
424
  key: key,
320
425
  box: boxFromSpatialItem(child),
321
426
  entity: entity,
322
- transform: new AcGeMatrix3d()
427
+ transform: new AcGeMatrix3d(),
428
+ viewportId: viewportId
323
429
  });
324
430
  }
325
431
  }
326
432
  }
327
- catch (e_3_1) { e_3 = { error: e_3_1 }; }
433
+ catch (e_6_1) { e_6 = { error: e_6_1 }; }
328
434
  finally {
329
435
  try {
330
436
  if (_e && !_e.done && (_b = _d.return)) _b.call(_d);
331
437
  }
332
- finally { if (e_3) throw e_3.error; }
438
+ finally { if (e_6) throw e_6.error; }
333
439
  }
334
440
  continue;
335
441
  }
@@ -342,16 +448,17 @@ var AcEdOsnapResolver = /** @class */ (function () {
342
448
  key: item.id,
343
449
  box: entity.geometricExtents,
344
450
  entity: entity,
345
- transform: new AcGeMatrix3d()
451
+ transform: new AcGeMatrix3d(),
452
+ viewportId: viewportId
346
453
  });
347
454
  }
348
455
  }
349
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
456
+ catch (e_5_1) { e_5 = { error: e_5_1 }; }
350
457
  finally {
351
458
  try {
352
459
  if (pickResults_1_1 && !pickResults_1_1.done && (_a = pickResults_1.return)) _a.call(pickResults_1);
353
460
  }
354
- finally { if (e_2) throw e_2.error; }
461
+ finally { if (e_5) throw e_5.error; }
355
462
  }
356
463
  if (sources.length < 2)
357
464
  return;
@@ -364,79 +471,186 @@ var AcEdOsnapResolver = /** @class */ (function () {
364
471
  return;
365
472
  if (performance.now() - started > INTERSECTION_TIME_BUDGET_MS)
366
473
  return;
474
+ if (sources[i].viewportId !== sources[j].viewportId)
475
+ continue;
367
476
  if (!boxesOverlapXY(sources[i].box, sources[j].box))
368
477
  continue;
369
478
  pairTests++;
479
+ var viewportId = sources[i].viewportId;
480
+ var mapper = viewportId != null
481
+ ? this._view.getViewportCoordinateMapper(viewportId)
482
+ : undefined;
483
+ // Sources with a viewportId were only added when a mapper existed;
484
+ // if it disappeared mid-resolve, skip rather than emit model WCS.
485
+ if (viewportId != null && !mapper)
486
+ continue;
370
487
  var points = intersectSources(sources[i], sources[j]);
371
488
  try {
372
- for (var points_1 = (e_4 = void 0, __values(points)), points_1_1 = points_1.next(); !points_1_1.done; points_1_1 = points_1.next()) {
489
+ for (var points_1 = (e_7 = void 0, __values(points)), points_1_1 = points_1.next(); !points_1_1.done; points_1_1 = points_1.next()) {
373
490
  var point = points_1_1.value;
374
- var dx = point.x - cursorWcs.x;
375
- var dy = point.y - cursorWcs.y;
491
+ var paperPoint = mapper ? mapper.modelToPaper(point) : point;
492
+ if (mapper && !mapper.containsPaperPoint(paperPoint))
493
+ continue;
494
+ var dx = paperPoint.x - cursorWcs.x;
495
+ var dy = paperPoint.y - cursorWcs.y;
376
496
  if (dx * dx + dy * dy > threshSq)
377
497
  continue;
378
498
  osnapPoints.push({
379
- x: point.x,
380
- y: point.y,
499
+ x: paperPoint.x,
500
+ y: paperPoint.y,
381
501
  z: point.z,
382
502
  type: AcDbOsnapMode.Intersection
383
503
  });
384
504
  }
385
505
  }
386
- catch (e_4_1) { e_4 = { error: e_4_1 }; }
506
+ catch (e_7_1) { e_7 = { error: e_7_1 }; }
387
507
  finally {
388
508
  try {
389
509
  if (points_1_1 && !points_1_1.done && (_c = points_1.return)) _c.call(points_1);
390
510
  }
391
- finally { if (e_4) throw e_4.error; }
511
+ finally { if (e_7) throw e_7.error; }
392
512
  }
393
513
  }
394
514
  }
395
515
  };
516
+ /**
517
+ * Looks an entity up by id with no block-table-record owner check, so a
518
+ * hit is resolved the same way whether it came from the active layout's
519
+ * own spatial index (paper space) or was drilled through a paper-space
520
+ * viewport into model space (#746) — a BTR-scoped `getIdAt` only resolves
521
+ * entities it owns and silently drops every other hit.
522
+ */
523
+ AcEdOsnapResolver.getEntityById = function (db, id) {
524
+ var object = db.getObjectById(id);
525
+ return object instanceof AcDbEntity ? object : undefined;
526
+ };
396
527
  AcEdOsnapResolver.prototype.collectOsnapPoints = function (cursorWcs, lastPoint, hitRadiusPx, threshold) {
397
528
  var _this = this;
398
529
  var results = this._view.pick(cursorWcs, hitRadiusPx);
399
530
  var db = acdbHostApplicationServices().workingDatabase;
400
- var modelSpace = db.tables.blockTable.modelSpace;
401
531
  var osnapPoints = [];
402
532
  var pickPoint = AcGeGeometryUtil.point2dToPoint3d(cursorWcs);
403
533
  var last = AcGeGeometryUtil.point2dToPoint3d(lastPoint);
404
534
  results.forEach(function (item) {
405
- var entity = modelSpace.getIdAt(item.id);
535
+ var e_8, _a;
536
+ var entity = AcEdOsnapResolver.getEntityById(db, item.id);
406
537
  if (!entity)
407
538
  return;
539
+ // A viewport drill-through hit's geometry is in model-space WCS: the
540
+ // pick/last points must be converted into that space before the
541
+ // query, and whatever comes back converted to paper space before it
542
+ // can be compared with the paper-space cursor (#746).
543
+ var mapper = item.viewportId != null
544
+ ? _this._view.getViewportCoordinateMapper(item.viewportId)
545
+ : undefined;
546
+ // Never fall back to treating a tagged drill-through hit as paper
547
+ // space — that reintroduces the wrong-space snap from #746.
548
+ if (item.viewportId != null && !mapper)
549
+ return;
550
+ var queryPickPoint = mapper
551
+ ? AcGeGeometryUtil.point2dToPoint3d(mapper.paperToModel(cursorWcs))
552
+ : pickPoint;
553
+ var queryLastPoint = mapper
554
+ ? AcGeGeometryUtil.point2dToPoint3d(mapper.paperToModel(lastPoint))
555
+ : last;
556
+ var localPoints = [];
408
557
  if (item.children && item.children.length > 0) {
409
558
  item.children.forEach(function (child) {
410
- return _this.collectOsnapPointsInAvailableModes(entity, osnapPoints, pickPoint, last, canonicalGsMark(child.id));
559
+ if (entity instanceof AcDbBlockReference) {
560
+ var found = resolveBlockSubEntity(entity, child.id, new AcGeMatrix3d(), AcEdOsnapResolver.childBoxHint(child));
561
+ if (found) {
562
+ _this.collectOsnapPointsFromResolvedSubEntity(found, localPoints, queryPickPoint, queryLastPoint);
563
+ return;
564
+ }
565
+ }
566
+ // Keep `#n` so data-model occurrence resolution can disambiguate
567
+ // duplicate nested INSERT parts when resolveBlockSubEntity misses.
568
+ _this.collectOsnapPointsInAvailableModes(entity, localPoints, queryPickPoint, queryLastPoint, child.id);
411
569
  });
412
570
  }
413
571
  else {
414
- _this.collectOsnapPointsInAvailableModes(entity, osnapPoints, pickPoint, last);
572
+ _this.collectOsnapPointsInAvailableModes(entity, localPoints, queryPickPoint, queryLastPoint);
573
+ }
574
+ if (!mapper) {
575
+ osnapPoints.push.apply(osnapPoints, __spreadArray([], __read(localPoints), false));
576
+ return;
577
+ }
578
+ try {
579
+ for (var localPoints_1 = __values(localPoints), localPoints_1_1 = localPoints_1.next(); !localPoints_1_1.done; localPoints_1_1 = localPoints_1.next()) {
580
+ var point = localPoints_1_1.value;
581
+ var paperPoint = mapper.modelToPaper(point);
582
+ if (!mapper.containsPaperPoint(paperPoint))
583
+ continue;
584
+ osnapPoints.push({
585
+ x: paperPoint.x,
586
+ y: paperPoint.y,
587
+ z: point.z,
588
+ type: point.type
589
+ });
590
+ }
591
+ }
592
+ catch (e_8_1) { e_8 = { error: e_8_1 }; }
593
+ finally {
594
+ try {
595
+ if (localPoints_1_1 && !localPoints_1_1.done && (_a = localPoints_1.return)) _a.call(localPoints_1);
596
+ }
597
+ finally { if (e_8) throw e_8.error; }
415
598
  }
416
599
  });
417
600
  if (acdbHasOsnapMode(AcApSettingManager.instance.osnapModes, AcDbOsnapMode.Intersection)) {
418
- this.collectIntersectionOsnapPoints(results, modelSpace, osnapPoints, cursorWcs, threshold);
601
+ this.collectIntersectionOsnapPoints(results, db, osnapPoints, cursorWcs, threshold);
419
602
  }
420
- this.updateAcquiredCenters(results, modelSpace, pickPoint);
603
+ this.updateAcquiredCenters(results, db, pickPoint);
421
604
  return osnapPoints;
422
605
  };
423
- AcEdOsnapResolver.prototype.updateAcquiredCenters = function (results, modelSpace, pickPoint) {
606
+ AcEdOsnapResolver.prototype.updateAcquiredCenters = function (results, db, pickPoint) {
607
+ var _this = this;
424
608
  if (!acdbHasOsnapMode(AcApSettingManager.instance.osnapModes, AcDbOsnapMode.Center)) {
425
609
  this._acquiredCenters = [];
426
610
  return;
427
611
  }
428
612
  var hovered = [];
429
613
  results.forEach(function (item) {
430
- var entity = modelSpace.getIdAt(item.id);
614
+ var e_9, _a;
615
+ var entity = AcEdOsnapResolver.getEntityById(db, item.id);
431
616
  if (!entity)
432
617
  return;
618
+ var mapper = item.viewportId != null
619
+ ? _this._view.getViewportCoordinateMapper(item.viewportId)
620
+ : undefined;
621
+ if (item.viewportId != null && !mapper)
622
+ return;
623
+ var queryPickPoint = mapper
624
+ ? AcGeGeometryUtil.point2dToPoint3d(mapper.paperToModel(pickPoint))
625
+ : pickPoint;
626
+ var localMarks = [];
433
627
  if (item.children && item.children.length > 0) {
434
628
  item.children.forEach(function (child) {
435
- hovered.push.apply(hovered, __spreadArray([], __read(collectCenterMarksFromEntity(entity, pickPoint, canonicalGsMark(child.id))), false));
629
+ localMarks.push.apply(localMarks, __spreadArray([], __read(collectCenterMarksFromEntity(entity, queryPickPoint, child.id)), false));
436
630
  });
437
631
  }
438
632
  else {
439
- hovered.push.apply(hovered, __spreadArray([], __read(collectCenterMarksFromEntity(entity, pickPoint)), false));
633
+ localMarks.push.apply(localMarks, __spreadArray([], __read(collectCenterMarksFromEntity(entity, queryPickPoint)), false));
634
+ }
635
+ if (!mapper) {
636
+ hovered.push.apply(hovered, __spreadArray([], __read(localMarks), false));
637
+ return;
638
+ }
639
+ try {
640
+ for (var localMarks_1 = __values(localMarks), localMarks_1_1 = localMarks_1.next(); !localMarks_1_1.done; localMarks_1_1 = localMarks_1.next()) {
641
+ var mark = localMarks_1_1.value;
642
+ var paperPoint = mapper.modelToPaper(mark);
643
+ if (!mapper.containsPaperPoint(paperPoint))
644
+ continue;
645
+ hovered.push(__assign(__assign({}, mark), { x: paperPoint.x, y: paperPoint.y }));
646
+ }
647
+ }
648
+ catch (e_9_1) { e_9 = { error: e_9_1 }; }
649
+ finally {
650
+ try {
651
+ if (localMarks_1_1 && !localMarks_1_1.done && (_a = localMarks_1.return)) _a.call(localMarks_1);
652
+ }
653
+ finally { if (e_9) throw e_9.error; }
440
654
  }
441
655
  });
442
656
  this._acquiredCenters = mergeAcquiredCenterMarks(this._acquiredCenters, hovered);