@mlightcad/data-model 1.11.3 → 1.12.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 (384) hide show
  1. package/README.md +19 -12
  2. package/dist/data-model.cjs +15 -12
  3. package/lib/acis/AcDbAcisDecrypt.d.ts +51 -0
  4. package/lib/acis/AcDbAcisDecrypt.d.ts.map +1 -0
  5. package/lib/acis/AcDbAcisDecrypt.js +98 -0
  6. package/lib/acis/AcDbAcisDecrypt.js.map +1 -0
  7. package/lib/acis/index.d.ts +1 -0
  8. package/lib/acis/index.d.ts.map +1 -1
  9. package/lib/acis/index.js +1 -0
  10. package/lib/acis/index.js.map +1 -1
  11. package/lib/base/AcDbDxfFiler.d.ts +140 -4
  12. package/lib/base/AcDbDxfFiler.d.ts.map +1 -1
  13. package/lib/base/AcDbDxfFiler.js +690 -9
  14. package/lib/base/AcDbDxfFiler.js.map +1 -1
  15. package/lib/base/AcDbDxfGroupCodeTypes.d.ts +12 -0
  16. package/lib/base/AcDbDxfGroupCodeTypes.d.ts.map +1 -0
  17. package/lib/base/AcDbDxfGroupCodeTypes.js +96 -0
  18. package/lib/base/AcDbDxfGroupCodeTypes.js.map +1 -0
  19. package/lib/base/AcDbDxfPair.d.ts +38 -0
  20. package/lib/base/AcDbDxfPair.d.ts.map +1 -0
  21. package/lib/base/AcDbDxfPair.js +2 -0
  22. package/lib/base/AcDbDxfPair.js.map +1 -0
  23. package/lib/base/AcDbDxfPairReader.d.ts +65 -0
  24. package/lib/base/AcDbDxfPairReader.d.ts.map +1 -0
  25. package/lib/base/AcDbDxfPairReader.js +539 -0
  26. package/lib/base/AcDbDxfPairReader.js.map +1 -0
  27. package/lib/base/AcDbDxfStringChunks.d.ts +41 -0
  28. package/lib/base/AcDbDxfStringChunks.d.ts.map +1 -0
  29. package/lib/base/AcDbDxfStringChunks.js +121 -0
  30. package/lib/base/AcDbDxfStringChunks.js.map +1 -0
  31. package/lib/base/AcDbObject.d.ts +40 -0
  32. package/lib/base/AcDbObject.d.ts.map +1 -1
  33. package/lib/base/AcDbObject.js +144 -14
  34. package/lib/base/AcDbObject.js.map +1 -1
  35. package/lib/base/index.d.ts +9 -2
  36. package/lib/base/index.d.ts.map +1 -1
  37. package/lib/base/index.js +4 -1
  38. package/lib/base/index.js.map +1 -1
  39. package/lib/converter/AcDbFontNameCollector.d.ts +4 -0
  40. package/lib/converter/AcDbFontNameCollector.d.ts.map +1 -1
  41. package/lib/converter/AcDbFontNameCollector.js +6 -0
  42. package/lib/converter/AcDbFontNameCollector.js.map +1 -1
  43. package/lib/database/AcDbBlockTableRecord.d.ts +18 -2
  44. package/lib/database/AcDbBlockTableRecord.d.ts.map +1 -1
  45. package/lib/database/AcDbBlockTableRecord.js +67 -2
  46. package/lib/database/AcDbBlockTableRecord.js.map +1 -1
  47. package/lib/database/AcDbDatabase.d.ts +55 -8
  48. package/lib/database/AcDbDatabase.d.ts.map +1 -1
  49. package/lib/database/AcDbDatabase.js +358 -76
  50. package/lib/database/AcDbDatabase.js.map +1 -1
  51. package/lib/database/AcDbDatabaseConverterManager.d.ts +5 -0
  52. package/lib/database/AcDbDatabaseConverterManager.d.ts.map +1 -1
  53. package/lib/database/AcDbDatabaseConverterManager.js +5 -0
  54. package/lib/database/AcDbDatabaseConverterManager.js.map +1 -1
  55. package/lib/database/AcDbDimStyleTableRecord.d.ts +9 -0
  56. package/lib/database/AcDbDimStyleTableRecord.d.ts.map +1 -1
  57. package/lib/database/AcDbDimStyleTableRecord.js +277 -0
  58. package/lib/database/AcDbDimStyleTableRecord.js.map +1 -1
  59. package/lib/database/AcDbDwgVersion.d.ts +37 -0
  60. package/lib/database/AcDbDwgVersion.d.ts.map +1 -1
  61. package/lib/database/AcDbDwgVersion.js +31 -6
  62. package/lib/database/AcDbDwgVersion.js.map +1 -1
  63. package/lib/database/AcDbLayerTableRecord.d.ts +1 -0
  64. package/lib/database/AcDbLayerTableRecord.d.ts.map +1 -1
  65. package/lib/database/AcDbLayerTableRecord.js +52 -1
  66. package/lib/database/AcDbLayerTableRecord.js.map +1 -1
  67. package/lib/database/AcDbLinetypeTableRecord.d.ts +1 -0
  68. package/lib/database/AcDbLinetypeTableRecord.d.ts.map +1 -1
  69. package/lib/database/AcDbLinetypeTableRecord.js +60 -0
  70. package/lib/database/AcDbLinetypeTableRecord.js.map +1 -1
  71. package/lib/database/AcDbRegAppTableRecord.d.ts +1 -0
  72. package/lib/database/AcDbRegAppTableRecord.d.ts.map +1 -1
  73. package/lib/database/AcDbRegAppTableRecord.js +26 -0
  74. package/lib/database/AcDbRegAppTableRecord.js.map +1 -1
  75. package/lib/database/AcDbSystemVariables.d.ts +3 -1
  76. package/lib/database/AcDbSystemVariables.d.ts.map +1 -1
  77. package/lib/database/AcDbSystemVariables.js +2 -0
  78. package/lib/database/AcDbSystemVariables.js.map +1 -1
  79. package/lib/database/AcDbTextStyleTableRecord.d.ts +9 -0
  80. package/lib/database/AcDbTextStyleTableRecord.d.ts.map +1 -1
  81. package/lib/database/AcDbTextStyleTableRecord.js +101 -0
  82. package/lib/database/AcDbTextStyleTableRecord.js.map +1 -1
  83. package/lib/database/AcDbUcsTable.d.ts +15 -0
  84. package/lib/database/AcDbUcsTable.d.ts.map +1 -0
  85. package/lib/database/AcDbUcsTable.js +33 -0
  86. package/lib/database/AcDbUcsTable.js.map +1 -0
  87. package/lib/database/AcDbUcsTableRecord.d.ts +75 -0
  88. package/lib/database/AcDbUcsTableRecord.d.ts.map +1 -0
  89. package/lib/database/AcDbUcsTableRecord.js +240 -0
  90. package/lib/database/AcDbUcsTableRecord.js.map +1 -0
  91. package/lib/database/AcDbViewTableRecord.d.ts +9 -0
  92. package/lib/database/AcDbViewTableRecord.d.ts.map +1 -1
  93. package/lib/database/AcDbViewTableRecord.js +148 -0
  94. package/lib/database/AcDbViewTableRecord.js.map +1 -1
  95. package/lib/database/AcDbViewportTableRecord.d.ts +8 -0
  96. package/lib/database/AcDbViewportTableRecord.d.ts.map +1 -1
  97. package/lib/database/AcDbViewportTableRecord.js +253 -1
  98. package/lib/database/AcDbViewportTableRecord.js.map +1 -1
  99. package/lib/database/index.d.ts +4 -1
  100. package/lib/database/index.d.ts.map +1 -1
  101. package/lib/database/index.js +2 -0
  102. package/lib/database/index.js.map +1 -1
  103. package/lib/dxf/AcDbDxfAcdsDataReader.d.ts +25 -0
  104. package/lib/dxf/AcDbDxfAcdsDataReader.d.ts.map +1 -0
  105. package/lib/dxf/AcDbDxfAcdsDataReader.js +98 -0
  106. package/lib/dxf/AcDbDxfAcdsDataReader.js.map +1 -0
  107. package/lib/dxf/AcDbDxfDimensionAssembler.d.ts +10 -0
  108. package/lib/dxf/AcDbDxfDimensionAssembler.d.ts.map +1 -0
  109. package/lib/dxf/AcDbDxfDimensionAssembler.js +149 -0
  110. package/lib/dxf/AcDbDxfDimensionAssembler.js.map +1 -0
  111. package/lib/dxf/AcDbDxfDocumentReader.d.ts +101 -0
  112. package/lib/dxf/AcDbDxfDocumentReader.d.ts.map +1 -0
  113. package/lib/dxf/AcDbDxfDocumentReader.js +1100 -0
  114. package/lib/dxf/AcDbDxfDocumentReader.js.map +1 -0
  115. package/lib/dxf/AcDbDxfEntityFactory.d.ts +14 -0
  116. package/lib/dxf/AcDbDxfEntityFactory.d.ts.map +1 -0
  117. package/lib/dxf/AcDbDxfEntityFactory.js +147 -0
  118. package/lib/dxf/AcDbDxfEntityFactory.js.map +1 -0
  119. package/lib/dxf/AcDbDxfHeaderReader.d.ts +9 -0
  120. package/lib/dxf/AcDbDxfHeaderReader.d.ts.map +1 -0
  121. package/lib/dxf/AcDbDxfHeaderReader.js +248 -0
  122. package/lib/dxf/AcDbDxfHeaderReader.js.map +1 -0
  123. package/lib/dxf/AcDbDxfObjectsReader.d.ts +38 -0
  124. package/lib/dxf/AcDbDxfObjectsReader.d.ts.map +1 -0
  125. package/lib/dxf/AcDbDxfObjectsReader.js +533 -0
  126. package/lib/dxf/AcDbDxfObjectsReader.js.map +1 -0
  127. package/lib/dxf/AcDbDxfPairArrayReader.d.ts +27 -0
  128. package/lib/dxf/AcDbDxfPairArrayReader.d.ts.map +1 -0
  129. package/lib/dxf/AcDbDxfPairArrayReader.js +69 -0
  130. package/lib/dxf/AcDbDxfPairArrayReader.js.map +1 -0
  131. package/lib/dxf/AcDbDxfPolylineAssembler.d.ts +11 -0
  132. package/lib/dxf/AcDbDxfPolylineAssembler.d.ts.map +1 -0
  133. package/lib/dxf/AcDbDxfPolylineAssembler.js +318 -0
  134. package/lib/dxf/AcDbDxfPolylineAssembler.js.map +1 -0
  135. package/lib/dxf/AcDbDxfVersionCaps.d.ts +8 -0
  136. package/lib/dxf/AcDbDxfVersionCaps.d.ts.map +1 -0
  137. package/lib/dxf/AcDbDxfVersionCaps.js +18 -0
  138. package/lib/dxf/AcDbDxfVersionCaps.js.map +1 -0
  139. package/lib/dxf/AcDbNativeDxfConverter.d.ts +30 -0
  140. package/lib/dxf/AcDbNativeDxfConverter.d.ts.map +1 -0
  141. package/lib/dxf/AcDbNativeDxfConverter.js +266 -0
  142. package/lib/dxf/AcDbNativeDxfConverter.js.map +1 -0
  143. package/lib/dxf/index.d.ts +12 -0
  144. package/lib/dxf/index.d.ts.map +1 -0
  145. package/lib/dxf/index.js +9 -0
  146. package/lib/dxf/index.js.map +1 -0
  147. package/lib/dxf/registerNativeDxfConverter.d.ts +2 -0
  148. package/lib/dxf/registerNativeDxfConverter.d.ts.map +1 -0
  149. package/lib/dxf/registerNativeDxfConverter.js +12 -0
  150. package/lib/dxf/registerNativeDxfConverter.js.map +1 -0
  151. package/lib/entity/AcDb3dSolid.d.ts +43 -0
  152. package/lib/entity/AcDb3dSolid.d.ts.map +1 -1
  153. package/lib/entity/AcDb3dSolid.js +154 -16
  154. package/lib/entity/AcDb3dSolid.js.map +1 -1
  155. package/lib/entity/AcDbArc.d.ts +9 -0
  156. package/lib/entity/AcDbArc.d.ts.map +1 -1
  157. package/lib/entity/AcDbArc.js +107 -3
  158. package/lib/entity/AcDbArc.js.map +1 -1
  159. package/lib/entity/AcDbAttribute.d.ts +1 -0
  160. package/lib/entity/AcDbAttribute.d.ts.map +1 -1
  161. package/lib/entity/AcDbAttribute.js +44 -0
  162. package/lib/entity/AcDbAttribute.js.map +1 -1
  163. package/lib/entity/AcDbAttributeDefinition.d.ts +1 -0
  164. package/lib/entity/AcDbAttributeDefinition.d.ts.map +1 -1
  165. package/lib/entity/AcDbAttributeDefinition.js +47 -0
  166. package/lib/entity/AcDbAttributeDefinition.js.map +1 -1
  167. package/lib/entity/AcDbBlockReference.d.ts +26 -0
  168. package/lib/entity/AcDbBlockReference.d.ts.map +1 -1
  169. package/lib/entity/AcDbBlockReference.js +185 -5
  170. package/lib/entity/AcDbBlockReference.js.map +1 -1
  171. package/lib/entity/AcDbCircle.d.ts +9 -0
  172. package/lib/entity/AcDbCircle.d.ts.map +1 -1
  173. package/lib/entity/AcDbCircle.js +73 -1
  174. package/lib/entity/AcDbCircle.js.map +1 -1
  175. package/lib/entity/AcDbEllipse.d.ts +2 -0
  176. package/lib/entity/AcDbEllipse.d.ts.map +1 -1
  177. package/lib/entity/AcDbEllipse.js +71 -0
  178. package/lib/entity/AcDbEllipse.js.map +1 -1
  179. package/lib/entity/AcDbEntity.d.ts +12 -0
  180. package/lib/entity/AcDbEntity.d.ts.map +1 -1
  181. package/lib/entity/AcDbEntity.js +91 -1
  182. package/lib/entity/AcDbEntity.js.map +1 -1
  183. package/lib/entity/AcDbFace.d.ts +1 -0
  184. package/lib/entity/AcDbFace.d.ts.map +1 -1
  185. package/lib/entity/AcDbFace.js +49 -1
  186. package/lib/entity/AcDbFace.js.map +1 -1
  187. package/lib/entity/AcDbFcf.d.ts +1 -0
  188. package/lib/entity/AcDbFcf.d.ts.map +1 -1
  189. package/lib/entity/AcDbFcf.js +71 -0
  190. package/lib/entity/AcDbFcf.js.map +1 -1
  191. package/lib/entity/AcDbHatch.d.ts +17 -0
  192. package/lib/entity/AcDbHatch.d.ts.map +1 -1
  193. package/lib/entity/AcDbHatch.js +629 -4
  194. package/lib/entity/AcDbHatch.js.map +1 -1
  195. package/lib/entity/AcDbLeader.d.ts +1 -0
  196. package/lib/entity/AcDbLeader.d.ts.map +1 -1
  197. package/lib/entity/AcDbLeader.js +135 -0
  198. package/lib/entity/AcDbLeader.js.map +1 -1
  199. package/lib/entity/AcDbLine.d.ts +16 -1
  200. package/lib/entity/AcDbLine.d.ts.map +1 -1
  201. package/lib/entity/AcDbLine.js +102 -3
  202. package/lib/entity/AcDbLine.js.map +1 -1
  203. package/lib/entity/AcDbMLeader.d.ts +22 -0
  204. package/lib/entity/AcDbMLeader.d.ts.map +1 -1
  205. package/lib/entity/AcDbMLeader.js +871 -11
  206. package/lib/entity/AcDbMLeader.js.map +1 -1
  207. package/lib/entity/AcDbMLine.d.ts +1 -0
  208. package/lib/entity/AcDbMLine.d.ts.map +1 -1
  209. package/lib/entity/AcDbMLine.js +168 -0
  210. package/lib/entity/AcDbMLine.js.map +1 -1
  211. package/lib/entity/AcDbMText.d.ts +46 -1
  212. package/lib/entity/AcDbMText.d.ts.map +1 -1
  213. package/lib/entity/AcDbMText.js +278 -4
  214. package/lib/entity/AcDbMText.js.map +1 -1
  215. package/lib/entity/AcDbOle2Frame.d.ts +1 -0
  216. package/lib/entity/AcDbOle2Frame.d.ts.map +1 -1
  217. package/lib/entity/AcDbOle2Frame.js +83 -1
  218. package/lib/entity/AcDbOle2Frame.js.map +1 -1
  219. package/lib/entity/AcDbOleFrame.d.ts +1 -0
  220. package/lib/entity/AcDbOleFrame.d.ts.map +1 -1
  221. package/lib/entity/AcDbOleFrame.js +44 -1
  222. package/lib/entity/AcDbOleFrame.js.map +1 -1
  223. package/lib/entity/AcDbPoint.d.ts +27 -1
  224. package/lib/entity/AcDbPoint.d.ts.map +1 -1
  225. package/lib/entity/AcDbPoint.js +113 -2
  226. package/lib/entity/AcDbPoint.js.map +1 -1
  227. package/lib/entity/AcDbPolyline.d.ts +22 -1
  228. package/lib/entity/AcDbPolyline.d.ts.map +1 -1
  229. package/lib/entity/AcDbPolyline.js +195 -1
  230. package/lib/entity/AcDbPolyline.js.map +1 -1
  231. package/lib/entity/AcDbProxyEntity.d.ts +4 -2
  232. package/lib/entity/AcDbProxyEntity.d.ts.map +1 -1
  233. package/lib/entity/AcDbProxyEntity.js +55 -3
  234. package/lib/entity/AcDbProxyEntity.js.map +1 -1
  235. package/lib/entity/AcDbRasterImage.d.ts +16 -0
  236. package/lib/entity/AcDbRasterImage.d.ts.map +1 -1
  237. package/lib/entity/AcDbRasterImage.js +156 -0
  238. package/lib/entity/AcDbRasterImage.js.map +1 -1
  239. package/lib/entity/AcDbRay.d.ts +1 -0
  240. package/lib/entity/AcDbRay.d.ts.map +1 -1
  241. package/lib/entity/AcDbRay.js +42 -0
  242. package/lib/entity/AcDbRay.js.map +1 -1
  243. package/lib/entity/AcDbShape.d.ts +1 -0
  244. package/lib/entity/AcDbShape.d.ts.map +1 -1
  245. package/lib/entity/AcDbShape.js +76 -1
  246. package/lib/entity/AcDbShape.js.map +1 -1
  247. package/lib/entity/AcDbSpline.d.ts +23 -1
  248. package/lib/entity/AcDbSpline.d.ts.map +1 -1
  249. package/lib/entity/AcDbSpline.js +226 -1
  250. package/lib/entity/AcDbSpline.js.map +1 -1
  251. package/lib/entity/AcDbTable.d.ts +5 -0
  252. package/lib/entity/AcDbTable.d.ts.map +1 -1
  253. package/lib/entity/AcDbTable.js +265 -1
  254. package/lib/entity/AcDbTable.js.map +1 -1
  255. package/lib/entity/AcDbText.d.ts +25 -1
  256. package/lib/entity/AcDbText.d.ts.map +1 -1
  257. package/lib/entity/AcDbText.js +175 -1
  258. package/lib/entity/AcDbText.js.map +1 -1
  259. package/lib/entity/AcDbTextExtentsHelpers.d.ts +2 -2
  260. package/lib/entity/AcDbTextExtentsHelpers.js +3 -3
  261. package/lib/entity/AcDbTextExtentsHelpers.js.map +1 -1
  262. package/lib/entity/AcDbTrace.d.ts +9 -1
  263. package/lib/entity/AcDbTrace.d.ts.map +1 -1
  264. package/lib/entity/AcDbTrace.js +84 -5
  265. package/lib/entity/AcDbTrace.js.map +1 -1
  266. package/lib/entity/AcDbViewport.d.ts +156 -0
  267. package/lib/entity/AcDbViewport.d.ts.map +1 -1
  268. package/lib/entity/AcDbViewport.js +852 -1
  269. package/lib/entity/AcDbViewport.js.map +1 -1
  270. package/lib/entity/AcDbXline.d.ts +1 -0
  271. package/lib/entity/AcDbXline.d.ts.map +1 -1
  272. package/lib/entity/AcDbXline.js +42 -0
  273. package/lib/entity/AcDbXline.js.map +1 -1
  274. package/lib/entity/dimension/AcDb3PointAngularDimension.d.ts +1 -0
  275. package/lib/entity/dimension/AcDb3PointAngularDimension.d.ts.map +1 -1
  276. package/lib/entity/dimension/AcDb3PointAngularDimension.js +163 -0
  277. package/lib/entity/dimension/AcDb3PointAngularDimension.js.map +1 -1
  278. package/lib/entity/dimension/AcDbAlignedDimension.d.ts +2 -0
  279. package/lib/entity/dimension/AcDbAlignedDimension.d.ts.map +1 -1
  280. package/lib/entity/dimension/AcDbAlignedDimension.js +109 -2
  281. package/lib/entity/dimension/AcDbAlignedDimension.js.map +1 -1
  282. package/lib/entity/dimension/AcDbArcDimension.d.ts +1 -0
  283. package/lib/entity/dimension/AcDbArcDimension.d.ts.map +1 -1
  284. package/lib/entity/dimension/AcDbArcDimension.js +68 -0
  285. package/lib/entity/dimension/AcDbArcDimension.js.map +1 -1
  286. package/lib/entity/dimension/AcDbDiametricDimension.d.ts +1 -0
  287. package/lib/entity/dimension/AcDbDiametricDimension.d.ts.map +1 -1
  288. package/lib/entity/dimension/AcDbDiametricDimension.js +77 -0
  289. package/lib/entity/dimension/AcDbDiametricDimension.js.map +1 -1
  290. package/lib/entity/dimension/AcDbDimension.d.ts +50 -1
  291. package/lib/entity/dimension/AcDbDimension.d.ts.map +1 -1
  292. package/lib/entity/dimension/AcDbDimension.js +176 -5
  293. package/lib/entity/dimension/AcDbDimension.js.map +1 -1
  294. package/lib/entity/dimension/AcDbOrdinateDimension.d.ts +1 -0
  295. package/lib/entity/dimension/AcDbOrdinateDimension.d.ts.map +1 -1
  296. package/lib/entity/dimension/AcDbOrdinateDimension.js +46 -0
  297. package/lib/entity/dimension/AcDbOrdinateDimension.js.map +1 -1
  298. package/lib/entity/dimension/AcDbRadialDimension.d.ts +1 -0
  299. package/lib/entity/dimension/AcDbRadialDimension.d.ts.map +1 -1
  300. package/lib/entity/dimension/AcDbRadialDimension.js +69 -0
  301. package/lib/entity/dimension/AcDbRadialDimension.js.map +1 -1
  302. package/lib/index.d.ts +7 -5
  303. package/lib/index.d.ts.map +1 -1
  304. package/lib/index.js +7 -3
  305. package/lib/index.js.map +1 -1
  306. package/lib/ly/AcLyLayerFilterIO.d.ts.map +1 -1
  307. package/lib/ly/AcLyLayerFilterIO.js +5 -0
  308. package/lib/ly/AcLyLayerFilterIO.js.map +1 -1
  309. package/lib/misc/AcDbMemoryEstimator.d.ts.map +1 -1
  310. package/lib/misc/AcDbMemoryEstimator.js +3 -0
  311. package/lib/misc/AcDbMemoryEstimator.js.map +1 -1
  312. package/lib/misc/index.d.ts +1 -1
  313. package/lib/misc/index.d.ts.map +1 -1
  314. package/lib/misc/index.js +1 -1
  315. package/lib/misc/index.js.map +1 -1
  316. package/lib/misc/proxyGraphic/AcDbProxyGraphic.d.ts +6 -5
  317. package/lib/misc/proxyGraphic/AcDbProxyGraphic.d.ts.map +1 -1
  318. package/lib/misc/proxyGraphic/AcDbProxyGraphic.js +9 -36
  319. package/lib/misc/proxyGraphic/AcDbProxyGraphic.js.map +1 -1
  320. package/lib/misc/proxyGraphic/AcDbProxyGraphicBinaryStream.d.ts +12 -0
  321. package/lib/misc/proxyGraphic/AcDbProxyGraphicBinaryStream.d.ts.map +1 -1
  322. package/lib/misc/proxyGraphic/AcDbProxyGraphicBinaryStream.js +54 -0
  323. package/lib/misc/proxyGraphic/AcDbProxyGraphicBinaryStream.js.map +1 -1
  324. package/lib/misc/proxyGraphic/index.d.ts +1 -1
  325. package/lib/misc/proxyGraphic/index.d.ts.map +1 -1
  326. package/lib/misc/proxyGraphic/index.js +1 -1
  327. package/lib/misc/proxyGraphic/index.js.map +1 -1
  328. package/lib/object/AcDbDictionary.d.ts +7 -0
  329. package/lib/object/AcDbDictionary.d.ts.map +1 -1
  330. package/lib/object/AcDbDictionary.js +35 -0
  331. package/lib/object/AcDbDictionary.js.map +1 -1
  332. package/lib/object/AcDbFilter.d.ts +95 -0
  333. package/lib/object/AcDbFilter.d.ts.map +1 -1
  334. package/lib/object/AcDbFilter.js +256 -1
  335. package/lib/object/AcDbFilter.js.map +1 -1
  336. package/lib/object/AcDbGroup.d.ts +26 -0
  337. package/lib/object/AcDbGroup.d.ts.map +1 -0
  338. package/lib/object/AcDbGroup.js +171 -0
  339. package/lib/object/AcDbGroup.js.map +1 -0
  340. package/lib/object/AcDbIndex.d.ts +1 -0
  341. package/lib/object/AcDbIndex.d.ts.map +1 -1
  342. package/lib/object/AcDbIndex.js +23 -0
  343. package/lib/object/AcDbIndex.js.map +1 -1
  344. package/lib/object/AcDbLayerFilter.d.ts +1 -0
  345. package/lib/object/AcDbLayerFilter.d.ts.map +1 -1
  346. package/lib/object/AcDbLayerFilter.js +21 -0
  347. package/lib/object/AcDbLayerFilter.js.map +1 -1
  348. package/lib/object/AcDbLayerIndex.d.ts +1 -0
  349. package/lib/object/AcDbLayerIndex.d.ts.map +1 -1
  350. package/lib/object/AcDbLayerIndex.js +38 -0
  351. package/lib/object/AcDbLayerIndex.js.map +1 -1
  352. package/lib/object/AcDbMLeaderStyle.d.ts +1 -0
  353. package/lib/object/AcDbMLeaderStyle.d.ts.map +1 -1
  354. package/lib/object/AcDbMLeaderStyle.js +158 -1
  355. package/lib/object/AcDbMLeaderStyle.js.map +1 -1
  356. package/lib/object/AcDbMlineStyle.d.ts +2 -0
  357. package/lib/object/AcDbMlineStyle.d.ts.map +1 -1
  358. package/lib/object/AcDbMlineStyle.js +88 -0
  359. package/lib/object/AcDbMlineStyle.js.map +1 -1
  360. package/lib/object/AcDbRasterImageDef.d.ts +49 -0
  361. package/lib/object/AcDbRasterImageDef.d.ts.map +1 -1
  362. package/lib/object/AcDbRasterImageDef.js +136 -2
  363. package/lib/object/AcDbRasterImageDef.js.map +1 -1
  364. package/lib/object/AcDbSortentsTable.d.ts +14 -0
  365. package/lib/object/AcDbSortentsTable.d.ts.map +1 -0
  366. package/lib/object/AcDbSortentsTable.js +122 -0
  367. package/lib/object/AcDbSortentsTable.js.map +1 -0
  368. package/lib/object/AcDbXrecord.d.ts +8 -0
  369. package/lib/object/AcDbXrecord.d.ts.map +1 -1
  370. package/lib/object/AcDbXrecord.js +43 -2
  371. package/lib/object/AcDbXrecord.js.map +1 -1
  372. package/lib/object/index.d.ts +2 -0
  373. package/lib/object/index.d.ts.map +1 -1
  374. package/lib/object/index.js +2 -0
  375. package/lib/object/index.js.map +1 -1
  376. package/lib/object/layout/AcDbLayout.d.ts +60 -1
  377. package/lib/object/layout/AcDbLayout.d.ts.map +1 -1
  378. package/lib/object/layout/AcDbLayout.js +237 -1
  379. package/lib/object/layout/AcDbLayout.js.map +1 -1
  380. package/lib/object/layout/AcDbPlotSettings.d.ts +11 -0
  381. package/lib/object/layout/AcDbPlotSettings.d.ts.map +1 -1
  382. package/lib/object/layout/AcDbPlotSettings.js +143 -0
  383. package/lib/object/layout/AcDbPlotSettings.js.map +1 -1
  384. package/package.json +6 -5
