@mlightcad/libredwg-web 0.7.3 → 0.7.5

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 (43) hide show
  1. package/dist/libredwg-web.js +1347 -5023
  2. package/dist/libredwg-web.umd.cjs +1347 -5026
  3. package/lib/converter/converter.d.ts +2 -0
  4. package/lib/converter/converter.js +272 -348
  5. package/lib/converter/dwgColorToMLeaderRawColor.d.ts +10 -0
  6. package/lib/converter/dwgColorToMLeaderRawColor.js +55 -0
  7. package/lib/converter/entityConverter.d.ts +3 -1
  8. package/lib/converter/entityConverter.js +679 -562
  9. package/lib/converter/index.d.ts +1 -0
  10. package/lib/converter/index.js +1 -0
  11. package/lib/database/database.d.ts +2 -1
  12. package/lib/database/entities/index.d.ts +2 -0
  13. package/lib/database/entities/index.js +2 -0
  14. package/lib/database/entities/multileader.d.ts +190 -0
  15. package/lib/database/entities/multileader.js +2 -0
  16. package/lib/database/entities/shape.d.ts +50 -0
  17. package/lib/database/entities/shape.js +2 -0
  18. package/lib/database/objects/index.d.ts +1 -0
  19. package/lib/database/objects/index.js +1 -0
  20. package/lib/database/objects/mleaderStyle.d.ts +101 -0
  21. package/lib/database/objects/mleaderStyle.js +2 -0
  22. package/lib/libredwg.d.ts +61 -0
  23. package/lib/libredwg.js +127 -21
  24. package/lib/types/enums.d.ts +17 -0
  25. package/lib/types/enums.js +18 -0
  26. package/package.json +11 -4
  27. package/wasm/libredwg-web.d.ts +24 -0
  28. package/wasm/libredwg-web.js +1 -1
  29. package/wasm/libredwg-web.wasm +0 -0
  30. package/lib/converter/stringConverter.d.ts +0 -3
  31. package/lib/converter/stringConverter.js +0 -7
  32. package/lib/database/entities/unknown.d.ts +0 -7
  33. package/lib/database/entities/unknown.js +0 -2
  34. package/lib/database/objects/unknown.d.ts +0 -7
  35. package/lib/database/objects/unknown.js +0 -2
  36. package/lib/debug.d.ts +0 -13
  37. package/lib/debug.js +0 -48
  38. package/lib/libredwg-web.d.ts +0 -3
  39. package/lib/libredwg-web.js +0 -2313
  40. package/lib/utils/common.d.ts +0 -4
  41. package/lib/utils/common.js +0 -12
  42. package/lib/utils/index.d.ts +0 -2
  43. package/lib/utils/index.js +0 -2
@@ -1,5 +1,6 @@
1
1
  import { HEADER_VARIABLES } from '../database';
2
- import { Dwg_Object_Type } from '../types';
2
+ import { Dwg_Object_Supertype, Dwg_Object_Type } from '../types';
3
+ import { dwgColorToMLeaderRawColor } from './dwgColorToMLeaderRawColor';
3
4
  import { LibreEntityConverter } from './entityConverter';
4
5
  import { idToString, isModelSpace, isPaperSpace } from './utils';
