@linkiez/dxf-renew 7.0.0 → 7.2.0
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/.eslintrc.json +1 -16
- package/.github/instructions/code-patterns.instructions.md +1 -1
- package/.github/instructions/exdxf.instruction.md +161 -0
- package/.github/instructions/tdd.instructions.md +271 -0
- package/.yarn/install-state.gz +0 -0
- package/ARCHITECTURE.md +163 -0
- package/CHANGELOG.md +39 -0
- package/CONTRIBUTING.md +16 -14
- package/README.md +113 -16
- package/{PLAN.md → ROADMAP.md} +244 -102
- package/dist/dxf.js +2212 -454
- package/docs/EZDXF_REFERENCE_SITEMAP.md +55 -0
- package/docs/FIXTURE_VALIDATION_EZDXF.md +62 -0
- package/lib/Helper.cjs +6 -2
- package/lib/Helper.cjs.map +3 -3
- package/lib/Helper.js +6 -2
- package/lib/Helper.js.map +2 -2
- package/lib/denormalise.cjs +131 -91
- package/lib/denormalise.cjs.map +2 -2
- package/lib/denormalise.js +131 -91
- package/lib/denormalise.js.map +2 -2
- package/lib/dimensionToSVG.cjs +318 -53
- package/lib/dimensionToSVG.cjs.map +3 -3
- package/lib/dimensionToSVG.js +316 -52
- package/lib/dimensionToSVG.js.map +2 -2
- package/lib/entityToPolyline.cjs +95 -0
- package/lib/entityToPolyline.cjs.map +3 -3
- package/lib/entityToPolyline.js +95 -0
- package/lib/entityToPolyline.js.map +2 -2
- package/lib/handlers/entities.cjs +111 -27
- package/lib/handlers/entities.cjs.map +3 -3
- package/lib/handlers/entities.js +111 -27
- package/lib/handlers/entities.js.map +3 -3
- package/lib/handlers/entity/dgnUnderlay.cjs +106 -0
- package/lib/handlers/entity/dgnUnderlay.cjs.map +7 -0
- package/lib/handlers/entity/dgnUnderlay.js +71 -0
- package/lib/handlers/entity/dgnUnderlay.js.map +7 -0
- package/lib/handlers/entity/dimension.cjs +24 -0
- package/lib/handlers/entity/dimension.cjs.map +2 -2
- package/lib/handlers/entity/dimension.js +24 -0
- package/lib/handlers/entity/dimension.js.map +2 -2
- package/lib/handlers/entity/dwfUnderlay.cjs +106 -0
- package/lib/handlers/entity/dwfUnderlay.cjs.map +7 -0
- package/lib/handlers/entity/dwfUnderlay.js +71 -0
- package/lib/handlers/entity/dwfUnderlay.js.map +7 -0
- package/lib/handlers/entity/image.cjs +123 -0
- package/lib/handlers/entity/image.cjs.map +7 -0
- package/lib/handlers/entity/image.js +88 -0
- package/lib/handlers/entity/image.js.map +7 -0
- package/lib/handlers/entity/leader.cjs +148 -0
- package/lib/handlers/entity/leader.cjs.map +7 -0
- package/lib/handlers/entity/leader.js +113 -0
- package/lib/handlers/entity/leader.js.map +7 -0
- package/lib/handlers/entity/mleader.cjs +69 -0
- package/lib/handlers/entity/mleader.cjs.map +7 -0
- package/lib/handlers/entity/mleader.js +34 -0
- package/lib/handlers/entity/mleader.js.map +7 -0
- package/lib/handlers/entity/mline.cjs +91 -0
- package/lib/handlers/entity/mline.cjs.map +7 -0
- package/lib/handlers/entity/mline.js +56 -0
- package/lib/handlers/entity/mline.js.map +7 -0
- package/lib/handlers/entity/oleframe.cjs +98 -0
- package/lib/handlers/entity/oleframe.cjs.map +7 -0
- package/lib/handlers/entity/oleframe.js +63 -0
- package/lib/handlers/entity/oleframe.js.map +7 -0
- package/lib/handlers/entity/pdfUnderlay.cjs +106 -0
- package/lib/handlers/entity/pdfUnderlay.cjs.map +7 -0
- package/lib/handlers/entity/pdfUnderlay.js +71 -0
- package/lib/handlers/entity/pdfUnderlay.js.map +7 -0
- package/lib/handlers/entity/ray.cjs +81 -0
- package/lib/handlers/entity/ray.cjs.map +7 -0
- package/lib/handlers/entity/ray.js +46 -0
- package/lib/handlers/entity/ray.js.map +7 -0
- package/lib/handlers/entity/region.cjs +67 -0
- package/lib/handlers/entity/region.cjs.map +7 -0
- package/lib/handlers/entity/region.js +32 -0
- package/lib/handlers/entity/region.js.map +7 -0
- package/lib/handlers/entity/shape.cjs +95 -0
- package/lib/handlers/entity/shape.cjs.map +7 -0
- package/lib/handlers/entity/shape.js +60 -0
- package/lib/handlers/entity/shape.js.map +7 -0
- package/lib/handlers/entity/table.cjs +71 -0
- package/lib/handlers/entity/table.cjs.map +7 -0
- package/lib/handlers/entity/table.js +36 -0
- package/lib/handlers/entity/table.js.map +7 -0
- package/lib/handlers/entity/tolerance.cjs +90 -0
- package/lib/handlers/entity/tolerance.cjs.map +7 -0
- package/lib/handlers/entity/tolerance.js +55 -0
- package/lib/handlers/entity/tolerance.js.map +7 -0
- package/lib/handlers/entity/trace.cjs +101 -0
- package/lib/handlers/entity/trace.cjs.map +7 -0
- package/lib/handlers/entity/trace.js +66 -0
- package/lib/handlers/entity/trace.js.map +7 -0
- package/lib/handlers/entity/wipeout.cjs +122 -0
- package/lib/handlers/entity/wipeout.cjs.map +7 -0
- package/lib/handlers/entity/wipeout.js +87 -0
- package/lib/handlers/entity/wipeout.js.map +7 -0
- package/lib/handlers/entity/xline.cjs +81 -0
- package/lib/handlers/entity/xline.cjs.map +7 -0
- package/lib/handlers/entity/xline.js +46 -0
- package/lib/handlers/entity/xline.js.map +7 -0
- package/lib/handlers/objects.cjs +299 -136
- package/lib/handlers/objects.cjs.map +2 -2
- package/lib/handlers/objects.js +299 -136
- package/lib/handlers/objects.js.map +2 -2
- package/lib/handlers/tables.cjs +96 -17
- package/lib/handlers/tables.cjs.map +2 -2
- package/lib/handlers/tables.js +96 -17
- package/lib/handlers/tables.js.map +2 -2
- package/lib/index.cjs +5 -2
- package/lib/index.cjs.map +3 -3
- package/lib/index.js +18 -16
- package/lib/index.js.map +3 -3
- package/lib/toJson.cjs +29 -0
- package/lib/toJson.cjs.map +7 -0
- package/lib/toJson.js +9 -0
- package/lib/toJson.js.map +7 -0
- package/lib/toSVG.cjs +105 -11
- package/lib/toSVG.cjs.map +3 -3
- package/lib/toSVG.js +106 -12
- package/lib/toSVG.js.map +2 -2
- package/lib/types/dimension-entity.cjs.map +1 -1
- package/lib/types/entity.cjs.map +1 -1
- package/lib/types/helper.cjs.map +1 -1
- package/lib/types/image-entity.cjs +17 -0
- package/lib/types/image-entity.cjs.map +7 -0
- package/lib/types/image-entity.js +1 -0
- package/lib/types/image-entity.js.map +7 -0
- package/lib/types/index.cjs +28 -0
- package/lib/types/index.cjs.map +2 -2
- package/lib/types/index.js +14 -0
- package/lib/types/index.js.map +2 -2
- package/lib/types/leader-entity.cjs +17 -0
- package/lib/types/leader-entity.cjs.map +7 -0
- package/lib/types/leader-entity.js +1 -0
- package/lib/types/leader-entity.js.map +7 -0
- package/lib/types/mleader-entity.cjs +17 -0
- package/lib/types/mleader-entity.cjs.map +7 -0
- package/lib/types/mleader-entity.js +1 -0
- package/lib/types/mleader-entity.js.map +7 -0
- package/lib/types/mline-entity.cjs +17 -0
- package/lib/types/mline-entity.cjs.map +7 -0
- package/lib/types/mline-entity.js +1 -0
- package/lib/types/mline-entity.js.map +7 -0
- package/lib/types/oleframe-entity.cjs +17 -0
- package/lib/types/oleframe-entity.cjs.map +7 -0
- package/lib/types/oleframe-entity.js +1 -0
- package/lib/types/oleframe-entity.js.map +7 -0
- package/lib/types/options.cjs.map +1 -1
- package/lib/types/ray-entity.cjs +17 -0
- package/lib/types/ray-entity.cjs.map +7 -0
- package/lib/types/ray-entity.js +1 -0
- package/lib/types/ray-entity.js.map +7 -0
- package/lib/types/region-entity.cjs +17 -0
- package/lib/types/region-entity.cjs.map +7 -0
- package/lib/types/region-entity.js +1 -0
- package/lib/types/region-entity.js.map +7 -0
- package/lib/types/shape-entity.cjs +17 -0
- package/lib/types/shape-entity.cjs.map +7 -0
- package/lib/types/shape-entity.js +1 -0
- package/lib/types/shape-entity.js.map +7 -0
- package/lib/types/table-entity.cjs +17 -0
- package/lib/types/table-entity.cjs.map +7 -0
- package/lib/types/table-entity.js +1 -0
- package/lib/types/table-entity.js.map +7 -0
- package/lib/types/tables.cjs.map +1 -1
- package/lib/types/tolerance-entity.cjs +17 -0
- package/lib/types/tolerance-entity.cjs.map +7 -0
- package/lib/types/tolerance-entity.js +1 -0
- package/lib/types/tolerance-entity.js.map +7 -0
- package/lib/types/trace-entity.cjs +17 -0
- package/lib/types/trace-entity.cjs.map +7 -0
- package/lib/types/trace-entity.js +1 -0
- package/lib/types/trace-entity.js.map +7 -0
- package/lib/types/underlay-entity.cjs +17 -0
- package/lib/types/underlay-entity.cjs.map +7 -0
- package/lib/types/underlay-entity.js +1 -0
- package/lib/types/underlay-entity.js.map +7 -0
- package/lib/types/wipeout-entity.cjs +17 -0
- package/lib/types/wipeout-entity.cjs.map +7 -0
- package/lib/types/wipeout-entity.js +1 -0
- package/lib/types/wipeout-entity.js.map +7 -0
- package/lib/types/xline-entity.cjs +17 -0
- package/lib/types/xline-entity.cjs.map +7 -0
- package/lib/types/xline-entity.js +1 -0
- package/lib/types/xline-entity.js.map +7 -0
- package/lib/util/escapeXmlText.cjs +27 -0
- package/lib/util/escapeXmlText.cjs.map +7 -0
- package/lib/util/escapeXmlText.js +7 -0
- package/lib/util/escapeXmlText.js.map +7 -0
- package/package.json +9 -18
- package/playwright.config.cjs +20 -0
- package/src/Helper.ts +8 -3
- package/src/denormalise.ts +182 -116
- package/src/dimensionToSVG.ts +466 -54
- package/src/entityToPolyline.ts +124 -2
- package/src/handlers/entities.ts +129 -34
- package/src/handlers/entity/dgnUnderlay.ts +94 -0
- package/src/handlers/entity/dimension.ts +27 -1
- package/src/handlers/entity/dwfUnderlay.ts +94 -0
- package/src/handlers/entity/image.ts +118 -0
- package/src/handlers/entity/leader.ts +153 -0
- package/src/handlers/entity/mleader.ts +46 -0
- package/src/handlers/entity/mline.ts +74 -0
- package/src/handlers/entity/oleframe.ts +62 -0
- package/src/handlers/entity/pdfUnderlay.ts +94 -0
- package/src/handlers/entity/ray.ts +52 -0
- package/src/handlers/entity/region.ts +42 -0
- package/src/handlers/entity/shape.ts +73 -0
- package/src/handlers/entity/table.ts +49 -0
- package/src/handlers/entity/tolerance.ts +75 -0
- package/src/handlers/entity/trace.ts +72 -0
- package/src/handlers/entity/wipeout.ts +114 -0
- package/src/handlers/entity/xline.ts +52 -0
- package/src/handlers/objects.ts +379 -139
- package/src/handlers/tables.ts +134 -21
- package/src/index.ts +9 -18
- package/src/toJson.ts +8 -0
- package/src/toSVG.ts +143 -10
- package/src/types/dimension-entity.ts +11 -0
- package/src/types/entity.ts +30 -0
- package/src/types/helper.ts +2 -1
- package/src/types/image-entity.ts +35 -0
- package/src/types/index.ts +14 -0
- package/src/types/leader-entity.ts +40 -0
- package/src/types/mleader-entity.ts +8 -0
- package/src/types/mline-entity.ts +12 -0
- package/src/types/oleframe-entity.ts +40 -0
- package/src/types/options.ts +48 -0
- package/src/types/ray-entity.ts +12 -0
- package/src/types/region-entity.ts +11 -0
- package/src/types/shape-entity.ts +19 -0
- package/src/types/table-entity.ts +14 -0
- package/src/types/tables.ts +160 -0
- package/src/types/tolerance-entity.ts +20 -0
- package/src/types/trace-entity.ts +14 -0
- package/src/types/underlay-entity.ts +35 -0
- package/src/types/wipeout-entity.ts +20 -0
- package/src/types/xline-entity.ts +12 -0
- package/src/util/escapeXmlText.ts +10 -0
- package/tools/browser_test_server.cjs +87 -0
- package/tools/ezdxf_generate_dimensions_all_types.py +246 -0
- package/tools/ezdxf_generate_dimensions_angular_3p.py +59 -0
- package/tools/ezdxf_generate_dimensions_large_scale.py +87 -0
- package/tools/ezdxf_regenerate_problem_fixtures.py +184 -0
- package/tools/ezdxf_validate_fixtures.py +165 -0
- package/docs/DIMENSION_SUMMARY.md +0 -248
- package/docs/DIMENSION_SUMMARY.pt-BR.md +0 -248
- package/docs/IMPLEMENTED-2D-ENTITIES.md +0 -54
- package/docs/IMPLEMENTED-2D-ENTITIES.pt-BR.md +0 -54
- package/docs/TEXT-MTEXT-DIMENSION-SUPPORT.md +0 -241
- package/docs/TEXT-MTEXT-DIMENSION-SUPPORT.pt-BR.md +0 -169
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { DXFTuple } from '../../types'
|
|
2
|
+
|
|
3
|
+
import common from './common'
|
|
4
|
+
|
|
5
|
+
export const TYPE = 'TABLE'
|
|
6
|
+
|
|
7
|
+
interface TableEntity {
|
|
8
|
+
type: typeof TYPE
|
|
9
|
+
|
|
10
|
+
rows?: number
|
|
11
|
+
columns?: number
|
|
12
|
+
cellText?: string[]
|
|
13
|
+
|
|
14
|
+
[key: string]: unknown
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export const process = (tuples: DXFTuple[]): TableEntity => {
|
|
18
|
+
return tuples.reduce(
|
|
19
|
+
(entity, tuple) => {
|
|
20
|
+
const code = tuple[0]
|
|
21
|
+
const value = tuple[1]
|
|
22
|
+
|
|
23
|
+
switch (code) {
|
|
24
|
+
case 90:
|
|
25
|
+
entity.rows = value as number
|
|
26
|
+
break
|
|
27
|
+
case 91:
|
|
28
|
+
entity.columns = value as number
|
|
29
|
+
break
|
|
30
|
+
|
|
31
|
+
case 1:
|
|
32
|
+
entity.cellText ??= []
|
|
33
|
+
entity.cellText.push(String(value))
|
|
34
|
+
break
|
|
35
|
+
|
|
36
|
+
default:
|
|
37
|
+
Object.assign(entity, common(code, value))
|
|
38
|
+
break
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return entity
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
type: TYPE,
|
|
45
|
+
} as TableEntity,
|
|
46
|
+
)
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export default { TYPE, process }
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import type { DXFTuple } from '../../types'
|
|
2
|
+
|
|
3
|
+
import common from './common'
|
|
4
|
+
|
|
5
|
+
export const TYPE = 'TOLERANCE'
|
|
6
|
+
|
|
7
|
+
interface ToleranceEntity {
|
|
8
|
+
type: typeof TYPE
|
|
9
|
+
|
|
10
|
+
insertionPoint: { x: number; y: number; z: number }
|
|
11
|
+
text?: string
|
|
12
|
+
dimensionStyleName?: string
|
|
13
|
+
xAxisDirection?: { x: number; y: number; z: number }
|
|
14
|
+
|
|
15
|
+
[key: string]: unknown
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function ensureVector3(
|
|
19
|
+
entity: ToleranceEntity,
|
|
20
|
+
key: 'insertionPoint' | 'xAxisDirection',
|
|
21
|
+
): { x: number; y: number; z: number } {
|
|
22
|
+
entity[key] ??= { x: 0, y: 0, z: 0 }
|
|
23
|
+
return entity[key] as { x: number; y: number; z: number }
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export const process = (tuples: DXFTuple[]): ToleranceEntity => {
|
|
27
|
+
return tuples.reduce(
|
|
28
|
+
(entity, tuple) => {
|
|
29
|
+
const code = tuple[0]
|
|
30
|
+
const value = tuple[1]
|
|
31
|
+
|
|
32
|
+
switch (code) {
|
|
33
|
+
case 3:
|
|
34
|
+
entity.dimensionStyleName = String(value)
|
|
35
|
+
break
|
|
36
|
+
|
|
37
|
+
case 10:
|
|
38
|
+
ensureVector3(entity, 'insertionPoint').x = value as number
|
|
39
|
+
break
|
|
40
|
+
case 20:
|
|
41
|
+
ensureVector3(entity, 'insertionPoint').y = value as number
|
|
42
|
+
break
|
|
43
|
+
case 30:
|
|
44
|
+
ensureVector3(entity, 'insertionPoint').z = value as number
|
|
45
|
+
break
|
|
46
|
+
|
|
47
|
+
case 1:
|
|
48
|
+
entity.text = String(value)
|
|
49
|
+
break
|
|
50
|
+
|
|
51
|
+
case 11:
|
|
52
|
+
ensureVector3(entity, 'xAxisDirection').x = value as number
|
|
53
|
+
break
|
|
54
|
+
case 21:
|
|
55
|
+
ensureVector3(entity, 'xAxisDirection').y = value as number
|
|
56
|
+
break
|
|
57
|
+
case 31:
|
|
58
|
+
ensureVector3(entity, 'xAxisDirection').z = value as number
|
|
59
|
+
break
|
|
60
|
+
|
|
61
|
+
default:
|
|
62
|
+
Object.assign(entity, common(code, value))
|
|
63
|
+
break
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
return entity
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
type: TYPE,
|
|
70
|
+
insertionPoint: { x: 0, y: 0, z: 0 },
|
|
71
|
+
} as ToleranceEntity,
|
|
72
|
+
)
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export default { TYPE, process }
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import type { DXFTuple } from '../../types/dxf'
|
|
2
|
+
|
|
3
|
+
import type { Point3D } from '../../types'
|
|
4
|
+
import common from './common'
|
|
5
|
+
|
|
6
|
+
interface TraceEntity {
|
|
7
|
+
type: string
|
|
8
|
+
corners: Point3D[]
|
|
9
|
+
thickness?: number
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export const TYPE = 'TRACE'
|
|
13
|
+
|
|
14
|
+
export const process = (tuples: DXFTuple[]): TraceEntity => {
|
|
15
|
+
return tuples.reduce(
|
|
16
|
+
(entity, tuple) => {
|
|
17
|
+
const type = tuple[0]
|
|
18
|
+
const value = tuple[1]
|
|
19
|
+
switch (type) {
|
|
20
|
+
case 10:
|
|
21
|
+
entity.corners[0].x = value as number
|
|
22
|
+
break
|
|
23
|
+
case 20:
|
|
24
|
+
entity.corners[0].y = value as number
|
|
25
|
+
break
|
|
26
|
+
case 30:
|
|
27
|
+
entity.corners[0].z = value as number
|
|
28
|
+
break
|
|
29
|
+
case 11:
|
|
30
|
+
entity.corners[1].x = value as number
|
|
31
|
+
break
|
|
32
|
+
case 21:
|
|
33
|
+
entity.corners[1].y = value as number
|
|
34
|
+
break
|
|
35
|
+
case 31:
|
|
36
|
+
entity.corners[1].z = value as number
|
|
37
|
+
break
|
|
38
|
+
case 12:
|
|
39
|
+
entity.corners[2].x = value as number
|
|
40
|
+
break
|
|
41
|
+
case 22:
|
|
42
|
+
entity.corners[2].y = value as number
|
|
43
|
+
break
|
|
44
|
+
case 32:
|
|
45
|
+
entity.corners[2].z = value as number
|
|
46
|
+
break
|
|
47
|
+
case 13:
|
|
48
|
+
entity.corners[3].x = value as number
|
|
49
|
+
break
|
|
50
|
+
case 23:
|
|
51
|
+
entity.corners[3].y = value as number
|
|
52
|
+
break
|
|
53
|
+
case 33:
|
|
54
|
+
entity.corners[3].z = value as number
|
|
55
|
+
break
|
|
56
|
+
case 39:
|
|
57
|
+
entity.thickness = value as number
|
|
58
|
+
break
|
|
59
|
+
default:
|
|
60
|
+
Object.assign(entity, common(type, value))
|
|
61
|
+
break
|
|
62
|
+
}
|
|
63
|
+
return entity
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
type: TYPE,
|
|
67
|
+
corners: [{} as Point3D, {} as Point3D, {} as Point3D, {} as Point3D],
|
|
68
|
+
} as TraceEntity,
|
|
69
|
+
)
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export default { TYPE, process }
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import type { DXFTuple, PartialPoint3D } from '../../types'
|
|
2
|
+
|
|
3
|
+
import common from './common'
|
|
4
|
+
|
|
5
|
+
export const TYPE = 'WIPEOUT'
|
|
6
|
+
|
|
7
|
+
interface WipeoutEntity {
|
|
8
|
+
type: typeof TYPE
|
|
9
|
+
|
|
10
|
+
insertionPoint: PartialPoint3D
|
|
11
|
+
uVector: PartialPoint3D
|
|
12
|
+
vVector: PartialPoint3D
|
|
13
|
+
|
|
14
|
+
clipBoundaryType?: 1 | 2
|
|
15
|
+
clipBoundaryVertices?: Array<{ x: number; y: number }>
|
|
16
|
+
|
|
17
|
+
displayProperties?: number
|
|
18
|
+
clippingState?: 0 | 1
|
|
19
|
+
classVersion?: number
|
|
20
|
+
imageSizePixels?: { u: number; v: number }
|
|
21
|
+
|
|
22
|
+
[key: string]: unknown
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export const process = (tuples: DXFTuple[]): WipeoutEntity => {
|
|
26
|
+
let pendingBoundaryX: number | null = null
|
|
27
|
+
|
|
28
|
+
return tuples.reduce(
|
|
29
|
+
(entity, tuple) => {
|
|
30
|
+
const type = tuple[0]
|
|
31
|
+
const value = tuple[1]
|
|
32
|
+
|
|
33
|
+
switch (type) {
|
|
34
|
+
case 90:
|
|
35
|
+
entity.classVersion = value as number
|
|
36
|
+
break
|
|
37
|
+
|
|
38
|
+
case 10:
|
|
39
|
+
entity.insertionPoint.x = value as number
|
|
40
|
+
break
|
|
41
|
+
case 20:
|
|
42
|
+
entity.insertionPoint.y = value as number
|
|
43
|
+
break
|
|
44
|
+
case 30:
|
|
45
|
+
entity.insertionPoint.z = value as number
|
|
46
|
+
break
|
|
47
|
+
|
|
48
|
+
case 11:
|
|
49
|
+
entity.uVector.x = value as number
|
|
50
|
+
break
|
|
51
|
+
case 21:
|
|
52
|
+
entity.uVector.y = value as number
|
|
53
|
+
break
|
|
54
|
+
case 31:
|
|
55
|
+
entity.uVector.z = value as number
|
|
56
|
+
break
|
|
57
|
+
|
|
58
|
+
case 12:
|
|
59
|
+
entity.vVector.x = value as number
|
|
60
|
+
break
|
|
61
|
+
case 22:
|
|
62
|
+
entity.vVector.y = value as number
|
|
63
|
+
break
|
|
64
|
+
case 32:
|
|
65
|
+
entity.vVector.z = value as number
|
|
66
|
+
break
|
|
67
|
+
|
|
68
|
+
case 13:
|
|
69
|
+
entity.imageSizePixels ??= { u: 0, v: 0 }
|
|
70
|
+
entity.imageSizePixels.u = value as number
|
|
71
|
+
break
|
|
72
|
+
case 23:
|
|
73
|
+
entity.imageSizePixels ??= { u: 0, v: 0 }
|
|
74
|
+
entity.imageSizePixels.v = value as number
|
|
75
|
+
break
|
|
76
|
+
|
|
77
|
+
case 70:
|
|
78
|
+
entity.displayProperties = value as number
|
|
79
|
+
break
|
|
80
|
+
case 280:
|
|
81
|
+
entity.clippingState = value as 0 | 1
|
|
82
|
+
break
|
|
83
|
+
|
|
84
|
+
case 71:
|
|
85
|
+
entity.clipBoundaryType = value as 1 | 2
|
|
86
|
+
break
|
|
87
|
+
|
|
88
|
+
case 14:
|
|
89
|
+
pendingBoundaryX = value as number
|
|
90
|
+
break
|
|
91
|
+
case 24:
|
|
92
|
+
if (pendingBoundaryX !== null) {
|
|
93
|
+
entity.clipBoundaryVertices ??= []
|
|
94
|
+
entity.clipBoundaryVertices.push({ x: pendingBoundaryX, y: value as number })
|
|
95
|
+
pendingBoundaryX = null
|
|
96
|
+
}
|
|
97
|
+
break
|
|
98
|
+
|
|
99
|
+
default:
|
|
100
|
+
Object.assign(entity, common(type, value))
|
|
101
|
+
break
|
|
102
|
+
}
|
|
103
|
+
return entity
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
type: TYPE,
|
|
107
|
+
insertionPoint: {},
|
|
108
|
+
uVector: {},
|
|
109
|
+
vVector: {},
|
|
110
|
+
} as WipeoutEntity,
|
|
111
|
+
)
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
export default { TYPE, process }
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { DXFTuple, PartialPoint3D } from '../../types'
|
|
2
|
+
|
|
3
|
+
import common from './common'
|
|
4
|
+
|
|
5
|
+
export const TYPE = 'XLINE'
|
|
6
|
+
|
|
7
|
+
interface XLineEntity {
|
|
8
|
+
type: typeof TYPE
|
|
9
|
+
basePoint: PartialPoint3D
|
|
10
|
+
direction: PartialPoint3D
|
|
11
|
+
[key: string]: unknown
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export const process = (tuples: DXFTuple[]): XLineEntity => {
|
|
15
|
+
return tuples.reduce(
|
|
16
|
+
(entity, tuple) => {
|
|
17
|
+
const type = tuple[0]
|
|
18
|
+
const value = tuple[1]
|
|
19
|
+
switch (type) {
|
|
20
|
+
case 10:
|
|
21
|
+
entity.basePoint.x = value as number
|
|
22
|
+
break
|
|
23
|
+
case 20:
|
|
24
|
+
entity.basePoint.y = value as number
|
|
25
|
+
break
|
|
26
|
+
case 30:
|
|
27
|
+
entity.basePoint.z = value as number
|
|
28
|
+
break
|
|
29
|
+
case 11:
|
|
30
|
+
entity.direction.x = value as number
|
|
31
|
+
break
|
|
32
|
+
case 21:
|
|
33
|
+
entity.direction.y = value as number
|
|
34
|
+
break
|
|
35
|
+
case 31:
|
|
36
|
+
entity.direction.z = value as number
|
|
37
|
+
break
|
|
38
|
+
default:
|
|
39
|
+
Object.assign(entity, common(type, value))
|
|
40
|
+
break
|
|
41
|
+
}
|
|
42
|
+
return entity
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
type: TYPE,
|
|
46
|
+
basePoint: {},
|
|
47
|
+
direction: {},
|
|
48
|
+
} as XLineEntity,
|
|
49
|
+
)
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export default { TYPE, process }
|