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.
Files changed (142) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/lib/abstract-3d.d.ts +13 -1
  3. package/lib/abstract-3d.d.ts.map +1 -1
  4. package/lib/abstract-3d.js +77 -0
  5. package/lib/abstract-3d.js.map +1 -1
  6. package/lib/renderers/dxf/dxf-encoding/dxf-color.d.ts +5 -0
  7. package/lib/renderers/dxf/dxf-encoding/dxf-color.d.ts.map +1 -0
  8. package/lib/renderers/dxf/{color.js → dxf-encoding/dxf-color.js} +24 -19
  9. package/lib/renderers/dxf/dxf-encoding/dxf-color.js.map +1 -0
  10. package/lib/renderers/dxf/dxf-encoding/dxf-common.d.ts +13 -0
  11. package/lib/renderers/dxf/dxf-encoding/dxf-common.d.ts.map +1 -0
  12. package/lib/renderers/dxf/dxf-encoding/dxf-common.js +23 -0
  13. package/lib/renderers/dxf/dxf-encoding/dxf-common.js.map +1 -0
  14. package/lib/renderers/dxf/dxf-encoding/dxf-dimension.d.ts +6 -0
  15. package/lib/renderers/dxf/dxf-encoding/dxf-dimension.d.ts.map +1 -0
  16. package/lib/renderers/dxf/dxf-encoding/dxf-dimension.js +50 -0
  17. package/lib/renderers/dxf/dxf-encoding/dxf-dimension.js.map +1 -0
  18. package/lib/renderers/dxf/dxf-encoding/dxf-footer.d.ts +2 -0
  19. package/lib/renderers/dxf/dxf-encoding/dxf-footer.d.ts.map +1 -0
  20. package/lib/renderers/dxf/{dxf-encoding.js → dxf-encoding/dxf-footer.js} +3 -1819
  21. package/lib/renderers/dxf/{dxf-encoding.js.map → dxf-encoding/dxf-footer.js.map} +1 -1
  22. package/lib/renderers/dxf/dxf-encoding/dxf-header.d.ts +3 -0
  23. package/lib/renderers/dxf/dxf-encoding/dxf-header.d.ts.map +1 -0
  24. package/lib/renderers/dxf/dxf-encoding/dxf-header.js +1653 -0
  25. package/lib/renderers/dxf/dxf-encoding/dxf-header.js.map +1 -0
  26. package/lib/renderers/dxf/dxf-encoding/dxf-line.d.ts +5 -0
  27. package/lib/renderers/dxf/dxf-encoding/dxf-line.d.ts.map +1 -0
  28. package/lib/renderers/dxf/dxf-encoding/dxf-line.js +29 -0
  29. package/lib/renderers/dxf/dxf-encoding/dxf-line.js.map +1 -0
  30. package/lib/renderers/dxf/dxf-encoding/dxf-polyline.d.ts +5 -0
  31. package/lib/renderers/dxf/dxf-encoding/dxf-polyline.d.ts.map +1 -0
  32. package/lib/renderers/dxf/dxf-encoding/dxf-polyline.js +73 -0
  33. package/lib/renderers/dxf/dxf-encoding/dxf-polyline.js.map +1 -0
  34. package/lib/renderers/dxf/dxf-encoding/dxf-quad.d.ts +5 -0
  35. package/lib/renderers/dxf/dxf-encoding/dxf-quad.d.ts.map +1 -0
  36. package/lib/renderers/dxf/dxf-encoding/dxf-quad.js +39 -0
  37. package/lib/renderers/dxf/dxf-encoding/dxf-quad.js.map +1 -0
  38. package/lib/renderers/dxf/dxf-encoding/dxf-text.d.ts +19 -0
  39. package/lib/renderers/dxf/dxf-encoding/dxf-text.d.ts.map +1 -0
  40. package/lib/renderers/dxf/dxf-encoding/dxf-text.js +70 -0
  41. package/lib/renderers/dxf/dxf-encoding/dxf-text.js.map +1 -0
  42. package/lib/renderers/dxf/dxf-encoding/dxf-triangle.d.ts +5 -0
  43. package/lib/renderers/dxf/dxf-encoding/dxf-triangle.d.ts.map +1 -0
  44. package/lib/renderers/dxf/dxf-encoding/dxf-triangle.js +3 -0
  45. package/lib/renderers/dxf/dxf-encoding/dxf-triangle.js.map +1 -0
  46. package/lib/renderers/dxf/dxf-geometries/dxf-box.d.ts +2 -2
  47. package/lib/renderers/dxf/dxf-geometries/dxf-box.d.ts.map +1 -1
  48. package/lib/renderers/dxf/dxf-geometries/dxf-box.js +8 -8
  49. package/lib/renderers/dxf/dxf-geometries/dxf-box.js.map +1 -1
  50. package/lib/renderers/dxf/dxf-geometries/dxf-cone.d.ts +2 -2
  51. package/lib/renderers/dxf/dxf-geometries/dxf-cone.d.ts.map +1 -1
  52. package/lib/renderers/dxf/dxf-geometries/dxf-cone.js +4 -4
  53. package/lib/renderers/dxf/dxf-geometries/dxf-cone.js.map +1 -1
  54. package/lib/renderers/dxf/dxf-geometries/dxf-cylinder.d.ts +2 -2
  55. package/lib/renderers/dxf/dxf-geometries/dxf-cylinder.d.ts.map +1 -1
  56. package/lib/renderers/dxf/dxf-geometries/dxf-cylinder.js +6 -5
  57. package/lib/renderers/dxf/dxf-geometries/dxf-cylinder.js.map +1 -1
  58. package/lib/renderers/dxf/dxf-geometries/dxf-dimension.d.ts +4 -0
  59. package/lib/renderers/dxf/dxf-geometries/dxf-dimension.d.ts.map +1 -0
  60. package/lib/renderers/dxf/dxf-geometries/dxf-dimension.js +13 -0
  61. package/lib/renderers/dxf/dxf-geometries/dxf-dimension.js.map +1 -0
  62. package/lib/renderers/dxf/dxf-geometries/dxf-image.d.ts +2 -2
  63. package/lib/renderers/dxf/dxf-geometries/dxf-image.d.ts.map +1 -1
  64. package/lib/renderers/dxf/dxf-geometries/dxf-image.js +8 -7
  65. package/lib/renderers/dxf/dxf-geometries/dxf-image.js.map +1 -1
  66. package/lib/renderers/dxf/dxf-geometries/dxf-plane.d.ts +2 -2
  67. package/lib/renderers/dxf/dxf-geometries/dxf-plane.d.ts.map +1 -1
  68. package/lib/renderers/dxf/dxf-geometries/dxf-plane.js +3 -3
  69. package/lib/renderers/dxf/dxf-geometries/dxf-plane.js.map +1 -1
  70. package/lib/renderers/dxf/dxf-geometries/dxf-polygon.d.ts +2 -2
  71. package/lib/renderers/dxf/dxf-geometries/dxf-polygon.d.ts.map +1 -1
  72. package/lib/renderers/dxf/dxf-geometries/dxf-polygon.js +7 -6
  73. package/lib/renderers/dxf/dxf-geometries/dxf-polygon.js.map +1 -1
  74. package/lib/renderers/dxf/dxf-geometries/dxf-shape.d.ts +2 -2
  75. package/lib/renderers/dxf/dxf-geometries/dxf-shape.d.ts.map +1 -1
  76. package/lib/renderers/dxf/dxf-geometries/dxf-shape.js +6 -5
  77. package/lib/renderers/dxf/dxf-geometries/dxf-shape.js.map +1 -1
  78. package/lib/renderers/dxf/dxf-geometries/dxf-text.d.ts +4 -0
  79. package/lib/renderers/dxf/dxf-geometries/dxf-text.d.ts.map +1 -0
  80. package/lib/renderers/dxf/dxf-geometries/dxf-text.js +8 -0
  81. package/lib/renderers/dxf/dxf-geometries/dxf-text.js.map +1 -0
  82. package/lib/renderers/dxf/dxf.d.ts +4 -3
  83. package/lib/renderers/dxf/dxf.d.ts.map +1 -1
  84. package/lib/renderers/dxf/dxf.js +36 -22
  85. package/lib/renderers/dxf/dxf.js.map +1 -1
  86. package/lib/renderers/dxf/index.d.ts +1 -1
  87. package/lib/renderers/dxf/index.d.ts.map +1 -1
  88. package/lib/renderers/react/react-dimension.d.ts +4 -3
  89. package/lib/renderers/react/react-dimension.d.ts.map +1 -1
  90. package/lib/renderers/react/react-dimension.js +4 -3
  91. package/lib/renderers/react/react-dimension.js.map +1 -1
  92. package/lib/renderers/step/step-encoding.d.ts +2 -0
  93. package/lib/renderers/step/step-encoding.d.ts.map +1 -1
  94. package/lib/renderers/step/step-encoding.js +16 -3
  95. package/lib/renderers/step/step-encoding.js.map +1 -1
  96. package/lib/renderers/step/step-geometries/step-box.d.ts.map +1 -1
  97. package/lib/renderers/step/step-geometries/step-box.js +3 -0
  98. package/lib/renderers/step/step-geometries/step-box.js.map +1 -1
  99. package/lib/renderers/step/step-geometries/step-cylinder.d.ts.map +1 -1
  100. package/lib/renderers/step/step-geometries/step-cylinder.js +67 -21
  101. package/lib/renderers/step/step-geometries/step-cylinder.js.map +1 -1
  102. package/lib/renderers/svg/svg.d.ts.map +1 -1
  103. package/lib/renderers/svg/svg.js +6 -27
  104. package/lib/renderers/svg/svg.js.map +1 -1
  105. package/lib/utils.d.ts +3 -0
  106. package/lib/utils.d.ts.map +1 -1
  107. package/lib/utils.js +30 -0
  108. package/lib/utils.js.map +1 -1
  109. package/package.json +2 -2
  110. package/src/abstract-3d.ts +127 -7
  111. package/src/renderers/dxf/{color.ts → dxf-encoding/dxf-color.ts} +27 -20
  112. package/src/renderers/dxf/dxf-encoding/dxf-common.ts +31 -0
  113. package/src/renderers/dxf/dxf-encoding/dxf-dimension.ts +60 -0
  114. package/src/renderers/dxf/{dxf-encoding.ts → dxf-encoding/dxf-footer.ts} +4 -1870
  115. package/src/renderers/dxf/dxf-encoding/dxf-header.ts +1657 -0
  116. package/src/renderers/dxf/dxf-encoding/dxf-line.ts +35 -0
  117. package/src/renderers/dxf/dxf-encoding/dxf-polyline.ts +83 -0
  118. package/src/renderers/dxf/dxf-encoding/dxf-quad.ts +47 -0
  119. package/src/renderers/dxf/dxf-encoding/dxf-text.ts +71 -0
  120. package/src/renderers/dxf/dxf-encoding/dxf-triangle.ts +12 -0
  121. package/src/renderers/dxf/dxf-geometries/dxf-box.ts +18 -8
  122. package/src/renderers/dxf/dxf-geometries/dxf-cone.ts +13 -4
  123. package/src/renderers/dxf/dxf-geometries/dxf-cylinder.ts +13 -11
  124. package/src/renderers/dxf/dxf-geometries/dxf-dimension.ts +14 -0
  125. package/src/renderers/dxf/dxf-geometries/dxf-image.ts +11 -9
  126. package/src/renderers/dxf/dxf-geometries/dxf-plane.ts +7 -6
  127. package/src/renderers/dxf/dxf-geometries/dxf-polygon.ts +8 -6
  128. package/src/renderers/dxf/dxf-geometries/dxf-shape.ts +8 -6
  129. package/src/renderers/dxf/dxf-geometries/dxf-text.ts +9 -0
  130. package/src/renderers/dxf/dxf.ts +57 -39
  131. package/src/renderers/dxf/index.ts +1 -1
  132. package/src/renderers/react/react-dimension.tsx +8 -4
  133. package/src/renderers/step/step-encoding.ts +24 -5
  134. package/src/renderers/step/step-geometries/step-box.ts +6 -0
  135. package/src/renderers/step/step-geometries/step-cylinder.ts +303 -101
  136. package/src/renderers/svg/svg.ts +6 -34
  137. package/src/utils.ts +39 -0
  138. package/lib/renderers/dxf/color.d.ts +0 -7
  139. package/lib/renderers/dxf/color.d.ts.map +0 -1
  140. package/lib/renderers/dxf/color.js.map +0 -1
  141. package/lib/renderers/dxf/dxf-encoding.d.ts +0 -17
  142. 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 { Box, Material, Vec3, vec3TransRot, vec3RotCombine, vec3Zero, vec3Scale, vec3 } from "../../../abstract-3d.js";
