@mlightcad/data-model 1.15.20 → 1.15.22

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 (188) hide show
  1. package/dist/data-model.cjs +16 -16
  2. package/lib/base/AcDbDxfFiler.d.ts +27 -0
  3. package/lib/base/AcDbDxfFiler.d.ts.map +1 -1
  4. package/lib/base/AcDbDxfFiler.js +85 -9
  5. package/lib/base/AcDbDxfFiler.js.map +1 -1
  6. package/lib/base/AcDbObject.d.ts +10 -0
  7. package/lib/base/AcDbObject.d.ts.map +1 -1
  8. package/lib/base/AcDbObject.js +38 -1
  9. package/lib/base/AcDbObject.js.map +1 -1
  10. package/lib/database/AcDbBlockTableRecord.d.ts +11 -0
  11. package/lib/database/AcDbBlockTableRecord.d.ts.map +1 -1
  12. package/lib/database/AcDbBlockTableRecord.js +22 -1
  13. package/lib/database/AcDbBlockTableRecord.js.map +1 -1
  14. package/lib/database/AcDbDatabase.d.ts +60 -0
  15. package/lib/database/AcDbDatabase.d.ts.map +1 -1
  16. package/lib/database/AcDbDatabase.js +647 -157
  17. package/lib/database/AcDbDatabase.js.map +1 -1
  18. package/lib/database/AcDbDimStyleTableRecord.js +1 -1
  19. package/lib/database/AcDbDimStyleTableRecord.js.map +1 -1
  20. package/lib/dxf/AcDbDxfDocumentReader.d.ts +19 -1
  21. package/lib/dxf/AcDbDxfDocumentReader.d.ts.map +1 -1
  22. package/lib/dxf/AcDbDxfDocumentReader.js +92 -12
  23. package/lib/dxf/AcDbDxfDocumentReader.js.map +1 -1
  24. package/lib/dxf/AcDbDxfEntityFactory.d.ts.map +1 -1
  25. package/lib/dxf/AcDbDxfEntityFactory.js +20 -1
  26. package/lib/dxf/AcDbDxfEntityFactory.js.map +1 -1
  27. package/lib/dxf/AcDbDxfHeaderReader.d.ts.map +1 -1
  28. package/lib/dxf/AcDbDxfHeaderReader.js +76 -7
  29. package/lib/dxf/AcDbDxfHeaderReader.js.map +1 -1
  30. package/lib/dxf/AcDbDxfObjectRecordName.d.ts +13 -0
  31. package/lib/dxf/AcDbDxfObjectRecordName.d.ts.map +1 -0
  32. package/lib/dxf/AcDbDxfObjectRecordName.js +98 -0
  33. package/lib/dxf/AcDbDxfObjectRecordName.js.map +1 -0
  34. package/lib/dxf/AcDbDxfObjectsReader.d.ts +15 -2
  35. package/lib/dxf/AcDbDxfObjectsReader.d.ts.map +1 -1
  36. package/lib/dxf/AcDbDxfObjectsReader.js +226 -110
  37. package/lib/dxf/AcDbDxfObjectsReader.js.map +1 -1
  38. package/lib/dxf/AcDbDxfRawTags.d.ts +50 -0
  39. package/lib/dxf/AcDbDxfRawTags.d.ts.map +1 -0
  40. package/lib/dxf/AcDbDxfRawTags.js +116 -0
  41. package/lib/dxf/AcDbDxfRawTags.js.map +1 -0
  42. package/lib/entity/AcDb2dPolyline.d.ts.map +1 -1
  43. package/lib/entity/AcDb2dPolyline.js +53 -1
  44. package/lib/entity/AcDb2dPolyline.js.map +1 -1
  45. package/lib/entity/AcDb2dVertex.d.ts +5 -0
  46. package/lib/entity/AcDb2dVertex.d.ts.map +1 -1
  47. package/lib/entity/AcDb2dVertex.js +98 -0
  48. package/lib/entity/AcDb2dVertex.js.map +1 -1
  49. package/lib/entity/AcDb3dPolyline.d.ts.map +1 -1
  50. package/lib/entity/AcDb3dPolyline.js +20 -1
  51. package/lib/entity/AcDb3dPolyline.js.map +1 -1
  52. package/lib/entity/AcDb3dSolid.d.ts +5 -0
  53. package/lib/entity/AcDb3dSolid.d.ts.map +1 -1
  54. package/lib/entity/AcDb3dSolid.js +70 -0
  55. package/lib/entity/AcDb3dSolid.js.map +1 -1
  56. package/lib/entity/AcDb3dVertex.d.ts +5 -0
  57. package/lib/entity/AcDb3dVertex.d.ts.map +1 -1
  58. package/lib/entity/AcDb3dVertex.js +65 -0
  59. package/lib/entity/AcDb3dVertex.js.map +1 -1
  60. package/lib/entity/AcDbArc.d.ts.map +1 -1
  61. package/lib/entity/AcDbArc.js +11 -0
  62. package/lib/entity/AcDbArc.js.map +1 -1
  63. package/lib/entity/AcDbArcAlignedText.d.ts.map +1 -1
  64. package/lib/entity/AcDbArcAlignedText.js +254 -0
  65. package/lib/entity/AcDbArcAlignedText.js.map +1 -1
  66. package/lib/entity/AcDbAttribute.d.ts +5 -0
  67. package/lib/entity/AcDbAttribute.d.ts.map +1 -1
  68. package/lib/entity/AcDbAttribute.js +156 -0
  69. package/lib/entity/AcDbAttribute.js.map +1 -1
  70. package/lib/entity/AcDbAttributeDefinition.d.ts +5 -0
  71. package/lib/entity/AcDbAttributeDefinition.d.ts.map +1 -1
  72. package/lib/entity/AcDbAttributeDefinition.js +167 -0
  73. package/lib/entity/AcDbAttributeDefinition.js.map +1 -1
  74. package/lib/entity/AcDbBlockReference.d.ts.map +1 -1
  75. package/lib/entity/AcDbBlockReference.js +57 -3
  76. package/lib/entity/AcDbBlockReference.js.map +1 -1
  77. package/lib/entity/AcDbCircle.d.ts.map +1 -1
  78. package/lib/entity/AcDbCircle.js +11 -0
  79. package/lib/entity/AcDbCircle.js.map +1 -1
  80. package/lib/entity/AcDbEntity.d.ts +27 -1
  81. package/lib/entity/AcDbEntity.d.ts.map +1 -1
  82. package/lib/entity/AcDbEntity.js +81 -1
  83. package/lib/entity/AcDbEntity.js.map +1 -1
  84. package/lib/entity/AcDbFace.d.ts +7 -0
  85. package/lib/entity/AcDbFace.d.ts.map +1 -1
  86. package/lib/entity/AcDbFace.js +99 -0
  87. package/lib/entity/AcDbFace.js.map +1 -1
  88. package/lib/entity/AcDbFcf.d.ts.map +1 -1
  89. package/lib/entity/AcDbFcf.js +66 -0
  90. package/lib/entity/AcDbFcf.js.map +1 -1
  91. package/lib/entity/AcDbHatch.d.ts.map +1 -1
  92. package/lib/entity/AcDbHatch.js +187 -0
  93. package/lib/entity/AcDbHatch.js.map +1 -1
  94. package/lib/entity/AcDbLeader.d.ts +8 -1
  95. package/lib/entity/AcDbLeader.d.ts.map +1 -1
  96. package/lib/entity/AcDbLeader.js +20 -5
  97. package/lib/entity/AcDbLeader.js.map +1 -1
  98. package/lib/entity/AcDbLine.d.ts.map +1 -1
  99. package/lib/entity/AcDbLine.js +44 -0
  100. package/lib/entity/AcDbLine.js.map +1 -1
  101. package/lib/entity/AcDbMLeader.d.ts +1 -1
  102. package/lib/entity/AcDbMLeader.d.ts.map +1 -1
  103. package/lib/entity/AcDbMLeader.js +328 -5
  104. package/lib/entity/AcDbMLeader.js.map +1 -1
  105. package/lib/entity/AcDbMLine.d.ts +14 -0
  106. package/lib/entity/AcDbMLine.d.ts.map +1 -1
  107. package/lib/entity/AcDbMLine.js +137 -7
  108. package/lib/entity/AcDbMLine.js.map +1 -1
  109. package/lib/entity/AcDbMText.d.ts +40 -8
  110. package/lib/entity/AcDbMText.d.ts.map +1 -1
  111. package/lib/entity/AcDbMText.js +395 -22
  112. package/lib/entity/AcDbMText.js.map +1 -1
  113. package/lib/entity/AcDbPoint.d.ts.map +1 -1
  114. package/lib/entity/AcDbPoint.js +55 -0
  115. package/lib/entity/AcDbPoint.js.map +1 -1
  116. package/lib/entity/AcDbPolyline.d.ts.map +1 -1
  117. package/lib/entity/AcDbPolyline.js +46 -2
  118. package/lib/entity/AcDbPolyline.js.map +1 -1
  119. package/lib/entity/AcDbProxyEntity.d.ts +5 -0
  120. package/lib/entity/AcDbProxyEntity.d.ts.map +1 -1
  121. package/lib/entity/AcDbProxyEntity.js +77 -0
  122. package/lib/entity/AcDbProxyEntity.js.map +1 -1
  123. package/lib/entity/AcDbRasterImage.d.ts.map +1 -1
  124. package/lib/entity/AcDbRasterImage.js +99 -0
  125. package/lib/entity/AcDbRasterImage.js.map +1 -1
  126. package/lib/entity/AcDbShape.d.ts.map +1 -1
  127. package/lib/entity/AcDbShape.js +63 -0
  128. package/lib/entity/AcDbShape.js.map +1 -1
  129. package/lib/entity/AcDbSpline.d.ts +6 -0
  130. package/lib/entity/AcDbSpline.d.ts.map +1 -1
  131. package/lib/entity/AcDbSpline.js +182 -0
  132. package/lib/entity/AcDbSpline.js.map +1 -1
  133. package/lib/entity/AcDbTable.d.ts.map +1 -1
  134. package/lib/entity/AcDbTable.js +24 -2
  135. package/lib/entity/AcDbTable.js.map +1 -1
  136. package/lib/entity/AcDbText.d.ts +4 -0
  137. package/lib/entity/AcDbText.d.ts.map +1 -1
  138. package/lib/entity/AcDbText.js +254 -119
  139. package/lib/entity/AcDbText.js.map +1 -1
  140. package/lib/entity/AcDbTextExtentsHelpers.d.ts +14 -1
  141. package/lib/entity/AcDbTextExtentsHelpers.d.ts.map +1 -1
  142. package/lib/entity/AcDbTextExtentsHelpers.js +28 -5
  143. package/lib/entity/AcDbTextExtentsHelpers.js.map +1 -1
  144. package/lib/entity/AcDbTrace.d.ts +6 -0
  145. package/lib/entity/AcDbTrace.d.ts.map +1 -1
  146. package/lib/entity/AcDbTrace.js +117 -0
  147. package/lib/entity/AcDbTrace.js.map +1 -1
  148. package/lib/entity/AcDbUnknownEntity.d.ts +46 -0
  149. package/lib/entity/AcDbUnknownEntity.d.ts.map +1 -0
  150. package/lib/entity/AcDbUnknownEntity.js +210 -0
  151. package/lib/entity/AcDbUnknownEntity.js.map +1 -0
  152. package/lib/entity/AcDbViewport.d.ts +5 -0
  153. package/lib/entity/AcDbViewport.d.ts.map +1 -1
  154. package/lib/entity/AcDbViewport.js +307 -0
  155. package/lib/entity/AcDbViewport.js.map +1 -1
  156. package/lib/entity/AcDbWipeout.d.ts.map +1 -1
  157. package/lib/entity/AcDbWipeout.js +12 -1
  158. package/lib/entity/AcDbWipeout.js.map +1 -1
  159. package/lib/entity/dimension/AcDbDimension.d.ts.map +1 -1
  160. package/lib/entity/dimension/AcDbDimension.js +22 -2
  161. package/lib/entity/dimension/AcDbDimension.js.map +1 -1
  162. package/lib/entity/dimension/AcDbOrdinateDimension.d.ts.map +1 -1
  163. package/lib/entity/dimension/AcDbOrdinateDimension.js +5 -1
  164. package/lib/entity/dimension/AcDbOrdinateDimension.js.map +1 -1
  165. package/lib/entity/index.d.ts +1 -0
  166. package/lib/entity/index.d.ts.map +1 -1
  167. package/lib/entity/index.js +1 -0
  168. package/lib/entity/index.js.map +1 -1
  169. package/lib/ly/AcLyLayerFilterIO.d.ts +2 -0
  170. package/lib/ly/AcLyLayerFilterIO.d.ts.map +1 -1
  171. package/lib/ly/AcLyLayerFilterIO.js.map +1 -1
  172. package/lib/object/AcDbDictionary.d.ts +16 -0
  173. package/lib/object/AcDbDictionary.d.ts.map +1 -1
  174. package/lib/object/AcDbDictionary.js +37 -1
  175. package/lib/object/AcDbDictionary.js.map +1 -1
  176. package/lib/object/AcDbObjectContextData.d.ts +21 -0
  177. package/lib/object/AcDbObjectContextData.d.ts.map +1 -1
  178. package/lib/object/AcDbObjectContextData.js +49 -0
  179. package/lib/object/AcDbObjectContextData.js.map +1 -1
  180. package/lib/object/AcDbUnknownObject.d.ts +24 -0
  181. package/lib/object/AcDbUnknownObject.d.ts.map +1 -0
  182. package/lib/object/AcDbUnknownObject.js +97 -0
  183. package/lib/object/AcDbUnknownObject.js.map +1 -0
  184. package/lib/object/index.d.ts +1 -0
  185. package/lib/object/index.d.ts.map +1 -1
  186. package/lib/object/index.js +1 -0
  187. package/lib/object/index.js.map +1 -1
  188. package/package.json +5 -5
