@linkiez/dxf-renew 7.1.0 → 7.2.3

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 (398) hide show
  1. package/.eslintrc.json +1 -16
  2. package/.yarn/install-state.gz +0 -0
  3. package/ARCHITECTURE.md +163 -0
  4. package/CHANGELOG.md +34 -0
  5. package/README.md +72 -10
  6. package/{PLAN.md → ROADMAP.md} +227 -35
  7. package/build.mjs +28 -0
  8. package/dist/dxf.js +1090 -344
  9. package/docs/FIXTURE_VALIDATION_EZDXF.md +1 -1
  10. package/lib/Helper.cjs +4 -0
  11. package/lib/Helper.cjs.map +3 -3
  12. package/lib/Helper.d.ts +19 -0
  13. package/lib/Helper.d.ts.map +1 -0
  14. package/lib/Helper.js +4 -0
  15. package/lib/Helper.js.map +2 -2
  16. package/lib/applyTransforms.d.ts +12 -0
  17. package/lib/applyTransforms.d.ts.map +1 -0
  18. package/lib/cli.cjs +1 -2
  19. package/lib/cli.cjs.map +1 -1
  20. package/lib/cli.d.ts +3 -0
  21. package/lib/cli.d.ts.map +1 -0
  22. package/lib/config.d.ts +4 -0
  23. package/lib/config.d.ts.map +1 -0
  24. package/lib/constants.d.ts +3 -0
  25. package/lib/constants.d.ts.map +1 -0
  26. package/lib/denormalise.d.ts +3 -0
  27. package/lib/denormalise.d.ts.map +1 -0
  28. package/lib/dimensionToSVG.d.ts +18 -0
  29. package/lib/dimensionToSVG.d.ts.map +1 -0
  30. package/lib/entityToPolyline.cjs +95 -0
  31. package/lib/entityToPolyline.cjs.map +3 -3
  32. package/lib/entityToPolyline.d.ts +48 -0
  33. package/lib/entityToPolyline.d.ts.map +1 -0
  34. package/lib/entityToPolyline.js +95 -0
  35. package/lib/entityToPolyline.js.map +2 -2
  36. package/lib/getRGBForEntity.d.ts +5 -0
  37. package/lib/getRGBForEntity.d.ts.map +1 -0
  38. package/lib/groupEntitiesByLayer.d.ts +3 -0
  39. package/lib/groupEntitiesByLayer.d.ts.map +1 -0
  40. package/lib/handlers/blocks.d.ts +3 -0
  41. package/lib/handlers/blocks.d.ts.map +1 -0
  42. package/lib/handlers/entities.cjs +22 -2
  43. package/lib/handlers/entities.cjs.map +3 -3
  44. package/lib/handlers/entities.d.ts +4 -0
  45. package/lib/handlers/entities.d.ts.map +1 -0
  46. package/lib/handlers/entities.js +22 -2
  47. package/lib/handlers/entities.js.map +2 -2
  48. package/lib/handlers/entity/arc.d.ts +20 -0
  49. package/lib/handlers/entity/arc.d.ts.map +1 -0
  50. package/lib/handlers/entity/attdef.d.ts +11 -0
  51. package/lib/handlers/entity/attdef.d.ts.map +1 -0
  52. package/lib/handlers/entity/attrib.d.ts +9 -0
  53. package/lib/handlers/entity/attrib.d.ts.map +1 -0
  54. package/lib/handlers/entity/circle.d.ts +17 -0
  55. package/lib/handlers/entity/circle.d.ts.map +1 -0
  56. package/lib/handlers/entity/common.d.ts +3 -0
  57. package/lib/handlers/entity/common.d.ts.map +1 -0
  58. package/lib/handlers/entity/dgnUnderlay.d.ts +33 -0
  59. package/lib/handlers/entity/dgnUnderlay.d.ts.map +1 -0
  60. package/lib/handlers/entity/dimension.d.ts +35 -0
  61. package/lib/handlers/entity/dimension.d.ts.map +1 -0
  62. package/lib/handlers/entity/dwfUnderlay.d.ts +33 -0
  63. package/lib/handlers/entity/dwfUnderlay.d.ts.map +1 -0
  64. package/lib/handlers/entity/ellipse.d.ts +10 -0
  65. package/lib/handlers/entity/ellipse.d.ts.map +1 -0
  66. package/lib/handlers/entity/hatch.d.ts +9 -0
  67. package/lib/handlers/entity/hatch.d.ts.map +1 -0
  68. package/lib/handlers/entity/image.d.ts +26 -0
  69. package/lib/handlers/entity/image.d.ts.map +1 -0
  70. package/lib/handlers/entity/insert.d.ts +10 -0
  71. package/lib/handlers/entity/insert.d.ts.map +1 -0
  72. package/lib/handlers/entity/leader.d.ts +48 -0
  73. package/lib/handlers/entity/leader.d.ts.map +1 -0
  74. package/lib/handlers/entity/line.d.ts +16 -0
  75. package/lib/handlers/entity/line.d.ts.map +1 -0
  76. package/lib/handlers/entity/lwpolyline.d.ts +10 -0
  77. package/lib/handlers/entity/lwpolyline.d.ts.map +1 -0
  78. package/lib/handlers/entity/mleader.cjs +69 -0
  79. package/lib/handlers/entity/mleader.cjs.map +7 -0
  80. package/lib/handlers/entity/mleader.d.ts +15 -0
  81. package/lib/handlers/entity/mleader.d.ts.map +1 -0
  82. package/lib/handlers/entity/mleader.js +34 -0
  83. package/lib/handlers/entity/mleader.js.map +7 -0
  84. package/lib/handlers/entity/mline.cjs +91 -0
  85. package/lib/handlers/entity/mline.cjs.map +7 -0
  86. package/lib/handlers/entity/mline.d.ts +17 -0
  87. package/lib/handlers/entity/mline.d.ts.map +1 -0
  88. package/lib/handlers/entity/mline.js +56 -0
  89. package/lib/handlers/entity/mline.js.map +7 -0
  90. package/lib/handlers/entity/mtext.d.ts +62 -0
  91. package/lib/handlers/entity/mtext.d.ts.map +1 -0
  92. package/lib/handlers/entity/ole2Frame.d.ts +9 -0
  93. package/lib/handlers/entity/ole2Frame.d.ts.map +1 -0
  94. package/lib/handlers/entity/oleframe.cjs +98 -0
  95. package/lib/handlers/entity/oleframe.cjs.map +7 -0
  96. package/lib/handlers/entity/oleframe.d.ts +9 -0
  97. package/lib/handlers/entity/oleframe.d.ts.map +1 -0
  98. package/lib/handlers/entity/oleframe.js +63 -0
  99. package/lib/handlers/entity/oleframe.js.map +7 -0
  100. package/lib/handlers/entity/pdfUnderlay.d.ts +33 -0
  101. package/lib/handlers/entity/pdfUnderlay.d.ts.map +1 -0
  102. package/lib/handlers/entity/point.d.ts +17 -0
  103. package/lib/handlers/entity/point.d.ts.map +1 -0
  104. package/lib/handlers/entity/polyline.d.ts +21 -0
  105. package/lib/handlers/entity/polyline.d.ts.map +1 -0
  106. package/lib/handlers/entity/ray.cjs +81 -0
  107. package/lib/handlers/entity/ray.cjs.map +7 -0
  108. package/lib/handlers/entity/ray.d.ts +15 -0
  109. package/lib/handlers/entity/ray.d.ts.map +1 -0
  110. package/lib/handlers/entity/ray.js +46 -0
  111. package/lib/handlers/entity/ray.js.map +7 -0
  112. package/lib/handlers/entity/region.cjs +67 -0
  113. package/lib/handlers/entity/region.cjs.map +7 -0
  114. package/lib/handlers/entity/region.d.ts +14 -0
  115. package/lib/handlers/entity/region.d.ts.map +1 -0
  116. package/lib/handlers/entity/region.js +32 -0
  117. package/lib/handlers/entity/region.js.map +7 -0
  118. package/lib/handlers/entity/shape.cjs +95 -0
  119. package/lib/handlers/entity/shape.cjs.map +7 -0
  120. package/lib/handlers/entity/shape.d.ts +22 -0
  121. package/lib/handlers/entity/shape.d.ts.map +1 -0
  122. package/lib/handlers/entity/shape.js +60 -0
  123. package/lib/handlers/entity/shape.js.map +7 -0
  124. package/lib/handlers/entity/solid.d.ts +15 -0
  125. package/lib/handlers/entity/solid.d.ts.map +1 -0
  126. package/lib/handlers/entity/spline.d.ts +30 -0
  127. package/lib/handlers/entity/spline.d.ts.map +1 -0
  128. package/lib/handlers/entity/table.cjs +71 -0
  129. package/lib/handlers/entity/table.cjs.map +7 -0
  130. package/lib/handlers/entity/table.d.ts +16 -0
  131. package/lib/handlers/entity/table.d.ts.map +1 -0
  132. package/lib/handlers/entity/table.js +36 -0
  133. package/lib/handlers/entity/table.js.map +7 -0
  134. package/lib/handlers/entity/text.d.ts +31 -0
  135. package/lib/handlers/entity/text.d.ts.map +1 -0
  136. package/lib/handlers/entity/threeDFace.d.ts +14 -0
  137. package/lib/handlers/entity/threeDFace.d.ts.map +1 -0
  138. package/lib/handlers/entity/tolerance.d.ts +25 -0
  139. package/lib/handlers/entity/tolerance.d.ts.map +1 -0
  140. package/lib/handlers/entity/trace.cjs +101 -0
  141. package/lib/handlers/entity/trace.cjs.map +7 -0
  142. package/lib/handlers/entity/trace.d.ts +15 -0
  143. package/lib/handlers/entity/trace.d.ts.map +1 -0
  144. package/lib/handlers/entity/trace.js +66 -0
  145. package/lib/handlers/entity/trace.js.map +7 -0
  146. package/lib/handlers/entity/vertex.d.ts +10 -0
  147. package/lib/handlers/entity/vertex.d.ts.map +1 -0
  148. package/lib/handlers/entity/viewport.d.ts +9 -0
  149. package/lib/handlers/entity/viewport.d.ts.map +1 -0
  150. package/lib/handlers/entity/wipeout.cjs +122 -0
  151. package/lib/handlers/entity/wipeout.cjs.map +7 -0
  152. package/lib/handlers/entity/wipeout.d.ts +28 -0
  153. package/lib/handlers/entity/wipeout.d.ts.map +1 -0
  154. package/lib/handlers/entity/wipeout.js +87 -0
  155. package/lib/handlers/entity/wipeout.js.map +7 -0
  156. package/lib/handlers/entity/xline.cjs +81 -0
  157. package/lib/handlers/entity/xline.cjs.map +7 -0
  158. package/lib/handlers/entity/xline.d.ts +15 -0
  159. package/lib/handlers/entity/xline.d.ts.map +1 -0
  160. package/lib/handlers/entity/xline.js +46 -0
  161. package/lib/handlers/entity/xline.js.map +7 -0
  162. package/lib/handlers/header.d.ts +3 -0
  163. package/lib/handlers/header.d.ts.map +1 -0
  164. package/lib/handlers/objects.cjs +43 -1
  165. package/lib/handlers/objects.cjs.map +2 -2
  166. package/lib/handlers/objects.d.ts +3 -0
  167. package/lib/handlers/objects.d.ts.map +1 -0
  168. package/lib/handlers/objects.js +43 -1
  169. package/lib/handlers/objects.js.map +2 -2
  170. package/lib/handlers/tables.cjs +96 -17
  171. package/lib/handlers/tables.cjs.map +2 -2
  172. package/lib/handlers/tables.d.ts +13 -0
  173. package/lib/handlers/tables.d.ts.map +1 -0
  174. package/lib/handlers/tables.js +96 -17
  175. package/lib/handlers/tables.js.map +2 -2
  176. package/lib/index.cjs +5 -2
  177. package/lib/index.cjs.map +3 -3
  178. package/lib/index.d.ts +10 -0
  179. package/lib/index.d.ts.map +1 -0
  180. package/lib/index.js +18 -16
  181. package/lib/index.js.map +3 -3
  182. package/lib/parseString.d.ts +3 -0
  183. package/lib/parseString.d.ts.map +1 -0
  184. package/lib/toJson.cjs +29 -0
  185. package/lib/toJson.cjs.map +7 -0
  186. package/lib/toJson.d.ts +3 -0
  187. package/lib/toJson.d.ts.map +1 -0
  188. package/lib/toJson.js +9 -0
  189. package/lib/toJson.js.map +7 -0
  190. package/lib/toPolylines.d.ts +4 -0
  191. package/lib/toPolylines.d.ts.map +1 -0
  192. package/lib/toSVG.cjs +34 -3
  193. package/lib/toSVG.cjs.map +2 -2
  194. package/lib/toSVG.d.ts +7 -0
  195. package/lib/toSVG.d.ts.map +1 -0
  196. package/lib/toSVG.js +34 -3
  197. package/lib/toSVG.js.map +2 -2
  198. package/lib/types/arc-entity.d.ts +8 -0
  199. package/lib/types/arc-entity.d.ts.map +1 -0
  200. package/lib/types/base-entity.d.ts +22 -0
  201. package/lib/types/base-entity.d.ts.map +1 -0
  202. package/lib/types/circle-entity.d.ts +6 -0
  203. package/lib/types/circle-entity.d.ts.map +1 -0
  204. package/lib/types/common.d.ts +30 -0
  205. package/lib/types/common.d.ts.map +1 -0
  206. package/lib/types/dimension-entity.d.ts +31 -0
  207. package/lib/types/dimension-entity.d.ts.map +1 -0
  208. package/lib/types/dxf.d.ts +55 -0
  209. package/lib/types/dxf.d.ts.map +1 -0
  210. package/lib/types/ellipse-entity.d.ts +11 -0
  211. package/lib/types/ellipse-entity.d.ts.map +1 -0
  212. package/lib/types/entity.cjs.map +1 -1
  213. package/lib/types/entity.d.ts +30 -0
  214. package/lib/types/entity.d.ts.map +1 -0
  215. package/lib/types/handler-internal.d.ts +44 -0
  216. package/lib/types/handler-internal.d.ts.map +1 -0
  217. package/lib/types/handler.d.ts +8 -0
  218. package/lib/types/handler.d.ts.map +1 -0
  219. package/lib/types/hatch-entity.d.ts +116 -0
  220. package/lib/types/hatch-entity.d.ts.map +1 -0
  221. package/lib/types/helper.cjs.map +1 -1
  222. package/lib/types/helper.d.ts +11 -0
  223. package/lib/types/helper.d.ts.map +1 -0
  224. package/lib/types/image-entity.d.ts +25 -0
  225. package/lib/types/image-entity.d.ts.map +1 -0
  226. package/lib/types/index.cjs +20 -0
  227. package/lib/types/index.cjs.map +2 -2
  228. package/lib/types/index.d.ts +43 -0
  229. package/lib/types/index.d.ts.map +1 -0
  230. package/lib/types/index.js +10 -0
  231. package/lib/types/index.js.map +2 -2
  232. package/lib/types/insert-entity.d.ts +16 -0
  233. package/lib/types/insert-entity.d.ts.map +1 -0
  234. package/lib/types/layer-groups.d.ts +6 -0
  235. package/lib/types/layer-groups.d.ts.map +1 -0
  236. package/lib/types/leader-entity.d.ts +28 -0
  237. package/lib/types/leader-entity.d.ts.map +1 -0
  238. package/lib/types/line-entity.d.ts +8 -0
  239. package/lib/types/line-entity.d.ts.map +1 -0
  240. package/lib/types/mleader-entity.cjs +17 -0
  241. package/lib/types/mleader-entity.cjs.map +7 -0
  242. package/lib/types/mleader-entity.d.ts +7 -0
  243. package/lib/types/mleader-entity.d.ts.map +1 -0
  244. package/lib/types/mleader-entity.js +1 -0
  245. package/lib/types/mleader-entity.js.map +7 -0
  246. package/lib/types/mline-entity.cjs +17 -0
  247. package/lib/types/mline-entity.cjs.map +7 -0
  248. package/lib/types/mline-entity.d.ts +10 -0
  249. package/lib/types/mline-entity.d.ts.map +1 -0
  250. package/lib/types/mline-entity.js +1 -0
  251. package/lib/types/mline-entity.js.map +7 -0
  252. package/lib/types/mtext-entity.d.ts +33 -0
  253. package/lib/types/mtext-entity.d.ts.map +1 -0
  254. package/lib/types/ole2frame-entity.d.ts +33 -0
  255. package/lib/types/ole2frame-entity.d.ts.map +1 -0
  256. package/lib/types/oleframe-entity.cjs +17 -0
  257. package/lib/types/oleframe-entity.cjs.map +7 -0
  258. package/lib/types/oleframe-entity.d.ts +33 -0
  259. package/lib/types/oleframe-entity.d.ts.map +1 -0
  260. package/lib/types/oleframe-entity.js +1 -0
  261. package/lib/types/oleframe-entity.js.map +7 -0
  262. package/lib/types/options.cjs.map +1 -1
  263. package/lib/types/options.d.ts +57 -0
  264. package/lib/types/options.d.ts.map +1 -0
  265. package/lib/types/point-entity.d.ts +5 -0
  266. package/lib/types/point-entity.d.ts.map +1 -0
  267. package/lib/types/polyline-entity.d.ts +17 -0
  268. package/lib/types/polyline-entity.d.ts.map +1 -0
  269. package/lib/types/polylines.d.ts +18 -0
  270. package/lib/types/polylines.d.ts.map +1 -0
  271. package/lib/types/ray-entity.cjs +17 -0
  272. package/lib/types/ray-entity.cjs.map +7 -0
  273. package/lib/types/ray-entity.d.ts +10 -0
  274. package/lib/types/ray-entity.d.ts.map +1 -0
  275. package/lib/types/ray-entity.js +1 -0
  276. package/lib/types/ray-entity.js.map +7 -0
  277. package/lib/types/region-entity.cjs +17 -0
  278. package/lib/types/region-entity.cjs.map +7 -0
  279. package/lib/types/region-entity.d.ts +10 -0
  280. package/lib/types/region-entity.d.ts.map +1 -0
  281. package/lib/types/region-entity.js +1 -0
  282. package/lib/types/region-entity.js.map +7 -0
  283. package/lib/types/shape-entity.cjs +17 -0
  284. package/lib/types/shape-entity.cjs.map +7 -0
  285. package/lib/types/shape-entity.d.ts +17 -0
  286. package/lib/types/shape-entity.d.ts.map +1 -0
  287. package/lib/types/shape-entity.js +1 -0
  288. package/lib/types/shape-entity.js.map +7 -0
  289. package/lib/types/solid-entity.d.ts +7 -0
  290. package/lib/types/solid-entity.d.ts.map +1 -0
  291. package/lib/types/spline-entity.d.ts +10 -0
  292. package/lib/types/spline-entity.d.ts.map +1 -0
  293. package/lib/types/svg.d.ts +27 -0
  294. package/lib/types/svg.d.ts.map +1 -0
  295. package/lib/types/table-entity.cjs +17 -0
  296. package/lib/types/table-entity.cjs.map +7 -0
  297. package/lib/types/table-entity.d.ts +12 -0
  298. package/lib/types/table-entity.d.ts.map +1 -0
  299. package/lib/types/table-entity.js +1 -0
  300. package/lib/types/table-entity.js.map +7 -0
  301. package/lib/types/tables.cjs.map +1 -1
  302. package/lib/types/tables.d.ts +549 -0
  303. package/lib/types/tables.d.ts.map +1 -0
  304. package/lib/types/text-entity.d.ts +21 -0
  305. package/lib/types/text-entity.d.ts.map +1 -0
  306. package/lib/types/tolerance-entity.d.ts +14 -0
  307. package/lib/types/tolerance-entity.d.ts.map +1 -0
  308. package/lib/types/trace-entity.cjs +17 -0
  309. package/lib/types/trace-entity.cjs.map +7 -0
  310. package/lib/types/trace-entity.d.ts +10 -0
  311. package/lib/types/trace-entity.d.ts.map +1 -0
  312. package/lib/types/trace-entity.js +1 -0
  313. package/lib/types/trace-entity.js.map +7 -0
  314. package/lib/types/underlay-entity.d.ts +26 -0
  315. package/lib/types/underlay-entity.d.ts.map +1 -0
  316. package/lib/types/util-types.d.ts +22 -0
  317. package/lib/types/util-types.d.ts.map +1 -0
  318. package/lib/types/viewport-entity.d.ts +79 -0
  319. package/lib/types/viewport-entity.d.ts.map +1 -0
  320. package/lib/types/wipeout-entity.cjs +17 -0
  321. package/lib/types/wipeout-entity.cjs.map +7 -0
  322. package/lib/types/wipeout-entity.d.ts +18 -0
  323. package/lib/types/wipeout-entity.d.ts.map +1 -0
  324. package/lib/types/wipeout-entity.js +1 -0
  325. package/lib/types/wipeout-entity.js.map +7 -0
  326. package/lib/types/xline-entity.cjs +17 -0
  327. package/lib/types/xline-entity.cjs.map +7 -0
  328. package/lib/types/xline-entity.d.ts +10 -0
  329. package/lib/types/xline-entity.d.ts.map +1 -0
  330. package/lib/types/xline-entity.js +1 -0
  331. package/lib/types/xline-entity.js.map +7 -0
  332. package/lib/types.d.ts +2 -0
  333. package/lib/types.d.ts.map +1 -0
  334. package/lib/util/bSpline.d.ts +8 -0
  335. package/lib/util/bSpline.d.ts.map +1 -0
  336. package/lib/util/colors.d.ts +5 -0
  337. package/lib/util/colors.d.ts.map +1 -0
  338. package/lib/util/createArcForLWPolyline.d.ts +9 -0
  339. package/lib/util/createArcForLWPolyline.d.ts.map +1 -0
  340. package/lib/util/dxfColorToRGB.d.ts +22 -0
  341. package/lib/util/dxfColorToRGB.d.ts.map +1 -0
  342. package/lib/util/escapeXmlText.d.ts +2 -0
  343. package/lib/util/escapeXmlText.d.ts.map +1 -0
  344. package/lib/util/insertKnot.d.ts +9 -0
  345. package/lib/util/insertKnot.d.ts.map +1 -0
  346. package/lib/util/logger.d.ts +10 -0
  347. package/lib/util/logger.d.ts.map +1 -0
  348. package/lib/util/rgbToColorAttribute.d.ts +7 -0
  349. package/lib/util/rgbToColorAttribute.d.ts.map +1 -0
  350. package/lib/util/rotate.d.ts +9 -0
  351. package/lib/util/rotate.d.ts.map +1 -0
  352. package/lib/util/round10.d.ts +2 -0
  353. package/lib/util/round10.d.ts.map +1 -0
  354. package/lib/util/toPiecewiseBezier.d.ts +18 -0
  355. package/lib/util/toPiecewiseBezier.d.ts.map +1 -0
  356. package/lib/util/transformBoundingBoxAndElement.d.ts +9 -0
  357. package/lib/util/transformBoundingBoxAndElement.d.ts.map +1 -0
  358. package/package.json +5 -19
  359. package/src/Helper.ts +6 -1
  360. package/src/entityToPolyline.ts +124 -2
  361. package/src/handlers/entities.ts +21 -1
  362. package/src/handlers/entity/mleader.ts +46 -0
  363. package/src/handlers/entity/mline.ts +74 -0
  364. package/src/handlers/entity/oleframe.ts +62 -0
  365. package/src/handlers/entity/ray.ts +52 -0
  366. package/src/handlers/entity/region.ts +42 -0
  367. package/src/handlers/entity/shape.ts +73 -0
  368. package/src/handlers/entity/table.ts +49 -0
  369. package/src/handlers/entity/trace.ts +72 -0
  370. package/src/handlers/entity/wipeout.ts +114 -0
  371. package/src/handlers/entity/xline.ts +52 -0
  372. package/src/handlers/objects.ts +64 -8
  373. package/src/handlers/tables.ts +134 -21
  374. package/src/index.ts +9 -18
  375. package/src/toJson.ts +8 -0
  376. package/src/toSVG.ts +45 -3
  377. package/src/types/entity.ts +20 -0
  378. package/src/types/helper.ts +2 -1
  379. package/src/types/index.ts +10 -0
  380. package/src/types/mleader-entity.ts +8 -0
  381. package/src/types/mline-entity.ts +12 -0
  382. package/src/types/oleframe-entity.ts +40 -0
  383. package/src/types/options.ts +7 -0
  384. package/src/types/ray-entity.ts +12 -0
  385. package/src/types/region-entity.ts +11 -0
  386. package/src/types/shape-entity.ts +19 -0
  387. package/src/types/table-entity.ts +14 -0
  388. package/src/types/tables.ts +76 -0
  389. package/src/types/trace-entity.ts +14 -0
  390. package/src/types/wipeout-entity.ts +20 -0
  391. package/src/types/xline-entity.ts +12 -0
  392. package/docs/DIMENSION_SUMMARY.md +0 -254
  393. package/docs/DXF_VERSION_SUPPORT.md +0 -45
  394. package/docs/ENTITY_SVG_ROADMAP.md +0 -96
  395. package/docs/IMPLEMENTED-2D-ENTITIES.md +0 -54
  396. package/docs/README.md +0 -22
  397. package/docs/SVG_RENDERING_INTEGRATION_TESTS.md +0 -119
  398. package/docs/TEXT-MTEXT-DIMENSION-SUPPORT.md +0 -241