2
- import { dxfQuad, Handle } from "../dxf-encoding.js";
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
- dxfQuad(v1, v2, v3, v4, m.normal, handleRef) + // front
20
- dxfQuad(v5, v6, v7, v8, m.normal, handleRef) + // Back
21
- dxfQuad(v5, v1, v4, v8, m.normal, handleRef) + // Left
22
- dxfQuad(v6, v2, v3, v7, m.normal, handleRef) + // Right
23
- dxfQuad(v8, v7, v3, v4, m.normal, handleRef) + // Top
24
- dxfQuad(v5, v6, v2, v1, m.normal, handleRef) // Bottom
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 { Cone, Material, Vec3, vec3TransRot, vec3RotCombine, vec3Zero, vec3 } from "../../../abstract-3d.js";
2
- import { dxfTriangle, Handle } from "../dxf-encoding.js";
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
- dxfTriangle(botPos, prevBot, currBot, m.normal, handleRef) +
32
- dxfTriangle(currBot, prevBot, topPos, m.normal, handleRef);
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
- vec3TransRot,
6
- vec3RotCombine,
7
- vec3Zero,
2
+ type Cylinder,
3
+ type Material,
4
+ type Vec3,
5
+ equals,
8
6
  vec3,
7
+ vec3RotCombine,
9
8
  vec3Scale,
