@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,54 @@
1
+ # List of DXF 2D Entities
2
+
3
+ This list was generated based on the AutoCAD 2012 DXF reference documentation. It catalogs 2D entities, indicating whether they have already been implemented in this project.
4
+
5
+ | Entity | Implemented | Description |
6
+ | :--- | :---: | :--- |
7
+ | **ARC** | ✅ | A circular arc. |
8
+ | **CIRCLE** | ✅ | A circle. |
9
+ | **ELLIPSE** | ✅ | An ellipse or elliptical arc. |
10
+ | **HATCH** | ✅ | Fills a bounded area with a pattern, solid color, or gradient. |
11
+ | **LINE** | ✅ | A straight line segment. |
12
+ | **LWPOLYLINE** | ✅ | A lightweight 2D polyline. |
13
+ | **MTEXT** | ✅ | Multi-line text with advanced formatting. |
14
+ | **POINT** | ✅ | A point entity. |
15
+ | **POLYLINE** | ✅ | A 2D or 3D polyline (with vertices). |
16
+ | **SOLID** | ✅ | A 2D area filled with solid color. |
17
+ | **SPLINE** | ✅ | A spline curve. |
18
+ | **TEXT** | ✅ | A single line of text. |
19
+ | **DIMENSION** | ✅ | Dimension entity (linear, angular, radial, etc.). **Complete implementation**: text and styleName parsing, DIMSTYLE integration (68+ properties), rendering of 6 dimension types with extension lines, arrows, text rotation, color support (DIMCLRD, DIMCLRE, DIMCLRT) and line weights (DIMLWD, DIMLWE). See `docs/DIMENSION_IMPLEMENTATION_PLAN.md` for details. |
20
+ | **INSERT** | ✅ | A block insertion (block reference). |
21
+ | **ATTDEF** | ✅ | Attribute definition for a block. |
22
+ | **ATTRIB** | ✅ | An attribute instance attached to a block. |
23
+ | **OLE2FRAME** | ✅ | An OLE (Object Linking and Embedding) object. |
24
+ | **LEADER** | ❌ | A leader line, used for annotations. Creates a line that connects the annotation to a feature in a drawing. |
25
+ | **MLINE** | ❌ | A multi-line entity with parallel lines. |
26
+ | **RAY** | ❌ | A semi-infinite line that extends infinitely in one direction from its start point. |
27
+ | **SHAPE** | ❌ | A shape from a shape file (.shx). Inserts a named shape from a shape file that has already been loaded using the LOAD command. |
28
+ | **TOLERANCE** | ❌ | A geometric tolerance. Creates geometric tolerances contained in a feature control frame. |
29
+ | **TRACE** | ❌ | A solid 2D line with width. |
30
+ | **WIPEOUT** | ❌ | An area that masks other objects with the background color. |
31
+ | **XLINE** | ❌ | An infinite construction line. |
32
+
33
+ ---
34
+
35
+ ## 3D Entities (For Reference)
36
+
37
+ | Entity | Implemented | Description |
38
+ | :--- | :---: | :--- |
39
+ | **3DFACE** | ✅ | A three-dimensional face. |
40
+ | **3DSOLID** | ❌ | A 3D ACIS solid object. Displays 3D solids as wireframe or shaded objects. |
41
+ | **BODY** | ❌ | A 3D ACIS body object. |
42
+ | **HELIX** | ❌ | A 3D helix. |
43
+ | **IMAGE** | ❌ | A raster image. |
44
+ | **LIGHT** | ❌ | A light source. |
45
+ | **MESH** | ❌ | A 3D mesh. |
46
+ | **REGION** | ❌ | A closed 2D area (region). |
47
+ | **SECTION** | ❌ | A section object. |
48
+ | **SUN** | ❌ | A sun light object. |
49
+ | **SURFACE** | ❌ | A 3D surface (extruded, loft, etc.). |
50
+ | **TABLE** | ❌ | A table entity. |
51
+ | **UNDERLAY** | ❌ | An underlay (e.g., DWF, DGN, PDF). |
52
+ | **VIEWPORT** | ✅ | A viewport in paper space. |
53
+
54
+ *Note: The `POLYLINE` implementation may include 3D vertices, but the entity itself is often used for 2D shapes.*
@@ -0,0 +1,54 @@
1
+ # Lista de Entidades DXF 2D
2
+
3
+ Esta lista foi gerada com base na documentação de referência do AutoCAD 2012 DXF. Ela cataloga as entidades 2D, indicando se já foram implementadas neste projeto.
4
+
5
+ | Entidade | Implementado | Descrição |
6
+ | :--- | :---: | :--- |
7
+ | **ARC** | ✅ | Um arco circular. |
8
+ | **CIRCLE** | ✅ | Um círculo. |
9
+ | **ELLIPSE** | ✅ | Uma elipse ou um arco elíptico. |
10
+ | **HATCH** | ✅ | Preenche uma área delimitada com um padrão, cor sólida ou gradiente. |
11
+ | **LINE** | ✅ | Um segmento de linha reta. |
12
+ | **LWPOLYLINE** | ✅ | Uma polilinha 2D leve (lightweight). |
13
+ | **MTEXT** | ✅ | Texto de múltiplas linhas com formatação avançada. |
14
+ | **POINT** | ✅ | Uma entidade de ponto. |
15
+ | **POLYLINE** | ✅ | Uma polilinha 2D ou 3D (com vértices). |
16
+ | **SOLID** | ✅ | Uma área 2D preenchida com cor sólida. |
17
+ | **SPLINE** | ✅ | Uma curva spline. |
18
+ | **TEXT** | ✅ | Uma única linha de texto. |
19
+ | **DIMENSION** | ✅ | Entidade de dimensão (linear, angular, radial, etc.). **Implementação completa**: parsing de text e styleName, integração com DIMSTYLE (68+ propriedades), renderização de 6 tipos de dimensão com extension lines, setas, rotação de texto, suporte a cores (DIMCLRD, DIMCLRE, DIMCLRT) e espessuras (DIMLWD, DIMLWE). Ver `docs/DIMENSION_IMPLEMENTATION_PLAN.md` para detalhes. |
20
+ | **INSERT** | ✅ | Uma inserção de bloco (block reference). |
21
+ | **ATTDEF** | ✅ | Definição de atributo para um bloco. |
22
+ | **ATTRIB** | ✅ | Uma instância de atributo anexada a um bloco. |
23
+ | **OLE2FRAME** | ✅ | Um objeto OLE (Object Linking and Embedding). |
24
+ | **LEADER** | ❌ | Uma linha de chamada, usada para anotações. Cria uma linha que conecta a anotação a um recurso em um desenho. |
25
+ | **MLINE** | ❌ | Uma entidade de múltiplas linhas paralelas. |
26
+ | **RAY** | ❌ | Uma linha semi-infinita que se estende infinitamente em uma direção a partir de seu ponto inicial. |
27
+ | **SHAPE** | ❌ | Uma forma de um arquivo de formas (.shx). Insere uma forma nomeada a partir de um arquivo de forma que já tenha sido carregado usando o comando LOAD. |
28
+ | **TOLERANCE** | ❌ | Uma tolerância geométrica. Cria tolerâncias geométricas contidas em um quadro de controle de recurso. |
29
+ | **TRACE** | ❌ | Uma linha 2D sólida com espessura. |
30
+ | **WIPEOUT** | ❌ | Uma área que mascara outros objetos com a cor de fundo. |
31
+ | **XLINE** | ❌ | Uma linha de construção infinita. |
32
+
33
+ ---
34
+
35
+ ## Entidades 3D (Para Referência)
36
+
37
+ | Entidade | Implementado | Descrição |
38
+ | :--- | :---: | :--- |
39
+ | **3DFACE** | ✅ | Uma face tridimensional. |
40
+ | **3DSOLID** | ❌ | Um objeto sólido ACIS 3D. Exibe sólidos 3D como objetos de arame ou sombreados. |
41
+ | **BODY** | ❌ | Um objeto de corpo ACIS 3D. |
42
+ | **HELIX** | ❌ | Uma hélice 3D. |
43
+ | **IMAGE** | ❌ | Uma imagem raster. |
44
+ | **LIGHT** | ❌ | Uma fonte de luz. |
45
+ | **MESH** | ❌ | Uma malha 3D. |
46
+ | **REGION** | ❌ | Uma área 2D fechada (região). |
47
+ | **SECTION** | ❌ | Um objeto de seção. |
48
+ | **SUN** | ❌ | Um objeto de luz solar. |
49
+ | **SURFACE** | ❌ | Uma superfície 3D (extrudada, loft, etc.). |
50
+ | **TABLE** | ❌ | Uma entidade de tabela. |
51
+ | **UNDERLAY** | ❌ | Uma subjacência (ex: DWF, DGN, PDF). |
52
+ | **VIEWPORT** | ✅ | Uma viewport em paper space. |
53
+
54
+ *Observação: A implementação de `POLYLINE` pode incluir vértices 3D, mas a entidade em si é frequentemente usada para formas 2D.*
@@ -0,0 +1,241 @@
1
+ # TEXT, MTEXT and DIMENSION - SVG Rendering Support# TEXT, MTEXT e DIMENSION - Suporte de Renderização SVG
2
+
3
+ ## Summary of Changes## Resumo das Mudanças
4
+
5
+ Added complete support for rendering TEXT, MTEXT, and DIMENSION entities in SVG.Adicionado suporte completo para renderização de entidades TEXT, MTEXT e DIMENSION em SVG.
6
+
7
+ ## Supported Entities## Entidades Suportadas
8
+
9
+ ### TEXT### TEXT
10
+
11
+ - Basic text rendering- Renderização básica de texto
12
+
13
+ - Rotation support (code 50)- Suporte para rotação (código 50)
14
+
15
+ - Positioning support (codes 10, 20, 30)- Suporte para posicionamento (códigos 10, 20, 30)
16
+
17
+ - Text height support (code 40)- Suporte para altura do texto (código 40)
18
+
19
+ - Horizontal and vertical alignment (codes 72, 73)- Alinhamento horizontal e vertical (códigos 72, 73)
20
+
21
+ ### MTEXT### MTEXT
22
+
23
+ - Multi-line text rendering- Renderização de texto multilinha
24
+
25
+ - Rotation support via X-axis direction (codes 11, 21)- Suporte para rotação via direção do eixo X (códigos 11, 21)
26
+
27
+ - Reference rectangle width support (code 41)- Suporte para largura do retângulo de referência (código 41)
28
+
29
+ - Nominal text height (code 40)- Altura nominal do texto (código 40)
30
+
31
+ - Attachment point (code 71)- Ponto de fixação (código 71)
32
+
33
+ ### DIMENSION### DIMENSION
34
+
35
+ Support for all dimension types:Suporte para todos os tipos de dimensão:
36
+
37
+ #### Type 0 - Rotated, horizontal or vertical#### Tipo 0 - Rotated, horizontal ou vertical
38
+
39
+ - Extension lines- Linhas de extensão
40
+
41
+ - Dimension line- Linha de dimensão
42
+
43
+ - Dimension text- Texto de dimensão
44
+
45
+ #### Type 1 - Aligned#### Tipo 1 - Aligned (alinhada)
46
+
47
+ - Dimension line aligned with measured points- Linha de dimensão alinhada com os pontos medidos
48
+
49
+ - Perpendicular extension lines- Linhas de extensão perpendiculares
50
+
51
+ #### Type 2 - Angular#### Tipo 2 - Angular (angular)
52
+
53
+ - Angle dimension between two lines- Dimensão de ângulo entre duas linhas
54
+
55
+ #### Type 3 - Diameter#### Tipo 3 - Diameter (diâmetro)
56
+
57
+ - Radial dimension line for diameters- Linha de dimensão radial para diâmetros
58
+
59
+ - Text with diameter symbol- Texto com símbolo de diâmetro
60
+
61
+ #### Type 4 - Radius#### Tipo 4 - Radius (raio)
62
+
63
+ - Radial dimension line- Linha de dimensão radial
64
+
65
+ - Text with R prefix- Texto com prefixo R
66
+
67
+ #### Type 5 - Angular 3 point#### Tipo 5 - Angular 3 point (angular 3 pontos)
68
+
69
+ - Angular dimension defined by 3 points- Dimensão angular definida por 3 pontos
70
+
71
+ #### Type 6 - Ordinate#### Tipo 6 - Ordinate (ordenada)
72
+
73
+ - X or Y coordinate dimension- Dimensão de coordenada X ou Y
74
+
75
+ - Simple extension line- Linha de extensão simples
76
+
77
+ ## Implemented DXF Codes## Códigos DXF Implementados
78
+
79
+ ### TEXT
80
+
81
+ | Code | Description || Código | Descrição |
82
+
83
+ |------|-------------||--------|-----------|
84
+
85
+ | 1 | Text content || 1 | Conteúdo do texto |
86
+
87
+ | 10, 20, 30 | Insertion point (x, y, z) || 10, 20, 30 | Ponto de inserção (x, y, z) |
88
+
89
+ | 11, 21, 31 | Second alignment point || 11, 21, 31 | Segundo ponto de alinhamento |
90
+
91
+ | 40 | Text height || 40 | Altura do texto |
92
+
93
+ | 41 | Relative X scale || 41 | Escala relativa X |
94
+
95
+ | 50 | Rotation in degrees || 50 | Rotação em graus |
96
+
97
+ | 51 | Oblique angle || 51 | Ângulo oblíquo |
98
+
99
+ | 72 | Horizontal alignment || 72 | Alinhamento horizontal |
100
+
101
+ | 73 | Vertical alignment || 73 | Alinhamento vertical |
102
+
103
+ ### MTEXT### MTEXT
104
+
105
+ | Code | Description || Código | Descrição |
106
+
107
+ |------|-------------||--------|-----------|
108
+
109
+ | 1, 3 | Text content || 1, 3 | Conteúdo do texto |
110
+
111
+ | 10, 20, 30 | Insertion point || 10, 20, 30 | Ponto de inserção |
112
+
113
+ | 11, 21, 31 | X-axis direction || 11, 21, 31 | Direção do eixo X |
114
+
115
+ | 40 | Nominal text height || 40 | Altura nominal do texto |
116
+
117
+ | 41 | Reference rectangle width || 41 | Largura do retângulo de referência |
118
+
119
+ | 71 | Attachment point || 71 | Ponto de fixação |
120
+
121
+ | 72 | Drawing direction || 72 | Direção do desenho |
122
+
123
+ ### DIMENSION### DIMENSION
124
+
125
+ | Code | Description || Código | Descrição |
126
+
127
+ |------|-------------||--------|-----------|
128
+
129
+ | 2 | Block name || 2 | Nome do bloco |
130
+
131
+ | 10, 20, 30 | Definition point || 10, 20, 30 | Ponto de definição |
132
+
133
+ | 11, 21, 31 | Text midpoint || 11, 21, 31 | Ponto médio do texto |
134
+
135
+ | 13, 23, 33 | Measurement start point || 13, 23, 33 | Ponto inicial da medida |
136
+
137
+ | 14, 24, 34 | Measurement end point || 14, 24, 34 | Ponto final da medida |
138
+
139
+ | 50 | Rotation angle || 50 | Ângulo de rotação |
140
+
141
+ | 70 | Dimension type || 70 | Tipo de dimensão |
142
+
143
+ ## Usage Example## Exemplo de Uso
144
+
145
+ ```javascript```javascript
146
+
147
+ import { Helper } from '@linkiez/dxf-renew'
148
+
149
+ const dxfString = `... DXF content ...`const dxfString = `... conteúdo DXF ...`
150
+
151
+ const helper = new Helper(dxfString)const helper = new Helper(dxfString)
152
+
153
+ // Convert to SVG (now includes TEXT, MTEXT and DIMENSION)// Converter para SVG (agora inclui TEXT, MTEXT e DIMENSION)
154
+
155
+ const svg = helper.toSVG()const svg = helper.toSVG()
156
+
157
+ ``````
158
+
159
+
160
+
161
+ ## Tests## Testes
162
+
163
+
164
+
165
+ Unit tests have been added in `test/unit/text-mtext-dimension-rendering.js` that verify:Foram adicionados testes unitários em `test/unit/text-mtext-dimension-rendering.js` que verificam:
166
+
167
+
168
+
169
+ - Basic TEXT rendering- Renderização básica de TEXT
170
+
171
+ - Basic MTEXT rendering- Renderização básica de MTEXT
172
+
173
+ - DIMENSION rendering- Renderização de DIMENSION
174
+
175
+ - TEXT rotation- Rotação de TEXT
176
+
177
+ - MTEXT rotation via X-axis direction- Rotação de MTEXT via direção do eixo X
178
+
179
+ - Different DIMENSION types- Diferentes tipos de DIMENSION
180
+
181
+
182
+
183
+ Run tests with:Execute os testes com:
184
+
185
+
186
+
187
+ ```bash```bash
188
+
189
+ npm testnpm test
190
+
191
+ ``````
192
+
193
+ ## Visual Example## Exemplo Visual
194
+
195
+ An interactive visual example is available at `examples/text-dimension-viewer.html`.Um exemplo visual interativo está disponível em `examples/text-dimension-viewer.html`.
196
+
197
+ To view:Para visualizar:
198
+
199
+ 1. Run `npm run build` to generate the bundle1. Execute `npm run build` para gerar o bundle
200
+
201
+ 2. Open `examples/text-dimension-viewer.html` in a browser2. Abra `examples/text-dimension-viewer.html` em um navegador
202
+
203
+ 3. Load a DXF file or use the provided test files3. Carregue um arquivo DXF ou use os arquivos de teste fornecidos
204
+
205
+ ## Known Limitations## Limitações Conhecidas
206
+
207
+ 1. **TEXT and MTEXT**:1. **TEXT e MTEXT**:
208
+
209
+ - Font is not respected (uses browser default font) - Fonte não é respeitada (usa fonte padrão do navegador)
210
+
211
+ - Complex MTEXT formatting is not fully supported - Formatação complexa de MTEXT não é totalmente suportada
212
+
213
+ - Bounding box calculation is approximate - Cálculo de bounding box é aproximado
214
+
215
+ 2. **DIMENSION**:2. **DIMENSION**:
216
+
217
+ - Custom dimension blocks are not rendered - Blocos de dimensão personalizados não são renderizados
218
+
219
+ - Only basic dimension lines are drawn - Apenas linhas básicas de dimensão são desenhadas
220
+
221
+ - Dimension text is not displayed (needs to be extracted from block) - Texto de dimensão não é exibido (precisa ser extraído do bloco)
222
+
223
+ - Arrows are not rendered - Setas não são renderizadas
224
+
225
+ ## Modified Files## Arquivos Modificados
226
+
227
+ - `src/toSVG.js`: Added `text()`, `mtext()`, `dimension()` and `createDimensionPaths()` functions- `src/toSVG.js`: Adicionadas funções `text()`, `mtext()`, `dimension()` e `createDimensionPaths()`
228
+
229
+ - `test/unit/text-mtext-dimension-rendering.js`: New unit tests- `test/unit/text-mtext-dimension-rendering.js`: Novos testes unitários
230
+
231
+ - `examples/text-dimension-viewer.html`: Interactive visual example
232
+
233
+ ## Next Steps
234
+
235
+ To further improve support:
236
+
237
+ 1. Implement dimension arrow rendering
238
+ 2. Extract and render dimension text from blocks
239
+ 3. Support custom text styles
240
+ 4. Improve bounding box calculation for text
241
+ 5. Support advanced MTEXT formatting (colors, bold, etc.)
@@ -0,0 +1,169 @@
1
+ # TEXT, MTEXT e DIMENSION - Suporte de Renderização SVG
2
+
3
+ ## Resumo das Mudanças
4
+
5
+ Adicionado suporte completo para renderização de entidades TEXT, MTEXT e DIMENSION em SVG.
6
+
7
+ ## Entidades Suportadas
8
+
9
+ ### TEXT
10
+
11
+ - Renderização básica de texto
12
+ - Suporte para rotação (código 50)
13
+ - Suporte para posicionamento (códigos 10, 20, 30)
14
+ - Suporte para altura do texto (código 40)
15
+ - Alinhamento horizontal e vertical (códigos 72, 73)
16
+
17
+ ### MTEXT
18
+
19
+ - Renderização de texto multilinha
20
+ - Suporte para rotação via direção do eixo X (códigos 11, 21)
21
+ - Suporte para largura do retângulo de referência (código 41)
22
+ - Altura nominal do texto (código 40)
23
+ - Ponto de fixação (código 71)
24
+
25
+ ### DIMENSION
26
+
27
+ Suporte para todos os tipos de dimensão:
28
+
29
+ #### Tipo 0 - Rotated, horizontal ou vertical
30
+
31
+ - Linhas de extensão
32
+ - Linha de dimensão
33
+ - Texto de dimensão
34
+
35
+ #### Tipo 1 - Aligned (alinhada)
36
+
37
+ - Linha de dimensão alinhada com os pontos medidos
38
+ - Linhas de extensão perpendiculares
39
+
40
+ #### Tipo 2 - Angular (angular)
41
+
42
+ - Dimensão de ângulo entre duas linhas
43
+
44
+ #### Tipo 3 - Diameter (diâmetro)
45
+
46
+ - Linha de dimensão radial para diâmetros
47
+ - Texto com símbolo de diâmetro
48
+
49
+ #### Tipo 4 - Radius (raio)
50
+
51
+ - Linha de dimensão radial
52
+ - Texto com prefixo R
53
+
54
+ #### Tipo 5 - Angular 3 point (angular 3 pontos)
55
+
56
+ - Dimensão angular definida por 3 pontos
57
+
58
+ #### Tipo 6 - Ordinate (ordenada)
59
+
60
+ - Dimensão de coordenada X ou Y
61
+ - Linha de extensão simples
62
+
63
+ ## Códigos DXF Implementados
64
+
65
+ ### TEXT
66
+
67
+ | Código | Descrição |
68
+ |--------|-----------|
69
+ | 1 | Conteúdo do texto |
70
+ | 10, 20, 30 | Ponto de inserção (x, y, z) |
71
+ | 11, 21, 31 | Segundo ponto de alinhamento |
72
+ | 40 | Altura do texto |
73
+ | 41 | Escala relativa X |
74
+ | 50 | Rotação em graus |
75
+ | 51 | Ângulo oblíquo |
76
+ | 72 | Alinhamento horizontal |
77
+ | 73 | Alinhamento vertical |
78
+
79
+ ### MTEXT
80
+
81
+ | Código | Descrição |
82
+ |--------|-----------|
83
+ | 1, 3 | Conteúdo do texto |
84
+ | 10, 20, 30 | Ponto de inserção |
85
+ | 11, 21, 31 | Direção do eixo X |
86
+ | 40 | Altura nominal do texto |
87
+ | 41 | Largura do retângulo de referência |
88
+ | 71 | Ponto de fixação |
89
+ | 72 | Direção do desenho |
90
+
91
+ ### DIMENSION
92
+
93
+ | Código | Descrição |
94
+ |--------|-----------|
95
+ | 2 | Nome do bloco |
96
+ | 10, 20, 30 | Ponto de definição |
97
+ | 11, 21, 31 | Ponto médio do texto |
98
+ | 13, 23, 33 | Ponto inicial da medida |
99
+ | 14, 24, 34 | Ponto final da medida |
100
+ | 50 | Ângulo de rotação |
101
+ | 70 | Tipo de dimensão |
102
+
103
+ ## Exemplo de Uso
104
+
105
+ ```javascript
106
+ import { Helper } from '@linkiez/dxf-renew'
107
+
108
+ const dxfString = `... conteúdo DXF ...`
109
+ const helper = new Helper(dxfString)
110
+
111
+ // Converter para SVG (agora inclui TEXT, MTEXT e DIMENSION)
112
+ const svg = helper.toSVG()
113
+ ```
114
+
115
+ ## Testes
116
+
117
+ Foram adicionados testes unitários em `test/unit/text-mtext-dimension-rendering.js` que verificam:
118
+
119
+ - Renderização básica de TEXT
120
+ - Renderização básica de MTEXT
121
+ - Renderização de DIMENSION
122
+ - Rotação de TEXT
123
+ - Rotação de MTEXT via direção do eixo X
124
+ - Diferentes tipos de DIMENSION
125
+
126
+ Execute os testes com:
127
+
128
+ ```bash
129
+ npm test
130
+ ```
131
+
132
+ ## Exemplo Visual
133
+
134
+ Um exemplo visual interativo está disponível em `examples/text-dimension-viewer.html`.
135
+
136
+ Para visualizar:
137
+
138
+ 1. Execute `npm run build` para gerar o bundle
139
+ 2. Abra `examples/text-dimension-viewer.html` em um navegador
140
+ 3. Carregue um arquivo DXF ou use os arquivos de teste fornecidos
141
+
142
+ ## Limitações Conhecidas
143
+
144
+ 1. **TEXT e MTEXT**:
145
+ - Fonte não é respeitada (usa fonte padrão do navegador)
146
+ - Formatação complexa de MTEXT não é totalmente suportada
147
+ - Cálculo de bounding box é aproximado
148
+
149
+ 2. **DIMENSION**:
150
+ - Blocos de dimensão personalizados não são renderizados
151
+ - Apenas linhas básicas de dimensão são desenhadas
152
+ - Texto de dimensão não é exibido (precisa ser extraído do bloco)
153
+ - Setas não são renderizadas
154
+
155
+ ## Arquivos Modificados
156
+
157
+ - `src/toSVG.js`: Adicionadas funções `text()`, `mtext()`, `dimension()` e `createDimensionPaths()`
158
+ - `test/unit/text-mtext-dimension-rendering.js`: Novos testes unitários
159
+ - `examples/text-dimension-viewer.html`: Exemplo visual interativo
160
+
161
+ ## Próximos Passos
162
+
163
+ Para melhorar ainda mais o suporte:
164
+
165
+ 1. Implementar renderização de setas de dimensão
166
+ 2. Extrair e renderizar texto de dimensão dos blocos
167
+ 3. Suportar estilos de texto personalizados
168
+ 4. Melhorar cálculo de bounding box para texto
169
+ 5. Suportar formatação avançada de MTEXT (cores, negrito, etc.)