@@ -176,6 +176,36 @@ function parseImageDefReactorObject(group) {
176
176
  }
177
177
  return reactor;
178
178
  }
179
+ function parseDimAssocObject(group) {
180
+ if (group[0]?.[1] !== "DIMASSOC") return void 0;
181
+ const tuples = group.slice(1);
182
+ const dimAssoc = {
183
+ type: "DIMASSOC",
184
+ tuples
185
+ };
186
+ for (const tuple of tuples) {
187
+ const type = tuple[0];
188
+ const value = tuple[1];
189
+ if (type === 5) dimAssoc.handle = value;
190
+ if (type === 330) dimAssoc.ownerHandle = value;
191
+ }
192
+ return dimAssoc;
193
+ }
194
+ function parseFieldObject(group) {
195
+ if (group[0]?.[1] !== "FIELD") return void 0;
196
+ const tuples = group.slice(1);
197
+ const field = {
198
+ type: "FIELD",
199
+ tuples
200
+ };
201
+ for (const tuple of tuples) {
202
+ const type = tuple[0];
203
+ const value = tuple[1];
204
+ if (type === 5) field.handle = value;
205
+ if (type === 330) field.ownerHandle = value;
206
+ }
207
+ return field;
208
+ }
179
209
  const UNDERLAY_DEFINITION_OBJECT_TYPES = /* @__PURE__ */ new Set([
180
210
  "UNDERLAYDEFINITION",
181
211
  "PDFDEFINITION",
@@ -245,6 +275,16 @@ const OBJECT_GROUP_HANDLERS = {
245
275
  const def = parseUnderlayDefinitionObject(group);
246
276
  const handle = def?.handle ? String(def.handle) : void 0;
247
277
  if (def && handle) objects.underlayDefinitions[handle] = def;
278
+ },
279
+ DIMASSOC: (objects, group) => {
280
+ const dimAssoc = parseDimAssocObject(group);
281
+ const handle = dimAssoc?.handle ? String(dimAssoc.handle) : void 0;
282
+ if (dimAssoc && handle) objects.dimAssocs[handle] = dimAssoc;
283
+ },
284
+ FIELD: (objects, group) => {
285
+ const field = parseFieldObject(group);
286
+ const handle = field?.handle ? String(field.handle) : void 0;
287
+ if (field && handle) objects.fields[handle] = field;
248
288
  }
249
289
  };
250
290
  function parseObjects(tuples) {
@@ -254,7 +294,9 @@ function parseObjects(tuples) {
254
294
  xRecords: {},
255
295
  imageDefs: {},
256
296
  imageDefReactors: {},
257
- underlayDefinitions: {}
297
+ underlayDefinitions: {},
298
+ dimAssocs: {},
299
+ fields: {}
258
300
  };
259
301
  const groups = groupObjectsByZero(tuples);
260
302
  for (const group of groups) {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/handlers/objects.ts"],
4
- "sourcesContent": ["import type {\n DictionaryObject,\n DXFTuple,\n ImageDefObject,\n ImageDefReactorObject,\n LayoutInternal,\n ParsedObjects,\n UnderlayDefinitionObject,\n XRecordObject,\n} from '../types'\n\ntype ObjectGroup = DXFTuple[]\n\nfunction groupObjectsByZero(tuples: DXFTuple[]): ObjectGroup[] {\n const groups: ObjectGroup[] = []\n let current: ObjectGroup | undefined\n\n for (const tuple of tuples) {\n const code = tuple[0]\n if (code === 0) {\n if (current && current.length > 0) groups.push(current)\n current = [tuple]\n continue\n }\n if (!current) continue\n current.push(tuple)\n }\n\n if (current && current.length > 0) groups.push(current)\n return groups\n}\n\nconst LAYOUT_FLOAT_FIELDS: Record<number, keyof LayoutInternal> = {\n 10: 'minLimitX',\n 20: 'minLimitY',\n 11: 'maxLimitX',\n 21: 'maxLimitY',\n 12: 'x',\n 22: 'y',\n 32: 'z',\n 14: 'minX',\n 24: 'minY',\n 34: 'minZ',\n 15: 'maxX',\n 25: 'maxY',\n 35: 'maxZ',\n 146: 'elevation',\n 13: 'ucsX',\n 23: 'ucsY',\n 33: 'ucsZ',\n 16: 'ucsXaxisX',\n 26: 'ucsXaxisY',\n 36: 'ucsXaxisZ',\n 17: 'ucsYaxisX',\n 27: 'ucsYaxisY',\n 37: 'ucsYaxisZ',\n}\n\nconst LAYOUT_DIRECT_FIELDS: Record<number, keyof LayoutInternal> = {\n 1: 'name',\n 5: 'handle',\n 71: 'tabOrder',\n 330: 'tableRecord',\n 331: 'lastActiveViewport',\n 333: 'shadePlot',\n}\n\nconst LAYOUT_UCS_TYPE: Record<number, LayoutInternal['ucsType']> = {\n 0: 'NOT ORTHOGRAPHIC',\n 1: 'TOP',\n 2: 'BOTTOM',\n 3: 'FRONT',\n 4: 'BACK',\n 5: 'LEFT',\n 6: 'RIGHT',\n}\n\ntype LayoutParseState = {\n state: 'IDLE' | 'layout' | 'AcDbLayout'\n layout?: LayoutInternal\n}\n\nfunction consumeLayoutStartTuple(current: LayoutParseState, tuple: DXFTuple): LayoutParseState {\n if (tuple[1] === 'LAYOUT') return { state: 'layout', layout: {} }\n return { state: 'IDLE', layout: current.layout }\n}\n\nfunction consumeLayoutSubclassTuple(current: LayoutParseState, tuple: DXFTuple): LayoutParseState {\n if (tuple[0] === 100 && tuple[1] === 'AcDbLayout') return { state: 'AcDbLayout', layout: current.layout }\n return current\n}\n\nfunction applyLayoutFieldTuple(layout: LayoutInternal, tuple: DXFTuple): void {\n const type = tuple[0]\n const value = tuple[1]\n\n const floatKey = LAYOUT_FLOAT_FIELDS[type]\n if (floatKey) {\n ;(layout as any)[floatKey] = Number.parseFloat(String(value))\n return\n }\n\n const directKey = LAYOUT_DIRECT_FIELDS[type]\n if (directKey) {\n ;(layout as any)[directKey] = value\n return\n }\n\n if (type === 70) {\n layout.flag = value === 1 ? 'PSLTSCALE' : 'LIMCHECK'\n return\n }\n\n if (type === 76) {\n const ucsType = LAYOUT_UCS_TYPE[Number(value)]\n if (ucsType) layout.ucsType = ucsType\n }\n}\n\nfunction consumeLayoutTuple(current: LayoutParseState, tuple: DXFTuple): LayoutParseState {\n if (tuple[0] === 0) return consumeLayoutStartTuple(current, tuple)\n\n if (current.state === 'layout') return consumeLayoutSubclassTuple(current, tuple)\n\n if (current.state === 'AcDbLayout' && current.layout) applyLayoutFieldTuple(current.layout, tuple)\n return current\n}\n\nfunction parseLayoutObject(group: ObjectGroup): LayoutInternal | undefined {\n let current: LayoutParseState = { state: 'IDLE' }\n for (const tuple of group) current = consumeLayoutTuple(current, tuple)\n return current.layout\n}\n\nfunction parseDictionaryObject(group: ObjectGroup): DictionaryObject | undefined {\n if (group[0]?.[1] !== 'DICTIONARY') return undefined\n\n const dict: DictionaryObject = {\n type: 'DICTIONARY',\n entries: {},\n }\n\n let pendingKey: string | undefined\n for (const tuple of group.slice(1)) {\n const type = tuple[0]\n const value = tuple[1]\n\n if (type === 5) {\n dict.handle = value\n continue\n }\n if (type === 330) {\n dict.ownerHandle = value\n continue\n }\n if (type === 3) {\n pendingKey = String(value)\n continue\n }\n if ((type === 350 || type === 360) && pendingKey) {\n dict.entries[pendingKey] = String(value)\n pendingKey = undefined\n }\n }\n\n return dict\n}\n\nfunction parseXRecordObject(group: ObjectGroup): XRecordObject | undefined {\n if (group[0]?.[1] !== 'XRECORD') return undefined\n\n const tuples = group.slice(1)\n\n const xRecord: XRecordObject = {\n type: 'XRECORD',\n tuples,\n }\n\n for (const tuple of tuples) {\n const type = tuple[0]\n const value = tuple[1]\n\n if (type === 5) xRecord.handle = value\n if (type === 330) xRecord.ownerHandle = value\n }\n\n return xRecord\n}\n\nfunction parseImageDefObject(group: ObjectGroup): ImageDefObject | undefined {\n if (group[0]?.[1] !== 'IMAGEDEF') return undefined\n\n const tuples = group.slice(1)\n\n const imageDef: ImageDefObject = {\n type: 'IMAGEDEF',\n tuples,\n }\n\n for (const tuple of tuples) {\n const type = tuple[0]\n const value = tuple[1]\n\n if (type === 5) imageDef.handle = value\n if (type === 330 && imageDef.ownerHandle === undefined) imageDef.ownerHandle = value\n if (type === 1) imageDef.fileName = String(value)\n if (type === 10) imageDef.pixelSizeX = Number(value)\n if (type === 20) imageDef.pixelSizeY = Number(value)\n }\n\n return imageDef\n}\n\nfunction parseImageDefReactorObject(group: ObjectGroup): ImageDefReactorObject | undefined {\n if (group[0]?.[1] !== 'IMAGEDEF_REACTOR') return undefined\n\n const tuples = group.slice(1)\n\n const reactor: ImageDefReactorObject = {\n type: 'IMAGEDEF_REACTOR',\n tuples,\n }\n\n for (const tuple of tuples) {\n const type = tuple[0]\n const value = tuple[1]\n\n if (type === 5) reactor.handle = value\n if (type === 330) reactor.imageHandle = value\n }\n\n return reactor\n}\n\nconst UNDERLAY_DEFINITION_OBJECT_TYPES = new Set([\n 'UNDERLAYDEFINITION',\n 'PDFDEFINITION',\n 'DWFDEFINITION',\n 'DGNDEFINITION',\n])\n\nfunction parseUnderlayDefinitionObject(group: ObjectGroup): UnderlayDefinitionObject | undefined {\n const objectType = group[0]?.[1]\n if (typeof objectType !== 'string') return undefined\n if (!UNDERLAY_DEFINITION_OBJECT_TYPES.has(objectType)) return undefined\n\n const tuples = group.slice(1)\n\n const def: UnderlayDefinitionObject = {\n type: objectType as UnderlayDefinitionObject['type'],\n tuples,\n }\n\n for (const tuple of tuples) {\n const type = tuple[0]\n const value = tuple[1]\n\n if (type === 5) def.handle = value\n if (type === 330 && def.ownerHandle === undefined) def.ownerHandle = value\n if (type === 1) def.fileName = String(value)\n if (type === 2) def.underlayName = String(value)\n }\n\n return def\n}\n\ntype ObjectGroupHandler = (objects: ParsedObjects, group: ObjectGroup) => void\n\nconst OBJECT_GROUP_HANDLERS: Record<string, ObjectGroupHandler> = {\n LAYOUT: (objects, group) => {\n const layout = parseLayoutObject(group)\n if (layout) objects.layouts.push(layout)\n },\n DICTIONARY: (objects, group) => {\n const dict = parseDictionaryObject(group)\n const handle = dict?.handle ? String(dict.handle) : undefined\n if (dict && handle) objects.dictionaries![handle] = dict\n },\n XRECORD: (objects, group) => {\n const xRecord = parseXRecordObject(group)\n const handle = xRecord?.handle ? String(xRecord.handle) : undefined\n if (xRecord && handle) objects.xRecords![handle] = xRecord\n },\n IMAGEDEF: (objects, group) => {\n const imageDef = parseImageDefObject(group)\n const handle = imageDef?.handle ? String(imageDef.handle) : undefined\n if (imageDef && handle) objects.imageDefs![handle] = imageDef\n },\n IMAGEDEF_REACTOR: (objects, group) => {\n const reactor = parseImageDefReactorObject(group)\n const handle = reactor?.handle ? String(reactor.handle) : undefined\n if (reactor && handle) objects.imageDefReactors![handle] = reactor\n },\n UNDERLAYDEFINITION: (objects, group) => {\n const def = parseUnderlayDefinitionObject(group)\n const handle = def?.handle ? String(def.handle) : undefined\n if (def && handle) objects.underlayDefinitions![handle] = def\n },\n PDFDEFINITION: (objects, group) => {\n const def = parseUnderlayDefinitionObject(group)\n const handle = def?.handle ? String(def.handle) : undefined\n if (def && handle) objects.underlayDefinitions![handle] = def\n },\n DWFDEFINITION: (objects, group) => {\n const def = parseUnderlayDefinitionObject(group)\n const handle = def?.handle ? String(def.handle) : undefined\n if (def && handle) objects.underlayDefinitions![handle] = def\n },\n DGNDEFINITION: (objects, group) => {\n const def = parseUnderlayDefinitionObject(group)\n const handle = def?.handle ? String(def.handle) : undefined\n if (def && handle) objects.underlayDefinitions![handle] = def\n },\n}\n\nexport default function parseObjects(tuples: DXFTuple[]): ParsedObjects {\n const objects: ParsedObjects = {\n layouts: [],\n dictionaries: {},\n xRecords: {},\n imageDefs: {},\n imageDefReactors: {},\n underlayDefinitions: {},\n }\n\n const groups = groupObjectsByZero(tuples)\n for (const group of groups) {\n const objectType = group[0]?.[1]\n if (typeof objectType !== 'string') continue\n\n const handler = OBJECT_GROUP_HANDLERS[objectType]\n if (handler) handler(objects, group)\n }\n\n return objects\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import type {\n DictionaryObject,\n DimAssocObject,\n DXFTuple,\n FieldObject,\n ImageDefObject,\n ImageDefReactorObject,\n LayoutInternal,\n ParsedObjects,\n UnderlayDefinitionObject,\n XRecordObject,\n} from '../types'\n\ntype ObjectGroup = DXFTuple[]\n\nfunction groupObjectsByZero(tuples: DXFTuple[]): ObjectGroup[] {\n const groups: ObjectGroup[] = []\n let current: ObjectGroup | undefined\n\n for (const tuple of tuples) {\n const code = tuple[0]\n if (code === 0) {\n if (current && current.length > 0) groups.push(current)\n current = [tuple]\n continue\n }\n if (!current) continue\n current.push(tuple)\n }\n\n if (current && current.length > 0) groups.push(current)\n return groups\n}\n\nconst LAYOUT_FLOAT_FIELDS: Record<number, keyof LayoutInternal> = {\n 10: 'minLimitX',\n 20: 'minLimitY',\n 11: 'maxLimitX',\n 21: 'maxLimitY',\n 12: 'x',\n 22: 'y',\n 32: 'z',\n 14: 'minX',\n 24: 'minY',\n 34: 'minZ',\n 15: 'maxX',\n 25: 'maxY',\n 35: 'maxZ',\n 146: 'elevation',\n 13: 'ucsX',\n 23: 'ucsY',\n 33: 'ucsZ',\n 16: 'ucsXaxisX',\n 26: 'ucsXaxisY',\n 36: 'ucsXaxisZ',\n 17: 'ucsYaxisX',\n 27: 'ucsYaxisY',\n 37: 'ucsYaxisZ',\n}\n\nconst LAYOUT_DIRECT_FIELDS: Record<number, keyof LayoutInternal> = {\n 1: 'name',\n 5: 'handle',\n 71: 'tabOrder',\n 330: 'tableRecord',\n 331: 'lastActiveViewport',\n 333: 'shadePlot',\n}\n\nconst LAYOUT_UCS_TYPE: Record<number, LayoutInternal['ucsType']> = {\n 0: 'NOT ORTHOGRAPHIC',\n 1: 'TOP',\n 2: 'BOTTOM',\n 3: 'FRONT',\n 4: 'BACK',\n 5: 'LEFT',\n 6: 'RIGHT',\n}\n\ntype LayoutParseState = {\n state: 'IDLE' | 'layout' | 'AcDbLayout'\n layout?: LayoutInternal\n}\n\nfunction consumeLayoutStartTuple(current: LayoutParseState, tuple: DXFTuple): LayoutParseState {\n if (tuple[1] === 'LAYOUT') return { state: 'layout', layout: {} }\n return { state: 'IDLE', layout: current.layout }\n}\n\nfunction consumeLayoutSubclassTuple(current: LayoutParseState, tuple: DXFTuple): LayoutParseState {\n if (tuple[0] === 100 && tuple[1] === 'AcDbLayout') return { state: 'AcDbLayout', layout: current.layout }\n return current\n}\n\nfunction applyLayoutFieldTuple(layout: LayoutInternal, tuple: DXFTuple): void {\n const type = tuple[0]\n const value = tuple[1]\n\n const floatKey = LAYOUT_FLOAT_FIELDS[type]\n if (floatKey) {\n ;(layout as any)[floatKey] = Number.parseFloat(String(value))\n return\n }\n\n const directKey = LAYOUT_DIRECT_FIELDS[type]\n if (directKey) {\n ;(layout as any)[directKey] = value\n return\n }\n\n if (type === 70) {\n layout.flag = value === 1 ? 'PSLTSCALE' : 'LIMCHECK'\n return\n }\n\n if (type === 76) {\n const ucsType = LAYOUT_UCS_TYPE[Number(value)]\n if (ucsType) layout.ucsType = ucsType\n }\n}\n\nfunction consumeLayoutTuple(current: LayoutParseState, tuple: DXFTuple): LayoutParseState {\n if (tuple[0] === 0) return consumeLayoutStartTuple(current, tuple)\n\n if (current.state === 'layout') return consumeLayoutSubclassTuple(current, tuple)\n\n if (current.state === 'AcDbLayout' && current.layout) applyLayoutFieldTuple(current.layout, tuple)\n return current\n}\n\nfunction parseLayoutObject(group: ObjectGroup): LayoutInternal | undefined {\n let current: LayoutParseState = { state: 'IDLE' }\n for (const tuple of group) current = consumeLayoutTuple(current, tuple)\n return current.layout\n}\n\nfunction parseDictionaryObject(group: ObjectGroup): DictionaryObject | undefined {\n if (group[0]?.[1] !== 'DICTIONARY') return undefined\n\n const dict: DictionaryObject = {\n type: 'DICTIONARY',\n entries: {},\n }\n\n let pendingKey: string | undefined\n for (const tuple of group.slice(1)) {\n const type = tuple[0]\n const value = tuple[1]\n\n if (type === 5) {\n dict.handle = value\n continue\n }\n if (type === 330) {\n dict.ownerHandle = value\n continue\n }\n if (type === 3) {\n pendingKey = String(value)\n continue\n }\n if ((type === 350 || type === 360) && pendingKey) {\n dict.entries[pendingKey] = String(value)\n pendingKey = undefined\n }\n }\n\n return dict\n}\n\nfunction parseXRecordObject(group: ObjectGroup): XRecordObject | undefined {\n if (group[0]?.[1] !== 'XRECORD') return undefined\n\n const tuples = group.slice(1)\n\n const xRecord: XRecordObject = {\n type: 'XRECORD',\n tuples,\n }\n\n for (const tuple of tuples) {\n const type = tuple[0]\n const value = tuple[1]\n\n if (type === 5) xRecord.handle = value\n if (type === 330) xRecord.ownerHandle = value\n }\n\n return xRecord\n}\n\nfunction parseImageDefObject(group: ObjectGroup): ImageDefObject | undefined {\n if (group[0]?.[1] !== 'IMAGEDEF') return undefined\n\n const tuples = group.slice(1)\n\n const imageDef: ImageDefObject = {\n type: 'IMAGEDEF',\n tuples,\n }\n\n for (const tuple of tuples) {\n const type = tuple[0]\n const value = tuple[1]\n\n if (type === 5) imageDef.handle = value\n if (type === 330 && imageDef.ownerHandle === undefined) imageDef.ownerHandle = value\n if (type === 1) imageDef.fileName = String(value)\n if (type === 10) imageDef.pixelSizeX = Number(value)\n if (type === 20) imageDef.pixelSizeY = Number(value)\n }\n\n return imageDef\n}\n\nfunction parseImageDefReactorObject(group: ObjectGroup): ImageDefReactorObject | undefined {\n if (group[0]?.[1] !== 'IMAGEDEF_REACTOR') return undefined\n\n const tuples = group.slice(1)\n\n const reactor: ImageDefReactorObject = {\n type: 'IMAGEDEF_REACTOR',\n tuples,\n }\n\n for (const tuple of tuples) {\n const type = tuple[0]\n const value = tuple[1]\n\n if (type === 5) reactor.handle = value\n if (type === 330) reactor.imageHandle = value\n }\n\n return reactor\n}\n\nfunction parseDimAssocObject(group: ObjectGroup): DimAssocObject | undefined {\n if (group[0]?.[1] !== 'DIMASSOC') return undefined\n\n const tuples = group.slice(1)\n\n const dimAssoc: DimAssocObject = {\n type: 'DIMASSOC',\n tuples,\n }\n\n for (const tuple of tuples) {\n const type = tuple[0]\n const value = tuple[1]\n\n if (type === 5) dimAssoc.handle = value\n if (type === 330) dimAssoc.ownerHandle = value\n }\n\n return dimAssoc\n}\n\nfunction parseFieldObject(group: ObjectGroup): FieldObject | undefined {\n if (group[0]?.[1] !== 'FIELD') return undefined\n\n const tuples = group.slice(1)\n\n const field: FieldObject = {\n type: 'FIELD',\n tuples,\n }\n\n for (const tuple of tuples) {\n const type = tuple[0]\n const value = tuple[1]\n\n if (type === 5) field.handle = value\n if (type === 330) field.ownerHandle = value\n }\n\n return field\n}\n\nconst UNDERLAY_DEFINITION_OBJECT_TYPES = new Set([\n 'UNDERLAYDEFINITION',\n 'PDFDEFINITION',\n 'DWFDEFINITION',\n 'DGNDEFINITION',\n])\n\nfunction parseUnderlayDefinitionObject(group: ObjectGroup): UnderlayDefinitionObject | undefined {\n const objectType = group[0]?.[1]\n if (typeof objectType !== 'string') return undefined\n if (!UNDERLAY_DEFINITION_OBJECT_TYPES.has(objectType)) return undefined\n\n const tuples = group.slice(1)\n\n const def: UnderlayDefinitionObject = {\n type: objectType as UnderlayDefinitionObject['type'],\n tuples,\n }\n\n for (const tuple of tuples) {\n const type = tuple[0]\n const value = tuple[1]\n\n if (type === 5) def.handle = value\n if (type === 330 && def.ownerHandle === undefined) def.ownerHandle = value\n if (type === 1) def.fileName = String(value)\n if (type === 2) def.underlayName = String(value)\n }\n\n return def\n}\n\ntype ObjectGroupHandler = (objects: ParsedObjects, group: ObjectGroup) => void\n\nconst OBJECT_GROUP_HANDLERS: Record<string, ObjectGroupHandler> = {\n LAYOUT: (objects, group) => {\n const layout = parseLayoutObject(group)\n if (layout) objects.layouts.push(layout)\n },\n DICTIONARY: (objects, group) => {\n const dict = parseDictionaryObject(group)\n const handle = dict?.handle ? String(dict.handle) : undefined\n if (dict && handle) objects.dictionaries![handle] = dict\n },\n XRECORD: (objects, group) => {\n const xRecord = parseXRecordObject(group)\n const handle = xRecord?.handle ? String(xRecord.handle) : undefined\n if (xRecord && handle) objects.xRecords![handle] = xRecord\n },\n IMAGEDEF: (objects, group) => {\n const imageDef = parseImageDefObject(group)\n const handle = imageDef?.handle ? String(imageDef.handle) : undefined\n if (imageDef && handle) objects.imageDefs![handle] = imageDef\n },\n IMAGEDEF_REACTOR: (objects, group) => {\n const reactor = parseImageDefReactorObject(group)\n const handle = reactor?.handle ? String(reactor.handle) : undefined\n if (reactor && handle) objects.imageDefReactors![handle] = reactor\n },\n UNDERLAYDEFINITION: (objects, group) => {\n const def = parseUnderlayDefinitionObject(group)\n const handle = def?.handle ? String(def.handle) : undefined\n if (def && handle) objects.underlayDefinitions![handle] = def\n },\n PDFDEFINITION: (objects, group) => {\n const def = parseUnderlayDefinitionObject(group)\n const handle = def?.handle ? String(def.handle) : undefined\n if (def && handle) objects.underlayDefinitions![handle] = def\n },\n DWFDEFINITION: (objects, group) => {\n const def = parseUnderlayDefinitionObject(group)\n const handle = def?.handle ? String(def.handle) : undefined\n if (def && handle) objects.underlayDefinitions![handle] = def\n },\n DGNDEFINITION: (objects, group) => {\n const def = parseUnderlayDefinitionObject(group)\n const handle = def?.handle ? String(def.handle) : undefined\n if (def && handle) objects.underlayDefinitions![handle] = def\n },\n DIMASSOC: (objects, group) => {\n const dimAssoc = parseDimAssocObject(group)\n const handle = dimAssoc?.handle ? String(dimAssoc.handle) : undefined\n if (dimAssoc && handle) objects.dimAssocs![handle] = dimAssoc\n },\n FIELD: (objects, group) => {\n const field = parseFieldObject(group)\n const handle = field?.handle ? String(field.handle) : undefined\n if (field && handle) objects.fields![handle] = field\n },\n}\n\nexport default function parseObjects(tuples: DXFTuple[]): ParsedObjects {\n const objects: ParsedObjects = {\n layouts: [],\n dictionaries: {},\n xRecords: {},\n imageDefs: {},\n imageDefReactors: {},\n underlayDefinitions: {},\n dimAssocs: {},\n fields: {},\n }\n\n const groups = groupObjectsByZero(tuples)\n for (const group of groups) {\n const objectType = group[0]?.[1]\n if (typeof objectType !== 'string') continue\n\n const handler = OBJECT_GROUP_HANDLERS[objectType]\n if (handler) handler(objects, group)\n }\n\n return objects\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -189,6 +189,7 @@ const vPortHandler = (tuples) => {
189
189
  const type = tuple[0];
190
190
  const value = tuple[1];
191
191
  switch (type) {
192
+ // NOSONAR
192
193
  case 2:
193
194
  vport.name = value;
194
195
  break;
@@ -302,12 +303,89 @@ const vPortHandler = (tuples) => {
302
303
  }
303
304
  );
304
305
  };
306
+ const appIdHandler = (tuples) => {
307
+ return tuples.reduce(
308
+ (appId, tuple) => {
309
+ const type = tuple[0];
310
+ const value = tuple[1];
311
+ switch (type) {
312
+ case 2:
313
+ appId.name = value;
314
+ break;
315
+ case 70:
316
+ appId.flags = value;
317
+ break;
318
+ default:
319
+ }
320
+ return appId;
321
+ },
322
+ { type: "APPID" }
323
+ );
324
+ };
325
+ const blockRecordHandler = (tuples) => {
326
+ return tuples.reduce(
327
+ (blockRecord, tuple) => {
328
+ const type = tuple[0];
329
+ const value = tuple[1];
330
+ switch (type) {
331
+ case 2:
332
+ blockRecord.name = value;
333
+ break;
334
+ case 70:
335
+ blockRecord.flags = value;
336
+ break;
337
+ default:
338
+ }
339
+ return blockRecord;
340
+ },
341
+ { type: "BLOCK_RECORD" }
342
+ );
343
+ };
344
+ const ucsHandler = (tuples) => {
345
+ return tuples.reduce(
346
+ (ucs, tuple) => {
347
+ const type = tuple[0];
348
+ const value = tuple[1];
349
+ switch (type) {
350
+ case 2:
351
+ ucs.name = value;
352
+ break;
353
+ case 70:
354
+ ucs.flags = value;
355
+ break;
356
+ default:
357
+ }
358
+ return ucs;
359
+ },
360
+ { type: "UCS" }
361
+ );
362
+ };
363
+ const viewHandler = (tuples) => {
364
+ return tuples.reduce(
365
+ (view, tuple) => {
366
+ const type = tuple[0];
367
+ const value = tuple[1];
368
+ switch (type) {
369
+ case 2:
370
+ view.name = value;
371
+ break;
372
+ case 70:
373
+ view.flags = value;
374
+ break;
375
+ default:
376
+ }
377
+ return view;
378
+ },
379
+ { type: "VIEW" }
380
+ );
381
+ };
305
382
  const dimStyleHandler = (tuples) => {
306
383
  return tuples.reduce(
307
384
  (dimStyle, tuple) => {
308
385
  const type = tuple[0];
309
386
  const value = tuple[1];
310
387
  switch (type) {
388
+ // NOSONAR
311
389
  case 2:
312
390
  dimStyle.name = value;
313
391
  break;
@@ -558,30 +636,31 @@ function parseTables(tuples) {
558
636
  tableTuples.push(tuple);
559
637
  }
560
638
  }
561
- let stylesTuples = [];
562
- let layersTuples = [];
563
- let vPortTuples = [];
564
- let ltypeTuples = [];
565
- let dimStyleTuples = [];
639
+ const groupsByName = {};
566
640
  for (const group of tableGroups) {
567
- if (group[0]?.[1] === "STYLE") {
568
- stylesTuples = group;
569
- } else if (group[0]?.[1] === "LTYPE") {
570
- ltypeTuples = group;
571
- } else if (group[0]?.[1] === "LAYER") {
572
- layersTuples = group;
573
- } else if (group[0]?.[1] === "VPORT") {
574
- vPortTuples = group;
575
- } else if (group[0]?.[1] === "DIMSTYLE") {
576
- dimStyleTuples = group;
577
- }
641
+ const name = String(group[0]?.[1] ?? "");
642
+ if (!name) continue;
643
+ groupsByName[name] = group;
578
644
  }
645
+ const stylesTuples = groupsByName.STYLE ?? [];
646
+ const layersTuples = groupsByName.LAYER ?? [];
647
+ const vPortTuples = groupsByName.VPORT ?? [];
648
+ const ltypeTuples = groupsByName.LTYPE ?? [];
649
+ const dimStyleTuples = groupsByName.DIMSTYLE ?? [];
650
+ const appIdTuples = groupsByName.APPID ?? [];
651
+ const blockRecordTuples = groupsByName.BLOCK_RECORD ?? [];
652
+ const ucsTuples = groupsByName.UCS ?? [];
653
+ const viewTuples = groupsByName.VIEW ?? [];
579
654
  return {
580
655
  layers: tableHandler(layersTuples, "LAYER", layerHandler),
581
656
  styles: tableHandler(stylesTuples, "STYLE", styleHandler),
582
657
  vports: tableHandler(vPortTuples, "VPORT", vPortHandler),
583
658
  ltypes: tableHandler(ltypeTuples, "LTYPE", ltypeHandler),
584
- dimStyles: tableHandler(dimStyleTuples, "DIMSTYLE", dimStyleHandler)
659
+ dimStyles: tableHandler(dimStyleTuples, "DIMSTYLE", dimStyleHandler),
660
+ appids: tableHandler(appIdTuples, "APPID", appIdHandler),
661
+ blockRecords: tableHandler(blockRecordTuples, "BLOCK_RECORD", blockRecordHandler),
662
+ ucs: tableHandler(ucsTuples, "UCS", ucsHandler),
663
+ views: tableHandler(viewTuples, "VIEW", viewHandler)
585
664
  };
586
665
  }
587
666
  //# sourceMappingURL=tables.cjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/handlers/tables.ts"],
4
- "sourcesContent": ["import type { DXFTuple, DimStyleInternal, LTypeElement, LTypeInternal, LayerInternal, StyleInternal, VPortInternal } from '../types'\n\nimport logger from '../util/logger'\n\nconst ltypeHandler = (tuples: DXFTuple[]): LTypeInternal => {\n let element: LTypeElement | undefined\n let offset: { x: string | number; y: string | number } | undefined\n return tuples.reduce(\n (layer, tuple) => {\n const type = tuple[0]\n const value = tuple[1]\n // https://documentation.help/AutoCAD-DXF/WS1a9193826455f5ff18cb41610ec0a2e719-7a4f.htm\n switch (type) {\n case 2:\n layer.name = value\n break\n case 3:\n layer.description = value\n break\n case 70:\n // Standard flag values (bit-coded values):\n // 16 = If set, table entry is externally dependent on an xref\n // 32 = If both this bit and bit 16 are set, the externally dependent xref has been successfully resolved\n // 64 = If set, the table entry was referenced by at least one entity in the drawing the last time the drawing was edited. (This flag is for the benefit of AutoCAD commands. It can be ignored by most programs that read DXF files and need not be set by programs that write DXF files)\n layer.flag = value\n break\n case 72:\n // Alignment code (value is always 65, the ASCII code for A):\n layer.alignment = value\n break\n case 73:\n layer.elementCount = Number.parseInt(String(value))\n break\n case 40:\n layer.patternLength = value\n break\n case 49:\n element = { length: value }\n layer.pattern.push(element)\n break\n case 74:\n // Complex linetype element type (one per element). Default is 0 (no embedded shape/text) (bit-coded values)\n // 1 = If set, code 50 specifies an absolute rotation; if not set, code 50 specifies a relative rotation\n // 2 = Embedded element is a text string\n // 4 = Embedded element is a shape\n if (element) {\n element.shape = value\n }\n break\n case 75:\n if (element) {\n element.shapeNumber = value\n }\n break\n case 340:\n if (element) {\n element.styleHandle = value\n }\n break\n case 46:\n if (element) {\n element.scales ??= []\n element.scales.push(value)\n }\n break\n case 50:\n if (element) {\n element.rotation = value\n }\n break\n case 44:\n offset = { x: value, y: 0 }\n if (element) {\n element.offset ??= []\n element.offset.push(offset)\n }\n break\n case 45:\n if (offset) {\n offset.y = value\n }\n break\n case 9:\n if (element) {\n element.text = value\n }\n break\n default:\n }\n return layer\n },\n { type: 'LTYPE', pattern: [] } as LTypeInternal,\n )\n}\n\nconst layerHandler = (tuples: DXFTuple[]): LayerInternal => {\n return tuples.reduce(\n (layer, tuple) => {\n const type = tuple[0]\n const value = tuple[1]\n // https://www.autodesk.com/techpubs/autocad/acad2000/dxf/layer_dxf_04.htm\n switch (type) {\n case 2:\n layer.name = value\n break\n case 6:\n layer.lineTypeName = value\n break\n case 62:\n layer.colorNumber = value\n break\n case 70:\n layer.flags = value\n break\n case 290:\n layer.plot = Number.parseInt(String(value)) !== 0\n break\n case 370:\n layer.lineWeightEnum = value\n break\n default:\n }\n return layer\n },\n { type: 'LAYER' } as LayerInternal,\n )\n}\n\nconst styleHandler = (tuples: DXFTuple[]): StyleInternal => {\n return tuples.reduce(\n (style, tuple) => {\n const type = tuple[0]\n const value = tuple[1]\n switch (type) {\n case 2:\n style.name = value\n break\n case 6:\n style.lineTypeName = value\n break\n case 40:\n style.fixedTextHeight = value\n break\n case 41:\n style.widthFactor = value\n break\n case 50:\n style.obliqueAngle = value\n break\n case 71:\n style.flags = value\n break\n case 42:\n style.lastHeightUsed = value\n break\n case 3:\n style.primaryFontFileName = value\n break\n case 4:\n style.bigFontFileName = value\n break\n default:\n }\n return style\n },\n { type: 'STYLE' } as StyleInternal,\n )\n}\n\nconst vPortHandler = (tuples: DXFTuple[]): VPortInternal => {\n return tuples.reduce(\n (vport, tuple) => {\n const type = tuple[0]\n const value = tuple[1]\n switch (type) {\n case 2:\n vport.name = value\n break\n case 5:\n vport.handle = value\n break\n case 70:\n vport.flags = value\n break\n case 10:\n vport.lowerLeft.x = Number.parseFloat(String(value))\n break\n case 20:\n vport.lowerLeft.y = Number.parseFloat(String(value))\n break\n case 11:\n vport.upperRight.x = Number.parseFloat(String(value))\n break\n case 21:\n vport.upperRight.y = Number.parseFloat(String(value))\n break\n case 12:\n vport.center.x = Number.parseFloat(String(value))\n break\n case 22:\n vport.center.y = Number.parseFloat(String(value))\n break\n case 14:\n vport.snapSpacing.x = Number.parseFloat(String(value))\n break\n case 24:\n vport.snapSpacing.y = Number.parseFloat(String(value))\n break\n case 15:\n vport.gridSpacing.x = Number.parseFloat(String(value))\n break\n case 25:\n vport.gridSpacing.y = Number.parseFloat(String(value))\n break\n case 16:\n vport.direction.x = Number.parseFloat(String(value))\n break\n case 26:\n vport.direction.y = Number.parseFloat(String(value))\n break\n case 36:\n vport.direction.z = Number.parseFloat(String(value))\n break\n case 17:\n vport.target.x = Number.parseFloat(String(value))\n break\n case 27:\n vport.target.y = Number.parseFloat(String(value))\n break\n case 37:\n vport.target.z = Number.parseFloat(String(value))\n break\n case 45:\n vport.height = Number.parseFloat(String(value))\n break\n case 50:\n vport.snapAngle = Number.parseFloat(String(value))\n break\n case 51:\n vport.angle = Number.parseFloat(String(value))\n break\n case 110:\n vport.x = Number.parseFloat(String(value))\n break\n case 120:\n vport.y = Number.parseFloat(String(value))\n break\n case 130:\n vport.z = Number.parseFloat(String(value))\n break\n case 111:\n vport.xAxisX = Number.parseFloat(String(value))\n break\n case 121:\n vport.xAxisY = Number.parseFloat(String(value))\n break\n case 131:\n vport.xAxisZ = Number.parseFloat(String(value))\n break\n case 112:\n vport.xAxisX = Number.parseFloat(String(value))\n break\n case 122:\n vport.xAxisY = Number.parseFloat(String(value))\n break\n case 132:\n vport.xAxisZ = Number.parseFloat(String(value))\n break\n case 146:\n vport.elevation = Number.parseFloat(String(value))\n break\n default:\n }\n return vport\n },\n {\n type: 'VPORT',\n center: {},\n lowerLeft: {},\n upperRight: {},\n snap: {},\n snapSpacing: {},\n gridSpacing: {},\n direction: {},\n target: {},\n } as VPortInternal,\n )\n}\n\nconst dimStyleHandler = (tuples: DXFTuple[]): DimStyleInternal => {\n return tuples.reduce(\n (dimStyle, tuple) => {\n const type = tuple[0]\n const value = tuple[1]\n switch (type) {\n case 2:\n dimStyle.name = value\n break\n case 70:\n dimStyle.flags = value\n break\n case 3:\n dimStyle.dimPost = value\n break\n case 4:\n dimStyle.dimAPost = value\n break\n case 40:\n dimStyle.dimScale = Number.parseFloat(String(value))\n break\n case 41:\n dimStyle.dimAsz = Number.parseFloat(String(value))\n break\n case 42:\n dimStyle.dimExo = Number.parseFloat(String(value))\n break\n case 43:\n dimStyle.dimDli = Number.parseFloat(String(value))\n break\n case 44:\n dimStyle.dimExe = Number.parseFloat(String(value))\n break\n case 45:\n dimStyle.dimRnd = Number.parseFloat(String(value))\n break\n case 46:\n dimStyle.dimDle = Number.parseFloat(String(value))\n break\n case 47:\n dimStyle.dimTp = Number.parseFloat(String(value))\n break\n case 48:\n dimStyle.dimTm = Number.parseFloat(String(value))\n break\n case 140:\n dimStyle.dimTxt = Number.parseFloat(String(value))\n break\n case 141:\n dimStyle.dimCen = Number.parseFloat(String(value))\n break\n case 142:\n dimStyle.dimTsz = Number.parseFloat(String(value))\n break\n case 143:\n dimStyle.dimAltf = Number.parseFloat(String(value))\n break\n case 144:\n dimStyle.dimLfac = Number.parseFloat(String(value))\n break\n case 145:\n dimStyle.dimTvp = Number.parseFloat(String(value))\n break\n case 146:\n dimStyle.dimTfac = Number.parseFloat(String(value))\n break\n case 147:\n dimStyle.dimGap = Number.parseFloat(String(value))\n break\n case 148:\n dimStyle.dimAltRnd = Number.parseFloat(String(value))\n break\n case 71:\n dimStyle.dimTol = Number.parseInt(String(value))\n break\n case 72:\n dimStyle.dimLim = Number.parseInt(String(value))\n break\n case 73:\n dimStyle.dimTih = Number.parseInt(String(value))\n break\n case 74:\n dimStyle.dimToh = Number.parseInt(String(value))\n break\n case 75:\n dimStyle.dimSe1 = Number.parseInt(String(value))\n break\n case 76:\n dimStyle.dimSe2 = Number.parseInt(String(value))\n break\n case 77:\n dimStyle.dimTad = Number.parseInt(String(value))\n break\n case 78:\n dimStyle.dimZin = Number.parseInt(String(value))\n break\n case 79:\n dimStyle.dimAzin = Number.parseInt(String(value))\n break\n case 170:\n dimStyle.dimAlt = Number.parseInt(String(value))\n break\n case 171:\n dimStyle.dimAltd = Number.parseInt(String(value))\n break\n case 172:\n dimStyle.dimTofl = Number.parseInt(String(value))\n break\n case 173:\n dimStyle.dimSah = Number.parseInt(String(value))\n break\n case 174:\n dimStyle.dimTix = Number.parseInt(String(value))\n break\n case 175:\n dimStyle.dimSoxd = Number.parseInt(String(value))\n break\n case 176:\n dimStyle.dimClrd = Number.parseInt(String(value))\n break\n case 177:\n dimStyle.dimClre = Number.parseInt(String(value))\n break\n case 178:\n dimStyle.dimClrt = Number.parseInt(String(value))\n break\n case 179:\n dimStyle.dimAdec = Number.parseInt(String(value))\n break\n case 270:\n dimStyle.dimUnit = Number.parseInt(String(value))\n break\n case 271:\n dimStyle.dimDec = Number.parseInt(String(value))\n break\n case 272:\n dimStyle.dimTdec = Number.parseInt(String(value))\n break\n case 273:\n dimStyle.dimAltu = Number.parseInt(String(value))\n break\n case 274:\n dimStyle.dimAlttd = Number.parseInt(String(value))\n break\n case 275:\n dimStyle.dimAunit = Number.parseInt(String(value))\n break\n case 276:\n dimStyle.dimFrac = Number.parseInt(String(value))\n break\n case 277:\n dimStyle.dimLunit = Number.parseInt(String(value))\n break\n case 278:\n dimStyle.dimDsep = Number.parseInt(String(value))\n break\n case 279:\n dimStyle.dimTmove = Number.parseInt(String(value))\n break\n case 280:\n dimStyle.dimJust = Number.parseInt(String(value))\n break\n case 281:\n dimStyle.dimSd1 = Number.parseInt(String(value))\n break\n case 282:\n dimStyle.dimSd2 = Number.parseInt(String(value))\n break\n case 283:\n dimStyle.dimTolj = Number.parseInt(String(value))\n break\n case 284:\n dimStyle.dimTzin = Number.parseInt(String(value))\n break\n case 285:\n dimStyle.dimAltz = Number.parseInt(String(value))\n break\n case 286:\n dimStyle.dimAlttz = Number.parseInt(String(value))\n break\n case 287:\n dimStyle.dimFit = Number.parseInt(String(value))\n break\n case 288:\n dimStyle.dimUpt = Number.parseInt(String(value))\n break\n case 289:\n dimStyle.dimAtfit = Number.parseInt(String(value))\n break\n case 340:\n dimStyle.dimTxsty = value\n break\n case 341:\n dimStyle.dimLdrblk = value\n break\n case 342:\n dimStyle.dimBlk = value\n break\n case 343:\n dimStyle.dimBlk1 = value\n break\n case 344:\n dimStyle.dimBlk2 = value\n break\n case 371:\n dimStyle.dimLwd = Number.parseInt(String(value))\n break\n case 372:\n dimStyle.dimLwe = Number.parseInt(String(value))\n break\n default:\n }\n return dimStyle\n },\n { type: 'DIMSTYLE' } as DimStyleInternal,\n )\n}\n\nconst tableHandler = (\n tuples: DXFTuple[],\n tableType: string,\n handler: (tuples: DXFTuple[]) => LTypeInternal | LayerInternal | StyleInternal | VPortInternal | DimStyleInternal,\n): Record<string, any> => {\n const tableRowsTuples: DXFTuple[][] = []\n\n let tableRowTuples: DXFTuple[] | undefined\n for (const tuple of tuples) {\n const type = tuple[0]\n const value = tuple[1]\n if ((type === 0 || type === 2) && value === tableType) {\n tableRowTuples = []\n tableRowsTuples.push(tableRowTuples)\n } else if (tableRowTuples) {\n tableRowTuples.push(tuple)\n }\n }\n\n return tableRowsTuples.reduce((acc, rowTuples) => {\n const tableRow = handler(rowTuples)\n if (tableRow.name) {\n acc[String(tableRow.name)] = tableRow\n } else {\n logger.warn('table row without name:', tableRow)\n }\n return acc\n }, {} as Record<string, any>)\n}\n\nexport default function parseTables(tuples: DXFTuple[]) {\n const tableGroups: DXFTuple[][] = []\n let tableTuples: DXFTuple[] | undefined\n for (const tuple of tuples) {\n const value = tuple[1]\n if (value === 'TABLE') {\n tableTuples = []\n tableGroups.push(tableTuples)\n } else if (value === 'ENDTAB') {\n if (tableTuples) {\n tableGroups.push(tableTuples)\n }\n } else if (tableTuples) {\n tableTuples.push(tuple)\n }\n }\n\n let stylesTuples: DXFTuple[] = []\n let layersTuples: DXFTuple[] = []\n let vPortTuples: DXFTuple[] = []\n let ltypeTuples: DXFTuple[] = []\n let dimStyleTuples: DXFTuple[] = []\n for (const group of tableGroups) {\n if (group[0]?.[1] === 'STYLE') {\n stylesTuples = group\n } else if (group[0]?.[1] === 'LTYPE') {\n ltypeTuples = group\n } else if (group[0]?.[1] === 'LAYER') {\n layersTuples = group\n } else if (group[0]?.[1] === 'VPORT') {\n vPortTuples = group\n } else if (group[0]?.[1] === 'DIMSTYLE') {\n dimStyleTuples = group\n }\n }\n\n return {\n layers: tableHandler(layersTuples, 'LAYER', layerHandler),\n styles: tableHandler(stylesTuples, 'STYLE', styleHandler),\n vports: tableHandler(vPortTuples, 'VPORT', vPortHandler),\n ltypes: tableHandler(ltypeTuples, 'LTYPE', ltypeHandler),\n dimStyles: tableHandler(dimStyleTuples, 'DIMSTYLE', dimStyleHandler),\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import type {\n AppIdInternal,\n BlockRecordInternal,\n DXFTuple,\n DimStyleInternal,\n LTypeElement,\n LTypeInternal,\n LayerInternal,\n StyleInternal,\n UcsInternal,\n VPortInternal,\n ViewInternal,\n} from '../types'\n\nimport logger from '../util/logger'\n\nconst ltypeHandler = (tuples: DXFTuple[]): LTypeInternal => {\n let element: LTypeElement | undefined\n let offset: { x: string | number; y: string | number } | undefined\n return tuples.reduce(\n (layer, tuple) => { // NOSONAR\n const type = tuple[0]\n const value = tuple[1]\n // https://documentation.help/AutoCAD-DXF/WS1a9193826455f5ff18cb41610ec0a2e719-7a4f.htm\n switch (type) {\n case 2:\n layer.name = value\n break\n case 3:\n layer.description = value\n break\n case 70:\n // Standard flag values (bit-coded values):\n // 16 = If set, table entry is externally dependent on an xref\n // 32 = If both this bit and bit 16 are set, the externally dependent xref has been successfully resolved\n // 64 = If set, the table entry was referenced by at least one entity in the drawing the last time the drawing was edited. (This flag is for the benefit of AutoCAD commands. It can be ignored by most programs that read DXF files and need not be set by programs that write DXF files)\n layer.flag = value\n break\n case 72:\n // Alignment code (value is always 65, the ASCII code for A):\n layer.alignment = value\n break\n case 73:\n layer.elementCount = Number.parseInt(String(value))\n break\n case 40:\n layer.patternLength = value\n break\n case 49:\n element = { length: value }\n layer.pattern.push(element)\n break\n case 74:\n // Complex linetype element type (one per element). Default is 0 (no embedded shape/text) (bit-coded values)\n // 1 = If set, code 50 specifies an absolute rotation; if not set, code 50 specifies a relative rotation\n // 2 = Embedded element is a text string\n // 4 = Embedded element is a shape\n if (element) {\n element.shape = value\n }\n break\n case 75:\n if (element) {\n element.shapeNumber = value\n }\n break\n case 340:\n if (element) {\n element.styleHandle = value\n }\n break\n case 46:\n if (element) {\n element.scales ??= []\n element.scales.push(value)\n }\n break\n case 50:\n if (element) {\n element.rotation = value\n }\n break\n case 44:\n offset = { x: value, y: 0 }\n if (element) {\n element.offset ??= []\n element.offset.push(offset)\n }\n break\n case 45:\n if (offset) {\n offset.y = value\n }\n break\n case 9:\n if (element) {\n element.text = value\n }\n break\n default:\n }\n return layer\n },\n { type: 'LTYPE', pattern: [] } as LTypeInternal,\n )\n}\n\nconst layerHandler = (tuples: DXFTuple[]): LayerInternal => {\n return tuples.reduce(\n (layer, tuple) => {\n const type = tuple[0]\n const value = tuple[1]\n // https://www.autodesk.com/techpubs/autocad/acad2000/dxf/layer_dxf_04.htm\n switch (type) {\n case 2:\n layer.name = value\n break\n case 6:\n layer.lineTypeName = value\n break\n case 62:\n layer.colorNumber = value\n break\n case 70:\n layer.flags = value\n break\n case 290:\n layer.plot = Number.parseInt(String(value)) !== 0\n break\n case 370:\n layer.lineWeightEnum = value\n break\n default:\n }\n return layer\n },\n { type: 'LAYER' } as LayerInternal,\n )\n}\n\nconst styleHandler = (tuples: DXFTuple[]): StyleInternal => {\n return tuples.reduce(\n (style, tuple) => {\n const type = tuple[0]\n const value = tuple[1]\n switch (type) {\n case 2:\n style.name = value\n break\n case 6:\n style.lineTypeName = value\n break\n case 40:\n style.fixedTextHeight = value\n break\n case 41:\n style.widthFactor = value\n break\n case 50:\n style.obliqueAngle = value\n break\n case 71:\n style.flags = value\n break\n case 42:\n style.lastHeightUsed = value\n break\n case 3:\n style.primaryFontFileName = value\n break\n case 4:\n style.bigFontFileName = value\n break\n default:\n }\n return style\n },\n { type: 'STYLE' } as StyleInternal,\n )\n}\n\nconst vPortHandler = (tuples: DXFTuple[]): VPortInternal => {\n return tuples.reduce(\n (vport, tuple) => {\n const type = tuple[0]\n const value = tuple[1]\n switch (type) { // NOSONAR\n case 2:\n vport.name = value\n break\n case 5:\n vport.handle = value\n break\n case 70:\n vport.flags = value\n break\n case 10:\n vport.lowerLeft.x = Number.parseFloat(String(value))\n break\n case 20:\n vport.lowerLeft.y = Number.parseFloat(String(value))\n break\n case 11:\n vport.upperRight.x = Number.parseFloat(String(value))\n break\n case 21:\n vport.upperRight.y = Number.parseFloat(String(value))\n break\n case 12:\n vport.center.x = Number.parseFloat(String(value))\n break\n case 22:\n vport.center.y = Number.parseFloat(String(value))\n break\n case 14:\n vport.snapSpacing.x = Number.parseFloat(String(value))\n break\n case 24:\n vport.snapSpacing.y = Number.parseFloat(String(value))\n break\n case 15:\n vport.gridSpacing.x = Number.parseFloat(String(value))\n break\n case 25:\n vport.gridSpacing.y = Number.parseFloat(String(value))\n break\n case 16:\n vport.direction.x = Number.parseFloat(String(value))\n break\n case 26:\n vport.direction.y = Number.parseFloat(String(value))\n break\n case 36:\n vport.direction.z = Number.parseFloat(String(value))\n break\n case 17:\n vport.target.x = Number.parseFloat(String(value))\n break\n case 27:\n vport.target.y = Number.parseFloat(String(value))\n break\n case 37:\n vport.target.z = Number.parseFloat(String(value))\n break\n case 45:\n vport.height = Number.parseFloat(String(value))\n break\n case 50:\n vport.snapAngle = Number.parseFloat(String(value))\n break\n case 51:\n vport.angle = Number.parseFloat(String(value))\n break\n case 110:\n vport.x = Number.parseFloat(String(value))\n break\n case 120:\n vport.y = Number.parseFloat(String(value))\n break\n case 130:\n vport.z = Number.parseFloat(String(value))\n break\n case 111:\n vport.xAxisX = Number.parseFloat(String(value))\n break\n case 121:\n vport.xAxisY = Number.parseFloat(String(value))\n break\n case 131:\n vport.xAxisZ = Number.parseFloat(String(value))\n break\n case 112:\n vport.xAxisX = Number.parseFloat(String(value))\n break\n case 122:\n vport.xAxisY = Number.parseFloat(String(value))\n break\n case 132:\n vport.xAxisZ = Number.parseFloat(String(value))\n break\n case 146:\n vport.elevation = Number.parseFloat(String(value))\n break\n default:\n }\n return vport\n },\n {\n type: 'VPORT',\n center: {},\n lowerLeft: {},\n upperRight: {},\n snap: {},\n snapSpacing: {},\n gridSpacing: {},\n direction: {},\n target: {},\n } as VPortInternal,\n )\n}\n\nconst appIdHandler = (tuples: DXFTuple[]): AppIdInternal => {\n return tuples.reduce(\n (appId, tuple) => {\n const type = tuple[0]\n const value = tuple[1]\n\n switch (type) {\n case 2:\n appId.name = value\n break\n case 70:\n appId.flags = value\n break\n default:\n }\n\n return appId\n },\n { type: 'APPID' } as AppIdInternal,\n )\n}\n\nconst blockRecordHandler = (tuples: DXFTuple[]): BlockRecordInternal => {\n return tuples.reduce(\n (blockRecord, tuple) => {\n const type = tuple[0]\n const value = tuple[1]\n\n switch (type) {\n case 2:\n blockRecord.name = value\n break\n case 70:\n blockRecord.flags = value\n break\n default:\n }\n\n return blockRecord\n },\n { type: 'BLOCK_RECORD' } as BlockRecordInternal,\n )\n}\n\nconst ucsHandler = (tuples: DXFTuple[]): UcsInternal => {\n return tuples.reduce(\n (ucs, tuple) => {\n const type = tuple[0]\n const value = tuple[1]\n\n switch (type) {\n case 2:\n ucs.name = value\n break\n case 70:\n ucs.flags = value\n break\n default:\n }\n\n return ucs\n },\n { type: 'UCS' } as UcsInternal,\n )\n}\n\nconst viewHandler = (tuples: DXFTuple[]): ViewInternal => {\n return tuples.reduce(\n (view, tuple) => {\n const type = tuple[0]\n const value = tuple[1]\n\n switch (type) {\n case 2:\n view.name = value\n break\n case 70:\n view.flags = value\n break\n default:\n }\n\n return view\n },\n { type: 'VIEW' } as ViewInternal,\n )\n}\n\nconst dimStyleHandler = (tuples: DXFTuple[]): DimStyleInternal => {\n return tuples.reduce(\n (dimStyle, tuple) => {\n const type = tuple[0]\n const value = tuple[1]\n switch (type) { // NOSONAR\n case 2:\n dimStyle.name = value\n break\n case 70:\n dimStyle.flags = value\n break\n case 3:\n dimStyle.dimPost = value\n break\n case 4:\n dimStyle.dimAPost = value\n break\n case 40:\n dimStyle.dimScale = Number.parseFloat(String(value))\n break\n case 41:\n dimStyle.dimAsz = Number.parseFloat(String(value))\n break\n case 42:\n dimStyle.dimExo = Number.parseFloat(String(value))\n break\n case 43:\n dimStyle.dimDli = Number.parseFloat(String(value))\n break\n case 44:\n dimStyle.dimExe = Number.parseFloat(String(value))\n break\n case 45:\n dimStyle.dimRnd = Number.parseFloat(String(value))\n break\n case 46:\n dimStyle.dimDle = Number.parseFloat(String(value))\n break\n case 47:\n dimStyle.dimTp = Number.parseFloat(String(value))\n break\n case 48:\n dimStyle.dimTm = Number.parseFloat(String(value))\n break\n case 140:\n dimStyle.dimTxt = Number.parseFloat(String(value))\n break\n case 141:\n dimStyle.dimCen = Number.parseFloat(String(value))\n break\n case 142:\n dimStyle.dimTsz = Number.parseFloat(String(value))\n break\n case 143:\n dimStyle.dimAltf = Number.parseFloat(String(value))\n break\n case 144:\n dimStyle.dimLfac = Number.parseFloat(String(value))\n break\n case 145:\n dimStyle.dimTvp = Number.parseFloat(String(value))\n break\n case 146:\n dimStyle.dimTfac = Number.parseFloat(String(value))\n break\n case 147:\n dimStyle.dimGap = Number.parseFloat(String(value))\n break\n case 148:\n dimStyle.dimAltRnd = Number.parseFloat(String(value))\n break\n case 71:\n dimStyle.dimTol = Number.parseInt(String(value))\n break\n case 72:\n dimStyle.dimLim = Number.parseInt(String(value))\n break\n case 73:\n dimStyle.dimTih = Number.parseInt(String(value))\n break\n case 74:\n dimStyle.dimToh = Number.parseInt(String(value))\n break\n case 75:\n dimStyle.dimSe1 = Number.parseInt(String(value))\n break\n case 76:\n dimStyle.dimSe2 = Number.parseInt(String(value))\n break\n case 77:\n dimStyle.dimTad = Number.parseInt(String(value))\n break\n case 78:\n dimStyle.dimZin = Number.parseInt(String(value))\n break\n case 79:\n dimStyle.dimAzin = Number.parseInt(String(value))\n break\n case 170:\n dimStyle.dimAlt = Number.parseInt(String(value))\n break\n case 171:\n dimStyle.dimAltd = Number.parseInt(String(value))\n break\n case 172:\n dimStyle.dimTofl = Number.parseInt(String(value))\n break\n case 173:\n dimStyle.dimSah = Number.parseInt(String(value))\n break\n case 174:\n dimStyle.dimTix = Number.parseInt(String(value))\n break\n case 175:\n dimStyle.dimSoxd = Number.parseInt(String(value))\n break\n case 176:\n dimStyle.dimClrd = Number.parseInt(String(value))\n break\n case 177:\n dimStyle.dimClre = Number.parseInt(String(value))\n break\n case 178:\n dimStyle.dimClrt = Number.parseInt(String(value))\n break\n case 179:\n dimStyle.dimAdec = Number.parseInt(String(value))\n break\n case 270:\n dimStyle.dimUnit = Number.parseInt(String(value))\n break\n case 271:\n dimStyle.dimDec = Number.parseInt(String(value))\n break\n case 272:\n dimStyle.dimTdec = Number.parseInt(String(value))\n break\n case 273:\n dimStyle.dimAltu = Number.parseInt(String(value))\n break\n case 274:\n dimStyle.dimAlttd = Number.parseInt(String(value))\n break\n case 275:\n dimStyle.dimAunit = Number.parseInt(String(value))\n break\n case 276:\n dimStyle.dimFrac = Number.parseInt(String(value))\n break\n case 277:\n dimStyle.dimLunit = Number.parseInt(String(value))\n break\n case 278:\n dimStyle.dimDsep = Number.parseInt(String(value))\n break\n case 279:\n dimStyle.dimTmove = Number.parseInt(String(value))\n break\n case 280:\n dimStyle.dimJust = Number.parseInt(String(value))\n break\n case 281:\n dimStyle.dimSd1 = Number.parseInt(String(value))\n break\n case 282:\n dimStyle.dimSd2 = Number.parseInt(String(value))\n break\n case 283:\n dimStyle.dimTolj = Number.parseInt(String(value))\n break\n case 284:\n dimStyle.dimTzin = Number.parseInt(String(value))\n break\n case 285:\n dimStyle.dimAltz = Number.parseInt(String(value))\n break\n case 286:\n dimStyle.dimAlttz = Number.parseInt(String(value))\n break\n case 287:\n dimStyle.dimFit = Number.parseInt(String(value))\n break\n case 288:\n dimStyle.dimUpt = Number.parseInt(String(value))\n break\n case 289:\n dimStyle.dimAtfit = Number.parseInt(String(value))\n break\n case 340:\n dimStyle.dimTxsty = value\n break\n case 341:\n dimStyle.dimLdrblk = value\n break\n case 342:\n dimStyle.dimBlk = value\n break\n case 343:\n dimStyle.dimBlk1 = value\n break\n case 344:\n dimStyle.dimBlk2 = value\n break\n case 371:\n dimStyle.dimLwd = Number.parseInt(String(value))\n break\n case 372:\n dimStyle.dimLwe = Number.parseInt(String(value))\n break\n default:\n }\n return dimStyle\n },\n { type: 'DIMSTYLE' } as DimStyleInternal,\n )\n}\n\nconst tableHandler = (\n tuples: DXFTuple[],\n tableType: string,\n handler: (\n tuples: DXFTuple[],\n ) =>\n | LTypeInternal\n | LayerInternal\n | StyleInternal\n | VPortInternal\n | DimStyleInternal\n | AppIdInternal\n | BlockRecordInternal\n | UcsInternal\n | ViewInternal,\n): Record<string, any> => {\n const tableRowsTuples: DXFTuple[][] = []\n\n let tableRowTuples: DXFTuple[] | undefined\n for (const tuple of tuples) {\n const type = tuple[0]\n const value = tuple[1]\n if ((type === 0 || type === 2) && value === tableType) {\n tableRowTuples = []\n tableRowsTuples.push(tableRowTuples)\n } else if (tableRowTuples) {\n tableRowTuples.push(tuple)\n }\n }\n\n return tableRowsTuples.reduce((acc, rowTuples) => {\n const tableRow = handler(rowTuples)\n if (tableRow.name) {\n acc[String(tableRow.name)] = tableRow\n } else {\n logger.warn('table row without name:', tableRow)\n }\n return acc\n }, {} as Record<string, any>)\n}\n\nexport default function parseTables(tuples: DXFTuple[]) {\n const tableGroups: DXFTuple[][] = []\n let tableTuples: DXFTuple[] | undefined\n for (const tuple of tuples) {\n const value = tuple[1]\n if (value === 'TABLE') {\n tableTuples = []\n tableGroups.push(tableTuples)\n } else if (value === 'ENDTAB') {\n if (tableTuples) {\n tableGroups.push(tableTuples)\n }\n } else if (tableTuples) {\n tableTuples.push(tuple)\n }\n }\n\n const groupsByName: Record<string, DXFTuple[]> = {}\n for (const group of tableGroups) {\n const name = String(group[0]?.[1] ?? '')\n if (!name) continue\n groupsByName[name] = group\n }\n\n const stylesTuples = groupsByName.STYLE ?? []\n const layersTuples = groupsByName.LAYER ?? []\n const vPortTuples = groupsByName.VPORT ?? []\n const ltypeTuples = groupsByName.LTYPE ?? []\n const dimStyleTuples = groupsByName.DIMSTYLE ?? []\n const appIdTuples = groupsByName.APPID ?? []\n const blockRecordTuples = groupsByName.BLOCK_RECORD ?? []\n const ucsTuples = groupsByName.UCS ?? []\n const viewTuples = groupsByName.VIEW ?? []\n\n return {\n layers: tableHandler(layersTuples, 'LAYER', layerHandler),\n styles: tableHandler(stylesTuples, 'STYLE', styleHandler),\n vports: tableHandler(vPortTuples, 'VPORT', vPortHandler),\n ltypes: tableHandler(ltypeTuples, 'LTYPE', ltypeHandler),\n dimStyles: tableHandler(dimStyleTuples, 'DIMSTYLE', dimStyleHandler),\n appids: tableHandler(appIdTuples, 'APPID', appIdHandler),\n blockRecords: tableHandler(blockRecordTuples, 'BLOCK_RECORD', blockRecordHandler),\n ucs: tableHandler(ucsTuples, 'UCS', ucsHandler),\n views: tableHandler(viewTuples, 'VIEW', viewHandler),\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["logger"]
7
7
  }
@@ -0,0 +1,13 @@
1
+ import type { DXFTuple } from '../types';
2
+ export default function parseTables(tuples: DXFTuple[]): {
3
+ layers: Record<string, any>;
4
+ styles: Record<string, any>;
5
+ vports: Record<string, any>;
6
+ ltypes: Record<string, any>;
7
+ dimStyles: Record<string, any>;
8
+ appids: Record<string, any>;
9
+ blockRecords: Record<string, any>;
10
+ ucs: Record<string, any>;
11
+ views: Record<string, any>;
12
+ };
13
+ //# sourceMappingURL=tables.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tables.d.ts","sourceRoot":"","sources":["../../src/handlers/tables.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,QAAQ,EAST,MAAM,UAAU,CAAA;AA4nBjB,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE;;;;;;;;;;EA6CrD"}
@@ -156,6 +156,7 @@ const vPortHandler = (tuples) => {
156
156
  const type = tuple[0];
157
157
  const value = tuple[1];
158
158
  switch (type) {
159
+ // NOSONAR
159
160
  case 2:
160
161
  vport.name = value;
161
162
  break;
@@ -269,12 +270,89 @@ const vPortHandler = (tuples) => {
269
270
  }
270
271
  );
271
272
  };
273
+ const appIdHandler = (tuples) => {
274
+ return tuples.reduce(
275
+ (appId, tuple) => {
276
+ const type = tuple[0];
277
+ const value = tuple[1];
278
+ switch (type) {
279
+ case 2:
280
+ appId.name = value;
281
+ break;
282
+ case 70:
283
+ appId.flags = value;
284
+ break;
285
+ default:
286
+ }
287
+ return appId;
288
+ },
289
+ { type: "APPID" }
290
+ );
291
+ };
292
+ const blockRecordHandler = (tuples) => {
293
+ return tuples.reduce(
294
+ (blockRecord, tuple) => {
295
+ const type = tuple[0];
296
+ const value = tuple[1];
297
+ switch (type) {
298
+ case 2:
299
+ blockRecord.name = value;
300
+ break;
301
+ case 70:
302
+ blockRecord.flags = value;
303
+ break;
304
+ default:
305
+ }
306
+ return blockRecord;
307
+ },
308
+ { type: "BLOCK_RECORD" }
309
+ );
310
+ };
311
+ const ucsHandler = (tuples) => {
312
+ return tuples.reduce(
313
+ (ucs, tuple) => {
314
+ const type = tuple[0];
315
+ const value = tuple[1];
316
+ switch (type) {
317
+ case 2:
318
+ ucs.name = value;
319
+ break;
320
+ case 70:
321
+ ucs.flags = value;
322
+ break;
323
+ default:
324
+ }
325
+ return ucs;
326
+ },
327
+ { type: "UCS" }
328
+ );
329
+ };
330
+ const viewHandler = (tuples) => {
331
+ return tuples.reduce(
332
+ (view, tuple) => {
333
+ const type = tuple[0];
334
+ const value = tuple[1];
335
+ switch (type) {
336
+ case 2:
337
+ view.name = value;
338
+ break;
339
+ case 70:
340
+ view.flags = value;
341
+ break;
342
+ default:
343
+ }
344
+ return view;
345
+ },
346
+ { type: "VIEW" }
347
+ );
348
+ };
272
349
  const dimStyleHandler = (tuples) => {
273
350
  return tuples.reduce(
274
351
  (dimStyle, tuple) => {
275
352
  const type = tuple[0];
276
353
  const value = tuple[1];
277
354
  switch (type) {
355
+ // NOSONAR
278
356
  case 2:
279
357
  dimStyle.name = value;
280
358
  break;
@@ -525,30 +603,31 @@ function parseTables(tuples) {
525
603
  tableTuples.push(tuple);
526
604
  }
527
605
  }
528
- let stylesTuples = [];
529
- let layersTuples = [];
530
- let vPortTuples = [];
531
- let ltypeTuples = [];
532
- let dimStyleTuples = [];
606
+ const groupsByName = {};
533
607
  for (const group of tableGroups) {
534
- if (group[0]?.[1] === "STYLE") {
535
- stylesTuples = group;
536
- } else if (group[0]?.[1] === "LTYPE") {
537
- ltypeTuples = group;
538
- } else if (group[0]?.[1] === "LAYER") {
539
- layersTuples = group;
540
- } else if (group[0]?.[1] === "VPORT") {
541
- vPortTuples = group;
542
- } else if (group[0]?.[1] === "DIMSTYLE") {
543
- dimStyleTuples = group;
544
- }
608
+ const name = String(group[0]?.[1] ?? "");
609
+ if (!name) continue;
610
+ groupsByName[name] = group;
545
611
  }
612
+ const stylesTuples = groupsByName.STYLE ?? [];
613
+ const layersTuples = groupsByName.LAYER ?? [];
614
+ const vPortTuples = groupsByName.VPORT ?? [];
615
+ const ltypeTuples = groupsByName.LTYPE ?? [];
616
+ const dimStyleTuples = groupsByName.DIMSTYLE ?? [];
617
+ const appIdTuples = groupsByName.APPID ?? [];
618
+ const blockRecordTuples = groupsByName.BLOCK_RECORD ?? [];
619
+ const ucsTuples = groupsByName.UCS ?? [];
620
+ const viewTuples = groupsByName.VIEW ?? [];
546
621
  return {
547
622
  layers: tableHandler(layersTuples, "LAYER", layerHandler),
548
623
  styles: tableHandler(stylesTuples, "STYLE", styleHandler),
549
624
  vports: tableHandler(vPortTuples, "VPORT", vPortHandler),
550
625
  ltypes: tableHandler(ltypeTuples, "LTYPE", ltypeHandler),
551
- dimStyles: tableHandler(dimStyleTuples, "DIMSTYLE", dimStyleHandler)
626
+ dimStyles: tableHandler(dimStyleTuples, "DIMSTYLE", dimStyleHandler),
627
+ appids: tableHandler(appIdTuples, "APPID", appIdHandler),
628
+ blockRecords: tableHandler(blockRecordTuples, "BLOCK_RECORD", blockRecordHandler),
629
+ ucs: tableHandler(ucsTuples, "UCS", ucsHandler),
630
+ views: tableHandler(viewTuples, "VIEW", viewHandler)
552
631
  };
553
632
  }
554
633
  export {