@@ -25,6 +25,7 @@ var __read = (this && this.__read) || function (o, n) {
25
25
  }
26
26
  return ar;
27
27
  };
28
+ import { AcDbDxfFiler } from '../base/AcDbDxfFiler.js';
28
29
  import { AcDbBlockTableRecord } from '../database/AcDbBlockTableRecord.js';
29
30
  import { acdbReadLayerFilterTree } from '../ly/AcLyLayerFilterIO.js';
30
31
  import { AcDbBlkRefObjectContextData } from '../object/AcDbBlkRefObjectContextData.js';
@@ -45,8 +46,11 @@ import { AcDbRasterImageDef } from '../object/AcDbRasterImageDef.js';
45
46
  import { AcDbScale } from '../object/AcDbScale.js';
46
47
  import { AcDbSortentsTable } from '../object/AcDbSortentsTable.js';
47
48
  import { AcDbTextObjectContextData } from '../object/AcDbTextObjectContextData.js';
49
+ import { AcDbUnknownObject } from '../object/AcDbUnknownObject.js';
48
50
  import { AcDbXrecord } from '../object/AcDbXrecord.js';
49
51
  import { AcDbLayout } from '../object/layout/AcDbLayout.js';
52
+ import { acdbDrainDxfObjectPairs, AcDbDxfPairArrayReader, acdbTypedValueToDxfPair } from './AcDbDxfPairArrayReader.js';
53
+ import { acdbSplitDxfRawTags } from './AcDbDxfRawTags.js';
50
54
  var normalizeHandle = function (handle) {
51
55
  return handle ? handle.trim().toUpperCase() : '';
52
56
  };
