abstract-3d 2.6.19 → 2.7.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/CHANGELOG.md +4 -0
- package/lib/abstract-3d.d.ts +13 -1
- package/lib/abstract-3d.d.ts.map +1 -1
- package/lib/abstract-3d.js +77 -0
- package/lib/abstract-3d.js.map +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-color.d.ts +5 -0
- package/lib/renderers/dxf/dxf-encoding/dxf-color.d.ts.map +1 -0
- package/lib/renderers/dxf/{color.js → dxf-encoding/dxf-color.js} +24 -19
- package/lib/renderers/dxf/dxf-encoding/dxf-color.js.map +1 -0
- package/lib/renderers/dxf/dxf-encoding/dxf-common.d.ts +13 -0
- package/lib/renderers/dxf/dxf-encoding/dxf-common.d.ts.map +1 -0
- package/lib/renderers/dxf/dxf-encoding/dxf-common.js +23 -0
- package/lib/renderers/dxf/dxf-encoding/dxf-common.js.map +1 -0
- package/lib/renderers/dxf/dxf-encoding/dxf-dimension.d.ts +6 -0
- package/lib/renderers/dxf/dxf-encoding/dxf-dimension.d.ts.map +1 -0
- package/lib/renderers/dxf/dxf-encoding/dxf-dimension.js +50 -0
- package/lib/renderers/dxf/dxf-encoding/dxf-dimension.js.map +1 -0
- package/lib/renderers/dxf/dxf-encoding/dxf-footer.d.ts +2 -0
- package/lib/renderers/dxf/dxf-encoding/dxf-footer.d.ts.map +1 -0
- package/lib/renderers/dxf/{dxf-encoding.js → dxf-encoding/dxf-footer.js} +3 -1819
- package/lib/renderers/dxf/{dxf-encoding.js.map → dxf-encoding/dxf-footer.js.map} +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-header.d.ts +3 -0
- package/lib/renderers/dxf/dxf-encoding/dxf-header.d.ts.map +1 -0
- package/lib/renderers/dxf/dxf-encoding/dxf-header.js +1653 -0
- package/lib/renderers/dxf/dxf-encoding/dxf-header.js.map +1 -0
- package/lib/renderers/dxf/dxf-encoding/dxf-line.d.ts +5 -0
- package/lib/renderers/dxf/dxf-encoding/dxf-line.d.ts.map +1 -0
- package/lib/renderers/dxf/dxf-encoding/dxf-line.js +29 -0
- package/lib/renderers/dxf/dxf-encoding/dxf-line.js.map +1 -0
- package/lib/renderers/dxf/dxf-encoding/dxf-polyline.d.ts +5 -0
- package/lib/renderers/dxf/dxf-encoding/dxf-polyline.d.ts.map +1 -0
- package/lib/renderers/dxf/dxf-encoding/dxf-polyline.js +73 -0
- package/lib/renderers/dxf/dxf-encoding/dxf-polyline.js.map +1 -0
- package/lib/renderers/dxf/dxf-encoding/dxf-quad.d.ts +5 -0
- package/lib/renderers/dxf/dxf-encoding/dxf-quad.d.ts.map +1 -0
- package/lib/renderers/dxf/dxf-encoding/dxf-quad.js +39 -0
- package/lib/renderers/dxf/dxf-encoding/dxf-quad.js.map +1 -0
- package/lib/renderers/dxf/dxf-encoding/dxf-text.d.ts +19 -0
- package/lib/renderers/dxf/dxf-encoding/dxf-text.d.ts.map +1 -0
- package/lib/renderers/dxf/dxf-encoding/dxf-text.js +70 -0
- package/lib/renderers/dxf/dxf-encoding/dxf-text.js.map +1 -0
- package/lib/renderers/dxf/dxf-encoding/dxf-triangle.d.ts +5 -0
- package/lib/renderers/dxf/dxf-encoding/dxf-triangle.d.ts.map +1 -0
- package/lib/renderers/dxf/dxf-encoding/dxf-triangle.js +3 -0
- package/lib/renderers/dxf/dxf-encoding/dxf-triangle.js.map +1 -0
- package/lib/renderers/dxf/dxf-geometries/dxf-box.d.ts +2 -2
- package/lib/renderers/dxf/dxf-geometries/dxf-box.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-box.js +8 -8
- package/lib/renderers/dxf/dxf-geometries/dxf-box.js.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-cone.d.ts +2 -2
- package/lib/renderers/dxf/dxf-geometries/dxf-cone.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-cone.js +4 -4
- package/lib/renderers/dxf/dxf-geometries/dxf-cone.js.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-cylinder.d.ts +2 -2
- package/lib/renderers/dxf/dxf-geometries/dxf-cylinder.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-cylinder.js +6 -5
- package/lib/renderers/dxf/dxf-geometries/dxf-cylinder.js.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-dimension.d.ts +4 -0
- package/lib/renderers/dxf/dxf-geometries/dxf-dimension.d.ts.map +1 -0
- package/lib/renderers/dxf/dxf-geometries/dxf-dimension.js +13 -0
- package/lib/renderers/dxf/dxf-geometries/dxf-dimension.js.map +1 -0
- package/lib/renderers/dxf/dxf-geometries/dxf-image.d.ts +2 -2
- package/lib/renderers/dxf/dxf-geometries/dxf-image.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-image.js +8 -7
- package/lib/renderers/dxf/dxf-geometries/dxf-image.js.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-plane.d.ts +2 -2
- package/lib/renderers/dxf/dxf-geometries/dxf-plane.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-plane.js +3 -3
- package/lib/renderers/dxf/dxf-geometries/dxf-plane.js.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-polygon.d.ts +2 -2
- package/lib/renderers/dxf/dxf-geometries/dxf-polygon.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-polygon.js +7 -6
- package/lib/renderers/dxf/dxf-geometries/dxf-polygon.js.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-shape.d.ts +2 -2
- package/lib/renderers/dxf/dxf-geometries/dxf-shape.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-shape.js +6 -5
- package/lib/renderers/dxf/dxf-geometries/dxf-shape.js.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-text.d.ts +4 -0
- package/lib/renderers/dxf/dxf-geometries/dxf-text.d.ts.map +1 -0
- package/lib/renderers/dxf/dxf-geometries/dxf-text.js +8 -0
- package/lib/renderers/dxf/dxf-geometries/dxf-text.js.map +1 -0
- package/lib/renderers/dxf/dxf.d.ts +4 -3
- package/lib/renderers/dxf/dxf.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf.js +36 -22
- package/lib/renderers/dxf/dxf.js.map +1 -1
- package/lib/renderers/dxf/index.d.ts +1 -1
- package/lib/renderers/dxf/index.d.ts.map +1 -1
- package/lib/renderers/react/react-dimension.d.ts +4 -3
- package/lib/renderers/react/react-dimension.d.ts.map +1 -1
- package/lib/renderers/react/react-dimension.js +4 -3
- package/lib/renderers/react/react-dimension.js.map +1 -1
- package/lib/renderers/step/step-encoding.d.ts +2 -0
- package/lib/renderers/step/step-encoding.d.ts.map +1 -1
- package/lib/renderers/step/step-encoding.js +16 -3
- package/lib/renderers/step/step-encoding.js.map +1 -1
- package/lib/renderers/step/step-geometries/step-box.d.ts.map +1 -1
- package/lib/renderers/step/step-geometries/step-box.js +3 -0
- package/lib/renderers/step/step-geometries/step-box.js.map +1 -1
- package/lib/renderers/step/step-geometries/step-cylinder.d.ts.map +1 -1
- package/lib/renderers/step/step-geometries/step-cylinder.js +67 -21
- package/lib/renderers/step/step-geometries/step-cylinder.js.map +1 -1
- package/lib/renderers/svg/svg.d.ts.map +1 -1
- package/lib/renderers/svg/svg.js +6 -27
- package/lib/renderers/svg/svg.js.map +1 -1
- package/lib/utils.d.ts +3 -0
- package/lib/utils.d.ts.map +1 -1
- package/lib/utils.js +30 -0
- package/lib/utils.js.map +1 -1
- package/package.json +2 -2
- package/src/abstract-3d.ts +127 -7
- package/src/renderers/dxf/{color.ts → dxf-encoding/dxf-color.ts} +27 -20
- package/src/renderers/dxf/dxf-encoding/dxf-common.ts +31 -0
- package/src/renderers/dxf/dxf-encoding/dxf-dimension.ts +60 -0
- package/src/renderers/dxf/{dxf-encoding.ts → dxf-encoding/dxf-footer.ts} +4 -1870
- package/src/renderers/dxf/dxf-encoding/dxf-header.ts +1657 -0
- package/src/renderers/dxf/dxf-encoding/dxf-line.ts +35 -0
- package/src/renderers/dxf/dxf-encoding/dxf-polyline.ts +83 -0
- package/src/renderers/dxf/dxf-encoding/dxf-quad.ts +47 -0
- package/src/renderers/dxf/dxf-encoding/dxf-text.ts +71 -0
- package/src/renderers/dxf/dxf-encoding/dxf-triangle.ts +12 -0
- package/src/renderers/dxf/dxf-geometries/dxf-box.ts +18 -8
- package/src/renderers/dxf/dxf-geometries/dxf-cone.ts +13 -4
- package/src/renderers/dxf/dxf-geometries/dxf-cylinder.ts +13 -11
- package/src/renderers/dxf/dxf-geometries/dxf-dimension.ts +14 -0
- package/src/renderers/dxf/dxf-geometries/dxf-image.ts +11 -9
- package/src/renderers/dxf/dxf-geometries/dxf-plane.ts +7 -6
- package/src/renderers/dxf/dxf-geometries/dxf-polygon.ts +8 -6
- package/src/renderers/dxf/dxf-geometries/dxf-shape.ts +8 -6
- package/src/renderers/dxf/dxf-geometries/dxf-text.ts +9 -0
- package/src/renderers/dxf/dxf.ts +57 -39
- package/src/renderers/dxf/index.ts +1 -1
- package/src/renderers/react/react-dimension.tsx +8 -4
- package/src/renderers/step/step-encoding.ts +24 -5
- package/src/renderers/step/step-geometries/step-box.ts +6 -0
- package/src/renderers/step/step-geometries/step-cylinder.ts +303 -101
- package/src/renderers/svg/svg.ts +6 -34
- package/src/utils.ts +39 -0
- package/lib/renderers/dxf/color.d.ts +0 -7
- package/lib/renderers/dxf/color.d.ts.map +0 -1
- package/lib/renderers/dxf/color.js.map +0 -1
- package/lib/renderers/dxf/dxf-encoding.d.ts +0 -17
- package/lib/renderers/dxf/dxf-encoding.d.ts.map +0 -1
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { Vec3 } from "../../../abstract-3d.js";
|
|
2
|
+
import { type DxfColor, dxfColor } from "./dxf-color.js";
|
|
3
|
+
import { DXF_MODEL_SPACE_HANDLE, dxfHandleNext, dxfRound, type Handle } from "./dxf-common.js";
|
|
4
|
+
|
|
5
|
+
export function dxfEncLine(
|
|
6
|
+
vecStart: Vec3,
|
|
7
|
+
vecEnd: Vec3,
|
|
8
|
+
col: DxfColor,
|
|
9
|
+
handleRef: Handle
|
|
10
|
+
): string {
|
|
11
|
+
return ` 0
|
|
12
|
+
LINE
|
|
13
|
+
5
|
|
14
|
+
${dxfHandleNext(handleRef)}
|
|
15
|
+
330
|
|
16
|
+
${DXF_MODEL_SPACE_HANDLE}
|
|
17
|
+
100
|
|
18
|
+
AcDbEntity
|
|
19
|
+
${dxfColor(col)}
|
|
20
|
+
100
|
|
21
|
+
AcDbLine
|
|
22
|
+
10
|
|
23
|
+
${dxfRound(vecStart.x)}
|
|
24
|
+
20
|
|
25
|
+
${dxfRound(vecStart.y)}
|
|
26
|
+
30
|
|
27
|
+
${dxfRound(vecStart.z)}
|
|
28
|
+
11
|
|
29
|
+
${dxfRound(vecEnd.x)}
|
|
30
|
+
21
|
|
31
|
+
${dxfRound(vecEnd.y)}
|
|
32
|
+
31
|
|
33
|
+
${dxfRound(vecEnd.z)}
|
|
34
|
+
`;
|
|
35
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import type { Vec3 } from "../../../abstract-3d.js";
|
|
2
|
+
import { type DxfColor, dxfColor } from "./dxf-color.js";
|
|
3
|
+
import { DXF_MODEL_SPACE_HANDLE, dxfHandleNext, dxfRound, type Handle } from "./dxf-common.js";
|
|
4
|
+
|
|
5
|
+
export function dxfEncPolyline(
|
|
6
|
+
points: ReadonlyArray<Vec3>,
|
|
7
|
+
col: DxfColor,
|
|
8
|
+
closed: boolean,
|
|
9
|
+
handleRef: Handle
|
|
10
|
+
): string {
|
|
11
|
+
if (points.length < 2) {
|
|
12
|
+
return "";
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const polylineHandle = dxfHandleNext(handleRef);
|
|
16
|
+
const vertexHandle = dxfHandleNext(handleRef);
|
|
17
|
+
const seqEndHandle = dxfHandleNext(handleRef);
|
|
18
|
+
const vertices = points
|
|
19
|
+
.map((p) => {
|
|
20
|
+
|
|
21
|
+
return ` 0
|
|
22
|
+
VERTEX
|
|
23
|
+
5
|
|
24
|
+
${vertexHandle}
|
|
25
|
+
330
|
|
26
|
+
${polylineHandle}
|
|
27
|
+
100
|
|
28
|
+
AcDbEntity
|
|
29
|
+
8
|
|
30
|
+
0
|
|
31
|
+
${dxfColor(col)}
|
|
32
|
+
100
|
|
33
|
+
AcDbVertex
|
|
34
|
+
100
|
|
35
|
+
AcDb3dPolylineVertex
|
|
36
|
+
10
|
|
37
|
+
${dxfRound(p.x)}
|
|
38
|
+
20
|
|
39
|
+
${dxfRound(p.y)}
|
|
40
|
+
30
|
|
41
|
+
${dxfRound(p.z)}
|
|
42
|
+
70
|
|
43
|
+
32`;
|
|
44
|
+
})
|
|
45
|
+
.join("\n");
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
return ` 0
|
|
49
|
+
POLYLINE
|
|
50
|
+
5
|
|
51
|
+
${polylineHandle}
|
|
52
|
+
330
|
|
53
|
+
${DXF_MODEL_SPACE_HANDLE}
|
|
54
|
+
100
|
|
55
|
+
AcDbEntity
|
|
56
|
+
8
|
|
57
|
+
0
|
|
58
|
+
${dxfColor(col)}
|
|
59
|
+
100
|
|
60
|
+
AcDb3dPolyline
|
|
61
|
+
66
|
|
62
|
+
1
|
|
63
|
+
10
|
|
64
|
+
0.0
|
|
65
|
+
20
|
|
66
|
+
0.0
|
|
67
|
+
30
|
|
68
|
+
0.0
|
|
69
|
+
70
|
|
70
|
+
${closed ? 9 : 8}
|
|
71
|
+
${vertices}
|
|
72
|
+
0
|
|
73
|
+
SEQEND
|
|
74
|
+
5
|
|
75
|
+
${seqEndHandle}
|
|
76
|
+
330
|
|
77
|
+
${polylineHandle}
|
|
78
|
+
100
|
|
79
|
+
AcDbEntity
|
|
80
|
+
8
|
|
81
|
+
0
|
|
82
|
+
`;
|
|
83
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { Vec3 } from "../../../abstract-3d.js";
|
|
2
|
+
import { dxfColor, type DxfColor } from "./dxf-color.js";
|
|
3
|
+
import { DXF_MODEL_SPACE_HANDLE, dxfHandleNext, dxfRound, type Handle } from "./dxf-common.js";
|
|
4
|
+
|
|
5
|
+
export const dxfEncQuad = (
|
|
6
|
+
vec1: Vec3,
|
|
7
|
+
vec2: Vec3,
|
|
8
|
+
vec3: Vec3,
|
|
9
|
+
vec4: Vec3,
|
|
10
|
+
col: DxfColor,
|
|
11
|
+
handleRef: Handle
|
|
12
|
+
): string => ` 0
|
|
13
|
+
3DFACE
|
|
14
|
+
5
|
|
15
|
+
${dxfHandleNext(handleRef)}
|
|
16
|
+
330
|
|
17
|
+
${DXF_MODEL_SPACE_HANDLE}
|
|
18
|
+
100
|
|
19
|
+
AcDbEntity
|
|
20
|
+
${dxfColor(col)}
|
|
21
|
+
100
|
|
22
|
+
AcDbFace
|
|
23
|
+
10
|
|
24
|
+
${dxfRound(vec1.x)}
|
|
25
|
+
20
|
|
26
|
+
${dxfRound(vec1.y)}
|
|
27
|
+
30
|
|
28
|
+
${dxfRound(vec1.z)}
|
|
29
|
+
11
|
|
30
|
+
${dxfRound(vec2.x)}
|
|
31
|
+
21
|
|
32
|
+
${dxfRound(vec2.y)}
|
|
33
|
+
31
|
|
34
|
+
${dxfRound(vec2.z)}
|
|
35
|
+
12
|
|
36
|
+
${dxfRound(vec3.x)}
|
|
37
|
+
22
|
|
38
|
+
${dxfRound(vec3.y)}
|
|
39
|
+
32
|
|
40
|
+
${dxfRound(vec3.z)}
|
|
41
|
+
13
|
|
42
|
+
${dxfRound(vec4.x)}
|
|
43
|
+
23
|
|
44
|
+
${dxfRound(vec4.y)}
|
|
45
|
+
33
|
|
46
|
+
${dxfRound(vec4.z)}
|
|
47
|
+
`;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import type { Vec3 } from "../../../abstract-3d.js";
|
|
2
|
+
import { type DxfColor, dxfColor } from "./dxf-color.js";
|
|
3
|
+
import { DXF_MODEL_SPACE_HANDLE, dxfHandleNext, dxfRound, type Handle } from "./dxf-common.js";
|
|
4
|
+
|
|
5
|
+
export enum DxfTextVerticalAlignment {
|
|
6
|
+
Baseline = 0,
|
|
7
|
+
Bottom = 1,
|
|
8
|
+
Middle = 2,
|
|
9
|
+
Top = 3
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export enum DxfTextHorizontalAlignment {
|
|
13
|
+
VLeft = 0,
|
|
14
|
+
VCenter = 1,
|
|
15
|
+
VRight = 2,
|
|
16
|
+
|
|
17
|
+
/*
|
|
18
|
+
the vertical alignment must be 0 to use these
|
|
19
|
+
https://help.autodesk.com/view/OARX/2018/ENU/?guid=GUID-62E5383D-8A14-47B4-BFC4-35824CAE8363
|
|
20
|
+
*/
|
|
21
|
+
Aligned = 3,
|
|
22
|
+
Middle = 4,
|
|
23
|
+
Fit = 5,
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export function dxfEncText(pos: Vec3, rot: number, text: string, fontSize: number, col: DxfColor, handleRef: Handle): string {
|
|
27
|
+
return `0
|
|
28
|
+
TEXT
|
|
29
|
+
5
|
|
30
|
+
${dxfHandleNext(handleRef)}
|
|
31
|
+
330
|
|
32
|
+
${DXF_MODEL_SPACE_HANDLE}
|
|
33
|
+
100
|
|
34
|
+
AcDbEntity
|
|
35
|
+
8
|
|
36
|
+
0
|
|
37
|
+
${dxfColor(col)}
|
|
38
|
+
100
|
|
39
|
+
AcDbText
|
|
40
|
+
10
|
|
41
|
+
${dxfRound(pos.x)}
|
|
42
|
+
20
|
|
43
|
+
${dxfRound(pos.y)}
|
|
44
|
+
30
|
|
45
|
+
${dxfRound(pos.z)}
|
|
46
|
+
40
|
|
47
|
+
${(fontSize * 0.75).toString()}
|
|
48
|
+
1
|
|
49
|
+
${text}
|
|
50
|
+
50
|
|
51
|
+
${dxfRound((rot / Math.PI) * 180.0)}
|
|
52
|
+
41
|
|
53
|
+
1.0
|
|
54
|
+
7
|
|
55
|
+
STANDARD
|
|
56
|
+
71
|
|
57
|
+
0
|
|
58
|
+
72
|
|
59
|
+
${DxfTextHorizontalAlignment.VCenter}
|
|
60
|
+
11
|
|
61
|
+
${dxfRound(pos.x)}
|
|
62
|
+
21
|
|
63
|
+
${dxfRound(pos.y)}
|
|
64
|
+
31
|
|
65
|
+
${dxfRound(pos.z)}
|
|
66
|
+
100
|
|
67
|
+
AcDbText
|
|
68
|
+
73
|
|
69
|
+
${DxfTextVerticalAlignment.Middle}
|
|
70
|
+
`;
|
|
71
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Vec3 } from "../../../abstract-3d.js";
|
|
2
|
+
import type { DxfColor } from "./dxf-color.js";
|
|
3
|
+
import type { Handle } from "./dxf-common.js";
|
|
4
|
+
import { dxfEncQuad } from "./dxf-quad.js";
|
|
5
|
+
|
|
6
|
+
export const dxfEncTriangle = (
|
|
7
|
+
vec1: Vec3,
|
|
8
|
+
vec2: Vec3,
|
|
9
|
+
vec3: Vec3,
|
|
10
|
+
col: DxfColor,
|
|
11
|
+
handleRef: Handle
|
|
12
|
+
): string => dxfEncQuad(vec1, vec2, vec3, vec3, col, handleRef);
|
|
@@ -1,5 +1,15 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import {
|
|
2
|
+
type Box,
|
|
3
|
+
type Material,
|
|
4
|
+
type Vec3,
|
|
5
|
+
vec3,
|
|
6
|
+
vec3RotCombine,
|
|
7
|
+
vec3Scale,
|
|
8
|
+
vec3TransRot,
|
|
9
|
+
vec3Zero,
|
|
10
|
+
} from "../../../abstract-3d.js";
|
|
11
|
+
import type { Handle } from "../dxf-encoding/dxf-common.js";
|
|
12
|
+
import { dxfEncQuad } from "../dxf-encoding/dxf-quad.js";
|
|
3
13
|
|
|
4
14
|
export function dxfBox(b: Box, m: Material, parentPos: Vec3, parentRot: Vec3, handleRef: Handle): string {
|
|
5
15
|
const pos = vec3TransRot(b.pos, parentPos, parentRot);
|
|
@@ -16,11 +26,11 @@ export function dxfBox(b: Box, m: Material, parentPos: Vec3, parentRot: Vec3, ha
|
|
|
16
26
|
const v7 = vec3tr3(half.x, half.y, -half.z);
|
|
17
27
|
const v8 = vec3tr3(-half.x, half.y, -half.z);
|
|
18
28
|
return (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
29
|
+
dxfEncQuad(v1, v2, v3, v4, m.normal, handleRef) + // front
|
|
30
|
+
dxfEncQuad(v5, v6, v7, v8, m.normal, handleRef) + // Back
|
|
31
|
+
dxfEncQuad(v5, v1, v4, v8, m.normal, handleRef) + // Left
|
|
32
|
+
dxfEncQuad(v6, v2, v3, v7, m.normal, handleRef) + // Right
|
|
33
|
+
dxfEncQuad(v8, v7, v3, v4, m.normal, handleRef) + // Top
|
|
34
|
+
dxfEncQuad(v5, v6, v2, v1, m.normal, handleRef) // Bottom
|
|
25
35
|
);
|
|
26
36
|
}
|
|
@@ -1,5 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import {
|
|
2
|
+
type Cone,
|
|
3
|
+
type Material,
|
|
4
|
+
type Vec3,
|
|
5
|
+
vec3,
|
|
6
|
+
vec3RotCombine,
|
|
7
|
+
vec3TransRot,
|
|
8
|
+
vec3Zero,
|
|
9
|
+
} from "../../../abstract-3d.js";
|
|
10
|
+
import type { Handle } from "../dxf-encoding/dxf-common.js";
|
|
11
|
+
import { dxfEncTriangle } from "../dxf-encoding/dxf-triangle.js";
|
|
3
12
|
|
|
4
13
|
export function dxfCone(
|
|
5
14
|
c: Cone,
|
|
@@ -28,8 +37,8 @@ export function dxfCone(
|
|
|
28
37
|
if (i !== 0) {
|
|
29
38
|
const prevBot = botVec3Array[i - 1]!;
|
|
30
39
|
dxfString +=
|
|
31
|
-
|
|
32
|
-
|
|
40
|
+
dxfEncTriangle(botPos, prevBot, currBot, m.normal, handleRef) +
|
|
41
|
+
dxfEncTriangle(currBot, prevBot, topPos, m.normal, handleRef);
|
|
33
42
|
}
|
|
34
43
|
currentAngle += angleStep;
|
|
35
44
|
}
|
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
import {
|
|
2
|
-
Cylinder,
|
|
3
|
-
Material,
|
|
4
|
-
Vec3,
|
|
5
|
-
|
|
6
|
-
vec3RotCombine,
|
|
7
|
-
vec3Zero,
|
|
2
|
+
type Cylinder,
|
|
3
|
+
type Material,
|
|
4
|
+
type Vec3,
|
|
5
|
+
equals,
|
|
8
6
|
vec3,
|
|
7
|
+
vec3RotCombine,
|
|
9
8
|
vec3Scale,
|
|
10
|
-
|
|
9
|
+
vec3TransRot,
|
|
10
|
+
vec3Zero,
|
|
11
11
|
} from "../../../abstract-3d.js";
|
|
12
|
-
import {
|
|
12
|
+
import type { Handle } from "../dxf-encoding/dxf-common.js";
|
|
13
|
+
import { dxfEncQuad } from "../dxf-encoding/dxf-quad.js";
|
|
14
|
+
import { dxfEncTriangle } from "../dxf-encoding/dxf-triangle.js";
|
|
13
15
|
import { dxfPlane } from "./dxf-plane.js";
|
|
14
16
|
|
|
15
17
|
export function dxfCylinder(
|
|
@@ -45,10 +47,10 @@ export function dxfCylinder(
|
|
|
45
47
|
if (i !== 0 && prevBot && prevTop) {
|
|
46
48
|
if (!c.open) {
|
|
47
49
|
dxfString +=
|
|
48
|
-
|
|
49
|
-
|
|
50
|
+
dxfEncTriangle(botPos, prevBot, currBot, m.normal, handleRef) +
|
|
51
|
+
dxfEncTriangle(topPos, prevTop, currTop, m.normal, handleRef);
|
|
50
52
|
}
|
|
51
|
-
dxfString +=
|
|
53
|
+
dxfString += dxfEncQuad(currBot, prevBot, prevTop, currTop, m.normal, handleRef);
|
|
52
54
|
}
|
|
53
55
|
|
|
54
56
|
prevBot = currBot;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type Dimension, dimensionIsOfTypeMesh, type Vec3, vec3Length, vec3Sub, vec3TransRot } from "../../../abstract-3d.js";
|
|
2
|
+
import type { Handle } from "../dxf-encoding/dxf-common.js";
|
|
3
|
+
import { dxfEncDimension } from "../dxf-encoding/dxf-dimension.js";
|
|
4
|
+
|
|
5
|
+
export function dxfDimension(dimension: Dimension, parentPos: Vec3, parentRot: Vec3, handleRef: Handle): string {
|
|
6
|
+
if(dimensionIsOfTypeMesh(dimension)) {
|
|
7
|
+
return "";
|
|
8
|
+
}
|
|
9
|
+
const ms = vec3TransRot(dimension.measurementStart, parentPos, parentRot);
|
|
10
|
+
const me = vec3TransRot(dimension.measurementEnd, parentPos, parentRot);
|
|
11
|
+
const lp = vec3TransRot(dimension.linePosition, parentPos, parentRot);
|
|
12
|
+
const text = dimension.text ?? `${vec3Length(vec3Sub(me, ms))}`;
|
|
13
|
+
return dxfEncDimension(ms, me, lp, text, 7, handleRef);
|
|
14
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { AbstractImage, Color, Component } from "abstract-image";
|
|
2
2
|
import {
|
|
3
|
-
ImageMesh,
|
|
4
|
-
Vec3,
|
|
3
|
+
type ImageMesh,
|
|
4
|
+
type Vec3,
|
|
5
5
|
vec2Scale,
|
|
6
6
|
vec3TransRot,
|
|
7
7
|
vec3RotCombine,
|
|
@@ -10,8 +10,10 @@ import {
|
|
|
10
10
|
vec3Rot,
|
|
11
11
|
vec3Add,
|
|
12
12
|
} from "../../../abstract-3d.js";
|
|
13
|
-
import { DEFAULT_CIRCLE_SIDE_COUNT,
|
|
14
|
-
|
|
13
|
+
import { DEFAULT_CIRCLE_SIDE_COUNT, type Handle } from "../dxf-encoding/dxf-common.js";
|
|
14
|
+
import { DxfDynamicColor } from "../dxf-encoding/dxf-color.js";
|
|
15
|
+
import { dxfEncPolyline } from "../dxf-encoding/dxf-polyline.js";
|
|
16
|
+
import { dxfEncLine } from "../dxf-encoding/dxf-line.js";
|
|
15
17
|
|
|
16
18
|
export function dxfImage(i: ImageMesh, parentPos: Vec3, parentRot: Vec3, handleRef: Handle): string {
|
|
17
19
|
const half = vec2Scale(i.size, 0.5);
|
|
@@ -59,17 +61,17 @@ function abstractImageComponentToDxf3D(
|
|
|
59
61
|
break;
|
|
60
62
|
}
|
|
61
63
|
case "line": {
|
|
62
|
-
dxf +=
|
|
64
|
+
dxf += dxfEncLine(vec3tr(comp.start.x, comp.start.y), vec3tr(comp.end.x, comp.end.y), strokeColor, handleRef);
|
|
63
65
|
break;
|
|
64
66
|
}
|
|
65
67
|
case "polyline": {
|
|
66
68
|
const points = comp.points.map((p) => vec3tr(p.x, p.y));
|
|
67
|
-
dxf +=
|
|
69
|
+
dxf += dxfEncPolyline(points, strokeColor, false, handleRef);
|
|
68
70
|
break;
|
|
69
71
|
}
|
|
70
72
|
case "polygon": {
|
|
71
73
|
const points = comp.points.map((p) => vec3tr(p.x, p.y));
|
|
72
|
-
dxf +=
|
|
74
|
+
dxf += dxfEncPolyline(points, strokeColor, true, handleRef);
|
|
73
75
|
break;
|
|
74
76
|
}
|
|
75
77
|
case "ellipse": {
|
|
@@ -82,7 +84,7 @@ function abstractImageComponentToDxf3D(
|
|
|
82
84
|
const y = comp.topLeft.y + r2 + r2 * Math.sin(t);
|
|
83
85
|
points.push(vec3tr(x, y));
|
|
84
86
|
}
|
|
85
|
-
dxf +=
|
|
87
|
+
dxf += dxfEncPolyline(points, strokeColor, true, handleRef);
|
|
86
88
|
break;
|
|
87
89
|
}
|
|
88
90
|
case "rectangle": {
|
|
@@ -93,7 +95,7 @@ function abstractImageComponentToDxf3D(
|
|
|
93
95
|
vec3tr(comp.bottomRight.x, comp.bottomRight.y),
|
|
94
96
|
vec3tr(comp.topLeft.x, comp.bottomRight.y),
|
|
95
97
|
];
|
|
96
|
-
dxf +=
|
|
98
|
+
dxf += dxfEncPolyline(points, strokeColor, true, handleRef);
|
|
97
99
|
break;
|
|
98
100
|
}
|
|
99
101
|
default:
|
|
@@ -1,21 +1,22 @@
|
|
|
1
1
|
import {
|
|
2
|
-
Plane,
|
|
3
|
-
Material,
|
|
4
|
-
Vec3,
|
|
2
|
+
type Plane,
|
|
3
|
+
type Material,
|
|
4
|
+
type Vec3,
|
|
5
5
|
vec2Scale,
|
|
6
|
+
vec3,
|
|
6
7
|
vec3TransRot,
|
|
7
8
|
vec3RotCombine,
|
|
8
9
|
vec3Zero,
|
|
9
|
-
vec3,
|
|
10
10
|
} from "../../../abstract-3d.js";
|
|
11
|
-
import {
|
|
11
|
+
import type { Handle } from "../dxf-encoding/dxf-common.js";
|
|
12
|
+
import { dxfEncQuad } from "../dxf-encoding/dxf-quad.js";
|
|
12
13
|
|
|
13
14
|
export function dxfPlane(p: Plane, m: Material, parentPos: Vec3, parentRot: Vec3, handleRef: Handle): string {
|
|
14
15
|
const half = vec2Scale(p.size, 0.5);
|
|
15
16
|
const pos = vec3TransRot(p.pos, parentPos, parentRot);
|
|
16
17
|
const rot = vec3RotCombine(parentRot, p.rot ?? vec3Zero);
|
|
17
18
|
const vec3tr = (x: number, y: number): Vec3 => vec3TransRot(vec3(x, y, 0), pos, rot);
|
|
18
|
-
return
|
|
19
|
+
return dxfEncQuad(
|
|
19
20
|
vec3tr(-half.x, -half.y),
|
|
20
21
|
vec3tr(half.x, -half.y),
|
|
21
22
|
vec3tr(half.x, half.y),
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import { Polygon, Material, Vec3,
|
|
2
|
-
import {
|
|
1
|
+
import { type Polygon, type Material, type Vec3, vec3RotCombine, vec3TransRot, vec3Zero } from "../../../abstract-3d.js";
|
|
2
|
+
import type { Handle } from "../dxf-encoding/dxf-common.js";
|
|
3
|
+
import { dxfEncQuad } from "../dxf-encoding/dxf-quad.js";
|
|
4
|
+
import { dxfEncTriangle } from "../dxf-encoding/dxf-triangle.js";
|
|
3
5
|
|
|
4
6
|
const QUAD_STRIDE = 4;
|
|
5
7
|
const TRIANGLE_STRIDE = 3;
|
|
@@ -17,7 +19,7 @@ export function dxfPolygon(p: Polygon, m: Material, parentPos: Vec3, parentRot:
|
|
|
17
19
|
const vec3 = points[i + 2];
|
|
18
20
|
const vec4 = points[i + 3];
|
|
19
21
|
if(vec1 && vec2 && vec3 && vec4) {
|
|
20
|
-
polygonString +=
|
|
22
|
+
polygonString += dxfEncQuad(
|
|
21
23
|
vec1,
|
|
22
24
|
vec2,
|
|
23
25
|
vec3,
|
|
@@ -37,7 +39,7 @@ export function dxfPolygon(p: Polygon, m: Material, parentPos: Vec3, parentRot:
|
|
|
37
39
|
const vec2 = points[i - 1];
|
|
38
40
|
const vec3 = points[i - 2];
|
|
39
41
|
if(vec1 && vec2 && vec3) {
|
|
40
|
-
polygonString +=
|
|
42
|
+
polygonString += dxfEncTriangle(vec3, vec2, vec1, col, handleRef);
|
|
41
43
|
}
|
|
42
44
|
break;
|
|
43
45
|
}
|
|
@@ -46,7 +48,7 @@ export function dxfPolygon(p: Polygon, m: Material, parentPos: Vec3, parentRot:
|
|
|
46
48
|
const vec2 = points[i - 1];
|
|
47
49
|
const vec3 = points[i + 1];
|
|
48
50
|
if(vec1 && vec2 && vec3) {
|
|
49
|
-
polygonString +=
|
|
51
|
+
polygonString += dxfEncTriangle(
|
|
50
52
|
vec2,
|
|
51
53
|
vec1,
|
|
52
54
|
vec3,
|
|
@@ -61,7 +63,7 @@ export function dxfPolygon(p: Polygon, m: Material, parentPos: Vec3, parentRot:
|
|
|
61
63
|
const vec2 = points[i + 1];
|
|
62
64
|
const vec3 = points[i + 2];
|
|
63
65
|
if(vec1 && vec2 && vec3) {
|
|
64
|
-
polygonString +=
|
|
66
|
+
polygonString += dxfEncTriangle(
|
|
65
67
|
vec1,
|
|
66
68
|
vec2,
|
|
67
69
|
vec3,
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import { Shape, Material, Vec3, vec3TransRot, vec3RotCombine, vec3Zero, vec3 } from "../../../abstract-3d.js";
|
|
2
|
-
import {
|
|
1
|
+
import { type Shape, type Material, type Vec3, vec3TransRot, vec3RotCombine, vec3Zero, vec3 } from "../../../abstract-3d.js";
|
|
2
|
+
import type { Handle } from "../dxf-encoding/dxf-common.js";
|
|
3
|
+
import { dxfEncQuad } from "../dxf-encoding/dxf-quad.js";
|
|
4
|
+
import { dxfEncTriangle } from "../dxf-encoding/dxf-triangle.js";
|
|
3
5
|
|
|
4
6
|
const QUAD_STRIDE = 4;
|
|
5
7
|
const TRIANGLE_STRIDE = 3;
|
|
@@ -17,7 +19,7 @@ export function dxfPolygon(s: Shape, m: Material, parentPos: Vec3, parentRot: Ve
|
|
|
17
19
|
const p3 = points[i + 2];
|
|
18
20
|
const p4 = points[i + 3];
|
|
19
21
|
if(p1 && p2 && p3 && p4) {
|
|
20
|
-
polygonString +=
|
|
22
|
+
polygonString += dxfEncQuad(p1, p2, p3, p4, m.normal, handleRef);
|
|
21
23
|
}
|
|
22
24
|
}
|
|
23
25
|
}
|
|
@@ -30,7 +32,7 @@ export function dxfPolygon(s: Shape, m: Material, parentPos: Vec3, parentRot: Ve
|
|
|
30
32
|
const p2 = points[i - 1];
|
|
31
33
|
const p3 = points[i];
|
|
32
34
|
if(p1 && p2 && p3) {
|
|
33
|
-
polygonString +=
|
|
35
|
+
polygonString += dxfEncTriangle(p1, p2, p3, m.normal, handleRef);
|
|
34
36
|
}
|
|
35
37
|
break;
|
|
36
38
|
}
|
|
@@ -39,7 +41,7 @@ export function dxfPolygon(s: Shape, m: Material, parentPos: Vec3, parentRot: Ve
|
|
|
39
41
|
const p2 = points[i];
|
|
40
42
|
const p3 = points[i + 1];
|
|
41
43
|
if(p1 && p2 && p3) {
|
|
42
|
-
polygonString +=
|
|
44
|
+
polygonString += dxfEncTriangle(p1, p2, p3, m.normal, handleRef);
|
|
43
45
|
}
|
|
44
46
|
break;
|
|
45
47
|
}
|
|
@@ -48,7 +50,7 @@ export function dxfPolygon(s: Shape, m: Material, parentPos: Vec3, parentRot: Ve
|
|
|
48
50
|
const p2 = points[i + 1];
|
|
49
51
|
const p3 = points[i + 2];
|
|
50
52
|
if(p1 && p2 && p3) {
|
|
51
|
-
polygonString +=
|
|
53
|
+
polygonString += dxfEncTriangle(p1, p2, p3, m.normal, handleRef);
|
|
52
54
|
}
|
|
53
55
|
break;
|
|
54
56
|
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type Text, type Material, type Vec3, vec3RotCombine, vec3TransRot, vec3Zero } from "../../../abstract-3d.js";
|
|
2
|
+
import type { Handle } from "../dxf-encoding/dxf-common.js";
|
|
3
|
+
import { dxfEncText } from "../dxf-encoding/dxf-text.js";
|
|
4
|
+
|
|
5
|
+
export function dxfText(t: Text, _m: Material, parentPos: Vec3, parentRot: Vec3, handleRef: Handle): string {
|
|
6
|
+
const pos = vec3TransRot(t.pos, parentPos, parentRot);
|
|
7
|
+
const rot = vec3RotCombine(parentRot, t.rot ?? vec3Zero);
|
|
8
|
+
return dxfEncText(pos, rot.z, t.text, t.fontSize, 7, handleRef);
|
|
9
|
+
}
|