@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,284 @@
1
+ import type { DXFTuple } from '../../types/dxf'
2
+
3
+ import common from './common'
4
+ import { assign as assignMTEXT } from './mtext'
5
+ import { assign as assignTEXT } from './text'
6
+
7
+
8
+ export const TYPE = 'ATTDEF'
9
+
10
+ export const process = (tuples: DXFTuple[]): any => {
11
+ return tuples.reduce(
12
+ (entity, tuple) => {
13
+ const type = tuple[0]
14
+ const value = tuple[1]
15
+
16
+ assign(entity, type, value)
17
+
18
+ return entity
19
+ },
20
+ {
21
+ type: TYPE,
22
+ subclassMarker: 'AcDbText',
23
+ thickness: 0,
24
+ scaleX: 1,
25
+ mtext: {},
26
+ text: {},
27
+ },
28
+ )
29
+ }
30
+
31
+ export const assign = (entity: any, type: number, value: string | number): void => {
32
+ switch (type) {
33
+ case 100: {
34
+ entity.subclassMarker = value
35
+ break
36
+ }
37
+ case 1:
38
+ switch (entity.subclassMarker) {
39
+ case 'AcDbText':
40
+ assignTEXT(entity.text, type, value)
41
+ break
42
+ case 'AcDbMText':
43
+ assignMTEXT(entity.mtext, type, value)
44
+ break
45
+ }
46
+ break
47
+ case 2:
48
+ switch (entity.subclassMarker) {
49
+ case 'AcDbAttributeDefinition':
50
+ case 'AcDbAttribute':
51
+ entity.tag = value
52
+ break
53
+ case 'AcDbXrecord':
54
+ entity.attdefFlag = value
55
+ break
56
+ }
57
+ break
58
+ case 3:
59
+ switch (entity.subclassMarker) {
60
+ case 'AcDbAttributeDefinition':
61
+ entity.prompt = value
62
+ break
63
+ case 'AcDbMText':
64
+ assignMTEXT(entity.mtext, type, value)
65
+ break
66
+ }
67
+ break
68
+ case 7:
69
+ case 41:
70
+ case 50:
71
+ case 71:
72
+ case 72:
73
+ switch (entity.subclassMarker) {
74
+ case 'AcDbAttributeDefinition':
75
+ case 'AcDbAttribute':
76
+ assignTEXT(entity.text, type, value)
77
+ break
78
+ case 'AcDbMText':
79
+ assignMTEXT(entity.mtext, type, value)
80
+ break
81
+ }
82
+ break
83
+ case 10:
84
+ switch (entity.subclassMarker) {
85
+ case 'AcDbText':
86
+ assignTEXT(entity.text, type, value)
87
+ break
88
+ case 'AcDbMText':
89
+ assignMTEXT(entity.mtext, type, value)
90
+ break
91
+ case 'AcDbXrecord':
92
+ entity.x = value
93
+ break
94
+ }
95
+ break
96
+ case 20:
97
+ switch (entity.subclassMarker) {
98
+ case 'AcDbText':
99
+ assignTEXT(entity.text, type, value)
100
+ break
101
+ case 'AcDbMText':
102
+ assignMTEXT(entity.mtext, type, value)
103
+ break
104
+ case 'AcDbXrecord':
105
+ entity.y = value
106
+ break
107
+ }
108
+ break
109
+ case 30:
110
+ switch (entity.subclassMarker) {
111
+ case 'AcDbText':
112
+ assignTEXT(entity.text, type, value)
113
+ break
114
+ case 'AcDbMText':
115
+ assignMTEXT(entity.mtext, type, value)
116
+ break
117
+ case 'AcDbXrecord':
118
+ entity.z = value
119
+ break
120
+ }
121
+ break
122
+ case 11:
123
+ switch (entity.subclassMarker) {
124
+ case 'AcDbAttributeDefinition':
125
+ case 'AcDbAttribute':
126
+ entity.x2 = value
127
+ break
128
+ case 'AcDbMText':
129
+ assignMTEXT(entity.mtext, type, value)
130
+ break
131
+ }
132
+ break
133
+ case 21:
134
+ switch (entity.subclassMarker) {
135
+ case 'AcDbAttributeDefinition':
136
+ case 'AcDbAttribute':
137
+ entity.y2 = value
138
+ break
139
+ case 'AcDbMText':
140
+ assignMTEXT(entity.mtext, type, value)
141
+ break
142
+ }
143
+ break
144
+ case 31:
145
+ switch (entity.subclassMarker) {
146
+ case 'AcDbAttributeDefinition':
147
+ case 'AcDbAttribute':
148
+ entity.z2 = value
149
+ break
150
+ case 'AcDbMText':
151
+ assignMTEXT(entity.mtext, type, value)
152
+ break
153
+ }
154
+ break
155
+ case 39:
156
+ assignTEXT(entity.text, type, value)
157
+ break
158
+ case 40:
159
+ switch (entity.subclassMarker) {
160
+ case 'AcDbText':
161
+ assignTEXT(entity.text, type, value)
162
+ break
163
+ case 'AcDbMText':
164
+ assignMTEXT(entity.mtext, type, value)
165
+ break
166
+ case 'AcDbXrecord':
167
+ entity.annotationScale = value
168
+ break
169
+ }
170
+ break
171
+ case 42:
172
+ case 43:
173
+ case 44:
174
+ case 45:
175
+ assignMTEXT(entity.mtext, type, value)
176
+ break
177
+ case 46:
178
+ entity.mtext.annotationHeight = value
179
+ break
180
+ case 48:
181
+ case 49:
182
+ assignMTEXT(entity.mtext, type, value)
183
+ break
184
+ case 51:
185
+ assignTEXT(entity.text, type, value)
186
+ break
187
+ case 63:
188
+ assignMTEXT(entity.mtext, type, value)
189
+ break
190
+ case 70:
191
+ switch (entity.subclassMarker) {
192
+ case 'AcDbAttributeDefinition':
193
+ case 'AcDbAttribute':
194
+ entity.attributeFlags = value
195
+ break
196
+ case 'AcDbXrecord':
197
+ if (entity.mTextFlag === undefined)
198
+ entity.mTextFlag = value
199
+ else if (entity.isReallyLocked === undefined)
200
+ entity.isReallyLocked = value
201
+ else entity.secondaryAttdefCount = value
202
+ break
203
+ }
204
+ break
205
+ case 73:
206
+ switch (entity.subclassMarker) {
207
+ case 'AcDbAttributeDefinition':
208
+ case 'AcDbAttribute':
209
+ entity.fieldLength = value
210
+ break
211
+ case 'AcDbMText':
212
+ assignMTEXT(entity.mtext, type, value)
213
+ break
214
+ }
215
+ break
216
+ case 74:
217
+ assignTEXT(entity.text, 73, value)
218
+ break
219
+ case 75:
220
+ case 76:
221
+ case 78:
222
+ case 79:
223
+ assignMTEXT(entity.mtext, type, value)
224
+ break
225
+ case 90:
226
+ assignMTEXT(entity.mtext, type, value)
227
+ break
228
+ case 210:
229
+ case 220:
230
+ case 230:
231
+ switch (entity.subclassMarker) {
232
+ case 'AcDbAttributeDefinition':
233
+ case 'AcDbAttribute':
234
+ assignTEXT(entity.mtext, type, value)
235
+ break
236
+ case 'AcDbMText':
237
+ assignMTEXT(entity.mtext, type, value)
238
+ break
239
+ }
240
+ break
241
+ case 280:
242
+ switch (entity.subclassMarker) {
243
+ case 'AcDbAttributeDefinition':
244
+ case 'AcDbAttribute':
245
+ entity.lock = value
246
+ break
247
+ case 'AcDbXrecord':
248
+ entity.clone = true
249
+ break
250
+ }
251
+ break
252
+ case 340:
253
+ entity.attdefHandle = value
254
+ break
255
+ case 420:
256
+ case 421:
257
+ case 422:
258
+ case 423:
259
+ case 424:
260
+ case 425:
261
+ case 426:
262
+ case 427:
263
+ case 428:
264
+ case 429:
265
+ case 430:
266
+ case 431:
267
+ case 432:
268
+ case 433:
269
+ case 434:
270
+ case 435:
271
+ case 436:
272
+ case 437:
273
+ case 438:
274
+ case 439:
275
+ case 441:
276
+ assignMTEXT(entity.mtext, type, value)
277
+ break
278
+ default:
279
+ Object.assign(entity, common(type, value))
280
+ break
281
+ }
282
+ }
283
+
284
+ export default { TYPE, process, assign }
@@ -0,0 +1,29 @@
1
+ import type { DXFTuple } from '../../types/dxf'
2
+
3
+ import { assign } from './attdef'
4
+
5
+ export const TYPE = 'ATTRIB'
6
+
7
+
8
+ export const process = (tuples: DXFTuple[]): any => {
9
+ return tuples.reduce(
10
+ (entity, tuple) => {
11
+ const type = tuple[0]
12
+ const value = tuple[1]
13
+
14
+ assign(entity, type, value)
15
+
16
+ return entity
17
+ },
18
+ {
19
+ type: TYPE,
20
+ subclassMarker: 'AcDbText',
21
+ thickness: 0,
22
+ scaleX: 1,
23
+ mtext: {},
24
+ text: {},
25
+ },
26
+ )
27
+ }
28
+
29
+ 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 = 'CIRCLE'
6
+
7
+
8
+ interface CircleEntity {
9
+ type: typeof TYPE
10
+ x?: number
11
+ y?: number
12
+ z?: number
13
+ r?: number
14
+ [key: string]: unknown
15
+ }
16
+
17
+ export const process = (tuples: DXFTuple[]): CircleEntity => {
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 40:
33
+ entity.r = 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 CircleEntity,
44
+ )
45
+ }
46
+
47
+ export default { TYPE, process }
@@ -0,0 +1,79 @@
1
+ import type { CommonEntityProperties } from '../../types/handler-internal'
2
+
3
+ export default function parseCommonEntityProperties(
4
+ type: number,
5
+ value: string | number
6
+ ): CommonEntityProperties {
7
+ switch (type) {
8
+ case 5: {
9
+ return {
10
+ handle: value as string,
11
+ }
12
+ }
13
+ case 6:
14
+ // Linetype name (present if not BYLAYER).
15
+ // The special name BYBLOCK indicates a
16
+ // floating linetype. (optional)
17
+ return {
18
+ lineTypeName: value as string,
19
+ }
20
+ case 8:
21
+ return {
22
+ layer: value as string,
23
+ }
24
+ case 48:
25
+ // Linetype scale (optional)
26
+ return {
27
+ lineTypeScale: value as number,
28
+ }
29
+ case 60:
30
+ // Object visibility (optional): 0 = visible, 1 = invisible.
31
+ return {
32
+ visible: value === 0,
33
+ }
34
+ case 62:
35
+ // Color number (present if not BYLAYER).
36
+ // Zero indicates the BYBLOCK (floating) color.
37
+ // 256 indicates BYLAYER.
38
+ // A negative value indicates that the layer is turned off. (optional)
39
+ return {
40
+ colorNumber: value as number,
41
+ }
42
+ case 67:
43
+ // Paper space or sheet.
44
+ // Absent or zero indicates entity is in model space. 1 indicates entity is in paper space (optional)
45
+ return value === 0
46
+ ? {}
47
+ : {
48
+ paperSpace: value as number,
49
+ }
50
+ case 68:
51
+ // Identifies whether viewport is on but fully off screen, is not active, or is off
52
+ return {
53
+ viewportOn: value as number,
54
+ }
55
+ case 69:
56
+ // Viewport identification number
57
+ return {
58
+ viewport: value as number,
59
+ }
60
+ case 210:
61
+ return {
62
+ extrusionX: value as number,
63
+ }
64
+ case 220:
65
+ return {
66
+ extrusionY: value as number,
67
+ }
68
+ case 230:
69
+ return {
70
+ extrusionZ: value as number,
71
+ }
72
+ case 410:
73
+ return {
74
+ layout: value as string,
75
+ }
76
+ default:
77
+ return {}
78
+ }
79
+ }
@@ -0,0 +1,217 @@
1
+ import type { DXFTuple } from '../../types/dxf'
2
+
3
+ import common from './common'
4
+
5
+ export const TYPE = 'DIMENSION'
6
+
7
+
8
+ interface Point3D {
9
+ x: number
10
+ y: number
11
+ z: number
12
+ }
13
+
14
+ interface DimensionEntity {
15
+ type: typeof TYPE
16
+ block?: string
17
+ start: Point3D
18
+ textMidpoint: Point3D
19
+ measureStart: Point3D
20
+ measureEnd: Point3D
21
+ rotation?: number
22
+ horizonRotation?: number
23
+ extensionRotation?: number
24
+ textRotation?: number
25
+ ordinateType?: boolean
26
+ uniqueBlockReference?: boolean
27
+ userDefinedLocation?: boolean
28
+ dimensionType: number
29
+ attachementPoint: number
30
+ extrudeDirection?: Point3D
31
+ [key: string]: unknown
32
+ }
33
+
34
+ interface BitCombinationsResult {
35
+ dimensionType: number
36
+ uniqueBlockReference: boolean
37
+ ordinateType: boolean
38
+ userDefinedLocation: boolean
39
+ }
40
+
41
+ export const process = (tuples: DXFTuple[]): DimensionEntity => {
42
+ return tuples.reduce(
43
+ (entity, tuple) => {
44
+ const type = tuple[0]
45
+ const value = tuple[1]
46
+ switch (type) {
47
+ case 1:
48
+ entity.text = value as string
49
+ break
50
+ case 2:
51
+ entity.block = value as string
52
+ break
53
+ case 3:
54
+ entity.styleName = value as string
55
+ break
56
+ case 10:
57
+ entity.start.x = value as number
58
+ break
59
+ case 20:
60
+ entity.start.y = value as number
61
+ break
62
+ case 30:
63
+ entity.start.z = value as number
64
+ break
65
+ case 11:
66
+ entity.textMidpoint.x = value as number
67
+ break
68
+ case 21:
69
+ entity.textMidpoint.y = value as number
70
+ break
71
+ case 31:
72
+ entity.textMidpoint.z = value as number
73
+ break
74
+ case 13:
75
+ entity.measureStart.x = value as number
76
+ break
77
+ case 23:
78
+ entity.measureStart.y = value as number
79
+ break
80
+ case 33:
81
+ entity.measureStart.z = value as number
82
+ break
83
+ case 14:
84
+ entity.measureEnd.x = value as number
85
+ break
86
+ case 24:
87
+ entity.measureEnd.y = value as number
88
+ break
89
+ case 34:
90
+ entity.measureEnd.z = value as number
91
+ break
92
+ case 50:
93
+ entity.rotation = value as number
94
+ break
95
+ case 51:
96
+ entity.horizonRotation = value as number
97
+ break
98
+ case 52:
99
+ entity.extensionRotation = value as number
100
+ break
101
+ case 53:
102
+ entity.textRotation = value as number
103
+ break
104
+ case 70: {
105
+ const dimType = parseBitCombinationsFromValue(value as number)
106
+ if (dimType.ordinateType) {
107
+ entity.ordinateType = true
108
+ }
109
+ if (dimType.uniqueBlockReference) {
110
+ entity.uniqueBlockReference = true
111
+ }
112
+ if (dimType.userDefinedLocation) {
113
+ entity.userDefinedLocation = true
114
+ }
115
+ entity.dimensionType = dimType.dimensionType
116
+ break
117
+ }
118
+ case 71:
119
+ entity.attachementPoint = value as number
120
+ break
121
+ case 210:
122
+ entity.extrudeDirection = entity.extrudeDirection || {
123
+ x: 0,
124
+ y: 0,
125
+ z: 0,
126
+ }
127
+ entity.extrudeDirection.x = value as number
128
+ break
129
+ case 220:
130
+ entity.extrudeDirection = entity.extrudeDirection || {
131
+ x: 0,
132
+ y: 0,
133
+ z: 0,
134
+ }
135
+ entity.extrudeDirection.y = value as number
136
+ break
137
+ case 230:
138
+ entity.extrudeDirection = entity.extrudeDirection || {
139
+ x: 0,
140
+ y: 0,
141
+ z: 0,
142
+ }
143
+ entity.extrudeDirection.z = value as number
144
+ break
145
+ default:
146
+ Object.assign(entity, common(type, value))
147
+ break
148
+ }
149
+ return entity
150
+ },
151
+ {
152
+ type: TYPE,
153
+ start: { x: 0, y: 0, z: 0 },
154
+ measureStart: { x: 0, y: 0, z: 0 },
155
+ measureEnd: { x: 0, y: 0, z: 0 },
156
+ textMidpoint: { x: 0, y: 0, z: 0 },
157
+ attachementPoint: 1,
158
+ dimensionType: 0,
159
+ } as DimensionEntity,
160
+ )
161
+ }
162
+
163
+ /**
164
+ * From DXF Reference for DIMENSION
165
+ * Values 0-6 are integer values that represent the dimension type. Values 32, 64, and 128
166
+ * are bit values, which are added to the integer values (value 32 is always set in R13 and
167
+ * later releases)
168
+ * 0 = Rotated, horizontal, or vertical; 1 = Aligned
169
+ * 2 = Angular; 3 = Diameter; 4 = Radius
170
+ * 5 = Angular 3 point; 6 = Ordinate
171
+ * 32 = Indicates that the block reference (group code 2) is referenced by this dimension only
172
+ * 64 = Ordinate type. This is a bit value (bit 7) used only with integer value 6. If set, ordinate is X-type; if not set, ordinate is Y-type
173
+ * 128 = This is a bit value (bit 8) added to the other group 70 values if the dimension text has been positioned at a user-defined location rather than at the default location
174
+ */
175
+ function parseBitCombinationsFromValue(value: number): BitCombinationsResult {
176
+ let uniqueBlockReference = false
177
+ let ordinateType = false
178
+ let userDefinedLocation = false
179
+
180
+ // ToDo: Solve in some more clever way??
181
+ if (value > 6) {
182
+ const alt1 = value - 32
183
+ const alt2 = value - 64
184
+ const alt3 = value - 32 - 64
185
+ const alt4 = value - 32 - 128
186
+ const alt5 = value - 32 - 64 - 128
187
+
188
+ if (alt1 >= 0 && alt1 <= 6) {
189
+ uniqueBlockReference = true
190
+ value = alt1
191
+ } else if (alt2 >= 0 && alt2 <= 6) {
192
+ ordinateType = true
193
+ value = alt2
194
+ } else if (alt3 >= 0 && alt3 <= 6) {
195
+ uniqueBlockReference = true
196
+ ordinateType = true
197
+ value = alt3
198
+ } else if (alt4 >= 0 && alt4 <= 6) {
199
+ uniqueBlockReference = true
200
+ userDefinedLocation = true
201
+ value = alt4
202
+ } else if (alt5 >= 0 && alt5 <= 6) {
203
+ uniqueBlockReference = true
204
+ ordinateType = true
205
+ userDefinedLocation = true
206
+ value = alt5
207
+ }
208
+ }
209
+ return {
210
+ dimensionType: value,
211
+ uniqueBlockReference,
212
+ ordinateType,
213
+ userDefinedLocation,
214
+ }
215
+ }
216
+
217
+ export default { TYPE, process }
@@ -0,0 +1,55 @@
1
+ import type { DXFTuple } from '../../types/dxf'
2
+
3
+ import common from './common'
4
+
5
+ import type { EllipseEntity } from '../../types'
6
+
7
+ export const TYPE = 'ELLIPSE'
8
+
9
+
10
+ export const process = (tuples: DXFTuple[]): EllipseEntity => {
11
+ return tuples.reduce(
12
+ (entity, tuple) => {
13
+ const type = tuple[0]
14
+ const value = tuple[1]
15
+ switch (type) {
16
+ case 10:
17
+ entity.x = value as number
18
+ break
19
+ case 11:
20
+ entity.majorX = value as number
21
+ break
22
+ case 20:
23
+ entity.y = value as number
24
+ break
25
+ case 21:
26
+ entity.majorY = value as number
27
+ break
28
+ case 30:
29
+ entity.z = value as number
30
+ break
31
+ case 31:
32
+ entity.majorZ = value as number
33
+ break
34
+ case 40:
35
+ entity.axisRatio = value as number
36
+ break
37
+ case 41:
38
+ entity.startAngle = value as number
39
+ break
40
+ case 42:
41
+ entity.endAngle = value as number
42
+ break
43
+ default:
44
+ Object.assign(entity, common(type, value))
45
+ break
46
+ }
47
+ return entity
48
+ },
49
+ {
50
+ type: TYPE,
51
+ } as EllipseEntity,
52
+ )
53
+ }
54
+
55
+ export default { TYPE, process }