@@ -63,9 +67,11 @@ var AcDbDxfObjectsReader = /** @class */ (function () {
63
67
  this._dictionaries = new Map();
64
68
  this._xrecords = new Map();
65
69
  this._unknownObjectCount = 0;
70
+ /** Objects kept verbatim, linked into dictionaries once all are loaded. */
71
+ this._unknownObjects = [];
66
72
  }
67
73
  Object.defineProperty(AcDbDxfObjectsReader.prototype, "unknownObjectCount", {
68
- /** Count of OBJECTS types skipped because no native reader exists yet. */
74
+ /** Count of OBJECTS records kept verbatim because no native reader exists. */
69
75
  get: function () {
70
76
  return this._unknownObjectCount;
71
77
  },
@@ -78,6 +84,7 @@ var AcDbDxfObjectsReader = /** @class */ (function () {
78
84
  */
79
85
  AcDbDxfObjectsReader.prototype.read = function (filer) {
80
86
  this._unknownObjectCount = 0;
87
+ this._unknownObjects.length = 0;
81
88
  while (!filer.atEof) {
82
89
  var item = filer.peekItem();
83
90
  if (!item)
@@ -159,7 +166,7 @@ var AcDbDxfObjectsReader = /** @class */ (function () {
159
166
  }
160
167
  case 'DICTIONARY':
161
168
  case 'ACDBDICTIONARYWDFLT': {
162
- var dict = this.readPersistDictionary(filer);
169
+ var dict = this.readPersistDictionary(filer, typeName);
163
170
  if (dict.handle) {
164
171
  this._dictionaries.set(normalizeHandle(dict.handle), dict);
165
172
  }
@@ -184,8 +191,7 @@ var AcDbDxfObjectsReader = /** @class */ (function () {
184
191
  break;
185
192
  }
186
193
  case 'ACDB_MTEXTOBJECTCONTEXTDATA_CLASS': {
187
- var context = new AcDbMTextObjectContextData();
188
- context.dxfIn(filer);
194
+ var context = this.readContextData(filer, new AcDbMTextObjectContextData(), typeName);
189
195
  var handle = normalizeHandle(context.objectId);
190
196
  if (handle) {
191
197
  this._db.objects.objectContextData.setAt(handle, context);
@@ -193,8 +199,7 @@ var AcDbDxfObjectsReader = /** @class */ (function () {
193
199
  break;
194
200
  }
195
201
  case 'ACDB_TEXTOBJECTCONTEXTDATA_CLASS': {
196
- var context = new AcDbTextObjectContextData();
197
- context.dxfIn(filer);
202
+ var context = this.readContextData(filer, new AcDbTextObjectContextData(), typeName);
198
203
  var handle = normalizeHandle(context.objectId);
199
204
  if (handle) {
200
205
  this._db.objects.objectContextData.setAt(handle, context);
@@ -209,8 +214,7 @@ var AcDbDxfObjectsReader = /** @class */ (function () {
209
214
  case 'ACDB_RADDIMOBJECTCONTEXTDATA_CLASS':
210
215
  case 'ACDB_RADIMOBJECTCONTEXTDATA_CLASS':
211
216
  case 'ACDB_RADDIMLGCOBJECTCONTEXTDATA_CLASS': {
212
- var context = new AcDbDimensionObjectContextData();
213
- context.dxfIn(filer);
217
+ var context = this.readContextData(filer, new AcDbDimensionObjectContextData(), typeName);
214
218
  var handle = normalizeHandle(context.objectId);
215
219
  if (handle) {
216
220
  this._db.objects.objectContextData.setAt(handle, context);
@@ -218,8 +222,7 @@ var AcDbDxfObjectsReader = /** @class */ (function () {
218
222
  break;
219
223
  }
220
224
  case 'ACDB_HATCHSCALECONTEXTDATA_CLASS': {
221
- var context = new AcDbHatchScaleContextData();
222
- context.dxfIn(filer);
225
+ var context = this.readContextData(filer, new AcDbHatchScaleContextData(), typeName);
223
226
  var handle = normalizeHandle(context.objectId);
224
227
  if (handle) {
225
228
  this._db.objects.objectContextData.setAt(handle, context);
@@ -227,8 +230,7 @@ var AcDbDxfObjectsReader = /** @class */ (function () {
227
230
  break;
228
231
  }
229
232
  case 'ACDB_BLKREFOBJECTCONTEXTDATA_CLASS': {
230
- var context = new AcDbBlkRefObjectContextData();
231
- context.dxfIn(filer);
233
+ var context = this.readContextData(filer, new AcDbBlkRefObjectContextData(), typeName);
232
234
  var handle = normalizeHandle(context.objectId);
233
235
  if (handle) {
234
236
  this._db.objects.objectContextData.setAt(handle, context);
@@ -236,8 +238,7 @@ var AcDbDxfObjectsReader = /** @class */ (function () {
236
238
  break;
237
239
  }
238
240
  case 'ACDB_LEADEROBJECTCONTEXTDATA_CLASS': {
239
- var context = new AcDbLeaderObjectContextData();
240
- context.dxfIn(filer);
241
+ var context = this.readContextData(filer, new AcDbLeaderObjectContextData(), typeName);
241
242
  var handle = normalizeHandle(context.objectId);
242
243
  if (handle) {
243
244
  this._db.objects.objectContextData.setAt(handle, context);
@@ -245,8 +246,7 @@ var AcDbDxfObjectsReader = /** @class */ (function () {
245
246
  break;
246
247
  }
247
248
  case 'ACDB_MLEADEROBJECTCONTEXTDATA_CLASS': {
248
- var context = new AcDbMLeaderObjectContextData();
249
- context.dxfIn(filer);
249
+ var context = this.readContextData(filer, new AcDbMLeaderObjectContextData(), typeName);
250
250
  var handle = normalizeHandle(context.objectId);
251
251
  if (handle) {
252
252
  this._db.objects.objectContextData.setAt(handle, context);
@@ -254,8 +254,7 @@ var AcDbDxfObjectsReader = /** @class */ (function () {
254
254
  break;
255
255
  }
256
256
  case 'ACDB_MTEXTATTRIBUTEOBJECTCONTEXTDATA_CLASS': {
257
- var context = new AcDbMTextAttributeObjectContextData();
258
- context.dxfIn(filer);
257
+ var context = this.readContextData(filer, new AcDbMTextAttributeObjectContextData(), typeName);
259
258
  var handle = normalizeHandle(context.objectId);
260
259
  if (handle) {
261
260
  this._db.objects.objectContextData.setAt(handle, context);
@@ -285,12 +284,42 @@ var AcDbDxfObjectsReader = /** @class */ (function () {
285
284
  }
286
285
  break;
287
286
  }
288
- default:
289
- // Unsupported object type — skip its pairs and record for diagnostics.
287
+ default: {
288
+ // No native class: keep the tags verbatim (ezdxf DXFTagStorage) so
289
+ // dictionaries and handles that point at the record stay valid.
290
290
  this._unknownObjectCount += 1;
291
- filer.skipToEndOfObject();
291
+ var object = new AcDbUnknownObject(typeName);
292
+ object.dxfIn(filer);
293
+ if (object.objectId) {
294
+ object.database = this._db;
295
+ this._db.registerObjectHandle(object);
296
+ this._db.addDxfUnknownObject(object);
297
+ this._unknownObjects.push(object);
298
+ }
299
+ break;
300
+ }
301
+ }
302
+ };
303
+ /**
304
+ * Reads a context-data record keeping its tags for verbatim export; only
305
+ * part of each record is modeled natively.
306
+ */
307
+ AcDbDxfObjectsReader.prototype.readContextData = function (filer, context, typeName) {
308
+ var pairs = acdbDrainDxfObjectPairs(filer);
309
+ // Trailing XData is replayed too so dxfIn stores it on the object.
310
+ while (!filer.atEndOfObject && !filer.atEof) {
311
+ var item = filer.readItem();
312
+ if (!item)
292
313
  break;
314
+ pairs.push(acdbTypedValueToDxfPair(item));
293
315
  }
316
+ var replay = AcDbDxfFiler.forReading(new AcDbDxfPairArrayReader(pairs), {
317
+ database: filer.database
318
+ });
319
+ context.dxfIn(replay);
320
+ context.dxfRecordName = typeName;
321
+ context.setDxfRawTags(acdbSplitDxfRawTags(pairs).tags);
322
+ return context;
294
323
  };
295
324
  /**
296
325
  * Wire the root named-object dictionary and known child dictionaries
@@ -320,7 +349,7 @@ var AcDbDxfObjectsReader = /** @class */ (function () {
320
349
  if (!(root === null || root === void 0 ? void 0 : root.handle))
321
350
  return;
322
351
  var rootDict = this._db.objects.dictionary;
323
- rootDict.objectId = root.handle;
352
+ this.adoptDxfHandle(rootDict, root.handle);
324
353
  rootDict.ownerId = '0';
325
354
  var typedByKey = {
326
355
  ACAD_LAYOUT: this._db.objects.layout,
@@ -339,7 +368,7 @@ var AcDbDxfObjectsReader = /** @class */ (function () {
339
368
  var typed = typedByKey[key.toUpperCase()];
340
369
  if (!typed)
341
370
  continue;
342
- typed.objectId = childHandle;
371
+ this.adoptDxfHandle(typed, childHandle);
343
372
  typed.ownerId = root.handle;
344
373
  rootDict.setAt(key, typed);
345
374
  var child = this._dictionaries.get(normalizeHandle(childHandle));
@@ -358,12 +387,12 @@ var AcDbDxfObjectsReader = /** @class */ (function () {
358
387
  // from the NOD child handle before merging, so ownerId-based hasId()
359
388
  // misses objects that were setAt under the previous dictionary handle.
360
389
  var targetId = normalizeHandle(obj.objectId);
361
- var alreadyStored = false;
390
+ var storedKey = void 0;
362
391
  try {
363
392
  for (var _o = (e_4 = void 0, __values(typed.entries())), _p = _o.next(); !_p.done; _p = _o.next()) {
364
- var _q = __read(_p.value, 2), existing = _q[1];
393
+ var _q = __read(_p.value, 2), key_1 = _q[0], existing = _q[1];
365
394
  if (normalizeHandle(existing.objectId) === targetId) {
366
- alreadyStored = true;
395
+ storedKey = key_1;
367
396
  break;
368
397
  }
369
398
  }
@@ -375,7 +404,19 @@ var AcDbDxfObjectsReader = /** @class */ (function () {
375
404
  }
376
405
  finally { if (e_4) throw e_4.error; }
377
406
  }
378
- if (!typed.getAt(entryName) && !alreadyStored) {
407
+ if (typed === this._db.objects.mleaderStyle &&
408
+ storedKey != null &&
409
+ storedKey !== entryName &&
410
+ normalizeHandle(storedKey) === targetId &&
411
+ !typed.getAt(entryName)) {
412
+ // MLEADERSTYLE has no name of its own: it is keyed by handle until
413
+ // the NOD entry names it. Without the rename, CMLEADERSTYLE never
414
+ // matches and a duplicate "Standard" style is created on every open.
415
+ typed.remove(storedKey);
416
+ typed.setAt(entryName, obj);
417
+ continue;
418
+ }
419
+ if (!typed.getAt(entryName) && storedKey == null) {
379
420
  typed.setAt(entryName, obj);
380
421
  }
381
422
  }
@@ -397,170 +438,234 @@ var AcDbDxfObjectsReader = /** @class */ (function () {
397
438
  finally { if (e_2) throw e_2.error; }
398
439
  }
399
440
  };
400
- AcDbDxfObjectsReader.prototype.collectLoadedObjectsByHandle = function () {
401
- var e_5, _a, e_6, _b, e_7, _c, e_8, _d, e_9, _e, e_10, _f, e_11, _g, e_12, _h, e_13, _j, e_14, _k, e_15, _l, e_16, _m;
402
- var map = new Map();
403
- var add = function (obj) {
404
- var id = normalizeHandle(obj.objectId);
405
- if (id)
406
- map.set(id, obj);
407
- };
408
- try {
409
- for (var _o = __values(this._db.objects.layout.entries()), _p = _o.next(); !_p.done; _p = _o.next()) {
410
- var _q = __read(_p.value, 2), o = _q[1];
411
- add(o);
412
- }
413
- }
414
- catch (e_5_1) { e_5 = { error: e_5_1 }; }
415
- finally {
416
- try {
417
- if (_p && !_p.done && (_a = _o.return)) _a.call(_o);
441
+ /**
442
+ * Gives a bootstrap dictionary the handle it has in the DXF. A default
443
+ * object that was minted the same handle (e.g. an `ACAD_GROUP` the file
444
+ * does not contain) moves to a fresh handle so no handle is written twice.
445
+ */
446
+ AcDbDxfObjectsReader.prototype.adoptDxfHandle = function (dict, handle) {
447
+ var e_5, _a, e_6, _b;
448
+ if (normalizeHandle(dict.objectId) === normalizeHandle(handle))
449
+ return;
450
+ var incumbent = this._db.getObjectById(handle);
451
+ if (incumbent && incumbent !== dict) {
452
+ var fresh = this._db.generateUniqueHandle();
453
+ this._db.releaseObjectHandle(incumbent);
454
+ incumbent.objectId = fresh;
455
+ this._db.registerObjectHandle(incumbent);
456
+ if (incumbent instanceof AcDbDictionary) {
457
+ try {
458
+ for (var _c = __values(incumbent.entries()), _d = _c.next(); !_d.done; _d = _c.next()) {
459
+ var _e = __read(_d.value, 2), entry = _e[1];
460
+ if (entry.ownerId === handle)
461
+ entry.ownerId = fresh;
462
+ }
463
+ }
464
+ catch (e_5_1) { e_5 = { error: e_5_1 }; }
465
+ finally {
466
+ try {
467
+ if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
468
+ }
469
+ finally { if (e_5) throw e_5.error; }
470
+ }
418
471
  }
419
- finally { if (e_5) throw e_5.error; }
420
472
  }
473
+ var oldHandle = dict.objectId;
474
+ this._db.releaseObjectHandle(dict);
475
+ dict.objectId = handle;
476
+ this._db.registerObjectHandle(dict);
421
477
  try {
422
- for (var _r = __values(this._db.objects.group.entries()), _s = _r.next(); !_s.done; _s = _r.next()) {
423
- var _t = __read(_s.value, 2), o = _t[1];
424
- add(o);
478
+ for (var _f = __values(dict.entries()), _g = _f.next(); !_g.done; _g = _f.next()) {
479
+ var _h = __read(_g.value, 2), entry = _h[1];
480
+ if (entry.ownerId === oldHandle)
481
+ entry.ownerId = handle;
425
482
  }
426
483
  }
427
484
  catch (e_6_1) { e_6 = { error: e_6_1 }; }
428
485
  finally {
429
486
  try {
430
- if (_s && !_s.done && (_b = _r.return)) _b.call(_r);
487
+ if (_g && !_g.done && (_b = _f.return)) _b.call(_f);
431
488
  }
432
489
  finally { if (e_6) throw e_6.error; }
433
490
  }
491
+ };
492
+ AcDbDxfObjectsReader.prototype.collectLoadedObjectsByHandle = function () {
493
+ var e_7, _a, e_8, _b, e_9, _c, e_10, _d, e_11, _e, e_12, _f, e_13, _g, e_14, _h, e_15, _j, e_16, _k, e_17, _l, e_18, _m, e_19, _o;
494
+ var map = new Map();
495
+ var add = function (obj) {
496
+ var id = normalizeHandle(obj.objectId);
497
+ if (id)
498
+ map.set(id, obj);
499
+ };
434
500
  try {
435
- for (var _u = __values(this._db.objects.sortentsTable.entries()), _v = _u.next(); !_v.done; _v = _u.next()) {
436
- var _w = __read(_v.value, 2), o = _w[1];
501
+ for (var _p = __values(this._db.objects.layout.entries()), _q = _p.next(); !_q.done; _q = _p.next()) {
502
+ var _r = __read(_q.value, 2), o = _r[1];
437
503
  add(o);
438
504
  }
439
505
  }
440
506
  catch (e_7_1) { e_7 = { error: e_7_1 }; }
441
507
  finally {
442
508
  try {
443
- if (_v && !_v.done && (_c = _u.return)) _c.call(_u);
509
+ if (_q && !_q.done && (_a = _p.return)) _a.call(_p);
444
510
  }
445
511
  finally { if (e_7) throw e_7.error; }
446
512
  }
447
513
  try {
448
- for (var _x = __values(this._db.objects.imageDefinition.entries()), _y = _x.next(); !_y.done; _y = _x.next()) {
449
- var _z = __read(_y.value, 2), o = _z[1];
514
+ for (var _s = __values(this._db.objects.group.entries()), _t = _s.next(); !_t.done; _t = _s.next()) {
515
+ var _u = __read(_t.value, 2), o = _u[1];
450
516
  add(o);
451
517
  }
452
518
  }
453
519
  catch (e_8_1) { e_8 = { error: e_8_1 }; }
454
520
  finally {
455
521
  try {
456
- if (_y && !_y.done && (_d = _x.return)) _d.call(_x);
522
+ if (_t && !_t.done && (_b = _s.return)) _b.call(_s);
457
523
  }
458
524
  finally { if (e_8) throw e_8.error; }
459
525
  }
460
526
  try {
461
- for (var _0 = __values(this._db.objects.mleaderStyle.entries()), _1 = _0.next(); !_1.done; _1 = _0.next()) {
462
- var _2 = __read(_1.value, 2), o = _2[1];
527
+ for (var _v = __values(this._db.objects.sortentsTable.entries()), _w = _v.next(); !_w.done; _w = _v.next()) {
528
+ var _x = __read(_w.value, 2), o = _x[1];
463
529
  add(o);
464
530
  }
465
531
  }
466
532
  catch (e_9_1) { e_9 = { error: e_9_1 }; }
467
533
  finally {
468
534
  try {
469
- if (_1 && !_1.done && (_e = _0.return)) _e.call(_0);
535
+ if (_w && !_w.done && (_c = _v.return)) _c.call(_v);
470
536
  }
471
537
  finally { if (e_9) throw e_9.error; }
472
538
  }
473
539
  try {
474
- for (var _3 = __values(this._db.objects.mlineStyle.entries()), _4 = _3.next(); !_4.done; _4 = _3.next()) {
475
- var _5 = __read(_4.value, 2), o = _5[1];
540
+ for (var _y = __values(this._db.objects.imageDefinition.entries()), _z = _y.next(); !_z.done; _z = _y.next()) {
541
+ var _0 = __read(_z.value, 2), o = _0[1];
476
542
  add(o);
477
543
  }
478
544
  }
479
545
  catch (e_10_1) { e_10 = { error: e_10_1 }; }
480
546
  finally {
481
547
  try {
482
- if (_4 && !_4.done && (_f = _3.return)) _f.call(_3);
548
+ if (_z && !_z.done && (_d = _y.return)) _d.call(_y);
483
549
  }
484
550
  finally { if (e_10) throw e_10.error; }
485
551
  }
486
552
  try {
487
- for (var _6 = __values(this._db.objects.layerFilter.entries()), _7 = _6.next(); !_7.done; _7 = _6.next()) {
488
- var _8 = __read(_7.value, 2), o = _8[1];
553
+ for (var _1 = __values(this._db.objects.mleaderStyle.entries()), _2 = _1.next(); !_2.done; _2 = _1.next()) {
554
+ var _3 = __read(_2.value, 2), o = _3[1];
489
555
  add(o);
490
556
  }
491
557
  }
492
558
  catch (e_11_1) { e_11 = { error: e_11_1 }; }
493
559
  finally {
494
560
  try {
495
- if (_7 && !_7.done && (_g = _6.return)) _g.call(_6);
561
+ if (_2 && !_2.done && (_e = _1.return)) _e.call(_1);
496
562
  }
497
563
  finally { if (e_11) throw e_11.error; }
498
564
  }
499
565
  try {
500
- for (var _9 = __values(this._db.objects.layerIndex.entries()), _10 = _9.next(); !_10.done; _10 = _9.next()) {
501
- var _11 = __read(_10.value, 2), o = _11[1];
566
+ for (var _4 = __values(this._db.objects.mlineStyle.entries()), _5 = _4.next(); !_5.done; _5 = _4.next()) {
567
+ var _6 = __read(_5.value, 2), o = _6[1];
502
568
  add(o);
503
569
  }
504
570
  }
505
571
  catch (e_12_1) { e_12 = { error: e_12_1 }; }
506
572
  finally {
507
573
  try {
508
- if (_10 && !_10.done && (_h = _9.return)) _h.call(_9);
574
+ if (_5 && !_5.done && (_f = _4.return)) _f.call(_4);
509
575
  }
510
576
  finally { if (e_12) throw e_12.error; }
511
577
  }
512
578
  try {
513
- for (var _12 = __values(this._db.objects.xrecord.entries()), _13 = _12.next(); !_13.done; _13 = _12.next()) {
514
- var _14 = __read(_13.value, 2), o = _14[1];
579
+ for (var _7 = __values(this._db.objects.layerFilter.entries()), _8 = _7.next(); !_8.done; _8 = _7.next()) {
580
+ var _9 = __read(_8.value, 2), o = _9[1];
515
581
  add(o);
516
582
  }
517
583
  }
518
584
  catch (e_13_1) { e_13 = { error: e_13_1 }; }
519
585
  finally {
520
586
  try {
521
- if (_13 && !_13.done && (_j = _12.return)) _j.call(_12);
587
+ if (_8 && !_8.done && (_g = _7.return)) _g.call(_7);
522
588
  }
523
589
  finally { if (e_13) throw e_13.error; }
524
590
  }
525
591
  try {
526
- for (var _15 = __values(this._db.objects.scale.entries()), _16 = _15.next(); !_16.done; _16 = _15.next()) {
527
- var _17 = __read(_16.value, 2), o = _17[1];
592
+ for (var _10 = __values(this._db.objects.layerIndex.entries()), _11 = _10.next(); !_11.done; _11 = _10.next()) {
593
+ var _12 = __read(_11.value, 2), o = _12[1];
528
594
  add(o);
529
595
  }
530
596
  }
531
597
  catch (e_14_1) { e_14 = { error: e_14_1 }; }
532
598
  finally {
533
599
  try {
534
- if (_16 && !_16.done && (_k = _15.return)) _k.call(_15);
600
+ if (_11 && !_11.done && (_h = _10.return)) _h.call(_10);
535
601
  }
536
602
  finally { if (e_14) throw e_14.error; }
537
603
  }
538
604
  try {
539
- for (var _18 = __values(this._db.objects.dictionaryVar.entries()), _19 = _18.next(); !_19.done; _19 = _18.next()) {
540
- var _20 = __read(_19.value, 2), o = _20[1];
605
+ for (var _13 = __values(this._db.objects.xrecord.entries()), _14 = _13.next(); !_14.done; _14 = _13.next()) {
606
+ var _15 = __read(_14.value, 2), o = _15[1];
541
607
  add(o);
542
608
  }
543
609
  }
544
610
  catch (e_15_1) { e_15 = { error: e_15_1 }; }
545
611
  finally {
546
612
  try {
547
- if (_19 && !_19.done && (_l = _18.return)) _l.call(_18);
613
+ if (_14 && !_14.done && (_j = _13.return)) _j.call(_13);
548
614
  }
549
615
  finally { if (e_15) throw e_15.error; }
550
616
  }
551
617
  try {
552
- for (var _21 = __values(this._db.objects.objectContextData.entries()), _22 = _21.next(); !_22.done; _22 = _21.next()) {
553
- var _23 = __read(_22.value, 2), o = _23[1];
618
+ for (var _16 = __values(this._db.objects.scale.entries()), _17 = _16.next(); !_17.done; _17 = _16.next()) {
619
+ var _18 = __read(_17.value, 2), o = _18[1];
554
620
  add(o);
555
621
  }
556
622
  }
557
623
  catch (e_16_1) { e_16 = { error: e_16_1 }; }
558
624
  finally {
559
625
  try {
560
- if (_22 && !_22.done && (_m = _21.return)) _m.call(_21);
626
+ if (_17 && !_17.done && (_k = _16.return)) _k.call(_16);
561
627
  }
562
628
  finally { if (e_16) throw e_16.error; }
563
629
  }
630
+ try {
631
+ for (var _19 = __values(this._db.objects.dictionaryVar.entries()), _20 = _19.next(); !_20.done; _20 = _19.next()) {
632
+ var _21 = __read(_20.value, 2), o = _21[1];
633
+ add(o);
634
+ }
635
+ }
636
+ catch (e_17_1) { e_17 = { error: e_17_1 }; }
637
+ finally {
638
+ try {
639
+ if (_20 && !_20.done && (_l = _19.return)) _l.call(_19);
640
+ }
641
+ finally { if (e_17) throw e_17.error; }
642
+ }
643
+ try {
644
+ for (var _22 = __values(this._db.objects.objectContextData.entries()), _23 = _22.next(); !_23.done; _23 = _22.next()) {
645
+ var _24 = __read(_23.value, 2), o = _24[1];
646
+ add(o);
647
+ }
648
+ }
649
+ catch (e_18_1) { e_18 = { error: e_18_1 }; }
650
+ finally {
651
+ try {
652
+ if (_23 && !_23.done && (_m = _22.return)) _m.call(_22);
653
+ }
654
+ finally { if (e_18) throw e_18.error; }
655
+ }
656
+ try {
657
+ for (var _25 = __values(this._unknownObjects), _26 = _25.next(); !_26.done; _26 = _25.next()) {
658
+ var o = _26.value;
659
+ add(o);
660
+ }
661
+ }
662
+ catch (e_19_1) { e_19 = { error: e_19_1 }; }
663
+ finally {
664
+ try {
665
+ if (_26 && !_26.done && (_o = _25.return)) _o.call(_25);
666
+ }
667
+ finally { if (e_19) throw e_19.error; }
668
+ }
564
669
  return map;
565
670
  };
566
671
  /**
@@ -570,7 +675,7 @@ var AcDbDxfObjectsReader = /** @class */ (function () {
570
675
  * {@link AcDbDatabase.getObjectById}.
571
676
  */
572
677
  AcDbDxfObjectsReader.prototype.materializeBufferedDictionaries = function () {
573
- var e_17, _a, e_18, _b, e_19, _c, e_20, _d, e_21, _e, e_22, _f, e_23, _g, e_24, _h;
678
+ var e_20, _a, e_21, _b, e_22, _c, e_23, _d, e_24, _e, e_25, _f, e_26, _g, e_27, _h;
574
679
  var _j;
575
680
  if (this._dictionaries.size === 0)
576
681
  return;
@@ -587,12 +692,12 @@ var AcDbDxfObjectsReader = /** @class */ (function () {
587
692
  }
588
693
  }
589
694
  }
590
- catch (e_17_1) { e_17 = { error: e_17_1 }; }
695
+ catch (e_20_1) { e_20 = { error: e_20_1 }; }
591
696
  finally {
592
697
  try {
593
698
  if (_l && !_l.done && (_a = _k.return)) _a.call(_k);
594
699
  }
595
- finally { if (e_17) throw e_17.error; }
700
+ finally { if (e_20) throw e_20.error; }
596
701
  }
597
702
  var materialized = new Map();
598
703
  try {
@@ -610,6 +715,8 @@ var AcDbDxfObjectsReader = /** @class */ (function () {
610
715
  this._db.releaseObjectHandle(dict);
611
716
  dict.objectId = handle;
612
717
  dict.ownerId = persist.ownerObjectId || '0';
718
+ if (persist.defaultId)
719
+ dict.defaultId = persist.defaultId;
613
720
  if (persist.extensionDictionaryId) {
614
721
  dict.extensionDictionary = persist.extensionDictionaryId;
615
722
  }
@@ -617,12 +724,12 @@ var AcDbDxfObjectsReader = /** @class */ (function () {
617
724
  materialized.set(handle, dict);
618
725
  }
619
726
  }
620
- catch (e_18_1) { e_18 = { error: e_18_1 }; }
727
+ catch (e_21_1) { e_21 = { error: e_21_1 }; }
621
728
  finally {
622
729
  try {
623
730
  if (_o && !_o.done && (_b = _m.return)) _b.call(_m);
624
731
  }
625
- finally { if (e_18) throw e_18.error; }
732
+ finally { if (e_21) throw e_21.error; }
626
733
  }
627
734
  var objectsByHandle = this.collectLoadedObjectsByHandle();
628
735
  try {
@@ -631,12 +738,12 @@ var AcDbDxfObjectsReader = /** @class */ (function () {
631
738
  objectsByHandle.set(handle, dict);
632
739
  }
633
740
  }
634
- catch (e_19_1) { e_19 = { error: e_19_1 }; }
741
+ catch (e_22_1) { e_22 = { error: e_22_1 }; }
635
742
  finally {
636
743
  try {
637
744
  if (materialized_1_1 && !materialized_1_1.done && (_c = materialized_1.return)) _c.call(materialized_1);
638
745
  }
639
- finally { if (e_19) throw e_19.error; }
746
+ finally { if (e_22) throw e_22.error; }
640
747
  }
641
748
  try {
642
749
  for (var _r = __values(this._dictionaries), _s = _r.next(); !_s.done; _s = _r.next()) {
@@ -645,7 +752,7 @@ var AcDbDxfObjectsReader = /** @class */ (function () {
645
752
  if (!dict)
646
753
  continue;
647
754
  try {
648
- for (var _u = (e_21 = void 0, __values(Object.entries(persist.entries))), _v = _u.next(); !_v.done; _v = _u.next()) {
755
+ for (var _u = (e_24 = void 0, __values(Object.entries(persist.entries))), _v = _u.next(); !_v.done; _v = _u.next()) {
649
756
  var _w = __read(_v.value, 2), entryName = _w[0], entryHandle = _w[1];
650
757
  var obj = objectsByHandle.get(normalizeHandle(entryHandle));
651
758
  if (!obj)
@@ -658,7 +765,7 @@ var AcDbDxfObjectsReader = /** @class */ (function () {
658
765
  var targetId = normalizeHandle(obj.objectId);
659
766
  var alreadyStored = false;
660
767
  try {
661
- for (var _x = (e_22 = void 0, __values(dict.entries())), _y = _x.next(); !_y.done; _y = _x.next()) {
768
+ for (var _x = (e_25 = void 0, __values(dict.entries())), _y = _x.next(); !_y.done; _y = _x.next()) {
662
769
  var _z = __read(_y.value, 2), existing = _z[1];
663
770
  if (normalizeHandle(existing.objectId) === targetId) {
664
771
  alreadyStored = true;
@@ -666,12 +773,12 @@ var AcDbDxfObjectsReader = /** @class */ (function () {
666
773
  }
667
774
  }
668
775
  }
669
- catch (e_22_1) { e_22 = { error: e_22_1 }; }
776
+ catch (e_25_1) { e_25 = { error: e_25_1 }; }
670
777
  finally {
671
778
  try {
672
779
  if (_y && !_y.done && (_f = _x.return)) _f.call(_x);
673
780
  }
674
- finally { if (e_22) throw e_22.error; }
781
+ finally { if (e_25) throw e_25.error; }
675
782
  }
676
783
  if (alreadyStored)
677
784
  continue;
@@ -683,21 +790,21 @@ var AcDbDxfObjectsReader = /** @class */ (function () {
683
790
  }
684
791
  }
685
792
  }
686
- catch (e_21_1) { e_21 = { error: e_21_1 }; }
793
+ catch (e_24_1) { e_24 = { error: e_24_1 }; }
687
794
  finally {
688
795
  try {
689
796
  if (_v && !_v.done && (_e = _u.return)) _e.call(_u);
690
797
  }
691
- finally { if (e_21) throw e_21.error; }
798
+ finally { if (e_24) throw e_24.error; }
692
799
  }
693
800
  }
694
801
  }
695
- catch (e_20_1) { e_20 = { error: e_20_1 }; }
802
+ catch (e_23_1) { e_23 = { error: e_23_1 }; }
696
803
  finally {
697
804
  try {
698
805
  if (_s && !_s.done && (_d = _r.return)) _d.call(_r);
699
806
  }
700
- finally { if (e_20) throw e_20.error; }
807
+ finally { if (e_23) throw e_23.error; }
701
808
  }
702
809
  // Attach non-typed root NOD children (e.g. AcDbVariableDictionary) so
703
810
  // callers can resolve them by name from objects.dictionary.
@@ -711,12 +818,12 @@ var AcDbDxfObjectsReader = /** @class */ (function () {
711
818
  }
712
819
  }
713
820
  }
714
- catch (e_23_1) { e_23 = { error: e_23_1 }; }
821
+ catch (e_26_1) { e_26 = { error: e_26_1 }; }
715
822
  finally {
716
823
  try {
717
824
  if (_2 && !_2.done && (_g = _1.return)) _g.call(_1);
718
825
  }
719
- finally { if (e_23) throw e_23.error; }
826
+ finally { if (e_26) throw e_26.error; }
720
827
  }
721
828
  if (!(rootPersist === null || rootPersist === void 0 ? void 0 : rootPersist.handle))
722
829
  return;
@@ -737,12 +844,12 @@ var AcDbDxfObjectsReader = /** @class */ (function () {
737
844
  }
738
845
  }
739
846
  }
740
- catch (e_24_1) { e_24 = { error: e_24_1 }; }
847
+ catch (e_27_1) { e_27 = { error: e_27_1 }; }
741
848
  finally {
742
849
  try {
743
850
  if (_4 && !_4.done && (_h = _3.return)) _h.call(_3);
744
851
  }
745
- finally { if (e_24) throw e_24.error; }
852
+ finally { if (e_27) throw e_27.error; }
746
853
  }
747
854
  };
748
855
  /**
@@ -774,13 +881,14 @@ var AcDbDxfObjectsReader = /** @class */ (function () {
774
881
  var raw = String(annoVar.value).trim();
775
882
  this._db.annoallvisible = raw !== '0' && raw.toLowerCase() !== 'false';
776
883
  };
777
- AcDbDxfObjectsReader.prototype.readPersistDictionary = function (filer) {
884
+ AcDbDxfObjectsReader.prototype.readPersistDictionary = function (filer, typeName) {
778
885
  var result = {
779
886
  handle: '',
780
887
  ownerObjectId: '',
781
888
  entries: {}
782
889
  };
783
890
  var pendingName;
891
+ var inDefaultSubclass = false;
784
892
  while (!filer.atEndOfObject && !filer.atEof && !filer.atExtendedData) {
785
893
  var item = filer.readItem();
786
894
  if (!item)
@@ -794,6 +902,9 @@ var AcDbDxfObjectsReader = /** @class */ (function () {
794
902
  result.ownerObjectId = String(item.value);
795
903
  break;
796
904
  case 100:
905
+ inDefaultSubclass =
906
+ String(item.value) === 'AcDbDictionaryWithDefault';
907
+ break;
797
908
  case 280:
798
909
  case 281:
799
910
  break;
@@ -804,7 +915,12 @@ var AcDbDxfObjectsReader = /** @class */ (function () {
804
915
  case 340:
805
916
  case 360: {
806
917
  var target = normalizeHandle(String(item.value));
807
- if (pendingName) {
918
+ if (code === 340 &&
919
+ (inDefaultSubclass || typeName === 'ACDBDICTIONARYWDFLT') &&
920
+ !pendingName) {
921
+ result.defaultId = target;
922
+ }
923
+ else if (pendingName) {
808
924
  result.entries[pendingName] = target;
809
925
  pendingName = undefined;
810
926
  }
@@ -845,7 +961,7 @@ var AcDbDxfObjectsReader = /** @class */ (function () {
845
961
  * matching {@link AcDbObjectConverter.convertLayout} resolution rules.
846
962
  */
847
963
  AcDbDxfObjectsReader.prototype.linkLayoutsToBlockTableRecords = function () {
848
- var e_25, _a, e_26, _b, e_27, _c;
964
+ var e_28, _a, e_29, _b, e_30, _c;
849
965
  var blockTable = this._db.tables.blockTable;
850
966
  var modelSpaceName = AcDbBlockTableRecord.MODEL_SPACE_NAME.toUpperCase();
851
967
  try {
@@ -860,7 +976,7 @@ var AcDbDxfObjectsReader = /** @class */ (function () {
860
976
  var layoutHandle = normalizeHandle(layout.objectId);
861
977
  var linked = false;
862
978
  try {
863
- for (var _g = (e_26 = void 0, __values(blockTable.newIterator())), _h = _g.next(); !_h.done; _h = _g.next()) {
979
+ for (var _g = (e_29 = void 0, __values(blockTable.newIterator())), _h = _g.next(); !_h.done; _h = _g.next()) {
864
980
  var btr = _h.value;
865
981
  if (normalizeHandle(btr.layoutId) === layoutHandle) {
866
982
  layout.blockTableRecordId = btr.objectId;
@@ -869,12 +985,12 @@ var AcDbDxfObjectsReader = /** @class */ (function () {
869
985
  }
870
986
  }
871
987
  }
872
- catch (e_26_1) { e_26 = { error: e_26_1 }; }
988
+ catch (e_29_1) { e_29 = { error: e_29_1 }; }
873
989
  finally {
874
990
  try {
875
991
  if (_h && !_h.done && (_b = _g.return)) _b.call(_g);
876
992
  }
877
- finally { if (e_26) throw e_26.error; }
993
+ finally { if (e_29) throw e_29.error; }
878
994
  }
879
995
  if (!linked && layout.blockTableRecordId) {
880
996
  var btr = blockTable.getIdAt(layout.blockTableRecordId);
@@ -885,7 +1001,7 @@ var AcDbDxfObjectsReader = /** @class */ (function () {
885
1001
  else if (!linked) {
886
1002
  try {
887
1003
  // Fallback: paper-space BTR whose name is not model space and has no layout yet.
888
- for (var _j = (e_27 = void 0, __values(blockTable.newIterator())), _k = _j.next(); !_k.done; _k = _j.next()) {
1004
+ for (var _j = (e_30 = void 0, __values(blockTable.newIterator())), _k = _j.next(); !_k.done; _k = _j.next()) {
889
1005
  var btr = _k.value;
890
1006
  if (btr.isPaperSapce &&
891
1007
  btr.name.toUpperCase() !== modelSpaceName &&
@@ -896,22 +1012,22 @@ var AcDbDxfObjectsReader = /** @class */ (function () {
896
1012
  }
897
1013
  }
898
1014
  }
899
- catch (e_27_1) { e_27 = { error: e_27_1 }; }
1015
+ catch (e_30_1) { e_30 = { error: e_30_1 }; }
900
1016
  finally {
901
1017
  try {
902
1018
  if (_k && !_k.done && (_c = _j.return)) _c.call(_j);
903
1019
  }
904
- finally { if (e_27) throw e_27.error; }
1020
+ finally { if (e_30) throw e_30.error; }
905
1021
  }
906
1022
  }
907
1023
  }
908
1024
  }
909
- catch (e_25_1) { e_25 = { error: e_25_1 }; }
1025
+ catch (e_28_1) { e_28 = { error: e_28_1 }; }
910
1026
  finally {
911
1027
  try {
912
1028
  if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
913
1029
  }
914
- finally { if (e_25) throw e_25.error; }
1030
+ finally { if (e_28) throw e_28.error; }
915
1031
  }
916
1032
  };
917
1033
  return AcDbDxfObjectsReader;