10
- equals,
9
+ vec3TransRot,
10
+ vec3Zero,
11
11
  } from "../../../abstract-3d.js";
12
- import { dxfQuad, dxfTriangle, Handle } from "../dxf-encoding.js";
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
- dxfTriangle(botPos, prevBot, currBot, m.normal, handleRef) +
49
- dxfTriangle(topPos, prevTop, currTop, m.normal, handleRef);
50
+ dxfEncTriangle(botPos, prevBot, currBot, m.normal, handleRef) +
51
+ dxfEncTriangle(topPos, prevTop, currTop, m.normal, handleRef);
50
52
  }
51
- dxfString += dxfQuad(currBot, prevBot, prevTop, currTop, m.normal, handleRef);
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, DxfDynamicColor, dxfLine, dxfPolyline, Handle } from "../dxf-encoding.js";
14
- // dummy
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 += dxfLine(vec3tr(comp.start.x, comp.start.y), vec3tr(comp.end.x, comp.end.y), strokeColor, handleRef);
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 += dxfPolyline(points, strokeColor, false, handleRef);
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 += dxfPolyline(points, strokeColor, true, handleRef);
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 += dxfPolyline(points, strokeColor, true, handleRef);
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 += dxfPolyline(points, strokeColor, true, handleRef);
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 { dxfQuad, Handle } from "../dxf-encoding.js";
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 dxfQuad(
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, vec3TransRot, vec3RotCombine, vec3Zero } from "../../../abstract-3d.js";
2
- import { dxfQuad, dxfTriangle, Handle } from "../dxf-encoding.js";
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 += dxfQuad(
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 += dxfTriangle(vec3, vec2, vec1, col, handleRef);
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 += dxfTriangle(
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 += dxfTriangle(
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 { dxfQuad, dxfTriangle, Handle } from "../dxf-encoding.js";
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 += dxfQuad(p1, p2, p3, p4, m.normal, handleRef);
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 += dxfTriangle(p1, p2, p3, m.normal, handleRef);
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 += dxfTriangle(p1, p2, p3, m.normal, handleRef);
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 += dxfTriangle(p1, p2, p3, m.normal, handleRef);
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
+ }