@mlightcad/libredwg-converter 3.15.13 → 3.15.15

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.
@@ -60,9 +60,25 @@ var __values = (this && this.__values) || function(o) {
60
60
  };
61
61
  throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
62
62
  };
63
- import { AcCmColor, AcDbBatchProcessing, AcDbBlockTableRecord, acdbCreateWorkerApi, AcDbDatabaseConverter, AcDbDictionary, AcDbDictionaryVar, AcDbDimStyleTableRecord, acdbHexStringsToBytes, acdbImportDynBlockMetadata, AcDbLayerTableRecord, AcDbLayout, AcDbLinetypeTableRecord, acdbNormalizeExtensionDictionaryId, AcDbOpenDatabaseError, AcDbRasterImageDef, acdbReadLayerFilterTree, AcDbTextStyleTableRecord, AcDbViewportTableRecord, ByLayer, DEFAULT_MLEADER_STYLE, DEFAULT_TEXT_STYLE, VPORT_FALLBACK_CENTER_2D, VPORT_FALLBACK_LLC, VPORT_FALLBACK_URC, VPORT_FALLBACK_VIEW_DIR, VPORT_FALLBACK_VIEW_TARGET } from '@mlightcad/data-model';
64
- import { AcDbEntityConverter } from './AcDbEntitiyConverter';
65
- import { AcDbObjectConverter } from './AcDbObjectConverter';
63
+ var __read = (this && this.__read) || function (o, n) {
64
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
65
+ if (!m) return o;
66
+ var i = m.call(o), r, ar = [], e;
67
+ try {
68
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
69
+ }
70
+ catch (error) { e = { error: error }; }
71
+ finally {
72
+ try {
73
+ if (r && !r.done && (m = i["return"])) m.call(i);
74
+ }
75
+ finally { if (e) throw e.error; }
76
+ }
77
+ return ar;
78
+ };
79
+ import { AcCmColor, AcDbBatchProcessing, AcDbBlockTableRecord, acdbCreateWorkerApi, AcDbDatabaseConverter, AcDbDictionary, AcDbDictionaryVar, AcDbDimStyleTableRecord, acdbHexStringsToBytes, acdbImportDynBlockMetadata, AcDbLayerTableRecord, AcDbLayout, AcDbLinetypeTableRecord, acdbNormalizeDimStyleColorNumber, acdbNormalizeExtensionDictionaryId, AcDbOpenDatabaseError, AcDbRasterImageDef, acdbReadLayerFilterTree, AcDbTextStyleTableRecord, AcDbViewportTableRecord, ByLayer, DEFAULT_MLEADER_STYLE, DEFAULT_TEXT_STYLE, VPORT_FALLBACK_CENTER_2D, VPORT_FALLBACK_LLC, VPORT_FALLBACK_URC, VPORT_FALLBACK_VIEW_DIR, VPORT_FALLBACK_VIEW_TARGET } from '@mlightcad/data-model';
80
+ import { AcDbEntityConverter } from './AcDbEntitiyConverter.js';
81
+ import { AcDbObjectConverter } from './AcDbObjectConverter.js';
66
82
  var MODEL_SPACE = '*MODEL_SPACE';