5
6
  /**
@@ -42,6 +43,7 @@ export class LibreDwgConverter {
42
43
  DICTIONARY: [],
43
44
  IMAGEDEF: [],
44
45
  LAYOUT: [],
46
+ MLEADERSTYLE: [],
45
47
  SPATIAL_FILTER: []
46
48
  },
47
49
  header: {},
@@ -56,7 +58,7 @@ export class LibreDwgConverter {
56
58
  for (let i = 0; i < num_objects; i++) {
57
59
  const obj = libredwg.dwg_get_object(data, i);
58
60
  if (obj) {
59
- const tio = libredwg.dwg_object_to_object_tio(obj);
61
+ const tio = this.safeObjectTio(obj);
60
62
  if (tio) {
61
63
  const fixedtype = libredwg.dwg_object_get_fixedtype(obj);
62
64
  switch (fixedtype) {
@@ -83,7 +85,7 @@ export class LibreDwgConverter {
83
85
  for (let i = 0; i < num_objects; i++) {
84
86
  const obj = libredwg.dwg_get_object(data, i);
85
87
  if (obj) {
86
- const tio = libredwg.dwg_object_to_object_tio(obj);
88
+ const tio = this.safeObjectTio(obj);
87
89
  if (tio) {
88
90
  const fixedtype = libredwg.dwg_object_get_fixedtype(obj);
89
91
  switch (fixedtype) {
@@ -128,6 +130,9 @@ export class LibreDwgConverter {
128
130
  case Dwg_Object_Type.DWG_TYPE_LAYOUT:
129
131
  db.objects.LAYOUT.push(this.convertLayout(tio, obj));
130
132
  break;
133
+ case Dwg_Object_Type.DWG_TYPE_MLEADERSTYLE:
134
+ db.objects.MLEADERSTYLE.push(this.convertMLeaderStyle(tio, obj));
135
+ break;
131
136
  case Dwg_Object_Type.DWG_TYPE_SPATIAL_FILTER:
132
137
  db.objects.SPATIAL_FILTER.push(this.convertSpatialFilter(tio, obj));
133
138
  break;
@@ -156,6 +161,20 @@ export class LibreDwgConverter {
156
161
  unknownEntityCount: this.entityConverter.unknownEntityCount
157
162
  };
158
163
  }
164
+ safeObjectTio(obj) {
165
+ const libredwg = this.libredwg;
166
+ try {
167
+ if (libredwg.dwg_object_get_supertype(obj) !=
168
+ Dwg_Object_Supertype.DWG_SUPERTYPE_OBJECT) {
169
+ return null;
170
+ }
171
+ const tio = libredwg.dwg_object_to_object_tio(obj);
172
+ return tio ? tio : null;
173
+ }
174
+ catch {
175
+ return null;
176
+ }
177
+ }
159
178
  convertHeader(data, header) {
160
179
  const libredwg = this.libredwg;
161
180
  HEADER_VARIABLES.forEach(name => {
@@ -163,7 +182,7 @@ export class LibreDwgConverter {
163
182
  if (name == 'DIMBLK' || name == 'DIMBLK1' || name == 'DIMBLK2') {
164
183
  var_name = var_name + '_T';
165
184
  }
166
- let value = libredwg.dwg_dynapi_header_value(data, var_name).data;
185
+ let value = libredwg.dwg_dynapi_header_data(data, var_name);
167
186
  // Get object name if the 'value' is one Dwg_Object_Ref instance.
168
187
  // TODO: handle 'CMLSTYLE' correctly
169
188
  if (name == 'CELTYPE' ||
@@ -172,10 +191,10 @@ export class LibreDwgConverter {
172
191
  name == 'DIMSTYLE' ||
173
192
  name == 'DIMTXSTY' ||
174
193
  name == 'TEXTSTYLE') {
175
- value = !!value ? libredwg.dwg_ref_get_object_name(value) : '';
194
+ value = value ? libredwg.dwg_ref_get_object_name(value) : '';
176
195
  }
177
196
  else if (name == 'DRAGVS') {
178
- value = !!value ? libredwg.dwg_ref_get_absref(value) : 2;
197
+ value = value ? (libredwg.dwg_ref_get_absref(value) ?? 2) : 2;
179
198
  }
180
199
  // @ts-expect-error header variable name
181
200
  header[name] = value;
@@ -201,8 +220,8 @@ export class LibreDwgConverter {
201
220
  }
202
221
  convertAppId(item) {
203
222
  const libredwg = this.libredwg;
204
- const name = libredwg.dwg_dynapi_entity_value(item, 'name').data;
205
- const flag = libredwg.dwg_dynapi_entity_value(item, 'flag').data;
223
+ const name = libredwg.dwg_dynapi_entity_data(item, 'name');
224
+ const flag = libredwg.dwg_dynapi_entity_data(item, 'flag');
206
225
  return {
207
226
  name: name,
208
227
  standardFlag: flag
@@ -218,21 +237,15 @@ export class LibreDwgConverter {
218
237
  commonAttrs.name = block.name;
219
238
  }
220
239
  // The number of entities
221
- const num_owned = libredwg.dwg_dynapi_entity_value(item, 'num_owned')
222
- .data;
223
- const flags = libredwg.dwg_dynapi_entity_value(item, 'flag').data;
224
- const description = libredwg.dwg_dynapi_entity_value(item, 'description')
225
- .data;
226
- const basePoint = libredwg.dwg_dynapi_entity_value(item, 'base_pt')
227
- .data;
228
- const insertionUnits = libredwg.dwg_dynapi_entity_value(item, 'insert_units').data;
229
- const explodability = libredwg.dwg_dynapi_entity_value(item, 'explodable')
230
- .data;
231
- const scalability = libredwg.dwg_dynapi_entity_value(item, 'block_scaling')
232
- .data;
233
- const layout_ptr = libredwg.dwg_dynapi_entity_value(item, 'layout')
234
- .data;
235
- const layout = idToString(libredwg.dwg_ref_get_absref(layout_ptr));
240
+ const num_owned = libredwg.dwg_dynapi_entity_data(item, 'num_owned');
241
+ const flags = libredwg.dwg_dynapi_entity_data(item, 'flag');
242
+ const description = libredwg.dwg_dynapi_entity_data(item, 'description');
243
+ const basePoint = libredwg.dwg_dynapi_entity_data(item, 'base_pt');
244
+ const insertionUnits = libredwg.dwg_dynapi_entity_data(item, 'insert_units');
245
+ const explodability = libredwg.dwg_dynapi_entity_data(item, 'explodable');
246
+ const scalability = libredwg.dwg_dynapi_entity_data(item, 'block_scaling');
247
+ const layout_ptr = libredwg.dwg_dynapi_entity_data(item, 'layout');
248
+ const layout = (libredwg.dwg_ref_get_id(layout_ptr) ?? '');
236
249
  let bmpPreview = '';
237
250
  const uint8ArrayToHexString = (bytes) => {
238
251
  const hexChars = new Array(bytes.length);
@@ -251,8 +264,7 @@ export class LibreDwgConverter {
251
264
  let entities = this.convertEntities(obj, commonAttrs.handle);
252
265
  if (!entities || entities.length == 0) {
253
266
  entities = [];
254
- const entities_ptr = libredwg.dwg_dynapi_entity_value(item, 'entities')
255
- .data;
267
+ const entities_ptr = libredwg.dwg_dynapi_entity_data(item, 'entities');
256
268
  if (entities_ptr) {
257
269
  const object_ref_ptr_array = libredwg.dwg_ptr_to_object_ref_ptr_array(entities_ptr, num_owned);
258
270
  const converter = this.entityConverter;
@@ -297,165 +309,88 @@ export class LibreDwgConverter {
297
309
  convertDimStyle(item, obj) {
298
310
  const libredwg = this.libredwg;
299
311
  const commonAttrs = this.getCommonTableEntryAttrs(item, obj);
300
- const DIMTOL = libredwg.dwg_dynapi_entity_value(item, 'DIMTOL')
301
- .data;
302
- const DIMLIM = libredwg.dwg_dynapi_entity_value(item, 'DIMLIM')
303
- .data;
304
- const DIMTIH = libredwg.dwg_dynapi_entity_value(item, 'DIMTIH')
305
- .data;
306
- const DIMTOH = libredwg.dwg_dynapi_entity_value(item, 'DIMTOH')
307
- .data;
308
- const DIMSE1 = libredwg.dwg_dynapi_entity_value(item, 'DIMSE1')
309
- .data;
310
- const DIMSE2 = libredwg.dwg_dynapi_entity_value(item, 'DIMSE2')
311
- .data;
312
- const DIMALT = libredwg.dwg_dynapi_entity_value(item, 'DIMALT')
313
- .data;
314
- const DIMTOFL = libredwg.dwg_dynapi_entity_value(item, 'DIMTOFL')
315
- .data;
316
- const DIMSAH = libredwg.dwg_dynapi_entity_value(item, 'DIMSAH')
317
- .data;
318
- const DIMTIX = libredwg.dwg_dynapi_entity_value(item, 'DIMTIX')
319
- .data;
320
- const DIMSOXD = libredwg.dwg_dynapi_entity_value(item, 'DIMSOXD')
321
- .data;
322
- const DIMALTD = libredwg.dwg_dynapi_entity_value(item, 'DIMALTD')
323
- .data;
324
- const DIMZIN = libredwg.dwg_dynapi_entity_value(item, 'DIMZIN')
325
- .data;
326
- const DIMSD1 = libredwg.dwg_dynapi_entity_value(item, 'DIMSD1')
327
- .data;
328
- const DIMSD2 = libredwg.dwg_dynapi_entity_value(item, 'DIMSD2')
329
- .data;
330
- const DIMTOLJ = libredwg.dwg_dynapi_entity_value(item, 'DIMTOLJ')
331
- .data;
332
- const DIMJUST = libredwg.dwg_dynapi_entity_value(item, 'DIMJUST')
333
- .data;
334
- const DIMFIT = libredwg.dwg_dynapi_entity_value(item, 'DIMFIT')
335
- .data;
336
- const DIMUPT = libredwg.dwg_dynapi_entity_value(item, 'DIMUPT')
337
- .data;
338
- const DIMTZIN = libredwg.dwg_dynapi_entity_value(item, 'DIMTZIN')
339
- .data;
340
- const DIMALTZ = libredwg.dwg_dynapi_entity_value(item, 'DIMALTZ')
341
- .data;
342
- const DIMALTTZ = libredwg.dwg_dynapi_entity_value(item, 'DIMALTTZ')
343
- .data;
344
- const DIMTAD = libredwg.dwg_dynapi_entity_value(item, 'DIMTAD')
345
- .data;
346
- const DIMUNIT = libredwg.dwg_dynapi_entity_value(item, 'DIMUNIT')
347
- .data;
348
- const DIMAUNIT = libredwg.dwg_dynapi_entity_value(item, 'DIMAUNIT')
349
- .data;
350
- const DIMDEC = libredwg.dwg_dynapi_entity_value(item, 'DIMDEC')
351
- .data;
352
- const DIMTDEC = libredwg.dwg_dynapi_entity_value(item, 'DIMTDEC')
353
- .data;
354
- const DIMALTU = libredwg.dwg_dynapi_entity_value(item, 'DIMALTU')
355
- .data;
356
- const DIMALTTD = libredwg.dwg_dynapi_entity_value(item, 'DIMALTTD')
357
- .data;
358
- const DIMSCALE = libredwg.dwg_dynapi_entity_value(item, 'DIMSCALE')
359
- .data;
360
- const DIMASZ = libredwg.dwg_dynapi_entity_value(item, 'DIMASZ')
361
- .data;
362
- const DIMEXO = libredwg.dwg_dynapi_entity_value(item, 'DIMEXO')
363
- .data;
364
- const DIMDLI = libredwg.dwg_dynapi_entity_value(item, 'DIMDLI')
365
- .data;
366
- const DIMEXE = libredwg.dwg_dynapi_entity_value(item, 'DIMEXE')
367
- .data;
368
- const DIMRND = libredwg.dwg_dynapi_entity_value(item, 'DIMRND')
369
- .data;
370
- const DIMDLE = libredwg.dwg_dynapi_entity_value(item, 'DIMDLE')
371
- .data;
372
- const DIMTP = libredwg.dwg_dynapi_entity_value(item, 'DIMTP').data;
373
- const DIMTM = libredwg.dwg_dynapi_entity_value(item, 'DIMTM').data;
374
- const DIMFXL = libredwg.dwg_dynapi_entity_value(item, 'DIMFXL')
375
- .data;
376
- const DIMJOGANG = libredwg.dwg_dynapi_entity_value(item, 'DIMJOGANG')
377
- .data;
378
- const DIMTFILL = libredwg.dwg_dynapi_entity_value(item, 'DIMTFILL')
379
- .data;
380
- const DIMTFILLCLR = libredwg.dwg_dynapi_entity_value(item, 'DIMTFILLCLR')
381
- .data;
382
- const DIMAZIN = libredwg.dwg_dynapi_entity_value(item, 'DIMAZIN')
383
- .data;
384
- const DIMARCSYM = libredwg.dwg_dynapi_entity_value(item, 'DIMARCSYM')
385
- .data;
386
- const DIMTXT = libredwg.dwg_dynapi_entity_value(item, 'DIMTXT')
387
- .data;
388
- const DIMCEN = libredwg.dwg_dynapi_entity_value(item, 'DIMCEN')
389
- .data;
390
- const DIMTSZ = libredwg.dwg_dynapi_entity_value(item, 'DIMTSZ')
391
- .data;
392
- const DIMALTF = libredwg.dwg_dynapi_entity_value(item, 'DIMALTF')
393
- .data;
394
- const DIMLFAC = libredwg.dwg_dynapi_entity_value(item, 'DIMLFAC')
395
- .data;
396
- const DIMTVP = libredwg.dwg_dynapi_entity_value(item, 'DIMTVP')
397
- .data;
398
- const DIMTFAC = libredwg.dwg_dynapi_entity_value(item, 'DIMTFAC')
399
- .data;
400
- const DIMGAP = libredwg.dwg_dynapi_entity_value(item, 'DIMGAP')
401
- .data;
402
- const DIMPOST = libredwg.dwg_dynapi_entity_value(item, 'DIMPOST')
403
- .data;
404
- const DIMAPOST = libredwg.dwg_dynapi_entity_value(item, 'DIMAPOST')
405
- .data;
406
- const DIMBLK_T = libredwg.dwg_dynapi_entity_value(item, 'DIMBLK_T')
407
- .data;
408
- const DIMBLK1_T = libredwg.dwg_dynapi_entity_value(item, 'DIMBLK1_T')
409
- .data;
410
- const DIMBLK2_T = libredwg.dwg_dynapi_entity_value(item, 'DIMBLK2_T')
411
- .data;
412
- const DIMALTRND = libredwg.dwg_dynapi_entity_value(item, 'DIMALTRND')
413
- .data;
414
- const DIMCLRD_N = libredwg.dwg_dynapi_entity_value(item, 'DIMCLRD_N')
415
- .data;
416
- const DIMCLRE_N = libredwg.dwg_dynapi_entity_value(item, 'DIMCLRE_N')
417
- .data;
418
- const DIMCLRT_N = libredwg.dwg_dynapi_entity_value(item, 'DIMCLRT_N')
419
- .data;
420
- const DIMCLRD = libredwg.dwg_dynapi_entity_value(item, 'DIMCLRD')
421
- .data;
422
- const DIMCLRE = libredwg.dwg_dynapi_entity_value(item, 'DIMCLRE')
423
- .data;
424
- const DIMCLRT = libredwg.dwg_dynapi_entity_value(item, 'DIMCLRT')
425
- .data;
426
- const DIMADEC = libredwg.dwg_dynapi_entity_value(item, 'DIMADEC')
427
- .data;
428
- const DIMFRAC = libredwg.dwg_dynapi_entity_value(item, 'DIMFRAC')
429
- .data;
430
- const DIMLUNIT = libredwg.dwg_dynapi_entity_value(item, 'DIMLUNIT')
431
- .data;
432
- const DIMDSEP = libredwg.dwg_dynapi_entity_value(item, 'DIMDSEP')
433
- .data;
434
- const DIMTMOVE = libredwg.dwg_dynapi_entity_value(item, 'DIMTMOVE')
435
- .data;
436
- const DIMATFIT = libredwg.dwg_dynapi_entity_value(item, 'DIMATFIT')
437
- .data;
438
- const DIMFXLON = libredwg.dwg_dynapi_entity_value(item, 'DIMFXLON')
439
- .data;
440
- const DIMTXTDIRECTION = libredwg.dwg_dynapi_entity_value(item, 'DIMTXTDIRECTION').data;
441
- const DIMALTMZF = libredwg.dwg_dynapi_entity_value(item, 'DIMALTMZF')
442
- .data;
443
- const DIMALTMZS = libredwg.dwg_dynapi_entity_value(item, 'DIMALTMZS')
444
- .data;
445
- const DIMMZF = libredwg.dwg_dynapi_entity_value(item, 'DIMMZF')
446
- .data;
447
- const DIMMZS = libredwg.dwg_dynapi_entity_value(item, 'DIMMZS')
448
- .data;
449
- const DIMLWD = libredwg.dwg_dynapi_entity_value(item, 'DIMLWD')
450
- .data;
451
- const DIMLWE = libredwg.dwg_dynapi_entity_value(item, 'DIMLWE')
452
- .data;
453
- const DIMTXSTY_Ptr = libredwg.dwg_dynapi_entity_value(item, 'DIMTXSTY')
454
- .data;
455
- const DIMTXSTY = libredwg.dwg_ref_get_absref(DIMTXSTY_Ptr);
456
- const DIMLDRBLK_Ptr = libredwg.dwg_dynapi_entity_value(item, 'DIMLDRBLK')
457
- .data;
458
- const DIMLDRBLK = libredwg.dwg_ref_get_absref(DIMLDRBLK_Ptr);
312
+ const DIMTOL = libredwg.dwg_dynapi_entity_data(item, 'DIMTOL');
313
+ const DIMLIM = libredwg.dwg_dynapi_entity_data(item, 'DIMLIM');
314
+ const DIMTIH = libredwg.dwg_dynapi_entity_data(item, 'DIMTIH');
315
+ const DIMTOH = libredwg.dwg_dynapi_entity_data(item, 'DIMTOH');
316
+ const DIMSE1 = libredwg.dwg_dynapi_entity_data(item, 'DIMSE1');
317
+ const DIMSE2 = libredwg.dwg_dynapi_entity_data(item, 'DIMSE2');
318
+ const DIMALT = libredwg.dwg_dynapi_entity_data(item, 'DIMALT');
319
+ const DIMTOFL = libredwg.dwg_dynapi_entity_data(item, 'DIMTOFL');
320
+ const DIMSAH = libredwg.dwg_dynapi_entity_data(item, 'DIMSAH');
321
+ const DIMTIX = libredwg.dwg_dynapi_entity_data(item, 'DIMTIX');
322
+ const DIMSOXD = libredwg.dwg_dynapi_entity_data(item, 'DIMSOXD');
323
+ const DIMALTD = libredwg.dwg_dynapi_entity_data(item, 'DIMALTD');
324
+ const DIMZIN = libredwg.dwg_dynapi_entity_data(item, 'DIMZIN');
325
+ const DIMSD1 = libredwg.dwg_dynapi_entity_data(item, 'DIMSD1');
326
+ const DIMSD2 = libredwg.dwg_dynapi_entity_data(item, 'DIMSD2');
327
+ const DIMTOLJ = libredwg.dwg_dynapi_entity_data(item, 'DIMTOLJ');
328
+ const DIMJUST = libredwg.dwg_dynapi_entity_data(item, 'DIMJUST');
329
+ const DIMFIT = libredwg.dwg_dynapi_entity_data(item, 'DIMFIT');
330
+ const DIMUPT = libredwg.dwg_dynapi_entity_data(item, 'DIMUPT');
331
+ const DIMTZIN = libredwg.dwg_dynapi_entity_data(item, 'DIMTZIN');
332
+ const DIMALTZ = libredwg.dwg_dynapi_entity_data(item, 'DIMALTZ');
333
+ const DIMALTTZ = libredwg.dwg_dynapi_entity_data(item, 'DIMALTTZ');
334
+ const DIMTAD = libredwg.dwg_dynapi_entity_data(item, 'DIMTAD');
335
+ const DIMUNIT = libredwg.dwg_dynapi_entity_data(item, 'DIMUNIT');
336
+ const DIMAUNIT = libredwg.dwg_dynapi_entity_data(item, 'DIMAUNIT');
337
+ const DIMDEC = libredwg.dwg_dynapi_entity_data(item, 'DIMDEC');
338
+ const DIMTDEC = libredwg.dwg_dynapi_entity_data(item, 'DIMTDEC');
339
+ const DIMALTU = libredwg.dwg_dynapi_entity_data(item, 'DIMALTU');
340
+ const DIMALTTD = libredwg.dwg_dynapi_entity_data(item, 'DIMALTTD');
341
+ const DIMSCALE = libredwg.dwg_dynapi_entity_data(item, 'DIMSCALE');
342
+ const DIMASZ = libredwg.dwg_dynapi_entity_data(item, 'DIMASZ');
343
+ const DIMEXO = libredwg.dwg_dynapi_entity_data(item, 'DIMEXO');
344
+ const DIMDLI = libredwg.dwg_dynapi_entity_data(item, 'DIMDLI');
345
+ const DIMEXE = libredwg.dwg_dynapi_entity_data(item, 'DIMEXE');
346
+ const DIMRND = libredwg.dwg_dynapi_entity_data(item, 'DIMRND');
347
+ const DIMDLE = libredwg.dwg_dynapi_entity_data(item, 'DIMDLE');
348
+ const DIMTP = libredwg.dwg_dynapi_entity_data(item, 'DIMTP');
349
+ const DIMTM = libredwg.dwg_dynapi_entity_data(item, 'DIMTM');
350
+ const DIMFXL = libredwg.dwg_dynapi_entity_data(item, 'DIMFXL');
351
+ const DIMJOGANG = libredwg.dwg_dynapi_entity_data(item, 'DIMJOGANG');
352
+ const DIMTFILL = libredwg.dwg_dynapi_entity_data(item, 'DIMTFILL');
353
+ const DIMTFILLCLR = libredwg.dwg_dynapi_entity_data(item, 'DIMTFILLCLR');
354
+ const DIMAZIN = libredwg.dwg_dynapi_entity_data(item, 'DIMAZIN');
355
+ const DIMARCSYM = libredwg.dwg_dynapi_entity_data(item, 'DIMARCSYM');
356
+ const DIMTXT = libredwg.dwg_dynapi_entity_data(item, 'DIMTXT');
357
+ const DIMCEN = libredwg.dwg_dynapi_entity_data(item, 'DIMCEN');
358
+ const DIMTSZ = libredwg.dwg_dynapi_entity_data(item, 'DIMTSZ');
359
+ const DIMALTF = libredwg.dwg_dynapi_entity_data(item, 'DIMALTF');
360
+ const DIMLFAC = libredwg.dwg_dynapi_entity_data(item, 'DIMLFAC');
361
+ const DIMTVP = libredwg.dwg_dynapi_entity_data(item, 'DIMTVP');
362
+ const DIMTFAC = libredwg.dwg_dynapi_entity_data(item, 'DIMTFAC');
363
+ const DIMGAP = libredwg.dwg_dynapi_entity_data(item, 'DIMGAP');
364
+ const DIMPOST = libredwg.dwg_dynapi_entity_data(item, 'DIMPOST');
365
+ const DIMAPOST = libredwg.dwg_dynapi_entity_data(item, 'DIMAPOST');
366
+ const DIMBLK_T = libredwg.dwg_dynapi_entity_data(item, 'DIMBLK_T');
367
+ const DIMBLK1_T = libredwg.dwg_dynapi_entity_data(item, 'DIMBLK1_T');
368
+ const DIMBLK2_T = libredwg.dwg_dynapi_entity_data(item, 'DIMBLK2_T');
369
+ const DIMALTRND = libredwg.dwg_dynapi_entity_data(item, 'DIMALTRND');
370
+ const DIMCLRD_N = libredwg.dwg_dynapi_entity_data(item, 'DIMCLRD_N');
371
+ const DIMCLRE_N = libredwg.dwg_dynapi_entity_data(item, 'DIMCLRE_N');
372
+ const DIMCLRT_N = libredwg.dwg_dynapi_entity_data(item, 'DIMCLRT_N');
373
+ const DIMCLRD = libredwg.dwg_dynapi_entity_data(item, 'DIMCLRD');
374
+ const DIMCLRE = libredwg.dwg_dynapi_entity_data(item, 'DIMCLRE');
375
+ const DIMCLRT = libredwg.dwg_dynapi_entity_data(item, 'DIMCLRT');
376
+ const DIMADEC = libredwg.dwg_dynapi_entity_data(item, 'DIMADEC');
377
+ const DIMFRAC = libredwg.dwg_dynapi_entity_data(item, 'DIMFRAC');
378
+ const DIMLUNIT = libredwg.dwg_dynapi_entity_data(item, 'DIMLUNIT');
379
+ const DIMDSEP = libredwg.dwg_dynapi_entity_data(item, 'DIMDSEP');
380
+ const DIMTMOVE = libredwg.dwg_dynapi_entity_data(item, 'DIMTMOVE');
381
+ const DIMATFIT = libredwg.dwg_dynapi_entity_data(item, 'DIMATFIT');
382
+ const DIMFXLON = libredwg.dwg_dynapi_entity_data(item, 'DIMFXLON');
383
+ const DIMTXTDIRECTION = libredwg.dwg_dynapi_entity_data(item, 'DIMTXTDIRECTION');
384
+ const DIMALTMZF = libredwg.dwg_dynapi_entity_data(item, 'DIMALTMZF');
385
+ const DIMALTMZS = libredwg.dwg_dynapi_entity_data(item, 'DIMALTMZS');
386
+ const DIMMZF = libredwg.dwg_dynapi_entity_data(item, 'DIMMZF');
387
+ const DIMMZS = libredwg.dwg_dynapi_entity_data(item, 'DIMMZS');
388
+ const DIMLWD = libredwg.dwg_dynapi_entity_data(item, 'DIMLWD');
389
+ const DIMLWE = libredwg.dwg_dynapi_entity_data(item, 'DIMLWE');
390
+ const DIMTXSTY_Ptr = libredwg.dwg_dynapi_entity_data(item, 'DIMTXSTY');
391
+ const DIMTXSTY = libredwg.dwg_ref_get_absref(DIMTXSTY_Ptr) ?? undefined;
392
+ const DIMLDRBLK_Ptr = libredwg.dwg_dynapi_entity_data(item, 'DIMLDRBLK');
393
+ const DIMLDRBLK = libredwg.dwg_ref_get_absref(DIMLDRBLK_Ptr) ?? undefined;
459
394
  return {
460
395
  ...commonAttrs,
461
396
  DIMPOST: DIMPOST,
@@ -543,22 +478,15 @@ export class LibreDwgConverter {
543
478
  convertLayer(item, obj) {
544
479
  const libredwg = this.libredwg;
545
480
  const commonAttrs = this.getCommonTableEntryAttrs(item, obj);
546
- const flag = libredwg.dwg_dynapi_entity_value(item, 'flag').data;
547
- const frozen = libredwg.dwg_dynapi_entity_value(item, 'frozen')
548
- .data;
549
- const off = libredwg.dwg_dynapi_entity_value(item, 'off').data;
550
- const frozenInNew = libredwg.dwg_dynapi_entity_value(item, 'frozen_in_new')
551
- .data;
552
- const locked = libredwg.dwg_dynapi_entity_value(item, 'plotflockedlag')
553
- .data;
554
- const plotFlag = libredwg.dwg_dynapi_entity_value(item, 'plotflag')
555
- .data;
556
- const linewt = libredwg.dwg_dynapi_entity_value(item, 'linewt')
557
- .data;
558
- const color = libredwg.dwg_dynapi_entity_value(item, 'color')
559
- .data;
560
- const ltypeRef = libredwg.dwg_dynapi_entity_value(item, 'ltype')
561
- .data;
481
+ const flag = libredwg.dwg_dynapi_entity_data(item, 'flag');
482
+ const frozen = libredwg.dwg_dynapi_entity_data(item, 'frozen');
483
+ const off = libredwg.dwg_dynapi_entity_data(item, 'off');
484
+ const frozenInNew = libredwg.dwg_dynapi_entity_data(item, 'frozen_in_new');
485
+ const locked = libredwg.dwg_dynapi_entity_data(item, 'plotflockedlag');
486
+ const plotFlag = libredwg.dwg_dynapi_entity_data(item, 'plotflag');
487
+ const linewt = libredwg.dwg_dynapi_entity_data(item, 'linewt');
488
+ const color = libredwg.dwg_dynapi_entity_data(item, 'color');
489
+ const ltypeRef = libredwg.dwg_dynapi_entity_data(item, 'ltype');
562
490
  let ltypeName = 'Continuous';
563
491
  if (ltypeRef) {
564
492
  try {
@@ -609,15 +537,11 @@ export class LibreDwgConverter {
609
537
  convertLineType(item, obj) {
610
538
  const libredwg = this.libredwg;
611
539
  const commonAttrs = this.getCommonTableEntryAttrs(item, obj);
612
- const flag = libredwg.dwg_dynapi_entity_value(item, 'flag').data;
613
- const description = libredwg.dwg_dynapi_entity_value(item, 'description')
614
- .data;
615
- const numDashes = libredwg.dwg_dynapi_entity_value(item, 'numdashes')
616
- .data;
617
- const patternLen = libredwg.dwg_dynapi_entity_value(item, 'pattern_len')
618
- .data;
619
- const dashes = libredwg.dwg_dynapi_entity_value(item, 'dashes')
620
- .data;
540
+ const flag = libredwg.dwg_dynapi_entity_data(item, 'flag');
541
+ const description = libredwg.dwg_dynapi_entity_data(item, 'description');
542
+ const numDashes = libredwg.dwg_dynapi_entity_data(item, 'numdashes');
543
+ const patternLen = libredwg.dwg_dynapi_entity_data(item, 'pattern_len');
544
+ const dashes = libredwg.dwg_dynapi_entity_data(item, 'dashes');
621
545
  const dashArray = dashes
622
546
  ? libredwg.dwg_ptr_to_ltype_dash_array(dashes, numDashes)
623
547
  : [];
@@ -651,19 +575,13 @@ export class LibreDwgConverter {
651
575
  convertStyle(item, obj) {
652
576
  const libredwg = this.libredwg;
653
577
  const commonAttrs = this.getCommonTableEntryAttrs(item, obj);
654
- const standardFlag = libredwg.dwg_dynapi_entity_value(item, 'flag')
655
- .data;
656
- const widthFactor = libredwg.dwg_dynapi_entity_value(item, 'width_factor')
657
- .data;
658
- const obliqueAngle = libredwg.dwg_dynapi_entity_value(item, 'oblique_angle')
659
- .data;
660
- const textGenerationFlag = libredwg.dwg_dynapi_entity_value(item, 'generation').data;
661
- const lastHeight = libredwg.dwg_dynapi_entity_value(item, 'last_height')
662
- .data;
663
- const font = libredwg.dwg_dynapi_entity_value(item, 'font_file')
664
- .data;
665
- const bigFont = libredwg.dwg_dynapi_entity_value(item, 'bigfont_file')
666
- .data;
578
+ const standardFlag = libredwg.dwg_dynapi_entity_data(item, 'flag');
579
+ const widthFactor = libredwg.dwg_dynapi_entity_data(item, 'width_factor');
580
+ const obliqueAngle = libredwg.dwg_dynapi_entity_data(item, 'oblique_angle');
581
+ const textGenerationFlag = libredwg.dwg_dynapi_entity_data(item, 'generation');
582
+ const lastHeight = libredwg.dwg_dynapi_entity_data(item, 'last_height');
583
+ const font = libredwg.dwg_dynapi_entity_data(item, 'font_file');
584
+ const bigFont = libredwg.dwg_dynapi_entity_data(item, 'bigfont_file');
667
585
  return {
668
586
  ...commonAttrs,
669
587
  standardFlag: standardFlag,
@@ -679,73 +597,47 @@ export class LibreDwgConverter {
679
597
  convertViewport(item, obj) {
680
598
  const libredwg = this.libredwg;
681
599
  const commonAttrs = this.getCommonTableEntryAttrs(item, obj);
682
- const standardFlag = libredwg.dwg_dynapi_entity_value(item, 'flag')
683
- .data;
684
- const viewHeight = libredwg.dwg_dynapi_entity_value(item, 'VIEWSIZE')
685
- .data;
686
- const aspectRatio = libredwg.dwg_dynapi_entity_value(item, 'aspect_ratio')
687
- .data;
688
- const center = libredwg.dwg_dynapi_entity_value(item, 'VIEWCTR')
689
- .data;
690
- const viewTarget = libredwg.dwg_dynapi_entity_value(item, 'view_target')
691
- .data;
692
- const viewDirectionFromTarget = libredwg.dwg_dynapi_entity_value(item, 'VIEWDIR').data;
693
- const viewTwistAngle = libredwg.dwg_dynapi_entity_value(item, 'view_twist')
694
- .data;
695
- const lensLength = libredwg.dwg_dynapi_entity_value(item, 'lens_length')
696
- .data;
697
- const frontClippingPlane = libredwg.dwg_dynapi_entity_value(item, 'front_clip_z').data;
698
- const backClippingPlane = libredwg.dwg_dynapi_entity_value(item, 'back_clip_z').data;
699
- const viewMode = libredwg.dwg_dynapi_entity_value(item, 'VIEWMODE')
700
- .data;
701
- const renderMode = libredwg.dwg_dynapi_entity_value(item, 'render_mode')
702
- .data;
703
- const isDefaultLightingOn = libredwg.dwg_dynapi_entity_value(item, 'use_default_lights')
704
- .data != 0;
705
- const defaultLightningType = libredwg.dwg_dynapi_entity_value(item, 'default_lightning_type').data;
706
- const brightness = libredwg.dwg_dynapi_entity_value(item, 'brightness')
707
- .data;
708
- const contrast = libredwg.dwg_dynapi_entity_value(item, 'contrast')
709
- .data;
710
- const ambient_color = libredwg.dwg_dynapi_entity_value(item, 'ambient_color').data;
600
+ const standardFlag = libredwg.dwg_dynapi_entity_data(item, 'flag');
601
+ const viewHeight = libredwg.dwg_dynapi_entity_data(item, 'VIEWSIZE');
602
+ const aspectRatio = libredwg.dwg_dynapi_entity_data(item, 'aspect_ratio');
603
+ const center = libredwg.dwg_dynapi_entity_data(item, 'VIEWCTR');
604
+ const viewTarget = libredwg.dwg_dynapi_entity_data(item, 'view_target');
605
+ const viewDirectionFromTarget = libredwg.dwg_dynapi_entity_data(item, 'VIEWDIR');
606
+ const viewTwistAngle = libredwg.dwg_dynapi_entity_data(item, 'view_twist');
607
+ const lensLength = libredwg.dwg_dynapi_entity_data(item, 'lens_length');
608
+ const frontClippingPlane = libredwg.dwg_dynapi_entity_data(item, 'front_clip_z');
609
+ const backClippingPlane = libredwg.dwg_dynapi_entity_data(item, 'back_clip_z');
610
+ const viewMode = libredwg.dwg_dynapi_entity_data(item, 'VIEWMODE');
611
+ const renderMode = libredwg.dwg_dynapi_entity_data(item, 'render_mode');
612
+ const isDefaultLightingOn = libredwg.dwg_dynapi_entity_data(item, 'use_default_lights') != 0;
613
+ const defaultLightningType = libredwg.dwg_dynapi_entity_data(item, 'default_lightning_type');
614
+ const brightness = libredwg.dwg_dynapi_entity_data(item, 'brightness');
615
+ const contrast = libredwg.dwg_dynapi_entity_data(item, 'contrast');
616
+ const ambient_color = libredwg.dwg_dynapi_entity_data(item, 'ambient_color');
711
617
  // ViewportTableRecord
712
- const lowerLeftCorner = libredwg.dwg_dynapi_entity_value(item, 'lower_left')
713
- .data;
714
- const upperRightCorner = libredwg.dwg_dynapi_entity_value(item, 'upper_right').data;
618
+ const lowerLeftCorner = libredwg.dwg_dynapi_entity_data(item, 'lower_left');
619
+ const upperRightCorner = libredwg.dwg_dynapi_entity_data(item, 'upper_right');
715
620
  // TODO: Not sure whether 'circleSides' is equal to 'circle_zoom'
716
- const circleSides = libredwg.dwg_dynapi_entity_value(item, 'circle_zoom')
717
- .data;
718
- const ucsIconSetting = libredwg.dwg_dynapi_entity_value(item, 'UCSICON')
719
- .data;
621
+ const circleSides = libredwg.dwg_dynapi_entity_data(item, 'circle_zoom');
622
+ const ucsIconSetting = libredwg.dwg_dynapi_entity_data(item, 'UCSICON');
720
623
  // TODO: Not sure whether 'gridSpacing' is equal to 'GRIDUNIT'
721
- const gridSpacing = libredwg.dwg_dynapi_entity_value(item, 'GRIDUNIT')
722
- .data;
723
- const snapRotationAngle = libredwg.dwg_dynapi_entity_value(item, 'SNAPANG')
724
- .data;
725
- const snapBasePoint = libredwg.dwg_dynapi_entity_value(item, 'SNAPBASE')
726
- .data;
624
+ const gridSpacing = libredwg.dwg_dynapi_entity_data(item, 'GRIDUNIT');
625
+ const snapRotationAngle = libredwg.dwg_dynapi_entity_data(item, 'SNAPANG');
626
+ const snapBasePoint = libredwg.dwg_dynapi_entity_data(item, 'SNAPBASE');
727
627
  // TODO: Not sure whether 'snapSpacing' is equal to 'SNAPUNIT'
728
- const snapSpacing = libredwg.dwg_dynapi_entity_value(item, 'SNAPUNIT')
729
- .data;
730
- const ucsOrigin = libredwg.dwg_dynapi_entity_value(item, 'ucsorg')
731
- .data;
732
- const ucsXAxis = libredwg.dwg_dynapi_entity_value(item, 'ucsxdir')
733
- .data;
734
- const ucsYAxis = libredwg.dwg_dynapi_entity_value(item, 'ucsydir')
735
- .data;
736
- const elevation = libredwg.dwg_dynapi_entity_value(item, 'ucs_elevation')
737
- .data;
738
- const majorGridLines = libredwg.dwg_dynapi_entity_value(item, 'grid_major')
739
- .data;
740
- const background = libredwg.dwg_dynapi_entity_value(item, 'background')
741
- .data;
628
+ const snapSpacing = libredwg.dwg_dynapi_entity_data(item, 'SNAPUNIT');
629
+ const ucsOrigin = libredwg.dwg_dynapi_entity_data(item, 'ucsorg');
630
+ const ucsXAxis = libredwg.dwg_dynapi_entity_data(item, 'ucsxdir');
631
+ const ucsYAxis = libredwg.dwg_dynapi_entity_data(item, 'ucsydir');
632
+ const elevation = libredwg.dwg_dynapi_entity_data(item, 'ucs_elevation');
633
+ const majorGridLines = libredwg.dwg_dynapi_entity_data(item, 'grid_major');
634
+ const background = libredwg.dwg_dynapi_entity_data(item, 'background');
742
635
  const backgroundObjectId = background
743
- ? idToString(libredwg.dwg_ref_get_absref(background))
636
+ ? (libredwg.dwg_ref_get_id(background) ?? '')
744
637
  : undefined;
745
- const visualstyle = libredwg.dwg_dynapi_entity_value(item, 'visualstyle')
746
- .data;
638
+ const visualstyle = libredwg.dwg_dynapi_entity_data(item, 'visualstyle');
747
639
  const visualStyleObjectId = visualstyle
748
- ? idToString(libredwg.dwg_ref_get_absref(visualstyle))
640
+ ? (libredwg.dwg_ref_get_id(visualstyle) ?? '')
749
641
  : undefined;
750
642
  // BITCODE_B UCSFOLLOW;
751
643
  // BITCODE_B FASTZOOM;
@@ -810,19 +702,16 @@ export class LibreDwgConverter {
810
702
  return {
811
703
  handle: idToString(handle.value),
812
704
  ownerHandle: idToString(ownerhandle.absolute_ref),
813
- name: libredwg.dwg_dynapi_entity_value(tio, 'name').data
705
+ name: libredwg.dwg_dynapi_entity_data(tio, 'name')
814
706
  };
815
707
  }
816
708
  convertDictionary(item, obj) {
817
709
  const libredwg = this.libredwg;
818
710
  const commonAttrs = this.getCommonObjectAttrs(obj);
819
- const isHardOwner = libredwg.dwg_dynapi_entity_value(item, 'is_hardowner')
820
- .data;
821
- const cloningFlag = libredwg.dwg_dynapi_entity_value(item, 'cloning')
822
- .data;
823
- const numitems = libredwg.dwg_dynapi_entity_value(item, 'numitems')
824
- .data;
825
- const itemhandles_ptr = libredwg.dwg_dynapi_entity_value(item, 'itemhandles').data;
711
+ const isHardOwner = libredwg.dwg_dynapi_entity_data(item, 'is_hardowner');
712
+ const cloningFlag = libredwg.dwg_dynapi_entity_data(item, 'cloning');
713
+ const numitems = libredwg.dwg_dynapi_entity_data(item, 'numitems');
714
+ const itemhandles_ptr = libredwg.dwg_dynapi_entity_data(item, 'itemhandles');
826
715
  const itemhandles = libredwg.dwg_ptr_to_object_ref_array(itemhandles_ptr, numitems);
827
716
  const texts = libredwg.dwg_object_dictionary_get_texts(obj);
828
717
  const entries = {};
@@ -837,17 +726,12 @@ export class LibreDwgConverter {
837
726
  convertImageDef(item, obj) {
838
727
  const libredwg = this.libredwg;
839
728
  const commonAttrs = this.getCommonObjectAttrs(obj);
840
- // const classVersion = libredwg.dwg_dynapi_entity_value(item, 'class_version').data as number
841
- const size = libredwg.dwg_dynapi_entity_value(item, 'image_size')
842
- .data;
843
- const fileName = libredwg.dwg_dynapi_entity_value(item, 'file_path')
844
- .data;
845
- const isLoaded = libredwg.dwg_dynapi_entity_value(item, 'is_loaded')
846
- .data;
847
- const sizeOfOnePixel = libredwg.dwg_dynapi_entity_value(item, 'pixel_size')
848
- .data;
849
- const resolutionUnits = libredwg.dwg_dynapi_entity_value(item, 'resunits')
850
- .data;
729
+ // const classVersion = libredwg.dwg_dynapi_entity_data<number>(item, 'class_version')
730
+ const size = libredwg.dwg_dynapi_entity_data(item, 'image_size');
731
+ const fileName = libredwg.dwg_dynapi_entity_data(item, 'file_path');
732
+ const isLoaded = libredwg.dwg_dynapi_entity_data(item, 'is_loaded');
733
+ const sizeOfOnePixel = libredwg.dwg_dynapi_entity_data(item, 'pixel_size');
734
+ const resolutionUnits = libredwg.dwg_dynapi_entity_data(item, 'resunits');
851
735
  return {
852
736
  ...commonAttrs,
853
737
  fileName: fileName,
@@ -861,39 +745,26 @@ export class LibreDwgConverter {
861
745
  const libredwg = this.libredwg;
862
746
  const commonAttrs = this.getCommonObjectAttrs(obj);
863
747
  // AcDbLayout
864
- const layoutName = libredwg.dwg_dynapi_entity_value(item, 'layout_name')
865
- .data;
866
- const tabOrder = libredwg.dwg_dynapi_entity_value(item, 'tab_order')
867
- .data;
868
- const controlFlag = libredwg.dwg_dynapi_entity_value(item, 'layout_flags')
869
- .data;
870
- const insertionPoint = libredwg.dwg_dynapi_entity_value(item, 'INSBASE')
871
- .data;
872
- const minLimit = libredwg.dwg_dynapi_entity_value(item, 'LIMMIN')
873
- .data;
874
- const maxLimit = libredwg.dwg_dynapi_entity_value(item, 'LIMMAX')
875
- .data;
876
- const ucsOrigin = libredwg.dwg_dynapi_entity_value(item, 'UCSORG')
877
- .data;
878
- const ucsXAxis = libredwg.dwg_dynapi_entity_value(item, 'UCSXDIR')
879
- .data;
880
- const ucsYAxis = libredwg.dwg_dynapi_entity_value(item, 'UCSYDIR')
881
- .data;
882
- const orthographicType = libredwg.dwg_dynapi_entity_value(item, 'UCSORTHOVIEW').data;
883
- const minExtent = libredwg.dwg_dynapi_entity_value(item, 'EXTMIN')
884
- .data;
885
- const maxExtent = libredwg.dwg_dynapi_entity_value(item, 'EXTMAX')
886
- .data;
887
- const elevation = libredwg.dwg_dynapi_entity_value(item, 'ucs_elevation')
888
- .data;
889
- const block_header_ref = libredwg.dwg_dynapi_entity_value(item, 'block_header').data;
890
- const paperSpaceTableId = idToString(libredwg.dwg_ref_get_absref(block_header_ref));
891
- const active_viewport_ref = libredwg.dwg_dynapi_entity_value(item, 'active_viewport').data;
892
- const viewportId = idToString(libredwg.dwg_ref_get_absref(active_viewport_ref));
893
- const named_ucs_ref = libredwg.dwg_dynapi_entity_value(item, 'named_ucs')
894
- .data;
895
- const namedUcsId = !!named_ucs_ref
896
- ? idToString(libredwg.dwg_ref_get_absref(named_ucs_ref))
748
+ const layoutName = libredwg.dwg_dynapi_entity_data(item, 'layout_name');
749
+ const tabOrder = libredwg.dwg_dynapi_entity_data(item, 'tab_order');
750
+ const controlFlag = libredwg.dwg_dynapi_entity_data(item, 'layout_flags');
751
+ const insertionPoint = libredwg.dwg_dynapi_entity_data(item, 'INSBASE');
752
+ const minLimit = libredwg.dwg_dynapi_entity_data(item, 'LIMMIN');
753
+ const maxLimit = libredwg.dwg_dynapi_entity_data(item, 'LIMMAX');
754
+ const ucsOrigin = libredwg.dwg_dynapi_entity_data(item, 'UCSORG');
755
+ const ucsXAxis = libredwg.dwg_dynapi_entity_data(item, 'UCSXDIR');
756
+ const ucsYAxis = libredwg.dwg_dynapi_entity_data(item, 'UCSYDIR');
757
+ const orthographicType = libredwg.dwg_dynapi_entity_data(item, 'UCSORTHOVIEW');
758
+ const minExtent = libredwg.dwg_dynapi_entity_data(item, 'EXTMIN');
759
+ const maxExtent = libredwg.dwg_dynapi_entity_data(item, 'EXTMAX');
760
+ const elevation = libredwg.dwg_dynapi_entity_data(item, 'ucs_elevation');
761
+ const block_header_ref = libredwg.dwg_dynapi_entity_data(item, 'block_header');
762
+ const paperSpaceTableId = (libredwg.dwg_ref_get_id(block_header_ref) ?? '');
763
+ const active_viewport_ref = libredwg.dwg_dynapi_entity_data(item, 'active_viewport');
764
+ const viewportId = (libredwg.dwg_ref_get_id(active_viewport_ref) ?? '');
765
+ const named_ucs_ref = libredwg.dwg_dynapi_entity_data(item, 'named_ucs');
766
+ const namedUcsId = named_ucs_ref
767
+ ? (libredwg.dwg_ref_get_id(named_ucs_ref) ?? '')
897
768
  : undefined;
898
769
  // BITCODE_H base_ucs;
899
770
  // BITCODE_BL num_viewports; // r2004+
@@ -920,25 +791,78 @@ export class LibreDwgConverter {
920
791
  shadePlotId: '' // TODO: Set the correct value
921
792
  };
922
793
  }
794
+ convertMLeaderStyle(item, obj) {
795
+ const libredwg = this.libredwg;
796
+ const commonAttrs = this.getCommonObjectAttrs(obj);
797
+ const objectVal = (field) => libredwg.dwg_dynapi_entity_data(item, field);
798
+ const refToId = (ref) => libredwg.dwg_ref_get_id(ref);
799
+ const asBool = (value) => value > 0;
800
+ const mleaderColor = (color) => color != null ? dwgColorToMLeaderRawColor(color) : undefined;
801
+ return {
802
+ ...commonAttrs,
803
+ subclassMarker: 'AcDbMLeaderStyle',
804
+ unknown1: objectVal('class_version'),
805
+ contentType: objectVal('content_type'),
806
+ drawMLeaderOrderType: objectVal('mleader_order'),
807
+ drawLeaderOrderType: objectVal('leader_order'),
808
+ maxLeaderSegmentPoints: objectVal('max_points'),
809
+ firstSegmentAngleConstraint: objectVal('first_seg_angle'),
810
+ secondSegmentAngleConstraint: objectVal('second_seg_angle'),
811
+ leaderLineType: objectVal('type'),
812
+ leaderLineColor: mleaderColor(objectVal('line_color')),
813
+ leaderLineTypeId: refToId(objectVal('line_type')),
814
+ leaderLineWeight: objectVal('linewt'),
815
+ landingEnabled: asBool(objectVal('has_landing')),
816
+ landingGap: objectVal('landing_gap'),
817
+ doglegEnabled: asBool(objectVal('has_dogleg')),
818
+ doglegLength: objectVal('landing_dist'),
819
+ description: objectVal('description'),
820
+ arrowheadId: refToId(objectVal('arrow_head')),
821
+ arrowheadSize: objectVal('arrow_head_size'),
822
+ defaultMTextContents: objectVal('text_default'),
823
+ textStyleId: refToId(objectVal('text_style')),
824
+ textLeftAttachmentType: objectVal('attach_left'),
825
+ textAngleType: objectVal('text_angle_type'),
826
+ textAlignmentType: objectVal('text_align_type'),
827
+ textRightAttachmentType: objectVal('attach_right'),
828
+ textColor: mleaderColor(objectVal('text_color')),
829
+ textHeight: objectVal('text_height'),
830
+ textFrameEnabled: asBool(objectVal('has_text_frame')),
831
+ textAlignAlwaysLeft: asBool(objectVal('text_always_left')),
832
+ alignSpace: objectVal('align_space'),
833
+ blockContentId: refToId(objectVal('block')),
834
+ blockContentColor: mleaderColor(objectVal('block_color')),
835
+ blockContentScale: objectVal('block_scale'),
836
+ blockContentScaleEnabled: asBool(objectVal('use_block_scale')),
837
+ blockContentRotation: objectVal('block_rotation'),
838
+ blockContentRotationEnabled: asBool(objectVal('use_block_rotation')),
839
+ blockContentConnectionType: objectVal('block_connection'),
840
+ scale: objectVal('scale'),
841
+ overwritePropertyValue: asBool(objectVal('is_changed')),
842
+ annotative: asBool(objectVal('is_annotative')),
843
+ breakGapSize: objectVal('break_size'),
844
+ textAttachmentDirection: objectVal('attach_dir'),
845
+ bottomTextAttachmentDirection: objectVal('attach_bottom'),
846
+ topTextAttachmentDirection: objectVal('attach_top'),
847
+ unknown2: asBool(objectVal('text_extended'))
848
+ };
849
+ }
923
850
  convertSpatialFilter(item, obj) {
924
851
  const libredwg = this.libredwg;
925
852
  const commonAttrs = this.getCommonObjectAttrs(obj);
926
- const origin = libredwg.dwg_dynapi_entity_value(item, 'origin')
927
- .data;
928
- const numberOfPointsOnClipBoundary = libredwg.dwg_dynapi_entity_value(item, 'num_clip_verts').data;
929
- const clip_verts_ptr = libredwg.dwg_dynapi_entity_value(item, 'clip_verts')
930
- .data;
853
+ const origin = libredwg.dwg_dynapi_entity_data(item, 'origin');
854
+ const numberOfPointsOnClipBoundary = libredwg.dwg_dynapi_entity_data(item, 'num_clip_verts');
855
+ const clip_verts_ptr = libredwg.dwg_dynapi_entity_data(item, 'clip_verts');
931
856
  const vertices = libredwg.dwg_ptr_to_point2d_array(clip_verts_ptr, numberOfPointsOnClipBoundary);
932
- const extrusionDirection = libredwg.dwg_dynapi_entity_value(item, 'extrusion').data;
933
- const clipBoundaryVisible = libredwg.dwg_dynapi_entity_value(item, 'display_boundary_on').data;
934
- const frontClippingPlaneFlag = libredwg.dwg_dynapi_entity_value(item, 'front_clip_on').data;
935
- const frontClippingPlaneDistance = libredwg.dwg_dynapi_entity_value(item, 'front_clip_z').data;
936
- const backClippingPlaneFlag = libredwg.dwg_dynapi_entity_value(item, 'back_clip_on').data;
937
- const backClippingPlaneDistance = libredwg.dwg_dynapi_entity_value(item, 'back_clip_z').data;
938
- const transform_ptr = libredwg.dwg_dynapi_entity_value(item, 'transform')
939
- .data;
857
+ const extrusionDirection = libredwg.dwg_dynapi_entity_data(item, 'extrusion');
858
+ const clipBoundaryVisible = libredwg.dwg_dynapi_entity_data(item, 'display_boundary_on');
859
+ const frontClippingPlaneFlag = libredwg.dwg_dynapi_entity_data(item, 'front_clip_on');
860
+ const frontClippingPlaneDistance = libredwg.dwg_dynapi_entity_data(item, 'front_clip_z');
861
+ const backClippingPlaneFlag = libredwg.dwg_dynapi_entity_data(item, 'back_clip_on');
862
+ const backClippingPlaneDistance = libredwg.dwg_dynapi_entity_data(item, 'back_clip_z');
863
+ const transform_ptr = libredwg.dwg_dynapi_entity_data(item, 'transform');
940
864
  const matrix = libredwg.dwg_ptr_to_double_array(transform_ptr, 12);
941
- const inverse_transform_ptr = libredwg.dwg_dynapi_entity_value(item, 'inverse_transform').data;
865
+ const inverse_transform_ptr = libredwg.dwg_dynapi_entity_data(item, 'inverse_transform');
942
866
  const invertBlockMatrix = libredwg.dwg_ptr_to_double_array(inverse_transform_ptr, 12);
943
867
  return {
944
868
  ...commonAttrs,