@mlightcad/data-model 1.8.4 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/README.md +38 -20
  2. package/dist/data-model.cjs +7 -7
  3. package/lib/converter/index.d.ts +0 -1
  4. package/lib/converter/index.d.ts.map +1 -1
  5. package/lib/converter/index.js +0 -1
  6. package/lib/converter/index.js.map +1 -1
  7. package/lib/database/AcDbDatabaseConverter.d.ts +8 -8
  8. package/lib/database/AcDbDatabaseConverter.d.ts.map +1 -1
  9. package/lib/database/AcDbDatabaseConverter.js +13 -1
  10. package/lib/database/AcDbDatabaseConverter.js.map +1 -1
  11. package/lib/database/AcDbDatabaseConverterManager.d.ts +0 -2
  12. package/lib/database/AcDbDatabaseConverterManager.d.ts.map +1 -1
  13. package/lib/database/AcDbDatabaseConverterManager.js +0 -4
  14. package/lib/database/AcDbDatabaseConverterManager.js.map +1 -1
  15. package/lib/entity/AcDb2dPolyline.d.ts +2 -0
  16. package/lib/entity/AcDb2dPolyline.d.ts.map +1 -1
  17. package/lib/entity/AcDb2dPolyline.js +8 -0
  18. package/lib/entity/AcDb2dPolyline.js.map +1 -1
  19. package/lib/entity/AcDb3dPolyline.d.ts +2 -0
  20. package/lib/entity/AcDb3dPolyline.d.ts.map +1 -1
  21. package/lib/entity/AcDb3dPolyline.js +8 -0
  22. package/lib/entity/AcDb3dPolyline.js.map +1 -1
  23. package/lib/entity/AcDbArc.d.ts +2 -0
  24. package/lib/entity/AcDbArc.d.ts.map +1 -1
  25. package/lib/entity/AcDbArc.js +9 -1
  26. package/lib/entity/AcDbArc.js.map +1 -1
  27. package/lib/entity/AcDbCircle.d.ts +2 -0
  28. package/lib/entity/AcDbCircle.d.ts.map +1 -1
  29. package/lib/entity/AcDbCircle.js +9 -1
  30. package/lib/entity/AcDbCircle.js.map +1 -1
  31. package/lib/entity/AcDbCurve.d.ts +5 -0
  32. package/lib/entity/AcDbCurve.d.ts.map +1 -1
  33. package/lib/entity/AcDbCurve.js.map +1 -1
  34. package/lib/entity/AcDbEllipse.d.ts +2 -0
  35. package/lib/entity/AcDbEllipse.d.ts.map +1 -1
  36. package/lib/entity/AcDbEllipse.js +9 -1
  37. package/lib/entity/AcDbEllipse.js.map +1 -1
  38. package/lib/entity/AcDbFace.d.ts +4 -0
  39. package/lib/entity/AcDbFace.d.ts.map +1 -1
  40. package/lib/entity/AcDbFace.js +22 -1
  41. package/lib/entity/AcDbFace.js.map +1 -1
  42. package/lib/entity/AcDbHatch.d.ts +4 -0
  43. package/lib/entity/AcDbHatch.d.ts.map +1 -1
  44. package/lib/entity/AcDbHatch.js +11 -1
  45. package/lib/entity/AcDbHatch.js.map +1 -1
  46. package/lib/entity/AcDbLeader.d.ts +2 -0
  47. package/lib/entity/AcDbLeader.d.ts.map +1 -1
  48. package/lib/entity/AcDbLeader.js +8 -0
  49. package/lib/entity/AcDbLeader.js.map +1 -1
  50. package/lib/entity/AcDbLine.d.ts +2 -0
  51. package/lib/entity/AcDbLine.d.ts.map +1 -1
  52. package/lib/entity/AcDbLine.js +8 -0
  53. package/lib/entity/AcDbLine.js.map +1 -1
  54. package/lib/entity/AcDbPolyFaceMesh.d.ts +2 -0
  55. package/lib/entity/AcDbPolyFaceMesh.d.ts.map +1 -1
  56. package/lib/entity/AcDbPolyFaceMesh.js +8 -0
  57. package/lib/entity/AcDbPolyFaceMesh.js.map +1 -1
  58. package/lib/entity/AcDbPolygonMesh.d.ts +2 -0
  59. package/lib/entity/AcDbPolygonMesh.d.ts.map +1 -1
  60. package/lib/entity/AcDbPolygonMesh.js +8 -0
  61. package/lib/entity/AcDbPolygonMesh.js.map +1 -1
  62. package/lib/entity/AcDbPolyline.d.ts +2 -0
  63. package/lib/entity/AcDbPolyline.d.ts.map +1 -1
  64. package/lib/entity/AcDbPolyline.js +8 -0
  65. package/lib/entity/AcDbPolyline.js.map +1 -1
  66. package/lib/entity/AcDbRay.d.ts +2 -0
  67. package/lib/entity/AcDbRay.d.ts.map +1 -1
  68. package/lib/entity/AcDbRay.js +8 -0
  69. package/lib/entity/AcDbRay.js.map +1 -1
  70. package/lib/entity/AcDbSpline.d.ts +2 -0
  71. package/lib/entity/AcDbSpline.d.ts.map +1 -1
  72. package/lib/entity/AcDbSpline.js +8 -0
  73. package/lib/entity/AcDbSpline.js.map +1 -1
  74. package/lib/entity/AcDbTrace.d.ts +2 -0
  75. package/lib/entity/AcDbTrace.d.ts.map +1 -1
  76. package/lib/entity/AcDbTrace.js +9 -0
  77. package/lib/entity/AcDbTrace.js.map +1 -1
  78. package/lib/entity/AcDbXline.d.ts +2 -0
  79. package/lib/entity/AcDbXline.d.ts.map +1 -1
  80. package/lib/entity/AcDbXline.js +8 -0
  81. package/lib/entity/AcDbXline.js.map +1 -1
  82. package/lib/index.d.ts +1 -1
  83. package/lib/index.d.ts.map +1 -1
  84. package/lib/index.js +1 -1
  85. package/lib/index.js.map +1 -1
  86. package/package.json +6 -9
  87. package/dist/dxf-parser-worker.js +0 -1794
  88. package/lib/converter/AcDbDxfConverter.d.ts +0 -277
  89. package/lib/converter/AcDbDxfConverter.d.ts.map +0 -1
  90. package/lib/converter/AcDbDxfConverter.js +0 -1076
  91. package/lib/converter/AcDbDxfConverter.js.map +0 -1
  92. package/lib/converter/AcDbDxfParser.d.ts +0 -23
  93. package/lib/converter/AcDbDxfParser.d.ts.map +0 -1
  94. package/lib/converter/AcDbDxfParser.js +0 -85
  95. package/lib/converter/AcDbDxfParser.js.map +0 -1
  96. package/lib/converter/AcDbEntitiyConverter.d.ts +0 -156
  97. package/lib/converter/AcDbEntitiyConverter.d.ts.map +0 -1
  98. package/lib/converter/AcDbEntitiyConverter.js +0 -1426
  99. package/lib/converter/AcDbEntitiyConverter.js.map +0 -1
  100. package/lib/converter/AcDbObjectConverter.d.ts +0 -68
  101. package/lib/converter/AcDbObjectConverter.d.ts.map +0 -1
  102. package/lib/converter/AcDbObjectConverter.js +0 -376
  103. package/lib/converter/AcDbObjectConverter.js.map +0 -1
  104. package/lib/converter/worker/AcDbDxfParserWorker.d.ts +0 -11
  105. package/lib/converter/worker/AcDbDxfParserWorker.d.ts.map +0 -1
  106. package/lib/converter/worker/AcDbDxfParserWorker.js +0 -75
  107. package/lib/converter/worker/AcDbDxfParserWorker.js.map +0 -1