67
83
  /**
68
84
  * Database converter for DWG files based on [libredwg-web](https://github.com/mlight-lee/libredwg-web).
@@ -146,6 +162,7 @@ var AcDbLibreDwgConverter = /** @class */ (function (_super) {
146
162
  db.ensureTextStyleDefaults();
147
163
  };
148
164
  AcDbLibreDwgConverter.prototype.processDimStyles = function (model, db) {
165
+ var e_1, _a;
149
166
  var _this = this;
150
167
  var dimStyles = model.tables.DIMSTYLE.entries;
151
168
  dimStyles.forEach(function (item) {
@@ -187,9 +204,12 @@ var AcDbLibreDwgConverter = /** @class */ (function (_super) {
187
204
  dimsah: item.DIMSAH,
188
205
  dimtix: item.DIMTIX,
189
206
  dimsoxd: item.DIMSOXD,
190
- dimclrd: item.DIMCLRD,
191
- dimclre: item.DIMCLRE,
192
- dimclrt: item.DIMCLRT,
207
+ // LibreDWG returns CMC objects / packed ints for these — normalize to
208
+ // plain ACI (0/1..255/256) or packed RGB so dim block builders never
209
+ // see NaN colorIndex when constructing MTEXT.
210
+ dimclrd: acdbNormalizeDimStyleColorNumber(item.DIMCLRD),
211
+ dimclre: acdbNormalizeDimStyleColorNumber(item.DIMCLRE),
212
+ dimclrt: acdbNormalizeDimStyleColorNumber(item.DIMCLRT),
193
213
  dimadec: item.DIMADEC || 0,
194
214
  dimunit: item.DIMUNIT || 2,
195
215
  dimdec: item.DIMDEC,
@@ -211,7 +231,7 @@ var AcDbLibreDwgConverter = /** @class */ (function (_super) {
211
231
  dimfit: item.DIMFIT || 0,
212
232
  dimupt: item.DIMUPT,
213
233
  dimatfit: item.DIMATFIT,
214
- dimtxsty: DEFAULT_TEXT_STYLE, // TODO: Set correct value
234
+ dimtxsty: _this.resolveDimTextStyleName(model, item.DIMTXSTY),
215
235
  dimldrblk: '', // TODO: Set correct value
216
236
  dimblk: item.DIMBLK || '', // TODO: Set correct value
217
237
  dimblk1: item.DIMBLK1 || '', // TODO: Set correct value
@@ -223,6 +243,47 @@ var AcDbLibreDwgConverter = /** @class */ (function (_super) {
223
243
  _this.processCommonTableEntryAttrs(item, record);
224
244
  db.tables.dimStyleTable.add(record);
225
245
  });
246
+ var scales = model.dimStyleAnnotationScales;
247
+ if (scales) {
248
+ try {
249
+ for (var _b = __values(Object.entries(scales)), _c = _b.next(); !_c.done; _c = _b.next()) {
250
+ var _d = __read(_c.value, 2), name_1 = _d[0], factor = _d[1];
251
+ db.setDimStyleAnnotationScale(name_1, factor);
252
+ }
253
+ }
254
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
255
+ finally {
256
+ try {
257
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
258
+ }
259
+ finally { if (e_1) throw e_1.error; }
260
+ }
261
+ }
262
+ };
263
+ /**
264
+ * DIMTXSTY is a hard pointer. LibreDWG exposes it as a numeric handle
265
+ * (for example 0x28D → 653) rather than the text style name.
266
+ */
267
+ AcDbLibreDwgConverter.prototype.resolveDimTextStyleName = function (model, dimTxsty) {
268
+ if (typeof dimTxsty === 'string') {
269
+ var text_1 = dimTxsty.trim();
270
+ if (text_1 && !/^[0-9]+$/.test(text_1) && !/^[0-9A-F]+$/i.test(text_1)) {
271
+ return text_1;
272
+ }
273
+ if (text_1 && /[A-Z]/i.test(text_1)) {
274
+ var byHex = model.tables.STYLE.entries.find(function (entry) { return String(entry.handle).toUpperCase() === text_1.toUpperCase(); });
275
+ if (byHex === null || byHex === void 0 ? void 0 : byHex.name)
276
+ return byHex.name;
277
+ }
278
+ }
279
+ var numeric = typeof dimTxsty === 'number' ? dimTxsty : Number(dimTxsty);
280
+ if (Number.isFinite(numeric) && numeric > 0) {
281
+ var hex_1 = Math.trunc(numeric).toString(16).toUpperCase();
282
+ var match = model.tables.STYLE.entries.find(function (entry) { return String(entry.handle).toUpperCase() === hex_1; });
283
+ if (match === null || match === void 0 ? void 0 : match.name)
284
+ return match.name;
285
+ }
286
+ return DEFAULT_TEXT_STYLE;
226
287
  };
227
288
  AcDbLibreDwgConverter.prototype.processLayers = function (model, db) {
228
289
  var _this = this;
@@ -522,7 +583,7 @@ var AcDbLibreDwgConverter = /** @class */ (function (_super) {
522
583
  }); });
523
584
  };
524
585
  AcDbLibreDwgConverter.prototype.processHeader = function (model, db) {
525
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
586
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
526
587
  var thumbnail = model.thumbnailImage;
527
588
  if (thumbnail === null || thumbnail === void 0 ? void 0 : thumbnail.length) {
528
589
  db.thumbnailImage = thumbnail;
@@ -564,7 +625,13 @@ var AcDbLibreDwgConverter = /** @class */ (function (_super) {
564
625
  db.pdmode = (_j = header.PDMODE) !== null && _j !== void 0 ? _j : 0;
565
626
  db.pdsize = (_k = header.PDSIZE) !== null && _k !== void 0 ? _k : 0.0;
566
627
  db.textstyle = (_l = header.TEXTSTYLE) !== null && _l !== void 0 ? _l : DEFAULT_TEXT_STYLE;
567
- var cmleaderStyle = (_m = this.normalizeHeaderStringValue(header.CMLEADERSTYLE)) !== null && _m !== void 0 ? _m : DEFAULT_MLEADER_STYLE;
628
+ // Match DXF header reader: new dimensions must inherit $DIMSTYLE.
629
+ // Without this, DWG loads leave db.dimstyle as the constructor default
630
+ // ("Standard"), so dims pick imperial 0.18 text/arrow while the drawing's
631
+ // active style (e.g. metric "2-1" with dimtxt/dimasz=3) is ignored.
632
+ db.dimstyle =
633
+ (_m = this.normalizeHeaderStringValue(header.DIMSTYLE)) !== null && _m !== void 0 ? _m : DEFAULT_TEXT_STYLE;
634
+ var cmleaderStyle = (_o = this.normalizeHeaderStringValue(header.CMLEADERSTYLE)) !== null && _o !== void 0 ? _o : DEFAULT_MLEADER_STYLE;
568
635
  db.cmleaderstyle = cmleaderStyle;
569
636
  };
570
637
  AcDbLibreDwgConverter.prototype.processCommonTableEntryAttrs = function (entry, dbEntry) {
@@ -580,6 +647,13 @@ var AcDbLibreDwgConverter = /** @class */ (function (_super) {
580
647
  this.processScales(model, db);
581
648
  this.processDictionaryVars(model, db);
582
649
  this.processMTextObjectContextData(model, db);
650
+ this.processTextObjectContextData(model, db);
651
+ this.processDimensionObjectContextData(model, db);
652
+ this.processHatchScaleContextData(model, db);
653
+ this.processBlkRefObjectContextData(model, db);
654
+ this.processLeaderObjectContextData(model, db);
655
+ this.processMLeaderObjectContextData(model, db);
656
+ this.processMTextAttributeObjectContextData(model, db);
583
657
  this.processXRecords(model, db);
584
658
  this.processLayouts(model, db);
585
659
  this.processImageDefs(model, db);
@@ -589,6 +663,7 @@ var AcDbLibreDwgConverter = /** @class */ (function (_super) {
589
663
  this.processMLeaderStyles(model, db);
590
664
  this.processDynBlockMetadata(model, db);
591
665
  this.finishCannoscale(model, db);
666
+ this.finishAnnoallvisible(model, db);
592
667
  };
593
668
  /**
594
669
  * Imports extension dictionaries and (when present) representation pointers
@@ -601,7 +676,7 @@ var AcDbLibreDwgConverter = /** @class */ (function (_super) {
601
676
  * placeholder is created by {@link acdbImportDynBlockMetadata}.
602
677
  */
603
678
  AcDbLibreDwgConverter.prototype.processDynBlockMetadata = function (model, db) {
604
- var e_1, _a;
679
+ var e_2, _a;
605
680
  var _b, _c;
606
681
  var normalize = function (handle) {
607
682
  return handle == null || handle === '' || handle === 0
@@ -622,12 +697,12 @@ var AcDbLibreDwgConverter = /** @class */ (function (_super) {
622
697
  }
623
698
  }
624
699
  }
625
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
700
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
626
701
  finally {
627
702
  try {
628
703
  if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
629
704
  }
630
- finally { if (e_1) throw e_1.error; }
705
+ finally { if (e_2) throw e_2.error; }
631
706
  }
632
707
  var dictObjects = model.objects.DICTIONARY;
633
708
  if (!(dictObjects === null || dictObjects === void 0 ? void 0 : dictObjects.length))
@@ -636,10 +711,10 @@ var AcDbLibreDwgConverter = /** @class */ (function (_super) {
636
711
  var _a;
637
712
  var entries = [];
638
713
  var src = (_a = dict.entries) !== null && _a !== void 0 ? _a : {};
639
- for (var name_1 in src) {
640
- var target = src[name_1];
641
- if (name_1 && target) {
642
- entries.push({ name: name_1, handle: normalize(String(target)) });
714
+ for (var name_2 in src) {
715
+ var target = src[name_2];
716
+ if (name_2 && target) {
717
+ entries.push({ name: name_2, handle: normalize(String(target)) });
643
718
  }
644
719
  }
645
720
  return {
@@ -679,10 +754,10 @@ var AcDbLibreDwgConverter = /** @class */ (function (_super) {
679
754
  var _a;
680
755
  var entries = {};
681
756
  var src = (_a = dict.entries) !== null && _a !== void 0 ? _a : {};
682
- for (var name_2 in src) {
683
- var target = src[name_2];
684
- if (name_2 && target) {
685
- entries[name_2] = normalize(String(target));
757
+ for (var name_3 in src) {
758
+ var target = src[name_3];
759
+ if (name_3 && target) {
760
+ entries[name_3] = normalize(String(target));
686
761
  }
687
762
  }
688
763
  dictionaries.set(normalize(dict.handle), {
@@ -714,7 +789,7 @@ var AcDbLibreDwgConverter = /** @class */ (function (_super) {
714
789
  var layoutDict = db.objects.layout;
715
790
  var layouts = model.objects.LAYOUT;
716
791
  layouts.forEach(function (layout) {
717
- var e_2, _a;
792
+ var e_3, _a;
718
793
  var dbLayout = new AcDbLayout();
719
794
  dbLayout.layoutName = layout.layoutName;
720
795
  dbLayout.tabOrder = layout.tabOrder;
@@ -734,12 +809,12 @@ var AcDbLibreDwgConverter = /** @class */ (function (_super) {
734
809
  }
735
810
  }
736
811
  }
737
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
812
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
738
813
  finally {
739
814
  try {
740
815
  if (btrs_1_1 && !btrs_1_1.done && (_a = btrs_1.return)) _a.call(btrs_1);
741
816
  }
742
- finally { if (e_2) throw e_2.error; }
817
+ finally { if (e_3) throw e_3.error; }
743
818
  }
744
819
  // If the layout is not found in the block table due to some unknow reason,
745
820
  // let's set the model space block table record id.
@@ -804,7 +879,7 @@ var AcDbLibreDwgConverter = /** @class */ (function (_super) {
804
879
  });
805
880
  };
806
881
  AcDbLibreDwgConverter.prototype.processScales = function (model, db) {
807
- var e_3, _a;
882
+ var e_4, _a;
808
883
  var scales = this.optionalObjectArray(model, 'SCALE');
809
884
  if (!(scales === null || scales === void 0 ? void 0 : scales.length))
810
885
  return;
@@ -819,16 +894,16 @@ var AcDbLibreDwgConverter = /** @class */ (function (_super) {
819
894
  scaleDict.setAt(key, dbScale);
820
895
  }
821
896
  }
822
- catch (e_3_1) { e_3 = { error: e_3_1 }; }
897
+ catch (e_4_1) { e_4 = { error: e_4_1 }; }
823
898
  finally {
824
899
  try {
825
900
  if (scales_1_1 && !scales_1_1.done && (_a = scales_1.return)) _a.call(scales_1);
826
901
  }
827
- finally { if (e_3) throw e_3.error; }
902
+ finally { if (e_4) throw e_4.error; }
828
903
  }
829
904
  };
830
905
  AcDbLibreDwgConverter.prototype.processDictionaryVars = function (model, db) {
831
- var e_4, _a;
906
+ var e_5, _a;
832
907
  var dictVars = this.optionalObjectArray(model, 'DICTIONARYVAR');
833
908
  if (!(dictVars === null || dictVars === void 0 ? void 0 : dictVars.length))
834
909
  return;
@@ -842,16 +917,16 @@ var AcDbLibreDwgConverter = /** @class */ (function (_super) {
842
917
  dictVarDict.setAt(dbVar.objectId, dbVar);
843
918
  }
844
919
  }
845
- catch (e_4_1) { e_4 = { error: e_4_1 }; }
920
+ catch (e_5_1) { e_5 = { error: e_5_1 }; }
846
921
  finally {
847
922
  try {
848
923
  if (dictVars_1_1 && !dictVars_1_1.done && (_a = dictVars_1.return)) _a.call(dictVars_1);
849
924
  }
850
- finally { if (e_4) throw e_4.error; }
925
+ finally { if (e_5) throw e_5.error; }
851
926
  }
852
927
  };
853
928
  AcDbLibreDwgConverter.prototype.processMTextObjectContextData = function (model, db) {
854
- var e_5, _a;
929
+ var e_6, _a;
855
930
  var _b;
856
931
  var contexts = (_b = this.optionalObjectArray(model, 'MTEXTOBJECTCONTEXTDATA')) !== null && _b !== void 0 ? _b : this.optionalObjectArray(model, 'ACDB_MTEXTOBJECTCONTEXTDATA_CLASS');
857
932
  if (!(contexts === null || contexts === void 0 ? void 0 : contexts.length))
@@ -866,16 +941,214 @@ var AcDbLibreDwgConverter = /** @class */ (function (_super) {
866
941
  contextDict.setAt(dbContext.objectId, dbContext);
867
942
  }
868
943
  }
869
- catch (e_5_1) { e_5 = { error: e_5_1 }; }
944
+ catch (e_6_1) { e_6 = { error: e_6_1 }; }
870
945
  finally {
871
946
  try {
872
947
  if (contexts_1_1 && !contexts_1_1.done && (_a = contexts_1.return)) _a.call(contexts_1);
873
948
  }
874
- finally { if (e_5) throw e_5.error; }
949
+ finally { if (e_6) throw e_6.error; }
950
+ }
951
+ };
952
+ AcDbLibreDwgConverter.prototype.processDimensionObjectContextData = function (model, db) {
953
+ var e_7, _a, e_8, _b;
954
+ var keys = [
955
+ 'ALDIMOBJECTCONTEXTDATA',
956
+ 'ACDB_ALDIMOBJECTCONTEXTDATA_CLASS',
957
+ 'ANGDIMOBJECTCONTEXTDATA',
958
+ 'ACDB_ANGDIMOBJECTCONTEXTDATA_CLASS',
959
+ 'ARCDIMOBJECTCONTEXTDATA',
960
+ 'ACDB_ARCDIMOBJECTCONTEXTDATA_CLASS',
961
+ 'DMDIMOBJECTCONTEXTDATA',
962
+ 'ACDB_DMDIMOBJECTCONTEXTDATA_CLASS',
963
+ 'ORDDIMOBJECTCONTEXTDATA',
964
+ 'ACDB_ORDDIMOBJECTCONTEXTDATA_CLASS',
965
+ 'RADDIMOBJECTCONTEXTDATA',
966
+ 'ACDB_RADDIMOBJECTCONTEXTDATA_CLASS',
967
+ 'RADIMOBJECTCONTEXTDATA',
968
+ 'ACDB_RADIMOBJECTCONTEXTDATA_CLASS',
969
+ 'RADDIMLGCOBJECTCONTEXTDATA',
970
+ 'ACDB_RADDIMLGCOBJECTCONTEXTDATA_CLASS'
971
+ ];
972
+ var objectConverter = new AcDbObjectConverter();
973
+ var contextDict = db.objects.objectContextData;
974
+ try {
975
+ for (var keys_1 = __values(keys), keys_1_1 = keys_1.next(); !keys_1_1.done; keys_1_1 = keys_1.next()) {
976
+ var key = keys_1_1.value;
977
+ var contexts = this.optionalObjectArray(model, key);
978
+ if (!(contexts === null || contexts === void 0 ? void 0 : contexts.length))
979
+ continue;
980
+ try {
981
+ for (var contexts_2 = (e_8 = void 0, __values(contexts)), contexts_2_1 = contexts_2.next(); !contexts_2_1.done; contexts_2_1 = contexts_2.next()) {
982
+ var context = contexts_2_1.value;
983
+ var dbContext = objectConverter.convertDimensionObjectContextData(context);
984
+ if (dbContext.objectId) {
985
+ contextDict.setAt(dbContext.objectId, dbContext);
986
+ }
987
+ }
988
+ }
989
+ catch (e_8_1) { e_8 = { error: e_8_1 }; }
990
+ finally {
991
+ try {
992
+ if (contexts_2_1 && !contexts_2_1.done && (_b = contexts_2.return)) _b.call(contexts_2);
993
+ }
994
+ finally { if (e_8) throw e_8.error; }
995
+ }
996
+ }
997
+ }
998
+ catch (e_7_1) { e_7 = { error: e_7_1 }; }
999
+ finally {
1000
+ try {
1001
+ if (keys_1_1 && !keys_1_1.done && (_a = keys_1.return)) _a.call(keys_1);
1002
+ }
1003
+ finally { if (e_7) throw e_7.error; }
1004
+ }
1005
+ };
1006
+ AcDbLibreDwgConverter.prototype.processTextObjectContextData = function (model, db) {
1007
+ var e_9, _a;
1008
+ var _b;
1009
+ var contexts = (_b = this.optionalObjectArray(model, 'TEXTOBJECTCONTEXTDATA')) !== null && _b !== void 0 ? _b : this.optionalObjectArray(model, 'ACDB_TEXTOBJECTCONTEXTDATA_CLASS');
1010
+ if (!(contexts === null || contexts === void 0 ? void 0 : contexts.length))
1011
+ return;
1012
+ var contextDict = db.objects.objectContextData;
1013
+ var objectConverter = new AcDbObjectConverter();
1014
+ try {
1015
+ for (var contexts_3 = __values(contexts), contexts_3_1 = contexts_3.next(); !contexts_3_1.done; contexts_3_1 = contexts_3.next()) {
1016
+ var context = contexts_3_1.value;
1017
+ var dbContext = objectConverter.convertTextObjectContextData(context);
1018
+ if (dbContext.objectId)
1019
+ contextDict.setAt(dbContext.objectId, dbContext);
1020
+ }
1021
+ }
1022
+ catch (e_9_1) { e_9 = { error: e_9_1 }; }
1023
+ finally {
1024
+ try {
1025
+ if (contexts_3_1 && !contexts_3_1.done && (_a = contexts_3.return)) _a.call(contexts_3);
1026
+ }
1027
+ finally { if (e_9) throw e_9.error; }
1028
+ }
1029
+ };
1030
+ AcDbLibreDwgConverter.prototype.processHatchScaleContextData = function (model, db) {
1031
+ var e_10, _a;
1032
+ var _b;
1033
+ var contexts = (_b = this.optionalObjectArray(model, 'HATCHSCALECONTEXTDATA')) !== null && _b !== void 0 ? _b : this.optionalObjectArray(model, 'ACDB_HATCHSCALECONTEXTDATA_CLASS');
1034
+ if (!(contexts === null || contexts === void 0 ? void 0 : contexts.length))
1035
+ return;
1036
+ var contextDict = db.objects.objectContextData;
1037
+ var objectConverter = new AcDbObjectConverter();
1038
+ try {
1039
+ for (var contexts_4 = __values(contexts), contexts_4_1 = contexts_4.next(); !contexts_4_1.done; contexts_4_1 = contexts_4.next()) {
1040
+ var context = contexts_4_1.value;
1041
+ var dbContext = objectConverter.convertHatchScaleContextData(context);
1042
+ if (dbContext.objectId)
1043
+ contextDict.setAt(dbContext.objectId, dbContext);
1044
+ }
1045
+ }
1046
+ catch (e_10_1) { e_10 = { error: e_10_1 }; }
1047
+ finally {
1048
+ try {
1049
+ if (contexts_4_1 && !contexts_4_1.done && (_a = contexts_4.return)) _a.call(contexts_4);
1050
+ }
1051
+ finally { if (e_10) throw e_10.error; }
1052
+ }
1053
+ };
1054
+ AcDbLibreDwgConverter.prototype.processBlkRefObjectContextData = function (model, db) {
1055
+ var e_11, _a;
1056
+ var _b;
1057
+ var contexts = (_b = this.optionalObjectArray(model, 'BLKREFOBJECTCONTEXTDATA')) !== null && _b !== void 0 ? _b : this.optionalObjectArray(model, 'ACDB_BLKREFOBJECTCONTEXTDATA_CLASS');
1058
+ if (!(contexts === null || contexts === void 0 ? void 0 : contexts.length))
1059
+ return;
1060
+ var contextDict = db.objects.objectContextData;
1061
+ var objectConverter = new AcDbObjectConverter();
1062
+ try {
1063
+ for (var contexts_5 = __values(contexts), contexts_5_1 = contexts_5.next(); !contexts_5_1.done; contexts_5_1 = contexts_5.next()) {
1064
+ var context = contexts_5_1.value;
1065
+ var dbContext = objectConverter.convertBlkRefObjectContextData(context);
1066
+ if (dbContext.objectId)
1067
+ contextDict.setAt(dbContext.objectId, dbContext);
1068
+ }
1069
+ }
1070
+ catch (e_11_1) { e_11 = { error: e_11_1 }; }
1071
+ finally {
1072
+ try {
1073
+ if (contexts_5_1 && !contexts_5_1.done && (_a = contexts_5.return)) _a.call(contexts_5);
1074
+ }
1075
+ finally { if (e_11) throw e_11.error; }
1076
+ }
1077
+ };
1078
+ AcDbLibreDwgConverter.prototype.processLeaderObjectContextData = function (model, db) {
1079
+ var e_12, _a;
1080
+ var _b;
1081
+ var contexts = (_b = this.optionalObjectArray(model, 'LEADEROBJECTCONTEXTDATA')) !== null && _b !== void 0 ? _b : this.optionalObjectArray(model, 'ACDB_LEADEROBJECTCONTEXTDATA_CLASS');
1082
+ if (!(contexts === null || contexts === void 0 ? void 0 : contexts.length))
1083
+ return;
1084
+ var contextDict = db.objects.objectContextData;
1085
+ var objectConverter = new AcDbObjectConverter();
1086
+ try {
1087
+ for (var contexts_6 = __values(contexts), contexts_6_1 = contexts_6.next(); !contexts_6_1.done; contexts_6_1 = contexts_6.next()) {
1088
+ var context = contexts_6_1.value;
1089
+ var dbContext = objectConverter.convertLeaderObjectContextData(context);
1090
+ if (dbContext.objectId)
1091
+ contextDict.setAt(dbContext.objectId, dbContext);
1092
+ }
1093
+ }
1094
+ catch (e_12_1) { e_12 = { error: e_12_1 }; }
1095
+ finally {
1096
+ try {
1097
+ if (contexts_6_1 && !contexts_6_1.done && (_a = contexts_6.return)) _a.call(contexts_6);
1098
+ }
1099
+ finally { if (e_12) throw e_12.error; }
1100
+ }
1101
+ };
1102
+ AcDbLibreDwgConverter.prototype.processMLeaderObjectContextData = function (model, db) {
1103
+ var e_13, _a;
1104
+ var _b;
1105
+ var contexts = (_b = this.optionalObjectArray(model, 'MLEADEROBJECTCONTEXTDATA')) !== null && _b !== void 0 ? _b : this.optionalObjectArray(model, 'ACDB_MLEADEROBJECTCONTEXTDATA_CLASS');
1106
+ if (!(contexts === null || contexts === void 0 ? void 0 : contexts.length))
1107
+ return;
1108
+ var contextDict = db.objects.objectContextData;
1109
+ var objectConverter = new AcDbObjectConverter();
1110
+ try {
1111
+ for (var contexts_7 = __values(contexts), contexts_7_1 = contexts_7.next(); !contexts_7_1.done; contexts_7_1 = contexts_7.next()) {
1112
+ var context = contexts_7_1.value;
1113
+ var dbContext = objectConverter.convertMLeaderObjectContextData(context);
1114
+ if (dbContext.objectId)
1115
+ contextDict.setAt(dbContext.objectId, dbContext);
1116
+ }
1117
+ }
1118
+ catch (e_13_1) { e_13 = { error: e_13_1 }; }
1119
+ finally {
1120
+ try {
1121
+ if (contexts_7_1 && !contexts_7_1.done && (_a = contexts_7.return)) _a.call(contexts_7);
1122
+ }
1123
+ finally { if (e_13) throw e_13.error; }
1124
+ }
1125
+ };
1126
+ AcDbLibreDwgConverter.prototype.processMTextAttributeObjectContextData = function (model, db) {
1127
+ var e_14, _a;
1128
+ var _b;
1129
+ var contexts = (_b = this.optionalObjectArray(model, 'MTEXTATTRIBUTEOBJECTCONTEXTDATA')) !== null && _b !== void 0 ? _b : this.optionalObjectArray(model, 'ACDB_MTEXTATTRIBUTEOBJECTCONTEXTDATA_CLASS');
1130
+ if (!(contexts === null || contexts === void 0 ? void 0 : contexts.length))
1131
+ return;
1132
+ var contextDict = db.objects.objectContextData;
1133
+ var objectConverter = new AcDbObjectConverter();
1134
+ try {
1135
+ for (var contexts_8 = __values(contexts), contexts_8_1 = contexts_8.next(); !contexts_8_1.done; contexts_8_1 = contexts_8.next()) {
1136
+ var context = contexts_8_1.value;
1137
+ var dbContext = objectConverter.convertMTextAttributeObjectContextData(context);
1138
+ if (dbContext.objectId)
1139
+ contextDict.setAt(dbContext.objectId, dbContext);
1140
+ }
1141
+ }
1142
+ catch (e_14_1) { e_14 = { error: e_14_1 }; }
1143
+ finally {
1144
+ try {
1145
+ if (contexts_8_1 && !contexts_8_1.done && (_a = contexts_8.return)) _a.call(contexts_8);
1146
+ }
1147
+ finally { if (e_14) throw e_14.error; }
875
1148
  }
876
1149
  };
877
1150
  AcDbLibreDwgConverter.prototype.processXRecords = function (model, db) {
878
- var e_6, _a;
1151
+ var e_15, _a;
879
1152
  var xrecords = model.objects.XRECORD;
880
1153
  if (!(xrecords === null || xrecords === void 0 ? void 0 : xrecords.length))
881
1154
  return;
@@ -889,12 +1162,12 @@ var AcDbLibreDwgConverter = /** @class */ (function (_super) {
889
1162
  xrecordDict.setAt(dbXrecord.objectId, dbXrecord);
890
1163
  }
891
1164
  }
892
- catch (e_6_1) { e_6 = { error: e_6_1 }; }
1165
+ catch (e_15_1) { e_15 = { error: e_15_1 }; }
893
1166
  finally {
894
1167
  try {
895
1168
  if (xrecords_1_1 && !xrecords_1_1.done && (_a = xrecords_1.return)) _a.call(xrecords_1);
896
1169
  }
897
- finally { if (e_6) throw e_6.error; }
1170
+ finally { if (e_15) throw e_15.error; }
898
1171
  }
899
1172
  };
900
1173
  /**
@@ -902,7 +1175,7 @@ var AcDbLibreDwgConverter = /** @class */ (function (_super) {
902
1175
  * dictionaries have been materialized.
903
1176
  */
904
1177
  AcDbLibreDwgConverter.prototype.finishCannoscale = function (model, db) {
905
- var e_7, _a;
1178
+ var e_16, _a;
906
1179
  var _b, _c;
907
1180
  var tryRead = function (variableDict) {
908
1181
  var cannoscaleVar = variableDict.getAt('CANNOSCALE');
@@ -943,12 +1216,57 @@ var AcDbLibreDwgConverter = /** @class */ (function (_super) {
943
1216
  return;
944
1217
  }
945
1218
  }
946
- catch (e_7_1) { e_7 = { error: e_7_1 }; }
1219
+ catch (e_16_1) { e_16 = { error: e_16_1 }; }
947
1220
  finally {
948
1221
  try {
949
1222
  if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
950
1223
  }
951
- finally { if (e_7) throw e_7.error; }
1224
+ finally { if (e_16) throw e_16.error; }
1225
+ }
1226
+ };
1227
+ /**
1228
+ * Reads ANNOALLVISIBLE from AcDbVariableDictionary → DICTIONARYVAR.
1229
+ */
1230
+ AcDbLibreDwgConverter.prototype.finishAnnoallvisible = function (model, db) {
1231
+ var e_17, _a;
1232
+ var _b, _c;
1233
+ var tryRead = function (variableDict) {
1234
+ var annoVar = variableDict.getAt('ANNOALLVISIBLE');
1235
+ if (!(annoVar instanceof AcDbDictionaryVar) || annoVar.value == null) {
1236
+ return false;
1237
+ }
1238
+ var raw = String(annoVar.value).trim();
1239
+ db.annoallvisible = raw !== '0' && raw.toLowerCase() !== 'false';
1240
+ return true;
1241
+ };
1242
+ var fromRoot = db.objects.dictionary.getAt('AcDbVariableDictionary');
1243
+ if (fromRoot instanceof AcDbDictionary && tryRead(fromRoot))
1244
+ return;
1245
+ var normalize = function (handle) {
1246
+ return handle == null || handle === '' || handle === 0
1247
+ ? ''
1248
+ : String(handle).trim().toUpperCase();
1249
+ };
1250
+ try {
1251
+ for (var _d = __values((_b = model.objects.DICTIONARY) !== null && _b !== void 0 ? _b : []), _e = _d.next(); !_e.done; _e = _d.next()) {
1252
+ var dict = _e.value;
1253
+ var entries = (_c = dict.entries) !== null && _c !== void 0 ? _c : {};
1254
+ var childHandle = entries['AcDbVariableDictionary'];
1255
+ if (!childHandle)
1256
+ continue;
1257
+ var variableDict = db.getObjectById(normalize(childHandle));
1258
+ if (!(variableDict instanceof AcDbDictionary))
1259
+ continue;
1260
+ if (tryRead(variableDict))
1261
+ return;
1262
+ }
1263
+ }
1264
+ catch (e_17_1) { e_17 = { error: e_17_1 }; }
1265
+ finally {
1266
+ try {
1267
+ if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
1268
+ }
1269
+ finally { if (e_17) throw e_17.error; }
952
1270
  }
953
1271
  };
954
1272
  /** Reads optional object arrays that newer libredwg-web builds may expose. */
@@ -977,7 +1295,7 @@ var AcDbLibreDwgConverter = /** @class */ (function (_super) {
977
1295
  * @returns A new array of entities grouped by their `type` property.
978
1296
  */
979
1297
  AcDbLibreDwgConverter.prototype.groupAndFlattenByType = function (entities) {
980
- var e_8, _a, e_9, _b;
1298
+ var e_18, _a, e_19, _b;
981
1299
  var groups = {};
982
1300
  var order = [];
983
1301
  try {
@@ -990,12 +1308,12 @@ var AcDbLibreDwgConverter = /** @class */ (function (_super) {
990
1308
  groups[entity.type].push(entity);
991
1309
  }
992
1310
  }
993
- catch (e_8_1) { e_8 = { error: e_8_1 }; }
1311
+ catch (e_18_1) { e_18 = { error: e_18_1 }; }
994
1312
  finally {
995
1313
  try {
996
1314
  if (entities_1_1 && !entities_1_1.done && (_a = entities_1.return)) _a.call(entities_1);
997
1315
  }
998
- finally { if (e_8) throw e_8.error; }
1316
+ finally { if (e_18) throw e_18.error; }
999
1317
  }
1000
1318
  var result = [];
1001
1319
  try {
@@ -1008,12 +1326,12 @@ var AcDbLibreDwgConverter = /** @class */ (function (_super) {
1008
1326
  }
1009
1327
  }
1010
1328
  }
1011
- catch (e_9_1) { e_9 = { error: e_9_1 }; }
1329
+ catch (e_19_1) { e_19 = { error: e_19_1 }; }
1012
1330
  finally {
1013
1331
  try {
1014
1332
  if (order_1_1 && !order_1_1.done && (_b = order_1.return)) _b.call(order_1);
1015
1333
  }
1016
- finally { if (e_9) throw e_9.error; }
1334
+ finally { if (e_19) throw e_19.error; }
1017
1335
  }
1018
1336
  return result;
1019
1337
  };