@@ -1,3 +1,14 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
1
12
  var __values = (this && this.__values) || function(o) {
2
13
  var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
3
14
  if (m) return m.call(o);
@@ -10,17 +21,55 @@ var __values = (this && this.__values) || function(o) {
10
21
  throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
11
22
  };
12
23
  import { AcCmTransparencyMethod } from '@mlightcad/common';
24
+ import { AcGePoint2d, AcGePoint3d, AcGeVector3d } from '@mlightcad/geometry-engine';
13
25
  import { AcDbDwgVersion } from '../database/AcDbDwgVersion';
26
+ import { acdbDxfIsInt32Code, acdbDxfValueType } from './AcDbDxfGroupCodeTypes';
27
+ import { acdbCreateDxfPairReader, acdbMakeAsciiDxfPairReader } from './AcDbDxfPairReader';
28
+ import { ACDB_DXF_XDATA_BINARY_MAX_BYTES, ACDB_DXF_XDATA_STRING_MAX_BYTES, acdbChunkBinaryByMaxBytes, acdbChunkDxfMTextContents, acdbChunkUtf8ByMaxBytes } from './AcDbDxfStringChunks';
14
29
  /**
15
- * ASCII DXF writer that loosely mirrors the ObjectARX AcDbDxfFiler API.
30
+ * Lightweight status codes for DXF filing (ObjectARX-inspired).
31
+ */
32
+ export var AcDbDxfFilerStatus;
33
+ (function (AcDbDxfFilerStatus) {
34
+ AcDbDxfFilerStatus[AcDbDxfFilerStatus["Ok"] = 0] = "Ok";
35
+ AcDbDxfFilerStatus[AcDbDxfFilerStatus["EndOfFile"] = 1] = "EndOfFile";
36
+ AcDbDxfFilerStatus[AcDbDxfFilerStatus["EndOfObject"] = 2] = "EndOfObject";
37
+ AcDbDxfFilerStatus[AcDbDxfFilerStatus["InvalidDxfCode"] = 3] = "InvalidDxfCode";
38
+ AcDbDxfFilerStatus[AcDbDxfFilerStatus["BadDxfSequence"] = 4] = "BadDxfSequence";
39
+ AcDbDxfFilerStatus[AcDbDxfFilerStatus["NotThatKindOfClass"] = 5] = "NotThatKindOfClass";
40
+ AcDbDxfFilerStatus[AcDbDxfFilerStatus["WrongMode"] = 6] = "WrongMode";
41
+ })(AcDbDxfFilerStatus || (AcDbDxfFilerStatus = {}));
42
+ /** Magic prefix for AutoCAD Binary DXF files (22 bytes). */
43
+ var BINARY_DXF_MAGIC = (function () {
44
+ var prefix = 'AutoCAD Binary DXF\r\n';
45
+ var bytes = new Uint8Array(22);
46
+ for (var i = 0; i < prefix.length; i++)
47
+ bytes[i] = prefix.charCodeAt(i);
48
+ bytes[20] = 0x1a;
49
+ bytes[21] = 0x00;
50
+ return bytes;
51
+ })();
52
+ /**
53
+ * DXF filer that mirrors the ObjectARX {@link AcDbDxfFiler} API.
16
54
  *
17
- * This implementation focuses on export scenarios in the web data model and
18
- * writes classic group-code based DXF text.
55
+ * - **Write mode** (default): accumulates classic group-code ASCII DXF text,
56
+ * or binary DXF bytes when `outputFormat` is `'binary'`.
57
+ * - **Read mode**: pulls typed pairs from an {@link AcDbDxfPairReader} with
58
+ * `readItem` / `pushBackItem` / `atEndOfObject` / `atSubclassData`.
19
59
  */
20
60
  var AcDbDxfFiler = /** @class */ (function () {
21
61
  function AcDbDxfFiler(options) {
22
62
  if (options === void 0) { options = {}; }
23
- var _a;
63
+ var _a, _b;
64
+ this._binaryLength = 0;
65
+ /**
66
+ * Pushback stack for read mode (ObjectARX `pushBackItem`).
67
+ * LIFO: nested pushBacks are supported so a second push does not clobber
68
+ * the first.
69
+ */
70
+ this._pushed = [];
71
+ this._status = AcDbDxfFilerStatus.Ok;
72
+ this._errorMessage = '';
24
73
  this._database = options.database;
25
74
  this._precision = Math.max(0, Math.min(16, (_a = options.precision) !== null && _a !== void 0 ? _a : 16));
26
75
  this._version =
@@ -29,10 +78,39 @@ var AcDbDxfFiler = /** @class */ (function () {
29
78
  : options.version != null
30
79
  ? new AcDbDwgVersion(options.version)
31
80
  : undefined;
81
+ this._outputFormat = (_b = options.outputFormat) !== null && _b !== void 0 ? _b : 'ascii';
32
82
  this._lines = [];
83
+ this._binaryChunks = [];
33
84
  this._handleMap = new Map();
34
85
  this._nextHandle = 1;
86
+ this._mode = options.reader ? 'read' : 'write';
87
+ this._reader = options.reader;
88
+ if (this._mode === 'write' && this._outputFormat === 'binary') {
89
+ this.appendBinary(BINARY_DXF_MAGIC);
90
+ }
35
91
  }
92
+ /** Create a read-mode filer from an existing pair reader. */
93
+ AcDbDxfFiler.forReading = function (reader, options) {
94
+ if (options === void 0) { options = {}; }
95
+ return new AcDbDxfFiler(__assign(__assign({}, options), { reader: reader }));
96
+ };
97
+ /** Create a read-mode filer from DXF bytes (ASCII or binary). */
98
+ AcDbDxfFiler.fromBuffer = function (data, options) {
99
+ if (options === void 0) { options = {}; }
100
+ return AcDbDxfFiler.forReading(acdbCreateDxfPairReader(data), options);
101
+ };
102
+ /** Create a read-mode filer from an already-decoded ASCII DXF string. */
103
+ AcDbDxfFiler.fromString = function (text, options) {
104
+ if (options === void 0) { options = {}; }
105
+ return AcDbDxfFiler.forReading(acdbMakeAsciiDxfPairReader(text), options);
106
+ };
107
+ Object.defineProperty(AcDbDxfFiler.prototype, "mode", {
108
+ get: function () {
109
+ return this._mode;
110
+ },
111
+ enumerable: false,
112
+ configurable: true
113
+ });
36
114
  Object.defineProperty(AcDbDxfFiler.prototype, "database", {
37
115
  get: function () {
38
116
  return this._database;
@@ -68,14 +146,68 @@ var AcDbDxfFiler = /** @class */ (function () {
68
146
  enumerable: false,
69
147
  configurable: true
70
148
  });
149
+ Object.defineProperty(AcDbDxfFiler.prototype, "filerStatus", {
150
+ get: function () {
151
+ return this._status;
152
+ },
153
+ enumerable: false,
154
+ configurable: true
155
+ });
156
+ Object.defineProperty(AcDbDxfFiler.prototype, "errorMessage", {
157
+ get: function () {
158
+ return this._errorMessage;
159
+ },
160
+ enumerable: false,
161
+ configurable: true
162
+ });
71
163
  AcDbDxfFiler.prototype.setVersion = function (value) {
72
164
  this._version =
73
165
  value instanceof AcDbDwgVersion ? value : new AcDbDwgVersion(value);
74
166
  return this;
75
167
  };
168
+ AcDbDxfFiler.prototype.setError = function (status, message) {
169
+ if (message === void 0) { message = ''; }
170
+ this._status = status;
171
+ this._errorMessage = message;
172
+ return this;
173
+ };
174
+ AcDbDxfFiler.prototype.resetStatus = function () {
175
+ this._status = AcDbDxfFilerStatus.Ok;
176
+ this._errorMessage = '';
177
+ return this;
178
+ };
76
179
  AcDbDxfFiler.prototype.toString = function () {
180
+ this.assertWriteMode();
181
+ if (this._outputFormat === 'binary') {
182
+ throw new Error('Use toBinary() for binary DXF output');
183
+ }
77
184
  return this._lines.join('\n') + '\n';
78
185
  };
186
+ /** Finalize binary DXF bytes (includes magic prefix). */
187
+ AcDbDxfFiler.prototype.toBinary = function () {
188
+ var e_1, _a;
189
+ this.assertWriteMode();
190
+ if (this._outputFormat !== 'binary') {
191
+ throw new Error('Filer is not in binary output mode');
192
+ }
193
+ var out = new Uint8Array(this._binaryLength);
194
+ var offset = 0;
195
+ try {
196
+ for (var _b = __values(this._binaryChunks), _c = _b.next(); !_c.done; _c = _b.next()) {
197
+ var chunk = _c.value;
198
+ out.set(chunk, offset);
199
+ offset += chunk.length;
200
+ }
201
+ }
202
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
203
+ finally {
204
+ try {
205
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
206
+ }
207
+ finally { if (e_1) throw e_1.error; }
208
+ }
209
+ return out;
210
+ };
79
211
  AcDbDxfFiler.prototype.registerHandle = function (key) {
80
212
  if (!this._handleMap.has(key)) {
81
213
  // If key is already a valid hex handle, preserve it
@@ -94,9 +226,265 @@ var AcDbDxfFiler = /** @class */ (function () {
94
226
  return undefined;
95
227
  return this.registerHandle(key);
96
228
  };
229
+ Object.defineProperty(AcDbDxfFiler.prototype, "atEof", {
230
+ // ---------------------------------------------------------------------------
231
+ // Read API (ObjectARX-inspired)
232
+ // ---------------------------------------------------------------------------
233
+ /** True if no more pairs are available. */
234
+ get: function () {
235
+ var _a;
236
+ if (this._mode !== 'read')
237
+ return false;
238
+ if (this._pushed.length > 0)
239
+ return false;
240
+ return ((_a = this._reader) === null || _a === void 0 ? void 0 : _a.peek()) === undefined;
241
+ },
242
+ enumerable: false,
243
+ configurable: true
244
+ });
245
+ /**
246
+ * Current read position in the underlying pair stream.
247
+ * Useful for byte-based parse progress while streaming a DXF.
248
+ */
249
+ AcDbDxfFiler.prototype.position = function () {
250
+ if (this._mode !== 'read' || !this._reader) {
251
+ return { byteOffset: 0 };
252
+ }
253
+ return this._reader.position();
254
+ };
255
+ Object.defineProperty(AcDbDxfFiler.prototype, "atEndOfObject", {
256
+ /**
257
+ * True if the next pair starts a new object (group code 0) or EOF.
258
+ * Does not consume the pair.
259
+ */
260
+ get: function () {
261
+ if (this._mode !== 'read')
262
+ return true;
263
+ var next = this.peekPair();
264
+ return next === undefined || next.code === 0;
265
+ },
266
+ enumerable: false,
267
+ configurable: true
268
+ });
269
+ Object.defineProperty(AcDbDxfFiler.prototype, "atExtendedData", {
270
+ /** True if the next pair is XDATA start (1001) or similar extended data. */
271
+ get: function () {
272
+ if (this._mode !== 'read')
273
+ return false;
274
+ var next = this.peekPair();
275
+ if (!next)
276
+ return false;
277
+ return next.code === 1001 || next.code === 1000 || next.code === 1002;
278
+ },
279
+ enumerable: false,
280
+ configurable: true
281
+ });
282
+ /**
283
+ * Advance past subclass marker (100, name) if present.
284
+ * Returns true when positioned at the named subclass data.
285
+ */
286
+ AcDbDxfFiler.prototype.atSubclassData = function (name) {
287
+ if (this._mode !== 'read')
288
+ return false;
289
+ var next = this.peekPair();
290
+ if (!next || next.code !== 100)
291
+ return false;
292
+ if (typeof next.value !== 'string' || next.value !== name)
293
+ return false;
294
+ this.readPair();
295
+ return true;
296
+ };
297
+ /** Peek the next pair without consuming it. */
298
+ AcDbDxfFiler.prototype.peekItem = function () {
299
+ var pair = this.peekPair();
300
+ return pair ? this.pairToTypedValue(pair) : undefined;
301
+ };
302
+ /**
303
+ * Read one DXF item into a typed value (ObjectARX `readItem`).
304
+ * Returns undefined at EOF and sets {@link filerStatus} to EndOfFile.
305
+ */
306
+ AcDbDxfFiler.prototype.readItem = function () {
307
+ var pair = this.readPair();
308
+ if (!pair) {
309
+ this._status = AcDbDxfFilerStatus.EndOfFile;
310
+ return undefined;
311
+ }
312
+ this._status = AcDbDxfFilerStatus.Ok;
313
+ return this.pairToTypedValue(pair);
314
+ };
315
+ /**
316
+ * Push the last-read (or provided) pair back so the next read returns it.
317
+ * Multiple pushbacks form a LIFO stack (nested readers can push without
318
+ * overwriting a prior push).
319
+ */
320
+ AcDbDxfFiler.prototype.pushBackItem = function (item) {
321
+ if (item && 'type' in item) {
322
+ this._pushed.push(item);
323
+ return;
324
+ }
325
+ if (item) {
326
+ this._pushed.push(this.typedValueToPair(item));
327
+ return;
328
+ }
329
+ // No-arg form: re-push the last consumed pair.
330
+ if (this._lastRead) {
331
+ this._pushed.push(this._lastRead);
332
+ }
333
+ };
334
+ /** Skip pairs until the next object boundary (code 0) without consuming it. */
335
+ AcDbDxfFiler.prototype.skipToEndOfObject = function () {
336
+ while (!this.atEndOfObject && !this.atEof) {
337
+ this.readPair();
338
+ }
339
+ };
340
+ AcDbDxfFiler.prototype.readString = function (expectedCode) {
341
+ var pair = this.readPair();
342
+ if (!pair)
343
+ return undefined;
344
+ if (expectedCode != null && pair.code !== expectedCode) {
345
+ this.pushBackPair(pair);
346
+ this.setError(AcDbDxfFilerStatus.InvalidDxfCode, "Expected group code ".concat(expectedCode, ", got ").concat(pair.code));
347
+ return undefined;
348
+ }
349
+ if (pair.type === 'string' || pair.type === 'handle')
350
+ return pair.value;
351
+ return String(pair.value);
352
+ };
353
+ AcDbDxfFiler.prototype.readInt16 = function (expectedCode) {
354
+ return this.readNumber(expectedCode);
355
+ };
356
+ AcDbDxfFiler.prototype.readInt32 = function (expectedCode) {
357
+ return this.readNumber(expectedCode);
358
+ };
359
+ AcDbDxfFiler.prototype.readInt64 = function (expectedCode) {
360
+ var pair = this.readPair();
361
+ if (!pair)
362
+ return undefined;
363
+ if (expectedCode != null && pair.code !== expectedCode) {
364
+ this.pushBackPair(pair);
365
+ this.setError(AcDbDxfFilerStatus.InvalidDxfCode, "Expected group code ".concat(expectedCode, ", got ").concat(pair.code));
366
+ return undefined;
367
+ }
368
+ if (pair.type === 'long' || pair.type === 'int' || pair.type === 'double') {
369
+ return pair.value;
370
+ }
371
+ if (pair.type === 'bool')
372
+ return pair.value ? 1 : 0;
373
+ var n = Number(pair.value);
374
+ return Number.isFinite(n) ? n : 0;
375
+ };
376
+ AcDbDxfFiler.prototype.readDouble = function (expectedCode) {
377
+ return this.readNumber(expectedCode);
378
+ };
379
+ AcDbDxfFiler.prototype.readBoolean = function (expectedCode) {
380
+ var pair = this.readPair();
381
+ if (!pair)
382
+ return undefined;
383
+ if (expectedCode != null && pair.code !== expectedCode) {
384
+ this.pushBackPair(pair);
385
+ this.setError(AcDbDxfFilerStatus.InvalidDxfCode, "Expected group code ".concat(expectedCode, ", got ").concat(pair.code));
386
+ return undefined;
387
+ }
388
+ if (pair.type === 'bool')
389
+ return pair.value;
390
+ if (typeof pair.value === 'number')
391
+ return pair.value !== 0;
392
+ if (typeof pair.value === 'string') {
393
+ return pair.value !== '0' && pair.value !== '';
394
+ }
395
+ return Boolean(pair.value);
396
+ };
397
+ AcDbDxfFiler.prototype.readHandle = function (expectedCode) {
398
+ var pair = this.readPair();
399
+ if (!pair)
400
+ return undefined;
401
+ if (expectedCode != null && pair.code !== expectedCode) {
402
+ this.pushBackPair(pair);
403
+ this.setError(AcDbDxfFilerStatus.InvalidDxfCode, "Expected group code ".concat(expectedCode, ", got ").concat(pair.code));
404
+ return undefined;
405
+ }
406
+ if (pair.type === 'handle' || pair.type === 'string')
407
+ return pair.value;
408
+ return String(pair.value);
409
+ };
410
+ AcDbDxfFiler.prototype.readObjectId = function (expectedCode) {
411
+ return this.readHandle(expectedCode);
412
+ };
413
+ /**
414
+ * Read a 2D point starting at `code` (x), then `code+10` (y).
415
+ * Tolerates missing Y (defaults to 0) when the next code is not code+10.
416
+ */
417
+ AcDbDxfFiler.prototype.readPoint2d = function (code) {
418
+ var _a;
419
+ var x = this.readDouble(code);
420
+ if (x === undefined)
421
+ return undefined;
422
+ var next = this.peekPair();
423
+ var y = 0;
424
+ if (next && next.code === code + 10) {
425
+ y = (_a = this.readNumber()) !== null && _a !== void 0 ? _a : 0;
426
+ }
427
+ return new AcGePoint2d(x, y);
428
+ };
429
+ /**
430
+ * Read a 3D point starting at `code` (x), then `code+10` / `code+20`.
431
+ * Missing Y/Z default to 0 when those group codes are absent.
432
+ */
433
+ AcDbDxfFiler.prototype.readPoint3d = function (code) {
434
+ var _a, _b;
435
+ var x = this.readDouble(code);
436
+ if (x === undefined)
437
+ return undefined;
438
+ var y = 0;
439
+ var z = 0;
440
+ var n1 = this.peekPair();
441
+ if (n1 && n1.code === code + 10) {
442
+ y = (_a = this.readNumber()) !== null && _a !== void 0 ? _a : 0;
443
+ }
444
+ var n2 = this.peekPair();
445
+ if (n2 && n2.code === code + 20) {
446
+ z = (_b = this.readNumber()) !== null && _b !== void 0 ? _b : 0;
447
+ }
448
+ return new AcGePoint3d(x, y, z);
449
+ };
450
+ AcDbDxfFiler.prototype.readVector3d = function (code) {
451
+ var p = this.readPoint3d(code);
452
+ return p ? new AcGeVector3d(p.x, p.y, p.z) : undefined;
453
+ };
454
+ /**
455
+ * Apply color group codes (62 ACI / 420 true color) onto `color` when the
456
+ * current pair matches. Returns true if a color code was consumed.
457
+ */
458
+ AcDbDxfFiler.prototype.readCmColorInto = function (color, aciCode, trueColorCode) {
459
+ if (aciCode === void 0) { aciCode = 62; }
460
+ if (trueColorCode === void 0) { trueColorCode = 420; }
461
+ var next = this.peekPair();
462
+ if (!next)
463
+ return false;
464
+ if (next.code === aciCode) {
465
+ var v = this.readNumber();
466
+ if (v != null)
467
+ color.colorIndex = v;
468
+ return true;
469
+ }
470
+ if (next.code === trueColorCode) {
471
+ var v = this.readNumber();
472
+ if (v != null)
473
+ color.setRGBValue(v);
474
+ return true;
475
+ }
476
+ return false;
477
+ };
478
+ // ---------------------------------------------------------------------------
479
+ // Write API
480
+ // ---------------------------------------------------------------------------
97
481
  AcDbDxfFiler.prototype.writeGroup = function (code, value) {
482
+ this.assertWriteMode();
98
483
  if (value == null)
99
484
  return this;
485
+ if (this._outputFormat === 'binary') {
486
+ return this.writeBinaryGroup(code, value);
487
+ }
100
488
  this._lines.push(String(Math.trunc(code)));
101
489
  var text = this.formatValue(value);
102
490
  // Never emit an empty value line — it breaks DXF pairing (e.g. "70\n\n4") and
@@ -107,7 +495,21 @@ var AcDbDxfFiler = /** @class */ (function () {
107
495
  AcDbDxfFiler.prototype.writeStart = function (value) {
108
496
  return this.writeString(0, value);
109
497
  };
498
+ Object.defineProperty(AcDbDxfFiler.prototype, "capabilities", {
499
+ /**
500
+ * DXF dialect capabilities for the target write version.
501
+ * When version is unset (ad-hoc writers / unit tests), treat as latest.
502
+ */
503
+ get: function () {
504
+ var _a;
505
+ return ((_a = this._version) !== null && _a !== void 0 ? _a : AcDbDwgVersion.latest).capabilities;
506
+ },
507
+ enumerable: false,
508
+ configurable: true
509
+ });
110
510
  AcDbDxfFiler.prototype.writeSubclassMarker = function (value) {
511
+ if (!this.capabilities.supportsSubclassMarkers)
512
+ return this;
111
513
  return this.writeString(100, value);
112
514
  };
113
515
  AcDbDxfFiler.prototype.writeString = function (code, value) {
@@ -115,6 +517,27 @@ var AcDbDxfFiler = /** @class */ (function () {
115
517
  return this;
116
518
  return this.writeGroup(code, value);
117
519
  };
520
+ /**
521
+ * Write MTEXT (or embedded-MTEXT) contents using AutoCAD's group 3 / group 1
522
+ * 250-character chunking rules.
523
+ */
524
+ AcDbDxfFiler.prototype.writeMTextContents = function (text) {
525
+ var e_2, _a;
526
+ try {
527
+ for (var _b = __values(acdbChunkDxfMTextContents(text !== null && text !== void 0 ? text : '')), _c = _b.next(); !_c.done; _c = _b.next()) {
528
+ var chunk = _c.value;
529
+ this.writeString(chunk.code, chunk.value);
530
+ }
531
+ }
532
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
533
+ finally {
534
+ try {
535
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
536
+ }
537
+ finally { if (e_2) throw e_2.error; }
538
+ }
539
+ return this;
540
+ };
118
541
  AcDbDxfFiler.prototype.writeInt8 = function (code, value) {
119
542
  return value == null ? this : this.writeGroup(code, Math.trunc(value));
120
543
  };
@@ -150,12 +573,20 @@ var AcDbDxfFiler = /** @class */ (function () {
150
573
  return this.writeDouble(code, (radians * 180) / Math.PI);
151
574
  };
152
575
  AcDbDxfFiler.prototype.writeHandle = function (code, key) {
576
+ if (!this.capabilities.supportsHandles)
577
+ return this;
153
578
  var handle = this.resolveHandle(key);
154
579
  return handle ? this.writeString(code, handle) : this;
155
580
  };
156
581
  AcDbDxfFiler.prototype.writeObjectId = function (code, objectId) {
157
582
  return this.writeHandle(code, objectId);
158
583
  };
584
+ /** Lineweight (group 370). Omitted for DXF targets before AutoCAD 2000. */
585
+ AcDbDxfFiler.prototype.writeLineWeight = function (code, value) {
586
+ if (value == null || !this.capabilities.supportsLineWeight)
587
+ return this;
588
+ return this.writeInt16(code, value);
589
+ };
159
590
  AcDbDxfFiler.prototype.writePoint2d = function (code, point) {
160
591
  if (!point)
161
592
  return this;
@@ -192,34 +623,89 @@ var AcDbDxfFiler = /** @class */ (function () {
192
623
  }
193
624
  var rgb = color.RGB;
194
625
  if (rgb != null && color.colorIndex == null) {
195
- this.writeInt32(trueColorCode, rgb);
626
+ if (this.capabilities.supportsTrueColor) {
627
+ this.writeInt32(trueColorCode, rgb);
628
+ }
629
+ else {
630
+ // Pre-2004 DXF has no 420 — fall back to ACI white.
631
+ this.writeInt16(aciCode, 7);
632
+ }
196
633
  }
197
634
  return this;
198
635
  };
199
636
  AcDbDxfFiler.prototype.writeTransparency = function (transparency, code) {
200
637
  if (code === void 0) { code = 440; }
201
638
  if (!transparency ||
202
- transparency.method === AcCmTransparencyMethod.ErrorValue) {
639
+ transparency.method === AcCmTransparencyMethod.ErrorValue ||
640
+ !this.capabilities.supportsTransparency) {
203
641
  return this;
204
642
  }
205
643
  return this.writeInt32(code, transparency.serialize());
206
644
  };
207
645
  AcDbDxfFiler.prototype.writeResultBuffer = function (data) {
208
- var e_1, _a;
646
+ var e_3, _a, e_4, _b, e_5, _c;
209
647
  if (!data)
210
648
  return this;
211
649
  try {
212
650
  for (var data_1 = __values(data), data_1_1 = data_1.next(); !data_1_1.done; data_1_1 = data_1.next()) {
213
651
  var item = data_1_1.value;
652
+ var code = Number(item.code);
653
+ // XData ASCII strings are limited to 255 bytes per group 1000.
654
+ if (code === 1000 && typeof item.value === 'string') {
655
+ try {
656
+ for (var _d = (e_4 = void 0, __values(acdbChunkUtf8ByMaxBytes(item.value, ACDB_DXF_XDATA_STRING_MAX_BYTES))), _e = _d.next(); !_e.done; _e = _d.next()) {
657
+ var chunk = _e.value;
658
+ this.writeGroup(1000, chunk);
659
+ }
660
+ }
661
+ catch (e_4_1) { e_4 = { error: e_4_1 }; }
662
+ finally {
663
+ try {
664
+ if (_e && !_e.done && (_b = _d.return)) _b.call(_d);
665
+ }
666
+ finally { if (e_4) throw e_4.error; }
667
+ }
668
+ continue;
669
+ }
670
+ // XData binary chunks are limited to 127 bytes per group 1004.
671
+ if (code === 1004) {
672
+ var bytes = item.value instanceof Uint8Array
673
+ ? item.value
674
+ : typeof item.value === 'string'
675
+ ? acdbHexToBytes(item.value)
676
+ : undefined;
677
+ if (bytes) {
678
+ try {
679
+ for (var _f = (e_5 = void 0, __values(acdbChunkBinaryByMaxBytes(bytes, ACDB_DXF_XDATA_BINARY_MAX_BYTES))), _g = _f.next(); !_g.done; _g = _f.next()) {
680
+ var chunk = _g.value;
681
+ // ASCII DXF stores 1004 as hex; binary DXF stores raw bytes.
682
+ if (this._outputFormat === 'binary') {
683
+ this.writeGroup(1004, chunk);
684
+ }
685
+ else {
686
+ this.writeGroup(1004, acdbBytesToHex(chunk));
687
+ }
688
+ }
689
+ }
690
+ catch (e_5_1) { e_5 = { error: e_5_1 }; }
691
+ finally {
692
+ try {
693
+ if (_g && !_g.done && (_c = _f.return)) _c.call(_f);
694
+ }
695
+ finally { if (e_5) throw e_5.error; }
696
+ }
697
+ continue;
698
+ }
699
+ }
214
700
  this.writeGroup(item.code, item.value);
215
701
  }
216
702
  }
217
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
703
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
218
704
  finally {
219
705
  try {
220
706
  if (data_1_1 && !data_1_1.done && (_a = data_1.return)) _a.call(data_1);
221
707
  }
222
- finally { if (e_1) throw e_1.error; }
708
+ finally { if (e_3) throw e_3.error; }
223
709
  }
224
710
  return this;
225
711
  };
@@ -241,6 +727,181 @@ var AcDbDxfFiler = /** @class */ (function () {
241
727
  this.writeStart('ENDTAB');
242
728
  return this;
243
729
  };
730
+ // ---------------------------------------------------------------------------
731
+ // Internals
732
+ // ---------------------------------------------------------------------------
733
+ AcDbDxfFiler.prototype.assertWriteMode = function () {
734
+ if (this._mode !== 'write') {
735
+ throw new Error('AcDbDxfFiler is in read mode');
736
+ }
737
+ };
738
+ AcDbDxfFiler.prototype.appendBinary = function (bytes) {
739
+ this._binaryChunks.push(bytes);
740
+ this._binaryLength += bytes.length;
741
+ };
742
+ AcDbDxfFiler.prototype.writeBinaryCode = function (code) {
743
+ var truncated = Math.trunc(code) & 0xffff;
744
+ // AC1009 binary DXF uses 1-byte codes with 0xFF escape for codes > 255.
745
+ var legacyR12 = !this.capabilities.supportsSubclassMarkers;
746
+ if (legacyR12) {
747
+ if (truncated <= 0xff) {
748
+ this.appendBinary(Uint8Array.of(truncated));
749
+ }
750
+ else {
751
+ this.appendBinary(Uint8Array.of(0xff, truncated & 0xff, (truncated >> 8) & 0xff));
752
+ }
753
+ return;
754
+ }
755
+ var buf = new Uint8Array(2);
756
+ new DataView(buf.buffer).setUint16(0, truncated, true);
757
+ this.appendBinary(buf);
758
+ };
759
+ AcDbDxfFiler.prototype.writeBinaryGroup = function (code, value) {
760
+ var type = acdbDxfValueType(Math.trunc(code));
761
+ this.writeBinaryCode(Math.trunc(code));
762
+ switch (type) {
763
+ case 'string':
764
+ case 'handle': {
765
+ var text = typeof value === 'string'
766
+ ? this.sanitizeStringForDxfLine(value)
767
+ : this.formatValue(value);
768
+ var encoded = new TextEncoder().encode(text === '' ? '0' : text);
769
+ var withNul = new Uint8Array(encoded.length + 1);
770
+ withNul.set(encoded);
771
+ withNul[encoded.length] = 0;
772
+ this.appendBinary(withNul);
773
+ break;
774
+ }
775
+ case 'int': {
776
+ var n = Math.trunc(Number(value)) || 0;
777
+ if (acdbDxfIsInt32Code(Math.trunc(code))) {
778
+ var buf = new Uint8Array(4);
779
+ new DataView(buf.buffer).setInt32(0, n, true);
780
+ this.appendBinary(buf);
781
+ }
782
+ else {
783
+ var buf = new Uint8Array(2);
784
+ new DataView(buf.buffer).setInt16(0, n, true);
785
+ this.appendBinary(buf);
786
+ }
787
+ break;
788
+ }
789
+ case 'long': {
790
+ var buf = new Uint8Array(8);
791
+ var view = new DataView(buf.buffer);
792
+ if (typeof value === 'bigint') {
793
+ view.setBigInt64(0, value, true);
794
+ }
795
+ else {
796
+ view.setBigInt64(0, BigInt(Math.trunc(Number(value)) || 0), true);
797
+ }
798
+ this.appendBinary(buf);
799
+ break;
800
+ }
801
+ case 'double': {
802
+ var buf = new Uint8Array(8);
803
+ var n = Number(value);
804
+ new DataView(buf.buffer).setFloat64(0, Number.isFinite(n) ? n : 0, true);
805
+ this.appendBinary(buf);
806
+ break;
807
+ }
808
+ case 'bool': {
809
+ var b = typeof value === 'boolean'
810
+ ? value
811
+ : Number(value) !== 0 && value !== '' && value != null;
812
+ this.appendBinary(Uint8Array.of(b ? 1 : 0));
813
+ break;
814
+ }
815
+ case 'binary': {
816
+ var bytes = value instanceof Uint8Array
817
+ ? value
818
+ : new Uint8Array(0);
819
+ var length_1 = Math.min(255, bytes.length);
820
+ var chunk = new Uint8Array(1 + length_1);
821
+ chunk[0] = length_1;
822
+ chunk.set(bytes.subarray(0, length_1), 1);
823
+ this.appendBinary(chunk);
824
+ break;
825
+ }
826
+ default: {
827
+ var text = this.formatValue(value);
828
+ var encoded = new TextEncoder().encode(text === '' ? '0' : text);
829
+ var withNul = new Uint8Array(encoded.length + 1);
830
+ withNul.set(encoded);
831
+ withNul[encoded.length] = 0;
832
+ this.appendBinary(withNul);
833
+ break;
834
+ }
835
+ }
836
+ return this;
837
+ };
838
+ AcDbDxfFiler.prototype.assertReadMode = function () {
839
+ if (this._mode !== 'read' || !this._reader) {
840
+ throw new Error('AcDbDxfFiler is not in read mode');
841
+ }
842
+ };
843
+ AcDbDxfFiler.prototype.peekPair = function () {
844
+ this.assertReadMode();
845
+ if (this._pushed.length > 0) {
846
+ return this._pushed[this._pushed.length - 1];
847
+ }
848
+ return this._reader.peek();
849
+ };
850
+ AcDbDxfFiler.prototype.readPair = function () {
851
+ this.assertReadMode();
852
+ if (this._pushed.length > 0) {
853
+ var p_1 = this._pushed.pop();
854
+ this._lastRead = p_1;
855
+ return p_1;
856
+ }
857
+ var p = this._reader.next();
858
+ this._lastRead = p;
859
+ return p;
860
+ };
861
+ AcDbDxfFiler.prototype.pushBackPair = function (pair) {
862
+ this._pushed.push(pair);
863
+ };
864
+ AcDbDxfFiler.prototype.readNumber = function (expectedCode) {
865
+ var pair = this.readPair();
866
+ if (!pair)
867
+ return undefined;
868
+ if (expectedCode != null && pair.code !== expectedCode) {
869
+ this.pushBackPair(pair);
870
+ this.setError(AcDbDxfFilerStatus.InvalidDxfCode, "Expected group code ".concat(expectedCode, ", got ").concat(pair.code));
871
+ return undefined;
872
+ }
873
+ if (pair.type === 'double' ||
874
+ pair.type === 'int' ||
875
+ pair.type === 'long') {
876
+ var v = pair.value;
877
+ return typeof v === 'bigint' ? Number(v) : v;
878
+ }
879
+ if (pair.type === 'bool')
880
+ return pair.value ? 1 : 0;
881
+ var n = Number(pair.value);
882
+ return Number.isFinite(n) ? n : 0;
883
+ };
884
+ AcDbDxfFiler.prototype.pairToTypedValue = function (pair) {
885
+ return { code: pair.code, value: pair.value };
886
+ };
887
+ AcDbDxfFiler.prototype.typedValueToPair = function (item) {
888
+ var code = Number(item.code);
889
+ var value = item.value;
890
+ if (typeof value === 'boolean')
891
+ return { code: code, type: 'bool', value: value };
892
+ if (typeof value === 'number') {
893
+ // Prefer double for floats; int for integers — callers rarely push back
894
+ // typed values, so double is a safe default for numbers.
895
+ if (Number.isInteger(value))
896
+ return { code: code, type: 'int', value: value };
897
+ return { code: code, type: 'double', value: value };
898
+ }
899
+ if (typeof value === 'bigint')
900
+ return { code: code, type: 'long', value: value };
901
+ if (value instanceof Uint8Array)
902
+ return { code: code, type: 'binary', value: value };
903
+ return { code: code, type: 'string', value: String(value !== null && value !== void 0 ? value : '') };
904
+ };
244
905
  AcDbDxfFiler.prototype.formatValue = function (value) {
245
906
  if (typeof value === 'string') {
246
907
  // ASCII DXF: one value must occupy a single line. Raw CR/LF inside a value
@@ -261,6 +922,9 @@ var AcDbDxfFiler = /** @class */ (function () {
261
922
  return '0';
262
923
  return trimmed;
263
924
  }
925
+ if (value instanceof Uint8Array) {
926
+ return acdbBytesToHex(value);
927
+ }
264
928
  return String(value);
265
929
  };
266
930
  /** Removes characters that must not appear on a single DXF value line. */
@@ -273,4 +937,21 @@ var AcDbDxfFiler = /** @class */ (function () {
273
937
  return AcDbDxfFiler;
274
938
  }());
275
939
  export { AcDbDxfFiler };
940
+ function acdbBytesToHex(bytes) {
941
+ var _a;
942
+ var out = '';
943
+ for (var i = 0; i < bytes.length; i++) {
944
+ out += ((_a = bytes[i]) !== null && _a !== void 0 ? _a : 0).toString(16).padStart(2, '0').toUpperCase();
945
+ }
946
+ return out;
947
+ }
948
+ function acdbHexToBytes(hex) {
949
+ var trimmed = hex.replace(/\s+/g, '');
950
+ var byteLength = trimmed.length >>> 1;
951
+ var bytes = new Uint8Array(byteLength);
952
+ for (var j = 0; j < byteLength; j++) {
953
+ bytes[j] = Number.parseInt(trimmed.slice(j * 2, j * 2 + 2), 16) || 0;
954
+ }
955
+ return bytes;
956
+ }
276
957
  //# sourceMappingURL=AcDbDxfFiler.js.map