package/README.md CHANGED
@@ -10,7 +10,7 @@ This package contains the core classes for defining and manipulating AutoCAD ent
10
10
 
11
11
  - **Database Management**: Complete AutoCAD database structure with tables and records
12
12
  - **Entity Support**: All major AutoCAD entity types (lines, circles, polylines, blocks, etc.)
13
- - **File Conversion**: Support for reading DXF and DWG files with extensible converter system
13
+ - **File Conversion**: Extensible converter registration system (`AcDbDatabaseConverterManager`); DXF/DWG readers live in separate packages
14
14
  - **Symbol Tables**: Layer, linetype, text style, and dimension style management
15
15
  - **Block Management**: Block table and block reference handling
16
16
  - **Dimension Support**: Comprehensive dimension entity types
@@ -76,9 +76,10 @@ npm install @mlightcad/data-model
76
76
  ### File Conversion
77
77
  - **AcDbDatabaseConverter**: Base class for file format converters
78
78
  - **AcDbDatabaseConverterManager**: Manages registered file converters
79
- - **AcDbDxfConverter**: DXF file converter
80
79
  - **AcDbBatchProcessing**: Batch processing utilities
81
- - **AcDbObjectConverter**: Object conversion utilities
80
+ - **AcDbBaseWorker**, **createWorkerApi**: Web Worker infrastructure for parsers
81
+
82
+ DXF import is provided by [@mlightcad/dxf-json-converter](../dxf-json-converter/README.md). DWG import is provided by converter packages such as [@mlightcad/libredwg-converter](../libredwg-converter/README.md). Register them with `AcDbDatabaseConverterManager` before calling `AcDbDatabase.read()`.
82
83
 
