@linkiez/dxf-renew 5.3.1

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 (447) hide show
  1. package/.eslintignore +17 -0
  2. package/.eslintrc.json +61 -0
  3. package/.gitattributes +4 -0
  4. package/.github/instructions/project-en_US.instructions.md +352 -0
  5. package/.github/workflows/release.yml +110 -0
  6. package/.husky/commit-msg +4 -0
  7. package/.husky/pre-commit +1 -0
  8. package/.prettierignore +1 -0
  9. package/.prettierrc.json +6 -0
  10. package/.releaserc.json +76 -0
  11. package/.travis.yml +6 -0
  12. package/.yarn/install-state.gz +0 -0
  13. package/.yarnrc.yml +1 -0
  14. package/CHANGELOG.md +134 -0
  15. package/CONTRIBUTING.md +271 -0
  16. package/LICENSE +21 -0
  17. package/PLAN.md +517 -0
  18. package/README.md +306 -0
  19. package/build.mjs +66 -0
  20. package/commitlint.config.js +25 -0
  21. package/dist/dxf.js +7234 -0
  22. package/docs/CODE_PATTERNS.md +182 -0
  23. package/docs/DIMENSION_SUMMARY.md +248 -0
  24. package/docs/DIMENSION_SUMMARY.pt-BR.md +248 -0
  25. package/docs/IMPLEMENTED-2D-ENTITIES.md +54 -0
  26. package/docs/IMPLEMENTED-2D-ENTITIES.pt-BR.md +54 -0
  27. package/docs/TEXT-MTEXT-DIMENSION-SUPPORT.md +241 -0
  28. package/docs/TEXT-MTEXT-DIMENSION-SUPPORT.pt-BR.md +169 -0
  29. package/docs/autocad_2012_pdf_dxf-reference_enu.md +8272 -0
  30. package/examples/dxf.html +36 -0
  31. package/examples/example.es5.js +30 -0
  32. package/examples/example.es6.js +30 -0
  33. package/examples/text-dimension-viewer.html +133 -0
  34. package/lib/Helper.cjs +89 -0
  35. package/lib/Helper.cjs.map +7 -0
  36. package/lib/Helper.js +59 -0
  37. package/lib/Helper.js.map +7 -0
  38. package/lib/applyTransforms.cjs +59 -0
  39. package/lib/applyTransforms.cjs.map +7 -0
  40. package/lib/applyTransforms.js +39 -0
  41. package/lib/applyTransforms.js.map +7 -0
  42. package/lib/cli.cjs +53 -0
  43. package/lib/cli.cjs.map +7 -0
  44. package/lib/cli.js +29 -0
  45. package/lib/cli.js.map +7 -0
  46. package/lib/config.cjs +30 -0
  47. package/lib/config.cjs.map +7 -0
  48. package/lib/config.js +10 -0
  49. package/lib/config.js.map +7 -0
  50. package/lib/constants.cjs +39 -0
  51. package/lib/constants.cjs.map +7 -0
  52. package/lib/constants.js +15 -0
  53. package/lib/constants.js.map +7 -0
  54. package/lib/denormalise.cjs +148 -0
  55. package/lib/denormalise.cjs.map +7 -0
  56. package/lib/denormalise.js +118 -0
  57. package/lib/denormalise.js.map +7 -0
  58. package/lib/dimensionToSVG.cjs +307 -0
  59. package/lib/dimensionToSVG.cjs.map +7 -0
  60. package/lib/dimensionToSVG.js +273 -0
  61. package/lib/dimensionToSVG.js.map +7 -0
  62. package/lib/entityToPolyline.cjs +248 -0
  63. package/lib/entityToPolyline.cjs.map +7 -0
  64. package/lib/entityToPolyline.js +213 -0
  65. package/lib/entityToPolyline.js.map +7 -0
  66. package/lib/getRGBForEntity.cjs +53 -0
  67. package/lib/getRGBForEntity.cjs.map +7 -0
  68. package/lib/getRGBForEntity.js +23 -0
  69. package/lib/getRGBForEntity.js.map +7 -0
  70. package/lib/groupEntitiesByLayer.cjs +34 -0
  71. package/lib/groupEntitiesByLayer.cjs.map +7 -0
  72. package/lib/groupEntitiesByLayer.js +14 -0
  73. package/lib/groupEntitiesByLayer.js.map +7 -0
  74. package/lib/handlers/blocks.cjs +93 -0
  75. package/lib/handlers/blocks.cjs.map +7 -0
  76. package/lib/handlers/blocks.js +63 -0
  77. package/lib/handlers/blocks.js.map +7 -0
  78. package/lib/handlers/entities.cjs +118 -0
  79. package/lib/handlers/entities.cjs.map +7 -0
  80. package/lib/handlers/entities.js +88 -0
  81. package/lib/handlers/entities.js.map +7 -0
  82. package/lib/handlers/entity/arc.cjs +82 -0
  83. package/lib/handlers/entity/arc.cjs.map +7 -0
  84. package/lib/handlers/entity/arc.js +47 -0
  85. package/lib/handlers/entity/arc.js.map +7 -0
  86. package/lib/handlers/entity/attdef.cjs +318 -0
  87. package/lib/handlers/entity/attdef.cjs.map +7 -0
  88. package/lib/handlers/entity/attdef.js +282 -0
  89. package/lib/handlers/entity/attdef.js.map +7 -0
  90. package/lib/handlers/entity/attrib.cjs +52 -0
  91. package/lib/handlers/entity/attrib.cjs.map +7 -0
  92. package/lib/handlers/entity/attrib.js +27 -0
  93. package/lib/handlers/entity/attrib.js.map +7 -0
  94. package/lib/handlers/entity/circle.cjs +73 -0
  95. package/lib/handlers/entity/circle.cjs.map +7 -0
  96. package/lib/handlers/entity/circle.js +38 -0
  97. package/lib/handlers/entity/circle.js.map +7 -0
  98. package/lib/handlers/entity/common.cjs +83 -0
  99. package/lib/handlers/entity/common.cjs.map +7 -0
  100. package/lib/handlers/entity/common.js +63 -0
  101. package/lib/handlers/entity/common.js.map +7 -0
  102. package/lib/handlers/entity/dimension.cjs +203 -0
  103. package/lib/handlers/entity/dimension.cjs.map +7 -0
  104. package/lib/handlers/entity/dimension.js +168 -0
  105. package/lib/handlers/entity/dimension.js.map +7 -0
  106. package/lib/handlers/entity/ellipse.cjs +88 -0
  107. package/lib/handlers/entity/ellipse.cjs.map +7 -0
  108. package/lib/handlers/entity/ellipse.js +53 -0
  109. package/lib/handlers/entity/ellipse.js.map +7 -0
  110. package/lib/handlers/entity/hatch.cjs +470 -0
  111. package/lib/handlers/entity/hatch.cjs.map +7 -0
  112. package/lib/handlers/entity/hatch.js +435 -0
  113. package/lib/handlers/entity/hatch.js.map +7 -0
  114. package/lib/handlers/entity/insert.cjs +106 -0
  115. package/lib/handlers/entity/insert.cjs.map +7 -0
  116. package/lib/handlers/entity/insert.js +71 -0
  117. package/lib/handlers/entity/insert.js.map +7 -0
  118. package/lib/handlers/entity/line.cjs +84 -0
  119. package/lib/handlers/entity/line.cjs.map +7 -0
  120. package/lib/handlers/entity/line.js +49 -0
  121. package/lib/handlers/entity/line.js.map +7 -0
  122. package/lib/handlers/entity/lwpolyline.cjs +82 -0
  123. package/lib/handlers/entity/lwpolyline.cjs.map +7 -0
  124. package/lib/handlers/entity/lwpolyline.js +47 -0
  125. package/lib/handlers/entity/lwpolyline.js.map +7 -0
  126. package/lib/handlers/entity/mtext.cjs +121 -0
  127. package/lib/handlers/entity/mtext.cjs.map +7 -0
  128. package/lib/handlers/entity/mtext.js +85 -0
  129. package/lib/handlers/entity/mtext.js.map +7 -0
  130. package/lib/handlers/entity/ole2Frame.cjs +98 -0
  131. package/lib/handlers/entity/ole2Frame.cjs.map +7 -0
  132. package/lib/handlers/entity/ole2Frame.js +63 -0
  133. package/lib/handlers/entity/ole2Frame.js.map +7 -0
  134. package/lib/handlers/entity/point.cjs +73 -0
  135. package/lib/handlers/entity/point.cjs.map +7 -0
  136. package/lib/handlers/entity/point.js +38 -0
  137. package/lib/handlers/entity/point.js.map +7 -0
  138. package/lib/handlers/entity/polyline.cjs +70 -0
  139. package/lib/handlers/entity/polyline.cjs.map +7 -0
  140. package/lib/handlers/entity/polyline.js +35 -0
  141. package/lib/handlers/entity/polyline.js.map +7 -0
  142. package/lib/handlers/entity/solid.cjs +101 -0
  143. package/lib/handlers/entity/solid.cjs.map +7 -0
  144. package/lib/handlers/entity/solid.js +66 -0
  145. package/lib/handlers/entity/solid.js.map +7 -0
  146. package/lib/handlers/entity/spline.cjs +109 -0
  147. package/lib/handlers/entity/spline.cjs.map +7 -0
  148. package/lib/handlers/entity/spline.js +74 -0
  149. package/lib/handlers/entity/spline.js.map +7 -0
  150. package/lib/handlers/entity/text.cjs +85 -0
  151. package/lib/handlers/entity/text.cjs.map +7 -0
  152. package/lib/handlers/entity/text.js +49 -0
  153. package/lib/handlers/entity/text.js.map +7 -0
  154. package/lib/handlers/entity/threeDFace.cjs +98 -0
  155. package/lib/handlers/entity/threeDFace.cjs.map +7 -0
  156. package/lib/handlers/entity/threeDFace.js +63 -0
  157. package/lib/handlers/entity/threeDFace.js.map +7 -0
  158. package/lib/handlers/entity/vertex.cjs +78 -0
  159. package/lib/handlers/entity/vertex.cjs.map +7 -0
  160. package/lib/handlers/entity/vertex.js +53 -0
  161. package/lib/handlers/entity/vertex.js.map +7 -0
  162. package/lib/handlers/entity/viewport.cjs +153 -0
  163. package/lib/handlers/entity/viewport.cjs.map +7 -0
  164. package/lib/handlers/entity/viewport.js +118 -0
  165. package/lib/handlers/entity/viewport.js.map +7 -0
  166. package/lib/handlers/header.cjs +92 -0
  167. package/lib/handlers/header.cjs.map +7 -0
  168. package/lib/handlers/header.js +72 -0
  169. package/lib/handlers/header.js.map +7 -0
  170. package/lib/handlers/objects.cjs +170 -0
  171. package/lib/handlers/objects.cjs.map +7 -0
  172. package/lib/handlers/objects.js +150 -0
  173. package/lib/handlers/objects.js.map +7 -0
  174. package/lib/handlers/tables.cjs +587 -0
  175. package/lib/handlers/tables.cjs.map +7 -0
  176. package/lib/handlers/tables.js +557 -0
  177. package/lib/handlers/tables.js.map +7 -0
  178. package/lib/index.cjs +60 -0
  179. package/lib/index.cjs.map +7 -0
  180. package/lib/index.js +19 -0
  181. package/lib/index.js.map +7 -0
  182. package/lib/parseString.cjs +118 -0
  183. package/lib/parseString.cjs.map +7 -0
  184. package/lib/parseString.js +88 -0
  185. package/lib/parseString.js.map +7 -0
  186. package/lib/toPolylines.cjs +69 -0
  187. package/lib/toPolylines.cjs.map +7 -0
  188. package/lib/toPolylines.js +39 -0
  189. package/lib/toPolylines.js.map +7 -0
  190. package/lib/toSVG.cjs +395 -0
  191. package/lib/toSVG.cjs.map +7 -0
  192. package/lib/toSVG.js +361 -0
  193. package/lib/toSVG.js.map +7 -0
  194. package/lib/types/arc-entity.cjs +17 -0
  195. package/lib/types/arc-entity.cjs.map +7 -0
  196. package/lib/types/arc-entity.js +1 -0
  197. package/lib/types/arc-entity.js.map +7 -0
  198. package/lib/types/base-entity.cjs +17 -0
  199. package/lib/types/base-entity.cjs.map +7 -0
  200. package/lib/types/base-entity.js +1 -0
  201. package/lib/types/base-entity.js.map +7 -0
  202. package/lib/types/circle-entity.cjs +17 -0
  203. package/lib/types/circle-entity.cjs.map +7 -0
  204. package/lib/types/circle-entity.js +1 -0
  205. package/lib/types/circle-entity.js.map +7 -0
  206. package/lib/types/common.cjs +17 -0
  207. package/lib/types/common.cjs.map +7 -0
  208. package/lib/types/common.js +1 -0
  209. package/lib/types/common.js.map +7 -0
  210. package/lib/types/dimension-entity.cjs +17 -0
  211. package/lib/types/dimension-entity.cjs.map +7 -0
  212. package/lib/types/dimension-entity.js +1 -0
  213. package/lib/types/dimension-entity.js.map +7 -0
  214. package/lib/types/dxf.cjs +17 -0
  215. package/lib/types/dxf.cjs.map +7 -0
  216. package/lib/types/dxf.js +1 -0
  217. package/lib/types/dxf.js.map +7 -0
  218. package/lib/types/ellipse-entity.cjs +17 -0
  219. package/lib/types/ellipse-entity.cjs.map +7 -0
  220. package/lib/types/ellipse-entity.js +1 -0
  221. package/lib/types/ellipse-entity.js.map +7 -0
  222. package/lib/types/entity.cjs +17 -0
  223. package/lib/types/entity.cjs.map +7 -0
  224. package/lib/types/entity.js +1 -0
  225. package/lib/types/entity.js.map +7 -0
  226. package/lib/types/handler-internal.cjs +17 -0
  227. package/lib/types/handler-internal.cjs.map +7 -0
  228. package/lib/types/handler-internal.js +1 -0
  229. package/lib/types/handler-internal.js.map +7 -0
  230. package/lib/types/handler.cjs +17 -0
  231. package/lib/types/handler.cjs.map +7 -0
  232. package/lib/types/handler.js +1 -0
  233. package/lib/types/handler.js.map +7 -0
  234. package/lib/types/hatch-entity.cjs +17 -0
  235. package/lib/types/hatch-entity.cjs.map +7 -0
  236. package/lib/types/hatch-entity.js +1 -0
  237. package/lib/types/hatch-entity.js.map +7 -0
  238. package/lib/types/helper.cjs +17 -0
  239. package/lib/types/helper.cjs.map +7 -0
  240. package/lib/types/helper.js +1 -0
  241. package/lib/types/helper.js.map +7 -0
  242. package/lib/types/index.cjs +77 -0
  243. package/lib/types/index.cjs.map +7 -0
  244. package/lib/types/index.js +29 -0
  245. package/lib/types/index.js.map +7 -0
  246. package/lib/types/insert-entity.cjs +17 -0
  247. package/lib/types/insert-entity.cjs.map +7 -0
  248. package/lib/types/insert-entity.js +1 -0
  249. package/lib/types/insert-entity.js.map +7 -0
  250. package/lib/types/layer-groups.cjs +17 -0
  251. package/lib/types/layer-groups.cjs.map +7 -0
  252. package/lib/types/layer-groups.js +1 -0
  253. package/lib/types/layer-groups.js.map +7 -0
  254. package/lib/types/line-entity.cjs +17 -0
  255. package/lib/types/line-entity.cjs.map +7 -0
  256. package/lib/types/line-entity.js +1 -0
  257. package/lib/types/line-entity.js.map +7 -0
  258. package/lib/types/mtext-entity.cjs +17 -0
  259. package/lib/types/mtext-entity.cjs.map +7 -0
  260. package/lib/types/mtext-entity.js +1 -0
  261. package/lib/types/mtext-entity.js.map +7 -0
  262. package/lib/types/ole2frame-entity.cjs +17 -0
  263. package/lib/types/ole2frame-entity.cjs.map +7 -0
  264. package/lib/types/ole2frame-entity.js +1 -0
  265. package/lib/types/ole2frame-entity.js.map +7 -0
  266. package/lib/types/options.cjs +17 -0
  267. package/lib/types/options.cjs.map +7 -0
  268. package/lib/types/options.js +1 -0
  269. package/lib/types/options.js.map +7 -0
  270. package/lib/types/point-entity.cjs +17 -0
  271. package/lib/types/point-entity.cjs.map +7 -0
  272. package/lib/types/point-entity.js +1 -0
  273. package/lib/types/point-entity.js.map +7 -0
  274. package/lib/types/polyline-entity.cjs +17 -0
  275. package/lib/types/polyline-entity.cjs.map +7 -0
  276. package/lib/types/polyline-entity.js +1 -0
  277. package/lib/types/polyline-entity.js.map +7 -0
  278. package/lib/types/polylines.cjs +17 -0
  279. package/lib/types/polylines.cjs.map +7 -0
  280. package/lib/types/polylines.js +1 -0
  281. package/lib/types/polylines.js.map +7 -0
  282. package/lib/types/solid-entity.cjs +17 -0
  283. package/lib/types/solid-entity.cjs.map +7 -0
  284. package/lib/types/solid-entity.js +1 -0
  285. package/lib/types/solid-entity.js.map +7 -0
  286. package/lib/types/spline-entity.cjs +17 -0
  287. package/lib/types/spline-entity.cjs.map +7 -0
  288. package/lib/types/spline-entity.js +1 -0
  289. package/lib/types/spline-entity.js.map +7 -0
  290. package/lib/types/svg.cjs +17 -0
  291. package/lib/types/svg.cjs.map +7 -0
  292. package/lib/types/svg.js +1 -0
  293. package/lib/types/svg.js.map +7 -0
  294. package/lib/types/tables.cjs +17 -0
  295. package/lib/types/tables.cjs.map +7 -0
  296. package/lib/types/tables.js +1 -0
  297. package/lib/types/tables.js.map +7 -0
  298. package/lib/types/text-entity.cjs +17 -0
  299. package/lib/types/text-entity.cjs.map +7 -0
  300. package/lib/types/text-entity.js +1 -0
  301. package/lib/types/text-entity.js.map +7 -0
  302. package/lib/types/util-types.cjs +17 -0
  303. package/lib/types/util-types.cjs.map +7 -0
  304. package/lib/types/util-types.js +1 -0
  305. package/lib/types/util-types.js.map +7 -0
  306. package/lib/types/vecks.d.cjs +2 -0
  307. package/lib/types/vecks.d.cjs.map +7 -0
  308. package/lib/types/vecks.d.js +1 -0
  309. package/lib/types/vecks.d.js.map +7 -0
  310. package/lib/types/viewport-entity.cjs +17 -0
  311. package/lib/types/viewport-entity.cjs.map +7 -0
  312. package/lib/types/viewport-entity.js +1 -0
  313. package/lib/types/viewport-entity.js.map +7 -0
  314. package/lib/types.cjs +23 -0
  315. package/lib/types.cjs.map +7 -0
  316. package/lib/types.js +2 -0
  317. package/lib/types.js.map +7 -0
  318. package/lib/util/bSpline.cjs +95 -0
  319. package/lib/util/bSpline.cjs.map +7 -0
  320. package/lib/util/bSpline.js +65 -0
  321. package/lib/util/bSpline.js.map +7 -0
  322. package/lib/util/colors.cjs +283 -0
  323. package/lib/util/colors.cjs.map +7 -0
  324. package/lib/util/colors.js +263 -0
  325. package/lib/util/colors.js.map +7 -0
  326. package/lib/util/createArcForLWPolyline.cjs +84 -0
  327. package/lib/util/createArcForLWPolyline.cjs.map +7 -0
  328. package/lib/util/createArcForLWPolyline.js +64 -0
  329. package/lib/util/createArcForLWPolyline.js.map +7 -0
  330. package/lib/util/dxfColorToRGB.cjs +115 -0
  331. package/lib/util/dxfColorToRGB.cjs.map +7 -0
  332. package/lib/util/dxfColorToRGB.js +90 -0
  333. package/lib/util/dxfColorToRGB.js.map +7 -0
  334. package/lib/util/insertKnot.cjs +77 -0
  335. package/lib/util/insertKnot.cjs.map +7 -0
  336. package/lib/util/insertKnot.js +57 -0
  337. package/lib/util/insertKnot.js.map +7 -0
  338. package/lib/util/logger.cjs +53 -0
  339. package/lib/util/logger.cjs.map +7 -0
  340. package/lib/util/logger.js +23 -0
  341. package/lib/util/logger.js.map +7 -0
  342. package/lib/util/rgbToColorAttribute.cjs +32 -0
  343. package/lib/util/rgbToColorAttribute.cjs.map +7 -0
  344. package/lib/util/rgbToColorAttribute.js +12 -0
  345. package/lib/util/rgbToColorAttribute.js.map +7 -0
  346. package/lib/util/rotate.cjs +30 -0
  347. package/lib/util/rotate.cjs.map +7 -0
  348. package/lib/util/rotate.js +10 -0
  349. package/lib/util/rotate.js.map +7 -0
  350. package/lib/util/round10.cjs +38 -0
  351. package/lib/util/round10.cjs.map +7 -0
  352. package/lib/util/round10.js +18 -0
  353. package/lib/util/round10.js.map +7 -0
  354. package/lib/util/toPiecewiseBezier.cjs +90 -0
  355. package/lib/util/toPiecewiseBezier.cjs.map +7 -0
  356. package/lib/util/toPiecewiseBezier.js +54 -0
  357. package/lib/util/toPiecewiseBezier.js.map +7 -0
  358. package/lib/util/transformBoundingBoxAndElement.cjs +80 -0
  359. package/lib/util/transformBoundingBoxAndElement.cjs.map +7 -0
  360. package/lib/util/transformBoundingBoxAndElement.js +60 -0
  361. package/lib/util/transformBoundingBoxAndElement.js.map +7 -0
  362. package/package.json +127 -0
  363. package/src/Helper.ts +71 -0
  364. package/src/applyTransforms.ts +54 -0
  365. package/src/cli.ts +41 -0
  366. package/src/config.ts +10 -0
  367. package/src/constants.ts +14 -0
  368. package/src/denormalise.ts +153 -0
  369. package/src/dimensionToSVG.ts +427 -0
  370. package/src/entityToPolyline.ts +338 -0
  371. package/src/getRGBForEntity.ts +28 -0
  372. package/src/groupEntitiesByLayer.ts +14 -0
  373. package/src/handlers/blocks.ts +65 -0
  374. package/src/handlers/entities.ts +111 -0
  375. package/src/handlers/entity/arc.ts +61 -0
  376. package/src/handlers/entity/attdef.ts +284 -0
  377. package/src/handlers/entity/attrib.ts +29 -0
  378. package/src/handlers/entity/circle.ts +47 -0
  379. package/src/handlers/entity/common.ts +79 -0
  380. package/src/handlers/entity/dimension.ts +217 -0
  381. package/src/handlers/entity/ellipse.ts +55 -0
  382. package/src/handlers/entity/hatch.ts +471 -0
  383. package/src/handlers/entity/insert.ts +73 -0
  384. package/src/handlers/entity/line.ts +56 -0
  385. package/src/handlers/entity/lwpolyline.ts +54 -0
  386. package/src/handlers/entity/mtext.ts +150 -0
  387. package/src/handlers/entity/ole2Frame.ts +64 -0
  388. package/src/handlers/entity/point.ts +47 -0
  389. package/src/handlers/entity/polyline.ts +49 -0
  390. package/src/handlers/entity/solid.ts +73 -0
  391. package/src/handlers/entity/spline.ts +103 -0
  392. package/src/handlers/entity/text.ts +83 -0
  393. package/src/handlers/entity/threeDFace.ts +69 -0
  394. package/src/handlers/entity/vertex.ts +55 -0
  395. package/src/handlers/entity/viewport.ts +119 -0
  396. package/src/handlers/header.ts +73 -0
  397. package/src/handlers/objects.ts +152 -0
  398. package/src/handlers/tables.ts +581 -0
  399. package/src/index.ts +19 -0
  400. package/src/parseString.ts +97 -0
  401. package/src/toPolylines.ts +47 -0
  402. package/src/toSVG.ts +518 -0
  403. package/src/types/README.md +91 -0
  404. package/src/types/arc-entity.ts +10 -0
  405. package/src/types/base-entity.ts +25 -0
  406. package/src/types/circle-entity.ts +8 -0
  407. package/src/types/common.ts +37 -0
  408. package/src/types/dimension-entity.ts +23 -0
  409. package/src/types/dxf.ts +64 -0
  410. package/src/types/ellipse-entity.ts +13 -0
  411. package/src/types/entity.ts +32 -0
  412. package/src/types/handler-internal.ts +51 -0
  413. package/src/types/handler.ts +10 -0
  414. package/src/types/hatch-entity.ts +127 -0
  415. package/src/types/helper.ts +12 -0
  416. package/src/types/index.ts +53 -0
  417. package/src/types/insert-entity.ts +19 -0
  418. package/src/types/layer-groups.ts +8 -0
  419. package/src/types/line-entity.ts +10 -0
  420. package/src/types/mtext-entity.ts +35 -0
  421. package/src/types/ole2frame-entity.ts +35 -0
  422. package/src/types/options.ts +17 -0
  423. package/src/types/point-entity.ts +7 -0
  424. package/src/types/polyline-entity.ts +20 -0
  425. package/src/types/polylines.ts +22 -0
  426. package/src/types/solid-entity.ts +9 -0
  427. package/src/types/spline-entity.ts +12 -0
  428. package/src/types/svg.ts +31 -0
  429. package/src/types/tables.ts +414 -0
  430. package/src/types/text-entity.ts +23 -0
  431. package/src/types/util-types.ts +27 -0
  432. package/src/types/vecks.d.ts +29 -0
  433. package/src/types/viewport-entity.ts +81 -0
  434. package/src/types.ts +5 -0
  435. package/src/util/bSpline.ts +97 -0
  436. package/src/util/colors.ts +266 -0
  437. package/src/util/createArcForLWPolyline.ts +93 -0
  438. package/src/util/diagram.png +0 -0
  439. package/src/util/dxfColorToRGB.ts +106 -0
  440. package/src/util/insertKnot.ts +69 -0
  441. package/src/util/logger.ts +23 -0
  442. package/src/util/rgbToColorAttribute.ts +14 -0
  443. package/src/util/rotate.ts +14 -0
  444. package/src/util/round10.ts +24 -0
  445. package/src/util/toPiecewiseBezier.ts +70 -0
  446. package/src/util/transformBoundingBoxAndElement.ts +74 -0
  447. package/tsconfig.json +34 -0
