@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,471 @@
1
+ import type { DXFTuple, HatchEntity, HatchLoop, HatchSeed } from '../../types'
2
+
3
+ import common from './common'
4
+
5
+ export const TYPE = 'HATCH'
6
+
7
+ let status: 'IDLE' | 'POLYLINE' | 'SEED' | 'ENT' | 'SPLINE' = 'IDLE'
8
+ let drawEntity: any = {}
9
+ let drawType = 0
10
+ let isPolyline = false
11
+ let seed: HatchSeed | null = null
12
+ let loop: HatchLoop = { references: [], entities: [] }
13
+ let polyPoint: any = null
14
+
15
+ export const process = (tuples: DXFTuple[]): HatchEntity => {
16
+ status = 'IDLE'
17
+ drawEntity = {}
18
+ drawType = 0
19
+ isPolyline = false
20
+ seed = null
21
+ loop = { references: [], entities: [] }
22
+ polyPoint = null
23
+
24
+ return tuples.reduce(
25
+ (entity, tuple) => {
26
+ const type = tuple[0]
27
+ const value = tuple[1]
28
+
29
+ switch (type) {
30
+ case 100:
31
+ status = 'IDLE'
32
+ break
33
+ case 2:
34
+ entity.patternName = value
35
+ break
36
+ case 10:
37
+ if (status === 'IDLE') {
38
+ entity.elevation ??= { x: 0, y: 0, z: 0 }
39
+ entity.elevation.x = Number.parseFloat(String(value))
40
+ }
41
+ else if (status === 'POLYLINE') {
42
+ polyPoint = {
43
+ x: Number.parseFloat(String(value)),
44
+ y: 0,
45
+ bulge: 0,
46
+ }
47
+ loop.entities[0].points.push(polyPoint)
48
+ } else if (status === 'SEED') {
49
+ if (!seed) {
50
+ seed = { x: 0, y: 0 }
51
+ entity.seeds ??= { count: 0, seeds: [] }
52
+ entity.seeds.seeds.push(seed)
53
+ }
54
+ seed.x = Number.parseFloat(String(value))
55
+ } else fillDrawEntity(type, drawType, Number.parseFloat(String(value)))
56
+ break
57
+ case 20:
58
+ if (status === 'IDLE') {
59
+ entity.elevation ??= { x: 0, y: 0, z: 0 }
60
+ entity.elevation.y = Number.parseFloat(String(value))
61
+ }
62
+ else if (status === 'POLYLINE') polyPoint.y = Number.parseFloat(String(value))
63
+ else if (status === 'SEED') {
64
+ if (seed) seed.y = Number.parseFloat(String(value))
65
+ seed = null
66
+ } else fillDrawEntity(type, drawType, Number.parseFloat(String(value)))
67
+ break
68
+ case 30:
69
+ entity.elevation ??= { x: 0, y: 0, z: 0 }
70
+ entity.elevation.z = Number.parseFloat(String(value))
71
+ break
72
+ case 63:
73
+ entity.fillColor = value
74
+ break
75
+ case 70:
76
+ entity.fillType = Number.parseFloat(String(value)) === 1 ? 'SOLID' : 'PATTERN'
77
+ break
78
+ case 210:
79
+ entity.extrusionDir ??= { x: 0, y: 0, z: 1 }
80
+ entity.extrusionDir.x = Number.parseFloat(String(value))
81
+ break
82
+ case 220:
83
+ entity.extrusionDir ??= { x: 0, y: 0, z: 1 }
84
+ entity.extrusionDir.y = Number.parseFloat(String(value))
85
+ break
86
+ case 230:
87
+ entity.extrusionDir ??= { x: 0, y: 0, z: 1 }
88
+ entity.extrusionDir.z = Number.parseFloat(String(value))
89
+ break
90
+ case 91:
91
+ // LOOP COUNT
92
+ entity.boundary ??= { count: 0, loops: [] }
93
+ entity.boundary.count = Number.parseFloat(String(value))
94
+ break
95
+ case 92:
96
+ // 0 = Default; 1 = External; 2 = Polyline; 4 = Derived; 8 = Textbox; 16 = Outermost
97
+ loop = { references: [], entities: [] }
98
+ entity.boundary ??= { count: 0, loops: [] }
99
+ entity.boundary.loops.push(loop)
100
+ loop.type = Number.parseFloat(String(value))
101
+ isPolyline = (loop.type & 2) === 2
102
+ if (isPolyline) {
103
+ const ent = {
104
+ type: 'POLYLINE',
105
+ points: [],
106
+ }
107
+ loop.entities.push(ent)
108
+ status = 'POLYLINE'
109
+ }
110
+ break
111
+ case 93:
112
+ if (status === 'IDLE') status = 'ENT'
113
+ loop.count = Number.parseFloat(String(value))
114
+ break
115
+ case 11:
116
+ case 21:
117
+ case 40:
118
+ case 50:
119
+ case 51:
120
+ case 74:
121
+ case 94:
122
+ case 95:
123
+ case 96:
124
+ if (drawType === 4) status = 'SPLINE'
125
+ fillDrawEntity(type, drawType, Number.parseFloat(String(value)))
126
+ break
127
+ case 42:
128
+ if (isPolyline) polyPoint.bulge = Number.parseFloat(String(value))
129
+ else fillDrawEntity(type, drawType, Number.parseFloat(String(value)))
130
+ break
131
+ case 72:
132
+ // !Polyline --> 1 = Line; 2 = Circular arc; 3 = Elliptic arc; 4 = Spline
133
+ // Polyline --> hasBulge
134
+ drawType = Number.parseFloat(String(value))
135
+ loop[isPolyline ? 'hasBulge' : 'edgeType'] = drawType
136
+ if (!isPolyline) {
137
+ drawEntity = createDrawEntity(drawType)
138
+ loop.entities.push(drawEntity)
139
+ }
140
+ break
141
+ case 73:
142
+ if (status === 'IDLE' || isPolyline) loop.entities[0].closed = value
143
+ else fillDrawEntity(type, drawType, Number.parseFloat(String(value)))
144
+ break
145
+ case 75:
146
+ // END OF BOUNDARY PATH DATA
147
+ status = 'IDLE'
148
+
149
+ // 0 = Hatch "odd parity" area (Normal style)
150
+ // 1 = Hatch outermost area only (Outer style)
151
+ // 2 = Hatch through entire area (Ignore style)
152
+ entity.style = Number.parseFloat(String(value))
153
+ break
154
+ case 76:
155
+ // 0 = User-defined; 1 = Predefined; 2 = Custom
156
+ entity.hatchType = Number.parseFloat(String(value))
157
+ break
158
+ case 97:
159
+ status = 'IDLE'
160
+ isPolyline = false
161
+ loop.sourceObjects = Number.parseFloat(String(value))
162
+ break
163
+ case 98:
164
+ status = 'SEED'
165
+ entity.seeds ??= { count: 0, seeds: [] }
166
+ entity.seeds.count = Number.parseFloat(String(value))
167
+ break
168
+ case 52:
169
+ entity.shadowPatternAngle = Number.parseFloat(String(value))
170
+ break
171
+ case 41:
172
+ entity.spacing = Number.parseFloat(String(value))
173
+ break
174
+ case 77:
175
+ entity.double = Number.parseFloat(String(value)) === 1
176
+ break
177
+ case 78:
178
+ entity.pattern ??= { lineCount: 0, angle: 0, x: 0, y: 0, offsetX: 0, offsetY: 0, dashCount: 0, length: [] }
179
+ entity.pattern.lineCount = Number.parseFloat(String(value))
180
+ break
181
+ case 53:
182
+ entity.pattern ??= { lineCount: 0, angle: 0, x: 0, y: 0, offsetX: 0, offsetY: 0, dashCount: 0, length: [] }
183
+ entity.pattern.angle = Number.parseFloat(String(value))
184
+ break
185
+ case 43:
186
+ entity.pattern ??= { lineCount: 0, angle: 0, x: 0, y: 0, offsetX: 0, offsetY: 0, dashCount: 0, length: [] }
187
+ entity.pattern.x = Number.parseFloat(String(value))
188
+ break
189
+ case 44:
190
+ entity.pattern ??= { lineCount: 0, angle: 0, x: 0, y: 0, offsetX: 0, offsetY: 0, dashCount: 0, length: [] }
191
+ entity.pattern.y = Number.parseFloat(String(value))
192
+ break
193
+ case 45:
194
+ entity.pattern ??= { lineCount: 0, angle: 0, x: 0, y: 0, offsetX: 0, offsetY: 0, dashCount: 0, length: [] }
195
+ entity.pattern.offsetX = Number.parseFloat(String(value))
196
+ break
197
+ case 46:
198
+ entity.pattern ??= { lineCount: 0, angle: 0, x: 0, y: 0, offsetX: 0, offsetY: 0, dashCount: 0, length: [] }
199
+ entity.pattern.offsetY = Number.parseFloat(String(value))
200
+ break
201
+ case 79:
202
+ entity.pattern ??= { lineCount: 0, angle: 0, x: 0, y: 0, offsetX: 0, offsetY: 0, dashCount: 0, length: [] }
203
+ entity.pattern.dashCount = Number.parseFloat(String(value))
204
+ break
205
+ case 49:
206
+ entity.pattern ??= { lineCount: 0, angle: 0, x: 0, y: 0, offsetX: 0, offsetY: 0, dashCount: 0, length: [] }
207
+ entity.pattern.length.push(value)
208
+ break
209
+ case 330:
210
+ loop.references.push(value)
211
+ break
212
+ case 450:
213
+ entity.solidOrGradient =
214
+ Number.parseFloat(String(value)) === 0 ? 'SOLID' : 'GRADIENT'
215
+ break
216
+ case 453:
217
+ // 0 = Solid; 2 = Gradient
218
+ entity.color ??= { count: 0, rotation: 0, gradient: 0, tint: 0 }
219
+ entity.color.count = Number.parseFloat(String(value))
220
+ break
221
+ case 460:
222
+ entity.color ??= { count: 0, rotation: 0, gradient: 0, tint: 0 }
223
+ entity.color.rotation = value
224
+ break
225
+ case 461:
226
+ entity.color ??= { count: 0, rotation: 0, gradient: 0, tint: 0 }
227
+ entity.color.gradient = value
228
+ break
229
+ case 462:
230
+ entity.color ??= { count: 0, rotation: 0, gradient: 0, tint: 0 }
231
+ entity.color.tint = value
232
+ break
233
+ default:
234
+ Object.assign(entity, common(type, value))
235
+ break
236
+ }
237
+ return entity
238
+ },
239
+ {
240
+ type: TYPE,
241
+ elevation: { x: 0, y: 0, z: 0 },
242
+ extrusionDir: { x: 0, y: 0, z: 1 },
243
+ pattern: {
244
+ lineCount: 0,
245
+ angle: 0,
246
+ x: 0,
247
+ y: 0,
248
+ offsetX: 0,
249
+ offsetY: 0,
250
+ dashCount: 0,
251
+ length: []
252
+ },
253
+ boundary: {
254
+ count: 0,
255
+ loops: []
256
+ },
257
+ seeds: {
258
+ count: 0,
259
+ seeds: []
260
+ },
261
+ color: {
262
+ count: 0,
263
+ rotation: 0,
264
+ gradient: 0,
265
+ tint: 0
266
+ },
267
+ } as HatchEntity,
268
+ )
269
+ }
270
+
271
+ export default { TYPE, process }
272
+
273
+ /**
274
+ * Creates a draw entity based on edge type
275
+ *
276
+ * @param type - Edge type (1=Line, 2=Arc, 3=Ellipse, 4=Spline)
277
+ * @returns Draw entity object
278
+ */
279
+ function createDrawEntity(type: number): any {
280
+ if (isPolyline) return {}
281
+
282
+ // 1 = Line; 2 = Circular arc; 3 = Elliptic arc; 4 = Spline
283
+ switch (type) {
284
+ case 1:
285
+ return {
286
+ type: 'LINE',
287
+ start: { x: 0, y: 0 },
288
+ end: { x: 0, y: 0 },
289
+ }
290
+ case 2:
291
+ return {
292
+ type: 'ARC',
293
+ center: { x: 0, y: 0 },
294
+ radius: 0,
295
+ startAngle: 0,
296
+ endAngle: 0,
297
+ counterClockWise: false,
298
+ }
299
+ case 3:
300
+ return {
301
+ type: 'ELLIPSE',
302
+ center: { x: 0, y: 0 },
303
+ startAngle: 0,
304
+ endAngle: 0,
305
+ counterClockWise: false,
306
+ major: { x: 0, y: 0 },
307
+ minor: 0,
308
+ }
309
+ case 4:
310
+ return {
311
+ type: 'SPLINE',
312
+ degree: 0,
313
+ rational: 0,
314
+ periodic: 0,
315
+ knots: { count: 0, knots: [] },
316
+ controlPoints: { count: 0, points: [] },
317
+ weights: 1,
318
+ }
319
+ }
320
+
321
+ return {}
322
+ }
323
+
324
+ /**
325
+ * Fills properties of a draw entity based on DXF code, draw type, and value
326
+ *
327
+ * @param type - DXF group code
328
+ * @param drawType - Entity draw type (1=Line, 2=Arc, 3=Ellipse, 4=Spline)
329
+ * @param value - Value to set
330
+ */
331
+ function fillDrawEntity(type: number, drawType: number, value: number): void {
332
+ switch (type) {
333
+ case 10:
334
+ switch (drawType) {
335
+ case 1:
336
+ drawEntity.start.x = value
337
+ break
338
+ case 2:
339
+ drawEntity.center.x = value
340
+ break
341
+ case 3:
342
+ drawEntity.center.x = value
343
+ break
344
+ case 4:
345
+ drawEntity.controlPoints.points.push({ x: value, y: 0 })
346
+ break
347
+ }
348
+ break
349
+ case 20:
350
+ switch (drawType) {
351
+ case 1:
352
+ {
353
+ drawEntity.start.y = value
354
+ }
355
+ break
356
+ case 2:
357
+ {
358
+ drawEntity.center.y = value
359
+ }
360
+ break
361
+ case 3:
362
+ {
363
+ drawEntity.center.y = value
364
+ }
365
+ break
366
+ case 4:
367
+ {
368
+ drawEntity.controlPoints.points[
369
+ drawEntity.controlPoints.points.length - 1
370
+ ].y = value
371
+ }
372
+ break
373
+ }
374
+ break
375
+ case 11:
376
+ switch (drawType) {
377
+ case 1:
378
+ drawEntity.end.x = value
379
+ break
380
+ case 3:
381
+ drawEntity.major.x = value
382
+ break
383
+ }
384
+ break
385
+ case 21:
386
+ switch (drawType) {
387
+ case 1:
388
+ drawEntity.end.y = value
389
+ break
390
+ case 3:
391
+ drawEntity.major.y = value
392
+ break
393
+ }
394
+ break
395
+ case 40:
396
+ switch (drawType) {
397
+ case 2:
398
+ drawEntity.radius = value
399
+ break
400
+ case 3:
401
+ drawEntity.minor = value
402
+ break
403
+ case 4:
404
+ drawEntity.knots.knots.push(value)
405
+ break
406
+ }
407
+ break
408
+ case 42:
409
+ if (drawType === 4) {
410
+ drawEntity.weights = value
411
+ }
412
+ break
413
+ case 50:
414
+ switch (drawType) {
415
+ case 2:
416
+ case 3:
417
+ drawEntity.startAngle = value
418
+ break
419
+ }
420
+ break
421
+ case 51:
422
+ switch (drawType) {
423
+ case 2:
424
+ case 3:
425
+ drawEntity.endAngle = value
426
+ break
427
+ }
428
+ break
429
+ case 73:
430
+ {
431
+ switch (drawType) {
432
+ case 2:
433
+ {
434
+ drawEntity.counterClockWise = Number.parseFloat(String(value)) === 1
435
+ }
436
+ break
437
+ case 3:
438
+ {
439
+ drawEntity.counterClockWise = Number.parseFloat(String(value)) === 1
440
+ }
441
+ break
442
+ case 4:
443
+ {
444
+ drawEntity.rational = value
445
+ }
446
+ break
447
+ }
448
+ }
449
+ break
450
+ case 74:
451
+ if (drawType === 4) {
452
+ drawEntity.periodic = value
453
+ }
454
+ break
455
+ case 94:
456
+ if (drawType === 4) {
457
+ drawEntity.degree = value
458
+ }
459
+ break
460
+ case 95:
461
+ if (drawType === 4) {
462
+ drawEntity.knots.count = value
463
+ }
464
+ break
465
+ case 96:
466
+ if (drawType === 4) {
467
+ drawEntity.controlPoints.count = value
468
+ }
469
+ break
470
+ }
471
+ }
@@ -0,0 +1,73 @@
1
+ import type { DXFTuple } from '../../types/dxf'
2
+
3
+ import common from './common'
4
+
5
+ import type { InsertEntity } from '../../types'
6
+
7
+ export const TYPE = 'INSERT'
8
+
9
+
10
+ export const process = (tuples: DXFTuple[]): InsertEntity => {
11
+ return tuples.reduce(
12
+ (entity, tuple) => {
13
+ const type = tuple[0]
14
+ const value = tuple[1]
15
+ switch (type) {
16
+ case 2:
17
+ entity.block = value as string
18
+ break
19
+ case 10:
20
+ entity.x = value as number
21
+ break
22
+ case 20:
23
+ entity.y = value as number
24
+ break
25
+ case 30:
26
+ entity.z = value as number
27
+ break
28
+ case 41:
29
+ entity.scaleX = value as number
30
+ break
31
+ case 42:
32
+ entity.scaleY = value as number
33
+ break
34
+ case 43:
35
+ entity.scaleZ = value as number
36
+ break
37
+ case 44:
38
+ entity.columnSpacing = value as number
39
+ break
40
+ case 45:
41
+ entity.rowSpacing = value as number
42
+ break
43
+ case 50:
44
+ entity.rotation = value as number
45
+ break
46
+ case 70:
47
+ entity.columnCount = value as number
48
+ break
49
+ case 71:
50
+ entity.rowCount = value as number
51
+ break
52
+ case 210:
53
+ entity.extrusionX = value as number
54
+ break
55
+ case 220:
56
+ entity.extrusionY = value as number
57
+ break
58
+ case 230:
59
+ entity.extrusionZ = value as number
60
+ break
61
+ default:
62
+ Object.assign(entity, common(type, value))
63
+ break
64
+ }
65
+ return entity
66
+ },
67
+ {
68
+ type: TYPE,
69
+ } as InsertEntity,
70
+ )
71
+ }
72
+
73
+ export default { TYPE, process }
@@ -0,0 +1,56 @@
1
+ import type { DXFTuple, PartialPoint3D } from '../../types'
2
+
3
+ import common from './common'
4
+
5
+ export const TYPE = 'LINE'
6
+
7
+ interface LineEntity {
8
+ type: typeof TYPE
9
+ start: PartialPoint3D
10
+ end: PartialPoint3D
11
+ thickness?: number
12
+ [key: string]: unknown
13
+ }
14
+
15
+ export const process = (tuples: DXFTuple[]): LineEntity => {
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.start.x = value as number
23
+ break
24
+ case 20:
25
+ entity.start.y = value as number
26
+ break
27
+ case 30:
28
+ entity.start.z = value as number
29
+ break
30
+ case 39:
31
+ entity.thickness = value as number
32
+ break
33
+ case 11:
34
+ entity.end.x = value as number
35
+ break
36
+ case 21:
37
+ entity.end.y = value as number
38
+ break
39
+ case 31:
40
+ entity.end.z = value as number
41
+ break
42
+ default:
43
+ Object.assign(entity, common(type, value))
44
+ break
45
+ }
46
+ return entity
47
+ },
48
+ {
49
+ type: TYPE,
50
+ start: {},
51
+ end: {},
52
+ } as LineEntity,
53
+ )
54
+ }
55
+
56
+ export default { TYPE, process }
@@ -0,0 +1,54 @@
1
+ import type { DXFTuple } from '../../types/dxf'
2
+
3
+ import common from './common'
4
+
5
+ import type { Point3D, PolylineEntity } from '../../types'
6
+
7
+ export const TYPE = 'LWPOLYLINE'
8
+
9
+
10
+ interface PolylineVertex extends Point3D {
11
+ bulge?: number
12
+ }
13
+
14
+ export const process = (tuples: DXFTuple[]): PolylineEntity => {
15
+ let vertex: PolylineVertex | undefined
16
+ return tuples.reduce(
17
+ (entity, tuple) => {
18
+ const type = tuple[0]
19
+ const value = tuple[1]
20
+ switch (type) {
21
+ case 70:
22
+ entity.closed = ((value as number) & 1) === 1
23
+ break
24
+ case 10:
25
+ vertex = {
26
+ x: value as number,
27
+ y: 0,
28
+ } as PolylineVertex
29
+ entity.vertices.push(vertex)
30
+ break
31
+ case 20:
32
+ if (vertex) vertex.y = value as number
33
+ break
34
+ case 39:
35
+ entity.thickness = value as number
36
+ break
37
+ case 42:
38
+ // Bulge (multiple entries; one entry for each vertex) (optional; default = 0).
39
+ if (vertex) vertex.bulge = value as number
40
+ break
41
+ default:
42
+ Object.assign(entity, common(type, value))
43
+ break
44
+ }
45
+ return entity
46
+ },
47
+ {
48
+ type: TYPE,
49
+ vertices: [],
50
+ } as PolylineEntity,
51
+ )
52
+ }
53
+
54
+ export default { TYPE, process }