83
84
  ### Utilities
84
85
  - **AcDbConstants**: Database constants
@@ -157,22 +158,37 @@ modelSpace.appendEntity(blockRef);
157
158
 
158
159
  ### File Conversion
159
160
  ```typescript
160
- import { AcDbDatabaseConverterManager, AcDbFileType } from '@mlightcad/data-model';
161
-
162
- // Get the DXF converter
163
- const converter = AcDbDatabaseConverterManager.instance.get(AcDbFileType.DXF);
164
-
165
- // Read a DXF file
166
- const database = await converter.read('drawing.dxf');
167
-
168
- // Register a custom converter
169
- class MyDwgConverter extends AcDbDatabaseConverter {
170
- async read(filePath: string): Promise<AcDbDatabase> {
171
- // Custom DWG reading logic
172
- }
173
- }
174
-
175
- AcDbDatabaseConverterManager.instance.register(AcDbFileType.DWG, new MyDwgConverter());
161
+ import {
162
+ AcDbDatabase,
163
+ AcDbDatabaseConverterManager,
164
+ AcDbFileType,
165
+ acdbHostApplicationServices,
166
+ AcDbOpenDatabaseOptions
167
+ } from '@mlightcad/data-model'
168
+ import { AcDbDxfConverter } from '@mlightcad/dxf-json-converter'
169
+ import { AcDbLibreDwgConverter } from '@mlightcad/libredwg-converter'
170
+
171
+ // Register converters (required before reading files)
172
+ AcDbDatabaseConverterManager.instance.register(
173
+ AcDbFileType.DXF,
174
+ new AcDbDxfConverter({
175
+ useWorker: true,
176
+ parserWorkerUrl: './assets/dxf-parser-worker.js'
177
+ })
178
+ )
179
+ AcDbDatabaseConverterManager.instance.register(
180
+ AcDbFileType.DWG,
181
+ new AcDbLibreDwgConverter({
182
+ useWorker: true,
183
+ parserWorkerUrl: './assets/libredwg-parser-worker.js'
184
+ })
185
+ )
186
+
187
+ // Read a file into the database
188
+ const database = new AcDbDatabase()
189
+ acdbHostApplicationServices().workingDatabase = database
190
+ const buffer = await file.arrayBuffer()
191
+ await database.read(buffer, { readOnly: true }, AcDbFileType.DXF)
176
192
  ```
177
193
 
178
194
  ### Dimension Creation
@@ -210,12 +226,14 @@ newLayout.setPlotCentered(true);
210
226
 
211
227
  ## Dependencies
212
228
 
213
- - **@mlightcad/dxf-json**: For DXF file parsing
214
229
  - **@mlightcad/common**: For common utilities (peer dependency)
215
230
  - **@mlightcad/geometry-engine**: For geometric operations (peer dependency)
216
231
  - **@mlightcad/graphic-interface**: For graphics interface (peer dependency)
232
+ - **iconv-lite**: For text encoding conversion
217
233
  - **uid**: For unique ID generation
218
234
 
235
+ To read DXF files, also install [@mlightcad/dxf-json-converter](../dxf-json-converter/README.md) and register `AcDbDxfConverter`.
236
+
219
237
  ## API Documentation
220
238
 
221
239
  For detailed API documentation, visit the [RealDWG-Web documentation](https://mlight-lee.github.io/realdwg-web/).