@@ -0,0 +1,150 @@
1
+ import type { DXFTuple } from '../../types/dxf'
2
+
3
+ import common from './common'
4
+
5
+ export const TYPE = 'MTEXT'
6
+
7
+
8
+ interface SimpleCodes {
9
+ [key: number]: string
10
+ }
11
+
12
+ interface MTextEntity {
13
+ type: typeof TYPE
14
+ string: string
15
+ x?: number
16
+ y?: number
17
+ z?: number
18
+ nominalTextHeight?: number
19
+ refRectangleWidth?: number
20
+ attachmentPoint?: number
21
+ drawingDirection?: number
22
+ styleName?: string
23
+ xAxisX?: number
24
+ xAxisY?: number
25
+ xAxisZ?: number
26
+ horizontalWidth?: number
27
+ verticalHeight?: number
28
+ lineSpacingStyle?: number
29
+ lineSpacingFactor?: number
30
+ backgroundFill?: number
31
+ bgColorRGB0?: number
32
+ bgColorRGB1?: number
33
+ bgColorRGB2?: number
34
+ bgColorRGB3?: number
35
+ bgColorRGB4?: number
36
+ bgColorRGB5?: number
37
+ bgColorRGB6?: number
38
+ bgColorRGB7?: number
39
+ bgColorRGB8?: number
40
+ bgColorRGB9?: number
41
+ bgColorName0?: number
42
+ bgColorName1?: number
43
+ bgColorName2?: number
44
+ bgColorName3?: number
45
+ bgColorName4?: number
46
+ bgColorName5?: number
47
+ bgColorName6?: number
48
+ bgColorName7?: number
49
+ bgColorName8?: number
50
+ bgColorName9?: number
51
+ fillBoxStyle?: number
52
+ bgFillColor?: number
53
+ bgFillTransparency?: number
54
+ columnType?: number
55
+ columnCount?: number
56
+ columnFlowReversed?: number
57
+ columnAutoheight?: number
58
+ columnWidth?: number
59
+ columnGutter?: number
60
+ columnHeights?: number
61
+ [key: string]: unknown
62
+ }
63
+
64
+ const simpleCodes: SimpleCodes = {
65
+ 10: 'x',
66
+ 20: 'y',
67
+ 30: 'z',
68
+ 40: 'nominalTextHeight',
69
+ 41: 'refRectangleWidth',
70
+ 71: 'attachmentPoint',
71
+ 72: 'drawingDirection',
72
+ 7: 'styleName',
73
+ 11: 'xAxisX',
74
+ 21: 'xAxisY',
75
+ 31: 'xAxisZ',
76
+ 42: 'horizontalWidth',
77
+ 43: 'verticalHeight',
78
+ 73: 'lineSpacingStyle',
79
+ 44: 'lineSpacingFactor',
80
+ 90: 'backgroundFill',
81
+ 420: 'bgColorRGB0',
82
+ 421: 'bgColorRGB1',
83
+ 422: 'bgColorRGB2',
84
+ 423: 'bgColorRGB3',
85
+ 424: 'bgColorRGB4',
86
+ 425: 'bgColorRGB5',
87
+ 426: 'bgColorRGB6',
88
+ 427: 'bgColorRGB7',
89
+ 428: 'bgColorRGB8',
90
+ 429: 'bgColorRGB9',
91
+ 430: 'bgColorName0',
92
+ 431: 'bgColorName1',
93
+ 432: 'bgColorName2',
94
+ 433: 'bgColorName3',
95
+ 434: 'bgColorName4',
96
+ 435: 'bgColorName5',
97
+ 436: 'bgColorName6',
98
+ 437: 'bgColorName7',
99
+ 438: 'bgColorName8',
100
+ 439: 'bgColorName9',
101
+ 45: 'fillBoxStyle',
102
+ 63: 'bgFillColor',
103
+ 441: 'bgFillTransparency',
104
+ 75: 'columnType',
105
+ 76: 'columnCount',
106
+ 78: 'columnFlowReversed',
107
+ 79: 'columnAutoheight',
108
+ 48: 'columnWidth',
109
+ 49: 'columnGutter',
110
+ 50: 'columnHeights',
111
+ }
112
+
113
+ export const process = (tuples: DXFTuple[]): MTextEntity => {
114
+ return tuples.reduce(
115
+ (entity, tuple) => {
116
+ const type = tuple[0]
117
+ const value = tuple[1]
118
+
119
+ assign(entity, type, value)
120
+
121
+ return entity
122
+ },
123
+ {
124
+ type: TYPE,
125
+ string: '',
126
+ } as MTextEntity,
127
+ )
128
+ }
129
+
130
+ export const assign = (
131
+ entity: MTextEntity,
132
+ type: number,
133
+ value: string | number
134
+ ): MTextEntity => {
135
+ if (type in simpleCodes) {
136
+ entity[simpleCodes[type]] = value
137
+ } else if (type === 1 || type === 3) {
138
+ entity.string += value as string
139
+ } else if (type === 50) {
140
+ // Rotation angle in radians
141
+ entity.xAxisX = Math.cos(value as number)
142
+ entity.xAxisY = Math.sin(value as number)
143
+ } else {
144
+ Object.assign(entity, common(type, value))
145
+ }
146
+
147
+ return entity
148
+ }
149
+
150
+ export default { TYPE, process, assign }
@@ -0,0 +1,64 @@
1
+ import type { DXFTuple, Ole2FrameEntity } from '../../types'
2
+
3
+ import common from './common'
4
+
5
+ export const TYPE = 'OLE2FRAME'
6
+
7
+ export const process = (tuples: DXFTuple[]): Ole2FrameEntity => {
8
+ return tuples.reduce(
9
+ (entity, tuple) => {
10
+ const type = tuple[0]
11
+ const value = tuple[1]
12
+ switch (type) {
13
+ case 70:
14
+ entity.version = value
15
+ break
16
+ case 3:
17
+ entity.name = value
18
+ break
19
+ case 10:
20
+ entity.upperLeftX = value
21
+ break
22
+ case 20:
23
+ entity.upperLeftY = value
24
+ break
25
+ case 30:
26
+ entity.upperLeftZ = value
27
+ break
28
+ case 11:
29
+ entity.lowerRightX = value
30
+ break
31
+ case 21:
32
+ entity.lowerRightY = value
33
+ break
34
+ case 31:
35
+ entity.lowerRightZ = value
36
+ break
37
+ case 71:
38
+ // 1 = Link; 2 = Embedded; 3 = Static
39
+ entity.objectType = value
40
+ break
41
+ case 72:
42
+ // 0 = Object resides in model space, 1 = Object resides in paper space
43
+ entity.tile = value
44
+ break
45
+ case 90:
46
+ entity.length = value
47
+ break
48
+ case 310:
49
+ entity.data += value
50
+ break
51
+ default:
52
+ Object.assign(entity, common(type, value))
53
+ break
54
+ }
55
+ return entity
56
+ },
57
+ {
58
+ type: TYPE,
59
+ data: '',
60
+ } as Ole2FrameEntity,
61
+ )
62
+ }
63
+
64
+ export default { TYPE, process }
@@ -0,0 +1,47 @@
1
+ import type { DXFTuple } from '../../types/dxf'
2
+
3
+ import common from './common'
4
+
5
+ export const TYPE = 'POINT'
6
+
7
+
8
+ interface PointEntity {
9
+ type: typeof TYPE
10
+ x?: number
11
+ y?: number
12
+ z?: number
13
+ thickness?: number
14
+ [key: string]: unknown
15
+ }
16
+
17
+ export const process = (tuples: DXFTuple[]): PointEntity => {
18
+ return tuples.reduce(
19
+ (entity, tuple) => {
20
+ const type = tuple[0]
21
+ const value = tuple[1]
22
+ switch (type) {
23
+ case 10:
24
+ entity.x = value as number
25
+ break
26
+ case 20:
27
+ entity.y = value as number
28
+ break
29
+ case 30:
30
+ entity.z = value as number
31
+ break
32
+ case 39:
33
+ entity.thickness = value as number
34
+ break
35
+ default:
36
+ Object.assign(entity, common(type, value))
37
+ break
38
+ }
39
+ return entity
40
+ },
41
+ {
42
+ type: TYPE,
43
+ } as PointEntity,
44
+ )
45
+ }
46
+
47
+ export default { TYPE, process }
@@ -0,0 +1,49 @@
1
+ import type { DXFTuple } from '../../types/dxf'
2
+
3
+ import common from './common'
4
+
5
+ export const TYPE = 'POLYLINE'
6
+
7
+
8
+ interface Vertex {
9
+ [key: string]: unknown
10
+ }
11
+
12
+ interface PolylineEntity {
13
+ type: typeof TYPE
14
+ vertices: Vertex[]
15
+ closed?: boolean
16
+ polygonMesh?: boolean
17
+ polyfaceMesh?: boolean
18
+ thickness?: number
19
+ [key: string]: unknown
20
+ }
21
+
22
+ export const process = (tuples: DXFTuple[]): PolylineEntity => {
23
+ return tuples.reduce(
24
+ (entity, tuple) => {
25
+ const type = tuple[0]
26
+ const value = tuple[1]
27
+ switch (type) {
28
+ case 70:
29
+ entity.closed = ((value as number) & 1) === 1
30
+ entity.polygonMesh = ((value as number) & 16) === 16
31
+ entity.polyfaceMesh = ((value as number) & 64) === 64
32
+ break
33
+ case 39:
34
+ entity.thickness = value as number
35
+ break
36
+ default:
37
+ Object.assign(entity, common(type, value))
38
+ break
39
+ }
40
+ return entity
41
+ },
42
+ {
43
+ type: TYPE,
44
+ vertices: [],
45
+ } as PolylineEntity,
46
+ )
47
+ }
48
+
49
+ export default { TYPE, process }
@@ -0,0 +1,73 @@
1
+ import type { DXFTuple } from '../../types/dxf'
2
+
3
+ import type { Point3D } from '../../types'
4
+ import common from './common'
5
+
6
+
7
+ interface SolidEntity {
8
+ type: string
9
+ corners: Point3D[]
10
+ thickness?: number
11
+ }
12
+
13
+ export const TYPE = 'SOLID'
14
+
15
+ export const process = (tuples: DXFTuple[]): SolidEntity => {
16
+ return tuples.reduce(
17
+ (entity, tuple) => {
18
+ const type = tuple[0]
19
+ const value = tuple[1]
20
+ switch (type) {
21
+ case 10:
22
+ entity.corners[0].x = value as number
23
+ break
24
+ case 20:
25
+ entity.corners[0].y = value as number
26
+ break
27
+ case 30:
28
+ entity.corners[0].z = value as number
29
+ break
30
+ case 11:
31
+ entity.corners[1].x = value as number
32
+ break
33
+ case 21:
34
+ entity.corners[1].y = value as number
35
+ break
36
+ case 31:
37
+ entity.corners[1].z = value as number
38
+ break
39
+ case 12:
40
+ entity.corners[2].x = value as number
41
+ break
42
+ case 22:
43
+ entity.corners[2].y = value as number
44
+ break
45
+ case 32:
46
+ entity.corners[2].z = value as number
47
+ break
48
+ case 13:
49
+ entity.corners[3].x = value as number
50
+ break
51
+ case 23:
52
+ entity.corners[3].y = value as number
53
+ break
54
+ case 33:
55
+ entity.corners[3].z = value as number
56
+ break
57
+ case 39:
58
+ entity.thickness = value as number
59
+ break
60
+ default:
61
+ Object.assign(entity, common(type, value))
62
+ break
63
+ }
64
+ return entity
65
+ },
66
+ {
67
+ type: TYPE,
68
+ corners: [{} as Point3D, {} as Point3D, {} as Point3D, {} as Point3D],
69
+ } as SolidEntity,
70
+ )
71
+ }
72
+
73
+ export default { TYPE, process }
@@ -0,0 +1,103 @@
1
+ import type { DXFTuple } from '../../types/dxf'
2
+
3
+ import common from './common'
4
+
5
+ export const TYPE = 'SPLINE'
6
+
7
+
8
+ interface ControlPoint {
9
+ x: number
10
+ y: number
11
+ z?: number
12
+ }
13
+
14
+ interface SplineEntity {
15
+ type: typeof TYPE
16
+ controlPoints: ControlPoint[]
17
+ knots: number[]
18
+ weights?: number[]
19
+ knotTolerance?: number
20
+ controlPointTolerance?: number
21
+ fitTolerance?: number
22
+ flag?: number
23
+ closed?: boolean
24
+ degree?: number
25
+ numberOfKnots?: number
26
+ numberOfControlPoints?: number
27
+ numberOfFitPoints?: number
28
+ [key: string]: unknown
29
+ }
30
+
31
+ export const process = (tuples: DXFTuple[]): SplineEntity => {
32
+ let controlPoint: ControlPoint
33
+ return tuples.reduce(
34
+ (entity, tuple) => {
35
+ const type = tuple[0]
36
+ const value = tuple[1]
37
+ switch (type) {
38
+ case 10:
39
+ controlPoint = {
40
+ x: value as number,
41
+ y: 0,
42
+ }
43
+ entity.controlPoints.push(controlPoint)
44
+ break
45
+ case 20:
46
+ controlPoint.y = value as number
47
+ break
48
+ case 30:
49
+ controlPoint.z = value as number
50
+ break
51
+ case 40:
52
+ entity.knots.push(value as number)
53
+ break
54
+ case 41:
55
+ // Only create weights if needed
56
+ entity.weights ??= []
57
+ entity.weights.push(value as number)
58
+ break
59
+ case 42:
60
+ entity.knotTolerance = value as number
61
+ break
62
+ case 43:
63
+ entity.controlPointTolerance = value as number
64
+ break
65
+ case 44:
66
+ entity.fitTolerance = value as number
67
+ break
68
+ case 70: // Spline flag (bit coded):
69
+ // 1 = Closed spline
70
+ // 2 = Periodic spline
71
+ // 4 = Rational spline
72
+ // 8 = Planar
73
+ // 16 = Linear (planar bit is also set)
74
+ entity.flag = value as number
75
+ entity.closed = ((value as number) & 1) === 1
76
+ break
77
+ case 71:
78
+ entity.degree = value as number
79
+ break
80
+ case 72:
81
+ entity.numberOfKnots = value as number
82
+ break
83
+ case 73:
84
+ entity.numberOfControlPoints = value as number
85
+ break
86
+ case 74:
87
+ entity.numberOfFitPoints = value as number
88
+ break
89
+ default:
90
+ Object.assign(entity, common(type, value))
91
+ break
92
+ }
93
+ return entity
94
+ },
95
+ {
96
+ type: TYPE,
97
+ controlPoints: [],
98
+ knots: [],
99
+ } as SplineEntity,
100
+ )
101
+ }
102
+
103
+ export default { TYPE, process }
@@ -0,0 +1,83 @@
1
+ import type { DXFTuple } from '../../types/dxf'
2
+
3
+ import common from './common'
4
+
5
+ export const TYPE = 'TEXT'
6
+
7
+
8
+ interface SimpleCodes {
9
+ [key: number]: string
10
+ }
11
+
12
+ interface TextEntity {
13
+ type: typeof TYPE
14
+ string: string
15
+ x?: number
16
+ y?: number
17
+ z?: number
18
+ x2?: number
19
+ y2?: number
20
+ z2?: number
21
+ thickness?: number
22
+ textHeight?: number
23
+ relScaleX?: number
24
+ rotation?: number
25
+ obliqueAngle?: number
26
+ styleName?: string
27
+ mirror?: number
28
+ hAlign?: number
29
+ vAlign?: number
30
+ [key: string]: unknown
31
+ }
32
+
33
+ const simpleCodes: SimpleCodes = {
34
+ 1: 'string',
35
+ 10: 'x',
36
+ 20: 'y',
37
+ 30: 'z',
38
+ 11: 'x2',
39
+ 21: 'y2',
40
+ 31: 'z2',
41
+ 39: 'thickness',
42
+ 40: 'textHeight',
43
+ 41: 'relScaleX',
44
+ 50: 'rotation',
45
+ 51: 'obliqueAngle',
46
+ 7: 'styleName',
47
+ 71: 'mirror',
48
+ 72: 'hAlign',
49
+ 73: 'vAlign',
50
+ }
51
+
52
+ // const EXCEPTION_STRINGS = ['\\A1;', '%%u']
53
+
54
+ export const process = (tuples: DXFTuple[]): TextEntity => {
55
+ return tuples.reduce(
56
+ (entity, tuple) => {
57
+ const type = tuple[0]
58
+ const value = tuple[1]
59
+
60
+ assign(entity, type, value)
61
+
62
+ return entity
63
+ },
64
+ {
65
+ type: TYPE,
66
+ string: '',
67
+ } as TextEntity,
68
+ )
69
+ }
70
+
71
+ export const assign = (
72
+ entity: TextEntity,
73
+ type: number,
74
+ value: string | number
75
+ ): void => {
76
+ if (type in simpleCodes) {
77
+ entity[simpleCodes[type]] = value
78
+ } else {
79
+ Object.assign(entity, common(type, value))
80
+ }
81
+ }
82
+
83
+ export default { TYPE, process, assign }
@@ -0,0 +1,69 @@
1
+ import type { DXFTuple } from '../../types/dxf'
2
+
3
+ import type { Point3D } from '../../types'
4
+ import common from './common'
5
+
6
+
7
+ interface ThreeDFaceEntity {
8
+ type: string
9
+ vertices: Point3D[]
10
+ }
11
+
12
+ export const TYPE = '3DFACE'
13
+
14
+ export const process = (tuples: DXFTuple[]): ThreeDFaceEntity => {
15
+ return tuples.reduce(
16
+ (entity, tuple) => {
17
+ const type = tuple[0]
18
+ const value = tuple[1]
19
+ switch (type) {
20
+ case 10:
21
+ entity.vertices[0].x = value as number
22
+ break
23
+ case 20:
24
+ entity.vertices[0].y = value as number
25
+ break
26
+ case 30:
27
+ entity.vertices[0].z = value as number
28
+ break
29
+ case 11:
30
+ entity.vertices[1].x = value as number
31
+ break
32
+ case 21:
33
+ entity.vertices[1].y = value as number
34
+ break
35
+ case 31:
36
+ entity.vertices[1].z = value as number
37
+ break
38
+ case 12:
39
+ entity.vertices[2].x = value as number
40
+ break
41
+ case 22:
42
+ entity.vertices[2].y = value as number
43
+ break
44
+ case 32:
45
+ entity.vertices[2].z = value as number
46
+ break
47
+ case 13:
48
+ entity.vertices[3].x = value as number
49
+ break
50
+ case 23:
51
+ entity.vertices[3].y = value as number
52
+ break
53
+ case 33:
54
+ entity.vertices[3].z = value as number
55
+ break
56
+ default:
57
+ Object.assign(entity, common(type, value))
58
+ break
59
+ }
60
+ return entity
61
+ },
62
+ {
63
+ type: TYPE,
64
+ vertices: [{} as Point3D, {} as Point3D, {} as Point3D, {} as Point3D],
65
+ } as ThreeDFaceEntity,
66
+ )
67
+ }
68
+
69
+ export default { TYPE, process }
@@ -0,0 +1,55 @@
1
+ import type { DXFTuple } from '../../types/dxf'
2
+
3
+ import type { Vertex } from '../../types'
4
+
5
+ export const TYPE = 'VERTEX'
6
+
7
+
8
+ const ensureFaces = (entity: Vertex): void => {
9
+ entity.faces = entity.faces || []
10
+ if ('x' in entity && !entity.x) delete entity.x
11
+ if ('y' in entity && !entity.y) delete entity.y
12
+ if ('z' in entity && !entity.z) delete entity.z
13
+ }
14
+
15
+ export const process = (tuples: DXFTuple[]): Vertex => {
16
+ return tuples.reduce((entity, tuple) => {
17
+ const type = tuple[0]
18
+ const value = tuple[1]
19
+ switch (type) {
20
+ case 10:
21
+ entity.x = value as number
22
+ break
23
+ case 20:
24
+ entity.y = value as number
25
+ break
26
+ case 30:
27
+ entity.z = value as number
28
+ break
29
+ case 42:
30
+ entity.bulge = value as number
31
+ break
32
+ case 71:
33
+ ensureFaces(entity)
34
+ entity.faces![0] = value as number
35
+ break
36
+ case 72:
37
+ ensureFaces(entity)
38
+ entity.faces![1] = value as number
39
+ break
40
+ case 73:
41
+ ensureFaces(entity)
42
+ entity.faces![2] = value as number
43
+ break
44
+ case 74:
45
+ ensureFaces(entity)
46
+ entity.faces![3] = value as number
47
+ break
48
+ default:
49
+ break
50
+ }
51
+ return entity
52
+ }, {} as Vertex)
53
+ }
54
+
55
+ export default { TYPE, process }