@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.
- package/.eslintignore +17 -0
- package/.eslintrc.json +61 -0
- package/.gitattributes +4 -0
- package/.github/instructions/project-en_US.instructions.md +352 -0
- package/.github/workflows/release.yml +110 -0
- package/.husky/commit-msg +4 -0
- package/.husky/pre-commit +1 -0
- package/.prettierignore +1 -0
- package/.prettierrc.json +6 -0
- package/.releaserc.json +76 -0
- package/.travis.yml +6 -0
- package/.yarn/install-state.gz +0 -0
- package/.yarnrc.yml +1 -0
- package/CHANGELOG.md +134 -0
- package/CONTRIBUTING.md +271 -0
- package/LICENSE +21 -0
- package/PLAN.md +517 -0
- package/README.md +306 -0
- package/build.mjs +66 -0
- package/commitlint.config.js +25 -0
- package/dist/dxf.js +7234 -0
- package/docs/CODE_PATTERNS.md +182 -0
- package/docs/DIMENSION_SUMMARY.md +248 -0
- package/docs/DIMENSION_SUMMARY.pt-BR.md +248 -0
- package/docs/IMPLEMENTED-2D-ENTITIES.md +54 -0
- package/docs/IMPLEMENTED-2D-ENTITIES.pt-BR.md +54 -0
- package/docs/TEXT-MTEXT-DIMENSION-SUPPORT.md +241 -0
- package/docs/TEXT-MTEXT-DIMENSION-SUPPORT.pt-BR.md +169 -0
- package/docs/autocad_2012_pdf_dxf-reference_enu.md +8272 -0
- package/examples/dxf.html +36 -0
- package/examples/example.es5.js +30 -0
- package/examples/example.es6.js +30 -0
- package/examples/text-dimension-viewer.html +133 -0
- package/lib/Helper.cjs +89 -0
- package/lib/Helper.cjs.map +7 -0
- package/lib/Helper.js +59 -0
- package/lib/Helper.js.map +7 -0
- package/lib/applyTransforms.cjs +59 -0
- package/lib/applyTransforms.cjs.map +7 -0
- package/lib/applyTransforms.js +39 -0
- package/lib/applyTransforms.js.map +7 -0
- package/lib/cli.cjs +53 -0
- package/lib/cli.cjs.map +7 -0
- package/lib/cli.js +29 -0
- package/lib/cli.js.map +7 -0
- package/lib/config.cjs +30 -0
- package/lib/config.cjs.map +7 -0
- package/lib/config.js +10 -0
- package/lib/config.js.map +7 -0
- package/lib/constants.cjs +39 -0
- package/lib/constants.cjs.map +7 -0
- package/lib/constants.js +15 -0
- package/lib/constants.js.map +7 -0
- package/lib/denormalise.cjs +148 -0
- package/lib/denormalise.cjs.map +7 -0
- package/lib/denormalise.js +118 -0
- package/lib/denormalise.js.map +7 -0
- package/lib/dimensionToSVG.cjs +307 -0
- package/lib/dimensionToSVG.cjs.map +7 -0
- package/lib/dimensionToSVG.js +273 -0
- package/lib/dimensionToSVG.js.map +7 -0
- package/lib/entityToPolyline.cjs +248 -0
- package/lib/entityToPolyline.cjs.map +7 -0
- package/lib/entityToPolyline.js +213 -0
- package/lib/entityToPolyline.js.map +7 -0
- package/lib/getRGBForEntity.cjs +53 -0
- package/lib/getRGBForEntity.cjs.map +7 -0
- package/lib/getRGBForEntity.js +23 -0
- package/lib/getRGBForEntity.js.map +7 -0
- package/lib/groupEntitiesByLayer.cjs +34 -0
- package/lib/groupEntitiesByLayer.cjs.map +7 -0
- package/lib/groupEntitiesByLayer.js +14 -0
- package/lib/groupEntitiesByLayer.js.map +7 -0
- package/lib/handlers/blocks.cjs +93 -0
- package/lib/handlers/blocks.cjs.map +7 -0
- package/lib/handlers/blocks.js +63 -0
- package/lib/handlers/blocks.js.map +7 -0
- package/lib/handlers/entities.cjs +118 -0
- package/lib/handlers/entities.cjs.map +7 -0
- package/lib/handlers/entities.js +88 -0
- package/lib/handlers/entities.js.map +7 -0
- package/lib/handlers/entity/arc.cjs +82 -0
- package/lib/handlers/entity/arc.cjs.map +7 -0
- package/lib/handlers/entity/arc.js +47 -0
- package/lib/handlers/entity/arc.js.map +7 -0
- package/lib/handlers/entity/attdef.cjs +318 -0
- package/lib/handlers/entity/attdef.cjs.map +7 -0
- package/lib/handlers/entity/attdef.js +282 -0
- package/lib/handlers/entity/attdef.js.map +7 -0
- package/lib/handlers/entity/attrib.cjs +52 -0
- package/lib/handlers/entity/attrib.cjs.map +7 -0
- package/lib/handlers/entity/attrib.js +27 -0
- package/lib/handlers/entity/attrib.js.map +7 -0
- package/lib/handlers/entity/circle.cjs +73 -0
- package/lib/handlers/entity/circle.cjs.map +7 -0
- package/lib/handlers/entity/circle.js +38 -0
- package/lib/handlers/entity/circle.js.map +7 -0
- package/lib/handlers/entity/common.cjs +83 -0
- package/lib/handlers/entity/common.cjs.map +7 -0
- package/lib/handlers/entity/common.js +63 -0
- package/lib/handlers/entity/common.js.map +7 -0
- package/lib/handlers/entity/dimension.cjs +203 -0
- package/lib/handlers/entity/dimension.cjs.map +7 -0
- package/lib/handlers/entity/dimension.js +168 -0
- package/lib/handlers/entity/dimension.js.map +7 -0
- package/lib/handlers/entity/ellipse.cjs +88 -0
- package/lib/handlers/entity/ellipse.cjs.map +7 -0
- package/lib/handlers/entity/ellipse.js +53 -0
- package/lib/handlers/entity/ellipse.js.map +7 -0
- package/lib/handlers/entity/hatch.cjs +470 -0
- package/lib/handlers/entity/hatch.cjs.map +7 -0
- package/lib/handlers/entity/hatch.js +435 -0
- package/lib/handlers/entity/hatch.js.map +7 -0
- package/lib/handlers/entity/insert.cjs +106 -0
- package/lib/handlers/entity/insert.cjs.map +7 -0
- package/lib/handlers/entity/insert.js +71 -0
- package/lib/handlers/entity/insert.js.map +7 -0
- package/lib/handlers/entity/line.cjs +84 -0
- package/lib/handlers/entity/line.cjs.map +7 -0
- package/lib/handlers/entity/line.js +49 -0
- package/lib/handlers/entity/line.js.map +7 -0
- package/lib/handlers/entity/lwpolyline.cjs +82 -0
- package/lib/handlers/entity/lwpolyline.cjs.map +7 -0
- package/lib/handlers/entity/lwpolyline.js +47 -0
- package/lib/handlers/entity/lwpolyline.js.map +7 -0
- package/lib/handlers/entity/mtext.cjs +121 -0
- package/lib/handlers/entity/mtext.cjs.map +7 -0
- package/lib/handlers/entity/mtext.js +85 -0
- package/lib/handlers/entity/mtext.js.map +7 -0
- package/lib/handlers/entity/ole2Frame.cjs +98 -0
- package/lib/handlers/entity/ole2Frame.cjs.map +7 -0
- package/lib/handlers/entity/ole2Frame.js +63 -0
- package/lib/handlers/entity/ole2Frame.js.map +7 -0
- package/lib/handlers/entity/point.cjs +73 -0
- package/lib/handlers/entity/point.cjs.map +7 -0
- package/lib/handlers/entity/point.js +38 -0
- package/lib/handlers/entity/point.js.map +7 -0
- package/lib/handlers/entity/polyline.cjs +70 -0
- package/lib/handlers/entity/polyline.cjs.map +7 -0
- package/lib/handlers/entity/polyline.js +35 -0
- package/lib/handlers/entity/polyline.js.map +7 -0
- package/lib/handlers/entity/solid.cjs +101 -0
- package/lib/handlers/entity/solid.cjs.map +7 -0
- package/lib/handlers/entity/solid.js +66 -0
- package/lib/handlers/entity/solid.js.map +7 -0
- package/lib/handlers/entity/spline.cjs +109 -0
- package/lib/handlers/entity/spline.cjs.map +7 -0
- package/lib/handlers/entity/spline.js +74 -0
- package/lib/handlers/entity/spline.js.map +7 -0
- package/lib/handlers/entity/text.cjs +85 -0
- package/lib/handlers/entity/text.cjs.map +7 -0
- package/lib/handlers/entity/text.js +49 -0
- package/lib/handlers/entity/text.js.map +7 -0
- package/lib/handlers/entity/threeDFace.cjs +98 -0
- package/lib/handlers/entity/threeDFace.cjs.map +7 -0
- package/lib/handlers/entity/threeDFace.js +63 -0
- package/lib/handlers/entity/threeDFace.js.map +7 -0
- package/lib/handlers/entity/vertex.cjs +78 -0
- package/lib/handlers/entity/vertex.cjs.map +7 -0
- package/lib/handlers/entity/vertex.js +53 -0
- package/lib/handlers/entity/vertex.js.map +7 -0
- package/lib/handlers/entity/viewport.cjs +153 -0
- package/lib/handlers/entity/viewport.cjs.map +7 -0
- package/lib/handlers/entity/viewport.js +118 -0
- package/lib/handlers/entity/viewport.js.map +7 -0
- package/lib/handlers/header.cjs +92 -0
- package/lib/handlers/header.cjs.map +7 -0
- package/lib/handlers/header.js +72 -0
- package/lib/handlers/header.js.map +7 -0
- package/lib/handlers/objects.cjs +170 -0
- package/lib/handlers/objects.cjs.map +7 -0
- package/lib/handlers/objects.js +150 -0
- package/lib/handlers/objects.js.map +7 -0
- package/lib/handlers/tables.cjs +587 -0
- package/lib/handlers/tables.cjs.map +7 -0
- package/lib/handlers/tables.js +557 -0
- package/lib/handlers/tables.js.map +7 -0
- package/lib/index.cjs +60 -0
- package/lib/index.cjs.map +7 -0
- package/lib/index.js +19 -0
- package/lib/index.js.map +7 -0
- package/lib/parseString.cjs +118 -0
- package/lib/parseString.cjs.map +7 -0
- package/lib/parseString.js +88 -0
- package/lib/parseString.js.map +7 -0
- package/lib/toPolylines.cjs +69 -0
- package/lib/toPolylines.cjs.map +7 -0
- package/lib/toPolylines.js +39 -0
- package/lib/toPolylines.js.map +7 -0
- package/lib/toSVG.cjs +395 -0
- package/lib/toSVG.cjs.map +7 -0
- package/lib/toSVG.js +361 -0
- package/lib/toSVG.js.map +7 -0
- package/lib/types/arc-entity.cjs +17 -0
- package/lib/types/arc-entity.cjs.map +7 -0
- package/lib/types/arc-entity.js +1 -0
- package/lib/types/arc-entity.js.map +7 -0
- package/lib/types/base-entity.cjs +17 -0
- package/lib/types/base-entity.cjs.map +7 -0
- package/lib/types/base-entity.js +1 -0
- package/lib/types/base-entity.js.map +7 -0
- package/lib/types/circle-entity.cjs +17 -0
- package/lib/types/circle-entity.cjs.map +7 -0
- package/lib/types/circle-entity.js +1 -0
- package/lib/types/circle-entity.js.map +7 -0
- package/lib/types/common.cjs +17 -0
- package/lib/types/common.cjs.map +7 -0
- package/lib/types/common.js +1 -0
- package/lib/types/common.js.map +7 -0
- package/lib/types/dimension-entity.cjs +17 -0
- package/lib/types/dimension-entity.cjs.map +7 -0
- package/lib/types/dimension-entity.js +1 -0
- package/lib/types/dimension-entity.js.map +7 -0
- package/lib/types/dxf.cjs +17 -0
- package/lib/types/dxf.cjs.map +7 -0
- package/lib/types/dxf.js +1 -0
- package/lib/types/dxf.js.map +7 -0
- package/lib/types/ellipse-entity.cjs +17 -0
- package/lib/types/ellipse-entity.cjs.map +7 -0
- package/lib/types/ellipse-entity.js +1 -0
- package/lib/types/ellipse-entity.js.map +7 -0
- package/lib/types/entity.cjs +17 -0
- package/lib/types/entity.cjs.map +7 -0
- package/lib/types/entity.js +1 -0
- package/lib/types/entity.js.map +7 -0
- package/lib/types/handler-internal.cjs +17 -0
- package/lib/types/handler-internal.cjs.map +7 -0
- package/lib/types/handler-internal.js +1 -0
- package/lib/types/handler-internal.js.map +7 -0
- package/lib/types/handler.cjs +17 -0
- package/lib/types/handler.cjs.map +7 -0
- package/lib/types/handler.js +1 -0
- package/lib/types/handler.js.map +7 -0
- package/lib/types/hatch-entity.cjs +17 -0
- package/lib/types/hatch-entity.cjs.map +7 -0
- package/lib/types/hatch-entity.js +1 -0
- package/lib/types/hatch-entity.js.map +7 -0
- package/lib/types/helper.cjs +17 -0
- package/lib/types/helper.cjs.map +7 -0
- package/lib/types/helper.js +1 -0
- package/lib/types/helper.js.map +7 -0
- package/lib/types/index.cjs +77 -0
- package/lib/types/index.cjs.map +7 -0
- package/lib/types/index.js +29 -0
- package/lib/types/index.js.map +7 -0
- package/lib/types/insert-entity.cjs +17 -0
- package/lib/types/insert-entity.cjs.map +7 -0
- package/lib/types/insert-entity.js +1 -0
- package/lib/types/insert-entity.js.map +7 -0
- package/lib/types/layer-groups.cjs +17 -0
- package/lib/types/layer-groups.cjs.map +7 -0
- package/lib/types/layer-groups.js +1 -0
- package/lib/types/layer-groups.js.map +7 -0
- package/lib/types/line-entity.cjs +17 -0
- package/lib/types/line-entity.cjs.map +7 -0
- package/lib/types/line-entity.js +1 -0
- package/lib/types/line-entity.js.map +7 -0
- package/lib/types/mtext-entity.cjs +17 -0
- package/lib/types/mtext-entity.cjs.map +7 -0
- package/lib/types/mtext-entity.js +1 -0
- package/lib/types/mtext-entity.js.map +7 -0
- package/lib/types/ole2frame-entity.cjs +17 -0
- package/lib/types/ole2frame-entity.cjs.map +7 -0
- package/lib/types/ole2frame-entity.js +1 -0
- package/lib/types/ole2frame-entity.js.map +7 -0
- package/lib/types/options.cjs +17 -0
- package/lib/types/options.cjs.map +7 -0
- package/lib/types/options.js +1 -0
- package/lib/types/options.js.map +7 -0
- package/lib/types/point-entity.cjs +17 -0
- package/lib/types/point-entity.cjs.map +7 -0
- package/lib/types/point-entity.js +1 -0
- package/lib/types/point-entity.js.map +7 -0
- package/lib/types/polyline-entity.cjs +17 -0
- package/lib/types/polyline-entity.cjs.map +7 -0
- package/lib/types/polyline-entity.js +1 -0
- package/lib/types/polyline-entity.js.map +7 -0
- package/lib/types/polylines.cjs +17 -0
- package/lib/types/polylines.cjs.map +7 -0
- package/lib/types/polylines.js +1 -0
- package/lib/types/polylines.js.map +7 -0
- package/lib/types/solid-entity.cjs +17 -0
- package/lib/types/solid-entity.cjs.map +7 -0
- package/lib/types/solid-entity.js +1 -0
- package/lib/types/solid-entity.js.map +7 -0
- package/lib/types/spline-entity.cjs +17 -0
- package/lib/types/spline-entity.cjs.map +7 -0
- package/lib/types/spline-entity.js +1 -0
- package/lib/types/spline-entity.js.map +7 -0
- package/lib/types/svg.cjs +17 -0
- package/lib/types/svg.cjs.map +7 -0
- package/lib/types/svg.js +1 -0
- package/lib/types/svg.js.map +7 -0
- package/lib/types/tables.cjs +17 -0
- package/lib/types/tables.cjs.map +7 -0
- package/lib/types/tables.js +1 -0
- package/lib/types/tables.js.map +7 -0
- package/lib/types/text-entity.cjs +17 -0
- package/lib/types/text-entity.cjs.map +7 -0
- package/lib/types/text-entity.js +1 -0
- package/lib/types/text-entity.js.map +7 -0
- package/lib/types/util-types.cjs +17 -0
- package/lib/types/util-types.cjs.map +7 -0
- package/lib/types/util-types.js +1 -0
- package/lib/types/util-types.js.map +7 -0
- package/lib/types/vecks.d.cjs +2 -0
- package/lib/types/vecks.d.cjs.map +7 -0
- package/lib/types/vecks.d.js +1 -0
- package/lib/types/vecks.d.js.map +7 -0
- package/lib/types/viewport-entity.cjs +17 -0
- package/lib/types/viewport-entity.cjs.map +7 -0
- package/lib/types/viewport-entity.js +1 -0
- package/lib/types/viewport-entity.js.map +7 -0
- package/lib/types.cjs +23 -0
- package/lib/types.cjs.map +7 -0
- package/lib/types.js +2 -0
- package/lib/types.js.map +7 -0
- package/lib/util/bSpline.cjs +95 -0
- package/lib/util/bSpline.cjs.map +7 -0
- package/lib/util/bSpline.js +65 -0
- package/lib/util/bSpline.js.map +7 -0
- package/lib/util/colors.cjs +283 -0
- package/lib/util/colors.cjs.map +7 -0
- package/lib/util/colors.js +263 -0
- package/lib/util/colors.js.map +7 -0
- package/lib/util/createArcForLWPolyline.cjs +84 -0
- package/lib/util/createArcForLWPolyline.cjs.map +7 -0
- package/lib/util/createArcForLWPolyline.js +64 -0
- package/lib/util/createArcForLWPolyline.js.map +7 -0
- package/lib/util/dxfColorToRGB.cjs +115 -0
- package/lib/util/dxfColorToRGB.cjs.map +7 -0
- package/lib/util/dxfColorToRGB.js +90 -0
- package/lib/util/dxfColorToRGB.js.map +7 -0
- package/lib/util/insertKnot.cjs +77 -0
- package/lib/util/insertKnot.cjs.map +7 -0
- package/lib/util/insertKnot.js +57 -0
- package/lib/util/insertKnot.js.map +7 -0
- package/lib/util/logger.cjs +53 -0
- package/lib/util/logger.cjs.map +7 -0
- package/lib/util/logger.js +23 -0
- package/lib/util/logger.js.map +7 -0
- package/lib/util/rgbToColorAttribute.cjs +32 -0
- package/lib/util/rgbToColorAttribute.cjs.map +7 -0
- package/lib/util/rgbToColorAttribute.js +12 -0
- package/lib/util/rgbToColorAttribute.js.map +7 -0
- package/lib/util/rotate.cjs +30 -0
- package/lib/util/rotate.cjs.map +7 -0
- package/lib/util/rotate.js +10 -0
- package/lib/util/rotate.js.map +7 -0
- package/lib/util/round10.cjs +38 -0
- package/lib/util/round10.cjs.map +7 -0
- package/lib/util/round10.js +18 -0
- package/lib/util/round10.js.map +7 -0
- package/lib/util/toPiecewiseBezier.cjs +90 -0
- package/lib/util/toPiecewiseBezier.cjs.map +7 -0
- package/lib/util/toPiecewiseBezier.js +54 -0
- package/lib/util/toPiecewiseBezier.js.map +7 -0
- package/lib/util/transformBoundingBoxAndElement.cjs +80 -0
- package/lib/util/transformBoundingBoxAndElement.cjs.map +7 -0
- package/lib/util/transformBoundingBoxAndElement.js +60 -0
- package/lib/util/transformBoundingBoxAndElement.js.map +7 -0
- package/package.json +127 -0
- package/src/Helper.ts +71 -0
- package/src/applyTransforms.ts +54 -0
- package/src/cli.ts +41 -0
- package/src/config.ts +10 -0
- package/src/constants.ts +14 -0
- package/src/denormalise.ts +153 -0
- package/src/dimensionToSVG.ts +427 -0
- package/src/entityToPolyline.ts +338 -0
- package/src/getRGBForEntity.ts +28 -0
- package/src/groupEntitiesByLayer.ts +14 -0
- package/src/handlers/blocks.ts +65 -0
- package/src/handlers/entities.ts +111 -0
- package/src/handlers/entity/arc.ts +61 -0
- package/src/handlers/entity/attdef.ts +284 -0
- package/src/handlers/entity/attrib.ts +29 -0
- package/src/handlers/entity/circle.ts +47 -0
- package/src/handlers/entity/common.ts +79 -0
- package/src/handlers/entity/dimension.ts +217 -0
- package/src/handlers/entity/ellipse.ts +55 -0
- package/src/handlers/entity/hatch.ts +471 -0
- package/src/handlers/entity/insert.ts +73 -0
- package/src/handlers/entity/line.ts +56 -0
- package/src/handlers/entity/lwpolyline.ts +54 -0
- package/src/handlers/entity/mtext.ts +150 -0
- package/src/handlers/entity/ole2Frame.ts +64 -0
- package/src/handlers/entity/point.ts +47 -0
- package/src/handlers/entity/polyline.ts +49 -0
- package/src/handlers/entity/solid.ts +73 -0
- package/src/handlers/entity/spline.ts +103 -0
- package/src/handlers/entity/text.ts +83 -0
- package/src/handlers/entity/threeDFace.ts +69 -0
- package/src/handlers/entity/vertex.ts +55 -0
- package/src/handlers/entity/viewport.ts +119 -0
- package/src/handlers/header.ts +73 -0
- package/src/handlers/objects.ts +152 -0
- package/src/handlers/tables.ts +581 -0
- package/src/index.ts +19 -0
- package/src/parseString.ts +97 -0
- package/src/toPolylines.ts +47 -0
- package/src/toSVG.ts +518 -0
- package/src/types/README.md +91 -0
- package/src/types/arc-entity.ts +10 -0
- package/src/types/base-entity.ts +25 -0
- package/src/types/circle-entity.ts +8 -0
- package/src/types/common.ts +37 -0
- package/src/types/dimension-entity.ts +23 -0
- package/src/types/dxf.ts +64 -0
- package/src/types/ellipse-entity.ts +13 -0
- package/src/types/entity.ts +32 -0
- package/src/types/handler-internal.ts +51 -0
- package/src/types/handler.ts +10 -0
- package/src/types/hatch-entity.ts +127 -0
- package/src/types/helper.ts +12 -0
- package/src/types/index.ts +53 -0
- package/src/types/insert-entity.ts +19 -0
- package/src/types/layer-groups.ts +8 -0
- package/src/types/line-entity.ts +10 -0
- package/src/types/mtext-entity.ts +35 -0
- package/src/types/ole2frame-entity.ts +35 -0
- package/src/types/options.ts +17 -0
- package/src/types/point-entity.ts +7 -0
- package/src/types/polyline-entity.ts +20 -0
- package/src/types/polylines.ts +22 -0
- package/src/types/solid-entity.ts +9 -0
- package/src/types/spline-entity.ts +12 -0
- package/src/types/svg.ts +31 -0
- package/src/types/tables.ts +414 -0
- package/src/types/text-entity.ts +23 -0
- package/src/types/util-types.ts +27 -0
- package/src/types/vecks.d.ts +29 -0
- package/src/types/viewport-entity.ts +81 -0
- package/src/types.ts +5 -0
- package/src/util/bSpline.ts +97 -0
- package/src/util/colors.ts +266 -0
- package/src/util/createArcForLWPolyline.ts +93 -0
- package/src/util/diagram.png +0 -0
- package/src/util/dxfColorToRGB.ts +106 -0
- package/src/util/insertKnot.ts +69 -0
- package/src/util/logger.ts +23 -0
- package/src/util/rgbToColorAttribute.ts +14 -0
- package/src/util/rotate.ts +14 -0
- package/src/util/round10.ts +24 -0
- package/src/util/toPiecewiseBezier.ts +70 -0
- package/src/util/transformBoundingBoxAndElement.ts +74 -0
- package/tsconfig.json +34 -0
|
@@ -0,0 +1,414 @@
|
|
|
1
|
+
// DXF Tables parsing types
|
|
2
|
+
|
|
3
|
+
import type { Point2D, Point3D } from './common'
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Partial point for parsing (all coordinates optional)
|
|
7
|
+
*/
|
|
8
|
+
export type PartialPoint2D = Partial<Point2D>
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Partial 3D point for parsing (all coordinates optional)
|
|
12
|
+
*/
|
|
13
|
+
export type PartialPoint3D = Partial<Point3D>
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* DXF Header section result
|
|
17
|
+
*/
|
|
18
|
+
export interface ParsedHeader {
|
|
19
|
+
/** Minimum drawing extents */
|
|
20
|
+
extMin?: PartialPoint3D
|
|
21
|
+
/** Maximum drawing extents */
|
|
22
|
+
extMax?: PartialPoint3D
|
|
23
|
+
/** Drawing units for measurement (0=English, 1=Metric) */
|
|
24
|
+
measurement?: string | number
|
|
25
|
+
/** Default drawing units for AutoCAD DesignCenter blocks */
|
|
26
|
+
insUnits?: string | number
|
|
27
|
+
/** Dimension arrow size */
|
|
28
|
+
dimArrowSize?: string | number | Record<string, unknown>
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Block table entry
|
|
33
|
+
* Internal representation during DXF parsing
|
|
34
|
+
*/
|
|
35
|
+
export interface BlockInternal {
|
|
36
|
+
/** Block name */
|
|
37
|
+
name?: string | number
|
|
38
|
+
/** Base point X coordinate */
|
|
39
|
+
x?: string | number
|
|
40
|
+
/** Base point Y coordinate */
|
|
41
|
+
y?: string | number
|
|
42
|
+
/** Base point Z coordinate */
|
|
43
|
+
z?: string | number
|
|
44
|
+
/** External reference path */
|
|
45
|
+
xref?: string | number
|
|
46
|
+
/** Paper space flag */
|
|
47
|
+
paperSpace?: string | number
|
|
48
|
+
/** Layout name reference */
|
|
49
|
+
layout?: string | number
|
|
50
|
+
/** Entities within this block */
|
|
51
|
+
entities?: any[]
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Line type element definition
|
|
56
|
+
* Represents a single element in a complex line type pattern
|
|
57
|
+
*/
|
|
58
|
+
export interface LTypeElement {
|
|
59
|
+
/** Length of the element */
|
|
60
|
+
length?: string | number
|
|
61
|
+
/** Scale factors for the element */
|
|
62
|
+
scales?: Array<string | number>
|
|
63
|
+
/** Offset positions for the element */
|
|
64
|
+
offset?: Array<{ x: string | number; y: string | number }>
|
|
65
|
+
/** Shape definition code */
|
|
66
|
+
shape?: string | number
|
|
67
|
+
/** Shape number reference */
|
|
68
|
+
shapeNumber?: string | number
|
|
69
|
+
/** Style handle reference */
|
|
70
|
+
styleHandle?: string | number
|
|
71
|
+
/** Rotation angle */
|
|
72
|
+
rotation?: string | number
|
|
73
|
+
/** Text content for text elements */
|
|
74
|
+
text?: string | number
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Line Type (LTYPE) table entry
|
|
79
|
+
* Internal representation during DXF parsing
|
|
80
|
+
*/
|
|
81
|
+
export interface LTypeInternal {
|
|
82
|
+
type: string
|
|
83
|
+
/** Pattern elements that define the line type */
|
|
84
|
+
pattern: LTypeElement[]
|
|
85
|
+
/** Line type name */
|
|
86
|
+
name?: string | number
|
|
87
|
+
/** Line type description */
|
|
88
|
+
description?: string | number
|
|
89
|
+
/** Standard flag values (bit-coded) */
|
|
90
|
+
flag?: string | number
|
|
91
|
+
/** Alignment code (ASCII code for 'A' = 65) */
|
|
92
|
+
alignment?: string | number
|
|
93
|
+
/** Number of elements in the pattern */
|
|
94
|
+
elementCount?: number
|
|
95
|
+
/** Total pattern length */
|
|
96
|
+
patternLength?: string | number
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Layer table entry
|
|
101
|
+
* Internal representation during DXF parsing
|
|
102
|
+
*/
|
|
103
|
+
export interface LayerInternal {
|
|
104
|
+
type: string
|
|
105
|
+
/** Layer name */
|
|
106
|
+
name?: string | number
|
|
107
|
+
/** Line type name for this layer */
|
|
108
|
+
lineTypeName?: string | number
|
|
109
|
+
/** ACI color number */
|
|
110
|
+
colorNumber?: string | number
|
|
111
|
+
/** Standard flags (bit-coded) */
|
|
112
|
+
flags?: string | number
|
|
113
|
+
/** Plot flag */
|
|
114
|
+
plot?: boolean
|
|
115
|
+
/** Line weight enumeration */
|
|
116
|
+
lineWeightEnum?: string | number
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Text Style (STYLE) table entry
|
|
121
|
+
* Internal representation during DXF parsing
|
|
122
|
+
*/
|
|
123
|
+
export interface StyleInternal {
|
|
124
|
+
type: string
|
|
125
|
+
/** Style name */
|
|
126
|
+
name?: string | number
|
|
127
|
+
/** Line type name */
|
|
128
|
+
lineTypeName?: string | number
|
|
129
|
+
/** Fixed text height (0 if variable) */
|
|
130
|
+
fixedTextHeight?: string | number
|
|
131
|
+
/** Width factor */
|
|
132
|
+
widthFactor?: string | number
|
|
133
|
+
/** Oblique angle */
|
|
134
|
+
obliqueAngle?: string | number
|
|
135
|
+
/** Standard flags (bit-coded) */
|
|
136
|
+
flags?: string | number
|
|
137
|
+
/** Last height used */
|
|
138
|
+
lastHeightUsed?: string | number
|
|
139
|
+
/** Primary font file name */
|
|
140
|
+
primaryFontFileName?: string | number
|
|
141
|
+
/** Big font file name */
|
|
142
|
+
bigFontFileName?: string | number
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* Viewport (VPORT) table entry
|
|
147
|
+
* Internal representation during DXF parsing
|
|
148
|
+
*/
|
|
149
|
+
export interface VPortInternal {
|
|
150
|
+
type: string
|
|
151
|
+
/** Viewport name */
|
|
152
|
+
name?: string | number
|
|
153
|
+
/** Handle reference */
|
|
154
|
+
handle?: string | number
|
|
155
|
+
/** Standard flags (bit-coded) */
|
|
156
|
+
flags?: string | number
|
|
157
|
+
/** Lower-left corner coordinates */
|
|
158
|
+
lowerLeft: { x?: number; y?: number }
|
|
159
|
+
/** Upper-right corner coordinates */
|
|
160
|
+
upperRight: { x?: number; y?: number }
|
|
161
|
+
/** Center point coordinates */
|
|
162
|
+
center: { x?: number; y?: number }
|
|
163
|
+
/** Snap settings */
|
|
164
|
+
snap?: Record<string, unknown>
|
|
165
|
+
/** Snap spacing */
|
|
166
|
+
snapSpacing: { x?: number; y?: number }
|
|
167
|
+
/** Grid spacing */
|
|
168
|
+
gridSpacing: { x?: number; y?: number }
|
|
169
|
+
/** View direction from target */
|
|
170
|
+
direction: { x?: number; y?: number; z?: number }
|
|
171
|
+
/** View target point */
|
|
172
|
+
target: { x?: number; y?: number; z?: number }
|
|
173
|
+
/** View height */
|
|
174
|
+
height?: number
|
|
175
|
+
/** Snap rotation angle */
|
|
176
|
+
snapAngle?: number
|
|
177
|
+
/** View twist angle */
|
|
178
|
+
angle?: number
|
|
179
|
+
/** UCS origin X coordinate */
|
|
180
|
+
x?: number
|
|
181
|
+
/** UCS origin Y coordinate */
|
|
182
|
+
y?: number
|
|
183
|
+
/** UCS origin Z coordinate */
|
|
184
|
+
z?: number
|
|
185
|
+
/** UCS X-axis X component */
|
|
186
|
+
xAxisX?: number
|
|
187
|
+
/** UCS X-axis Y component */
|
|
188
|
+
xAxisY?: number
|
|
189
|
+
/** UCS X-axis Z component */
|
|
190
|
+
xAxisZ?: number
|
|
191
|
+
/** View elevation */
|
|
192
|
+
elevation?: number
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* Layout object entry
|
|
197
|
+
* Internal representation during DXF parsing
|
|
198
|
+
*/
|
|
199
|
+
export interface LayoutInternal {
|
|
200
|
+
/** Layout name */
|
|
201
|
+
name?: string | number
|
|
202
|
+
/** Handle reference */
|
|
203
|
+
handle?: string | number
|
|
204
|
+
/** Minimum limits X coordinate */
|
|
205
|
+
minLimitX?: number
|
|
206
|
+
/** Minimum limits Y coordinate */
|
|
207
|
+
minLimitY?: number
|
|
208
|
+
/** Maximum limits X coordinate */
|
|
209
|
+
maxLimitX?: number
|
|
210
|
+
/** Maximum limits Y coordinate */
|
|
211
|
+
maxLimitY?: number
|
|
212
|
+
/** Base point X coordinate */
|
|
213
|
+
x?: number
|
|
214
|
+
/** Base point Y coordinate */
|
|
215
|
+
y?: number
|
|
216
|
+
/** Base point Z coordinate */
|
|
217
|
+
z?: number
|
|
218
|
+
/** Minimum extents X coordinate */
|
|
219
|
+
minX?: number
|
|
220
|
+
/** Minimum extents Y coordinate */
|
|
221
|
+
minY?: number
|
|
222
|
+
/** Minimum extents Z coordinate */
|
|
223
|
+
minZ?: number
|
|
224
|
+
/** Maximum extents X coordinate */
|
|
225
|
+
maxX?: number
|
|
226
|
+
/** Maximum extents Y coordinate */
|
|
227
|
+
maxY?: number
|
|
228
|
+
/** Maximum extents Z coordinate */
|
|
229
|
+
maxZ?: number
|
|
230
|
+
/** Layout flag (PSLTSCALE or LIMCHECK) */
|
|
231
|
+
flag?: 'PSLTSCALE' | 'LIMCHECK'
|
|
232
|
+
/** Tab order */
|
|
233
|
+
tabOrder?: string | number
|
|
234
|
+
/** Elevation */
|
|
235
|
+
elevation?: number
|
|
236
|
+
/** UCS origin X coordinate */
|
|
237
|
+
ucsX?: number
|
|
238
|
+
/** UCS origin Y coordinate */
|
|
239
|
+
ucsY?: number
|
|
240
|
+
/** UCS origin Z coordinate */
|
|
241
|
+
ucsZ?: number
|
|
242
|
+
/** UCS X-axis X component */
|
|
243
|
+
ucsXaxisX?: number
|
|
244
|
+
/** UCS X-axis Y component */
|
|
245
|
+
ucsXaxisY?: number
|
|
246
|
+
/** UCS X-axis Z component */
|
|
247
|
+
ucsXaxisZ?: number
|
|
248
|
+
/** UCS Y-axis X component */
|
|
249
|
+
ucsYaxisX?: number
|
|
250
|
+
/** UCS Y-axis Y component */
|
|
251
|
+
ucsYaxisY?: number
|
|
252
|
+
/** UCS Y-axis Z component */
|
|
253
|
+
ucsYaxisZ?: number
|
|
254
|
+
/** UCS orthographic type */
|
|
255
|
+
ucsType?: 'NOT ORTHOGRAPHIC' | 'TOP' | 'BOTTOM' | 'FRONT' | 'BACK' | 'LEFT' | 'RIGHT'
|
|
256
|
+
/** Associated table record handle */
|
|
257
|
+
tableRecord?: string | number
|
|
258
|
+
/** Last active viewport handle */
|
|
259
|
+
lastActiveViewport?: string | number
|
|
260
|
+
/** Shade plot mode */
|
|
261
|
+
shadePlot?: string | number
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
/**
|
|
265
|
+
* Dimension Style (DIMSTYLE) table entry
|
|
266
|
+
* Internal representation during DXF parsing
|
|
267
|
+
*/
|
|
268
|
+
export interface DimStyleInternal {
|
|
269
|
+
type: string
|
|
270
|
+
/** Dimension style name */
|
|
271
|
+
name?: string | number
|
|
272
|
+
/** Standard flags (bit-coded) */
|
|
273
|
+
flags?: string | number
|
|
274
|
+
/** DIMPOST - General dimensioning suffix */
|
|
275
|
+
dimPost?: string | number
|
|
276
|
+
/** DIMAPOST - Alternate dimensioning suffix */
|
|
277
|
+
dimAPost?: string | number
|
|
278
|
+
/** DIMSCALE - Overall dimensioning scale factor */
|
|
279
|
+
dimScale?: number
|
|
280
|
+
/** DIMASZ - Dimensioning arrow size */
|
|
281
|
+
dimAsz?: number
|
|
282
|
+
/** DIMEXO - Extension line offset */
|
|
283
|
+
dimExo?: number
|
|
284
|
+
/** DIMDLI - Dimension line increment */
|
|
285
|
+
dimDli?: number
|
|
286
|
+
/** DIMEXE - Extension line extension */
|
|
287
|
+
dimExe?: number
|
|
288
|
+
/** DIMRND - Rounding value for dimension distances */
|
|
289
|
+
dimRnd?: number
|
|
290
|
+
/** DIMDLE - Dimension line extension */
|
|
291
|
+
dimDle?: number
|
|
292
|
+
/** DIMTP - Plus tolerance */
|
|
293
|
+
dimTp?: number
|
|
294
|
+
/** DIMTM - Minus tolerance */
|
|
295
|
+
dimTm?: number
|
|
296
|
+
/** DIMTXT - Dimensioning text height */
|
|
297
|
+
dimTxt?: number
|
|
298
|
+
/** DIMCEN - Size of center mark/lines */
|
|
299
|
+
dimCen?: number
|
|
300
|
+
/** DIMTSZ - Dimensioning tick size */
|
|
301
|
+
dimTsz?: number
|
|
302
|
+
/** DIMALTF - Alternate unit scale factor */
|
|
303
|
+
dimAltf?: number
|
|
304
|
+
/** DIMLFAC - Linear measurements scale factor */
|
|
305
|
+
dimLfac?: number
|
|
306
|
+
/** DIMTVP - Text vertical position */
|
|
307
|
+
dimTvp?: number
|
|
308
|
+
/** DIMTFAC - Dimension tolerance display scale factor */
|
|
309
|
+
dimTfac?: number
|
|
310
|
+
/** DIMGAP - Dimension line gap */
|
|
311
|
+
dimGap?: number
|
|
312
|
+
/** DIMALTRND - Determines rounding of alternate units */
|
|
313
|
+
dimAltRnd?: number
|
|
314
|
+
/** DIMTOL - Dimension tolerances generated if nonzero */
|
|
315
|
+
dimTol?: number
|
|
316
|
+
/** DIMLIM - Dimension limits generated if nonzero */
|
|
317
|
+
dimLim?: number
|
|
318
|
+
/** DIMTIH - Text inside horizontal if nonzero */
|
|
319
|
+
dimTih?: number
|
|
320
|
+
/** DIMTOH - Text outside horizontal if nonzero */
|
|
321
|
+
dimToh?: number
|
|
322
|
+
/** DIMSE1 - First extension line suppressed if nonzero */
|
|
323
|
+
dimSe1?: number
|
|
324
|
+
/** DIMSE2 - Second extension line suppressed if nonzero */
|
|
325
|
+
dimSe2?: number
|
|
326
|
+
/** DIMTAD - Text above dimension line if nonzero */
|
|
327
|
+
dimTad?: number
|
|
328
|
+
/** DIMZIN - Controls suppression of zeros for primary unit values */
|
|
329
|
+
dimZin?: number
|
|
330
|
+
/** DIMAZIN - Controls suppression of zeros for angular dimensions */
|
|
331
|
+
dimAzin?: number
|
|
332
|
+
/** DIMALT - Alternate unit dimensioning performed if nonzero */
|
|
333
|
+
dimAlt?: number
|
|
334
|
+
/** DIMALTD - Alternate unit decimal places */
|
|
335
|
+
dimAltd?: number
|
|
336
|
+
/** DIMTOFL - Force text inside extensions if nonzero */
|
|
337
|
+
dimTofl?: number
|
|
338
|
+
/** DIMSAH - Use separate arrow blocks if nonzero */
|
|
339
|
+
dimSah?: number
|
|
340
|
+
/** DIMTIX - Force text inside extensions if nonzero */
|
|
341
|
+
dimTix?: number
|
|
342
|
+
/** DIMSOXD - Suppress outside-extensions dimension lines if nonzero */
|
|
343
|
+
dimSoxd?: number
|
|
344
|
+
/** DIMCLRD - Dimension line color */
|
|
345
|
+
dimClrd?: number
|
|
346
|
+
/** DIMCLRE - Dimension extension line color */
|
|
347
|
+
dimClre?: number
|
|
348
|
+
/** DIMCLRT - Dimension text color */
|
|
349
|
+
dimClrt?: number
|
|
350
|
+
/** DIMADEC - Number of precision places for angular dimensions */
|
|
351
|
+
dimAdec?: number
|
|
352
|
+
/** DIMUNIT - Units format (obsolete, now use DIMLUNIT AND DIMFRAC) */
|
|
353
|
+
dimUnit?: number
|
|
354
|
+
/** DIMDEC - Number of decimal places for tolerance values */
|
|
355
|
+
dimDec?: number
|
|
356
|
+
/** DIMTDEC - Number of decimal places for tolerance values */
|
|
357
|
+
dimTdec?: number
|
|
358
|
+
/** DIMALTU - Units format for alternate units */
|
|
359
|
+
dimAltu?: number
|
|
360
|
+
/** DIMALTTD - Number of decimal places for alternate tolerance values */
|
|
361
|
+
dimAlttd?: number
|
|
362
|
+
/** DIMAUNIT - Angle format for angular dimensions */
|
|
363
|
+
dimAunit?: number
|
|
364
|
+
/** DIMFRAC - Fraction format */
|
|
365
|
+
dimFrac?: number
|
|
366
|
+
/** DIMLUNIT - Linear unit format */
|
|
367
|
+
dimLunit?: number
|
|
368
|
+
/** DIMDSEP - Decimal separator character */
|
|
369
|
+
dimDsep?: number
|
|
370
|
+
/** DIMTMOVE - Dimension text movement rules */
|
|
371
|
+
dimTmove?: number
|
|
372
|
+
/** DIMJUST - Horizontal dimension text position */
|
|
373
|
+
dimJust?: number
|
|
374
|
+
/** DIMSD1 - Suppression of first extension line */
|
|
375
|
+
dimSd1?: number
|
|
376
|
+
/** DIMSD2 - Suppression of second extension line */
|
|
377
|
+
dimSd2?: number
|
|
378
|
+
/** DIMTOLJ - Vertical justification for tolerance values */
|
|
379
|
+
dimTolj?: number
|
|
380
|
+
/** DIMTZIN - Controls suppression of zeros for tolerance values */
|
|
381
|
+
dimTzin?: number
|
|
382
|
+
/** DIMALTZ - Controls suppression of zeros for alternate unit values */
|
|
383
|
+
dimAltz?: number
|
|
384
|
+
/** DIMALTTZ - Controls suppression of zeros for alternate tolerance values */
|
|
385
|
+
dimAlttz?: number
|
|
386
|
+
/** DIMFIT - Fit options (obsolete, now use DIMATFIT and DIMTMOVE) */
|
|
387
|
+
dimFit?: number
|
|
388
|
+
/** DIMUPT - Cursor functionality for user-positioned text */
|
|
389
|
+
dimUpt?: number
|
|
390
|
+
/** DIMATFIT - Controls dimension text and arrow placement */
|
|
391
|
+
dimAtfit?: number
|
|
392
|
+
/** DIMTXSTY - Dimension text style (handle reference) */
|
|
393
|
+
dimTxsty?: string | number
|
|
394
|
+
/** DIMLDRBLK - Leader arrow block (handle reference) */
|
|
395
|
+
dimLdrblk?: string | number
|
|
396
|
+
/** DIMBLK - Arrow block (handle reference) */
|
|
397
|
+
dimBlk?: string | number
|
|
398
|
+
/** DIMBLK1 - First arrow block (handle reference) */
|
|
399
|
+
dimBlk1?: string | number
|
|
400
|
+
/** DIMBLK2 - Second arrow block (handle reference) */
|
|
401
|
+
dimBlk2?: string | number
|
|
402
|
+
/** DIMLWD - Dimension line lineweight */
|
|
403
|
+
dimLwd?: number
|
|
404
|
+
/** DIMLWE - Extension line lineweight */
|
|
405
|
+
dimLwe?: number
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
/**
|
|
409
|
+
* DXF Objects section result
|
|
410
|
+
*/
|
|
411
|
+
export interface ParsedObjects {
|
|
412
|
+
/** Layout objects */
|
|
413
|
+
layouts: LayoutInternal[]
|
|
414
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// TEXT entity type
|
|
2
|
+
|
|
3
|
+
import type { BaseEntity } from './base-entity'
|
|
4
|
+
|
|
5
|
+
export interface TextEntity extends BaseEntity {
|
|
6
|
+
type: 'TEXT'
|
|
7
|
+
string: string
|
|
8
|
+
x?: number
|
|
9
|
+
y?: number
|
|
10
|
+
z?: number
|
|
11
|
+
x2?: number
|
|
12
|
+
y2?: number
|
|
13
|
+
z2?: number
|
|
14
|
+
thickness?: number
|
|
15
|
+
textHeight?: number
|
|
16
|
+
relScaleX?: number
|
|
17
|
+
rotation?: number
|
|
18
|
+
obliqueAngle?: number
|
|
19
|
+
styleName?: string
|
|
20
|
+
mirror?: number
|
|
21
|
+
hAlign?: number
|
|
22
|
+
vAlign?: number
|
|
23
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// Utility-specific types
|
|
2
|
+
|
|
3
|
+
import type { Box2 } from 'vecks'
|
|
4
|
+
import type { Point2D } from './common'
|
|
5
|
+
|
|
6
|
+
/** Point for utility functions - extends Point2D with optional z */
|
|
7
|
+
export interface UtilPoint extends Point2D {
|
|
8
|
+
z?: number
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
/** Result of knot insertion operation */
|
|
12
|
+
export interface InsertKnotResult {
|
|
13
|
+
knots: number[]
|
|
14
|
+
controlPoints: UtilPoint[]
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/** Result of bezier conversion */
|
|
18
|
+
export interface BezierResult {
|
|
19
|
+
controlPoints: UtilPoint[]
|
|
20
|
+
knots: number[]
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/** Transform result with bounding box */
|
|
24
|
+
export interface TransformResult {
|
|
25
|
+
element: string
|
|
26
|
+
bbox: Box2
|
|
27
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
declare module 'vecks' {
|
|
2
|
+
export class V2 {
|
|
3
|
+
x: number
|
|
4
|
+
y: number
|
|
5
|
+
|
|
6
|
+
constructor(x: number, y: number)
|
|
7
|
+
|
|
8
|
+
add(other: V2): V2
|
|
9
|
+
sub(other: V2): V2
|
|
10
|
+
multiply(scalar: number): V2
|
|
11
|
+
norm(): V2
|
|
12
|
+
length(): number
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
interface Point {
|
|
16
|
+
x: number
|
|
17
|
+
y: number
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export class Box2 {
|
|
21
|
+
min: Point
|
|
22
|
+
max: Point
|
|
23
|
+
valid: boolean
|
|
24
|
+
|
|
25
|
+
constructor()
|
|
26
|
+
|
|
27
|
+
expandByPoint(point: Point): Box2
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
// Viewport entity type
|
|
2
|
+
|
|
3
|
+
import type { BaseEntity } from './base-entity'
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Viewport entity
|
|
7
|
+
* Represents a viewport in model space or paper space
|
|
8
|
+
*/
|
|
9
|
+
export interface ViewportEntity extends BaseEntity {
|
|
10
|
+
type: 'VIEWPORT'
|
|
11
|
+
/** Layout reference */
|
|
12
|
+
layout?: number
|
|
13
|
+
/** Viewport width */
|
|
14
|
+
width?: number
|
|
15
|
+
/** Viewport height */
|
|
16
|
+
height?: number
|
|
17
|
+
/** Snap rotation angle */
|
|
18
|
+
snapAngle?: number
|
|
19
|
+
/** View twist angle */
|
|
20
|
+
angle?: number
|
|
21
|
+
/** Viewport status field */
|
|
22
|
+
status?: string | number
|
|
23
|
+
/** Viewport ID */
|
|
24
|
+
id?: string | number
|
|
25
|
+
/** Viewport flags */
|
|
26
|
+
flags?: string | number
|
|
27
|
+
/** UCS origin X coordinate */
|
|
28
|
+
x?: number
|
|
29
|
+
/** UCS origin Y coordinate */
|
|
30
|
+
y?: number
|
|
31
|
+
/** UCS origin Z coordinate */
|
|
32
|
+
z?: number
|
|
33
|
+
/** UCS X-axis X component */
|
|
34
|
+
xAxisX?: number
|
|
35
|
+
/** UCS X-axis Y component */
|
|
36
|
+
xAxisY?: number
|
|
37
|
+
/** UCS X-axis Z component */
|
|
38
|
+
xAxisZ?: number
|
|
39
|
+
/** View elevation */
|
|
40
|
+
elevation?: number
|
|
41
|
+
/** Render mode */
|
|
42
|
+
render?: string | number
|
|
43
|
+
/** Center point in WCS */
|
|
44
|
+
center?: {
|
|
45
|
+
x?: number
|
|
46
|
+
y?: number
|
|
47
|
+
z?: number
|
|
48
|
+
}
|
|
49
|
+
/** Center point in DCS */
|
|
50
|
+
centerDCS?: {
|
|
51
|
+
x?: number
|
|
52
|
+
y?: number
|
|
53
|
+
}
|
|
54
|
+
/** Snap base point */
|
|
55
|
+
snap?: {
|
|
56
|
+
x?: number
|
|
57
|
+
y?: number
|
|
58
|
+
}
|
|
59
|
+
/** Snap spacing */
|
|
60
|
+
snapSpacing?: {
|
|
61
|
+
x?: number
|
|
62
|
+
y?: number
|
|
63
|
+
}
|
|
64
|
+
/** Grid spacing */
|
|
65
|
+
gridSpacing?: {
|
|
66
|
+
x?: number
|
|
67
|
+
y?: number
|
|
68
|
+
}
|
|
69
|
+
/** View direction from target */
|
|
70
|
+
direction?: {
|
|
71
|
+
x?: number
|
|
72
|
+
y?: number
|
|
73
|
+
z?: number
|
|
74
|
+
}
|
|
75
|
+
/** View target point */
|
|
76
|
+
target?: {
|
|
77
|
+
x?: number
|
|
78
|
+
y?: number
|
|
79
|
+
z?: number
|
|
80
|
+
}
|
|
81
|
+
}
|
package/src/types.ts
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import round10 from './round10'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Copied and ported to code standard as the b-spline library is not maintained any longer.
|
|
5
|
+
* Source:
|
|
6
|
+
* https://github.com/thibauts/b-spline
|
|
7
|
+
* Copyright (c) 2015 Thibaut Séguy <thibaut.seguy@gmail.com>
|
|
8
|
+
*/
|
|
9
|
+
export default function bSpline(
|
|
10
|
+
t: number,
|
|
11
|
+
degree: number,
|
|
12
|
+
points: number[][],
|
|
13
|
+
knots?: number[],
|
|
14
|
+
weights?: number[]
|
|
15
|
+
): number[] {
|
|
16
|
+
const n = points.length // points count
|
|
17
|
+
const d = points[0].length // point dimensionality
|
|
18
|
+
|
|
19
|
+
if (t < 0 || t > 1) {
|
|
20
|
+
throw new Error('t out of bounds [0,1]: ' + t)
|
|
21
|
+
}
|
|
22
|
+
if (degree < 1) throw new Error('degree must be at least 1 (linear)')
|
|
23
|
+
if (degree > n - 1)
|
|
24
|
+
throw new Error('degree must be less than or equal to point count - 1')
|
|
25
|
+
|
|
26
|
+
let actualWeights = weights
|
|
27
|
+
if (!actualWeights) {
|
|
28
|
+
// build weight vector of length [n]
|
|
29
|
+
actualWeights = []
|
|
30
|
+
for (let i = 0; i < n; i++) {
|
|
31
|
+
actualWeights[i] = 1
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
let actualKnots = knots
|
|
36
|
+
if (actualKnots === null || actualKnots === undefined) {
|
|
37
|
+
// build knot vector of length [n + degree + 1]
|
|
38
|
+
actualKnots = []
|
|
39
|
+
for (let i = 0; i < n + degree + 1; i++) {
|
|
40
|
+
actualKnots[i] = i
|
|
41
|
+
}
|
|
42
|
+
} else if (actualKnots.length !== n + degree + 1) {
|
|
43
|
+
throw new Error('bad knot vector length')
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
const domain = [degree, actualKnots.length - 1 - degree]
|
|
47
|
+
|
|
48
|
+
// remap t to the domain where the spline is defined
|
|
49
|
+
const low = actualKnots[domain[0]]
|
|
50
|
+
const high = actualKnots[domain[1]]
|
|
51
|
+
let tMapped = t * (high - low) + low
|
|
52
|
+
|
|
53
|
+
// Clamp to the upper & lower bounds instead of
|
|
54
|
+
// throwing an error like in the original lib
|
|
55
|
+
// https://github.com/bjnortier/dxf/issues/28
|
|
56
|
+
tMapped = Math.max(tMapped, low)
|
|
57
|
+
tMapped = Math.min(tMapped, high)
|
|
58
|
+
|
|
59
|
+
// find s (the spline segment) for the [t] value provided
|
|
60
|
+
let s
|
|
61
|
+
for (s = domain[0]; s < domain[1]; s++) {
|
|
62
|
+
if (tMapped >= actualKnots[s] && tMapped <= actualKnots[s + 1]) {
|
|
63
|
+
break
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// convert points to homogeneous coordinates
|
|
68
|
+
const v: number[][] = []
|
|
69
|
+
for (let i = 0; i < n; i++) {
|
|
70
|
+
v[i] = []
|
|
71
|
+
for (let j = 0; j < d; j++) {
|
|
72
|
+
v[i][j] = points[i][j] * actualWeights[i]
|
|
73
|
+
}
|
|
74
|
+
v[i][d] = actualWeights[i]
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// l (level) goes from 1 to the curve degree + 1
|
|
78
|
+
let alpha: number
|
|
79
|
+
for (let l = 1; l <= degree + 1; l++) {
|
|
80
|
+
// build level l of the pyramid
|
|
81
|
+
for (let i = s; i > s - degree - 1 + l; i--) {
|
|
82
|
+
alpha = (tMapped - actualKnots[i]) / (actualKnots[i + degree + 1 - l] - actualKnots[i])
|
|
83
|
+
|
|
84
|
+
// interpolate each component
|
|
85
|
+
for (let j = 0; j < d + 1; j++) {
|
|
86
|
+
v[i][j] = (1 - alpha) * v[i - 1][j] + alpha * v[i][j]
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// convert back to cartesian and return
|
|
92
|
+
const result: number[] = []
|
|
93
|
+
for (let i = 0; i < d; i++) {
|
|
94
|
+
result[i] = round10(v[s][i] / v[s][d], -9)
|
|
95
|
+
}
|
|
96
|
+
return result
|
|
97
|
+
}
|