abstract-3d 2.7.32 → 2.8.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 (209) hide show
  1. package/README.md +1 -1
  2. package/lib/abstract-3d.d.ts +1 -1
  3. package/lib/abstract-3d.d.ts.map +1 -1
  4. package/lib/abstract-3d.js +46 -29
  5. package/lib/abstract-3d.js.map +1 -1
  6. package/lib/renderers/dxf/dxf-encoding/dxf-build.d.ts +4 -0
  7. package/lib/renderers/dxf/dxf-encoding/dxf-build.d.ts.map +1 -0
  8. package/lib/renderers/dxf/dxf-encoding/dxf-build.js +8 -0
  9. package/lib/renderers/dxf/dxf-encoding/dxf-build.js.map +1 -0
  10. package/lib/renderers/dxf/dxf-encoding/dxf-color.js +3 -2
  11. package/lib/renderers/dxf/dxf-encoding/dxf-color.js.map +1 -1
  12. package/lib/renderers/dxf/dxf-encoding/dxf-common.d.ts +1 -3
  13. package/lib/renderers/dxf/dxf-encoding/dxf-common.d.ts.map +1 -1
  14. package/lib/renderers/dxf/dxf-encoding/dxf-common.js +3 -10
  15. package/lib/renderers/dxf/dxf-encoding/dxf-common.js.map +1 -1
  16. package/lib/renderers/dxf/dxf-encoding/dxf-dimension.d.ts.map +1 -1
  17. package/lib/renderers/dxf/dxf-encoding/dxf-dimension.js +1 -1
  18. package/lib/renderers/dxf/dxf-encoding/dxf-dimension.js.map +1 -1
  19. package/lib/renderers/dxf/dxf-encoding/dxf-footer.js +1 -1
  20. package/lib/renderers/dxf/dxf-encoding/dxf-header.d.ts.map +1 -1
  21. package/lib/renderers/dxf/dxf-encoding/dxf-header.js +1 -1
  22. package/lib/renderers/dxf/dxf-encoding/dxf-header.js.map +1 -1
  23. package/lib/renderers/dxf/dxf-encoding/dxf-line.d.ts.map +1 -1
  24. package/lib/renderers/dxf/dxf-encoding/dxf-line.js.map +1 -1
  25. package/lib/renderers/dxf/dxf-encoding/dxf-lwpolyline.d.ts.map +1 -1
  26. package/lib/renderers/dxf/dxf-encoding/dxf-lwpolyline.js +1 -3
  27. package/lib/renderers/dxf/dxf-encoding/dxf-lwpolyline.js.map +1 -1
  28. package/lib/renderers/dxf/dxf-encoding/dxf-mtext.d.ts.map +1 -1
  29. package/lib/renderers/dxf/dxf-encoding/dxf-mtext.js +0 -1
  30. package/lib/renderers/dxf/dxf-encoding/dxf-mtext.js.map +1 -1
  31. package/lib/renderers/dxf/dxf-encoding/dxf-polyline.d.ts.map +1 -1
  32. package/lib/renderers/dxf/dxf-encoding/dxf-polyline.js.map +1 -1
  33. package/lib/renderers/dxf/dxf-encoding/dxf-solid.d.ts.map +1 -1
  34. package/lib/renderers/dxf/dxf-encoding/dxf-solid.js.map +1 -1
  35. package/lib/renderers/dxf/dxf-encoding/dxf-triangle.d.ts.map +1 -1
  36. package/lib/renderers/dxf/dxf-encoding/dxf-triangle.js.map +1 -1
  37. package/lib/renderers/dxf/dxf-geometries/dxf-box.d.ts.map +1 -1
  38. package/lib/renderers/dxf/dxf-geometries/dxf-box.js +1 -1
  39. package/lib/renderers/dxf/dxf-geometries/dxf-box.js.map +1 -1
  40. package/lib/renderers/dxf/dxf-geometries/dxf-cone.d.ts.map +1 -1
  41. package/lib/renderers/dxf/dxf-geometries/dxf-cone.js +2 -3
  42. package/lib/renderers/dxf/dxf-geometries/dxf-cone.js.map +1 -1
  43. package/lib/renderers/dxf/dxf-geometries/dxf-cylinder.d.ts.map +1 -1
  44. package/lib/renderers/dxf/dxf-geometries/dxf-cylinder.js +2 -3
  45. package/lib/renderers/dxf/dxf-geometries/dxf-cylinder.js.map +1 -1
  46. package/lib/renderers/dxf/dxf-geometries/dxf-dimension.d.ts.map +1 -1
  47. package/lib/renderers/dxf/dxf-geometries/dxf-dimension.js.map +1 -1
  48. package/lib/renderers/dxf/dxf-geometries/dxf-image.d.ts +1 -1
  49. package/lib/renderers/dxf/dxf-geometries/dxf-image.d.ts.map +1 -1
  50. package/lib/renderers/dxf/dxf-geometries/dxf-image.js +4 -9
  51. package/lib/renderers/dxf/dxf-geometries/dxf-image.js.map +1 -1
  52. package/lib/renderers/dxf/dxf-geometries/dxf-plane.d.ts.map +1 -1
  53. package/lib/renderers/dxf/dxf-geometries/dxf-plane.js +1 -1
  54. package/lib/renderers/dxf/dxf-geometries/dxf-plane.js.map +1 -1
  55. package/lib/renderers/dxf/dxf-geometries/dxf-polygon.d.ts.map +1 -1
  56. package/lib/renderers/dxf/dxf-geometries/dxf-polygon.js +1 -1
  57. package/lib/renderers/dxf/dxf-geometries/dxf-polygon.js.map +1 -1
  58. package/lib/renderers/dxf/dxf-geometries/dxf-shape.d.ts.map +1 -1
  59. package/lib/renderers/dxf/dxf-geometries/dxf-shape.js.map +1 -1
  60. package/lib/renderers/dxf/dxf.d.ts +1 -1
  61. package/lib/renderers/dxf/dxf.d.ts.map +1 -1
  62. package/lib/renderers/dxf/dxf.js +6 -5
  63. package/lib/renderers/dxf/dxf.js.map +1 -1
  64. package/lib/renderers/react/react-camera.d.ts +1 -1
  65. package/lib/renderers/react/react-camera.d.ts.map +1 -1
  66. package/lib/renderers/react/react-camera.js +13 -18
  67. package/lib/renderers/react/react-camera.js.map +1 -1
  68. package/lib/renderers/react/react-dimension.js +1 -1
  69. package/lib/renderers/react/react-dimension.js.map +1 -1
  70. package/lib/renderers/react/react-group.d.ts +1 -1
  71. package/lib/renderers/react/react-group.d.ts.map +1 -1
  72. package/lib/renderers/react/react-group.js +4 -3
  73. package/lib/renderers/react/react-group.js.map +1 -1
  74. package/lib/renderers/react/react-hotspot.d.ts +1 -1
  75. package/lib/renderers/react/react-hotspot.d.ts.map +1 -1
  76. package/lib/renderers/react/react-hotspot.js +2 -2
  77. package/lib/renderers/react/react-hotspot.js.map +1 -1
  78. package/lib/renderers/react/react-image-material.d.ts.map +1 -1
  79. package/lib/renderers/react/react-image-material.js +5 -6
  80. package/lib/renderers/react/react-image-material.js.map +1 -1
  81. package/lib/renderers/react/react-material.d.ts.map +1 -1
  82. package/lib/renderers/react/react-material.js +3 -15
  83. package/lib/renderers/react/react-material.js.map +1 -1
  84. package/lib/renderers/react/react-mesh.d.ts +1 -1
  85. package/lib/renderers/react/react-mesh.d.ts.map +1 -1
  86. package/lib/renderers/react/react-mesh.js +10 -9
  87. package/lib/renderers/react/react-mesh.js.map +1 -1
  88. package/lib/renderers/react/react-scene.d.ts +1 -1
  89. package/lib/renderers/react/react-scene.d.ts.map +1 -1
  90. package/lib/renderers/react/react-scene.js +3 -11
  91. package/lib/renderers/react/react-scene.js.map +1 -1
  92. package/lib/renderers/react/react.d.ts +2 -2
  93. package/lib/renderers/react/react.d.ts.map +1 -1
  94. package/lib/renderers/react/react.js +4 -4
  95. package/lib/renderers/react/react.js.map +1 -1
  96. package/lib/renderers/step/step-encoding.d.ts.map +1 -1
  97. package/lib/renderers/step/step-encoding.js.map +1 -1
  98. package/lib/renderers/step/step-geometries/step-box.d.ts.map +1 -1
  99. package/lib/renderers/step/step-geometries/step-box.js +1 -1
  100. package/lib/renderers/step/step-geometries/step-box.js.map +1 -1
  101. package/lib/renderers/step/step-geometries/step-cylinder.d.ts.map +1 -1
  102. package/lib/renderers/step/step-geometries/step-cylinder.js.map +1 -1
  103. package/lib/renderers/stl/stl-geometries/stl-cone.d.ts.map +1 -1
  104. package/lib/renderers/stl/stl-geometries/stl-cone.js +1 -2
  105. package/lib/renderers/stl/stl-geometries/stl-cone.js.map +1 -1
  106. package/lib/renderers/stl/stl-geometries/stl-cylinder.d.ts.map +1 -1
  107. package/lib/renderers/stl/stl-geometries/stl-cylinder.js +1 -2
  108. package/lib/renderers/stl/stl-geometries/stl-cylinder.js.map +1 -1
  109. package/lib/renderers/stl/stl-geometries/stl-plane.d.ts.map +1 -1
  110. package/lib/renderers/stl/stl-geometries/stl-plane.js +1 -6
  111. package/lib/renderers/stl/stl-geometries/stl-plane.js.map +1 -1
  112. package/lib/renderers/stl/stl.d.ts.map +1 -1
  113. package/lib/renderers/stl/stl.js +3 -4
  114. package/lib/renderers/stl/stl.js.map +1 -1
  115. package/lib/renderers/svg/svg-encoding.d.ts.map +1 -1
  116. package/lib/renderers/svg/svg-encoding.js +3 -3
  117. package/lib/renderers/svg/svg-encoding.js.map +1 -1
  118. package/lib/renderers/svg/svg-geometries/shared.d.ts.map +1 -1
  119. package/lib/renderers/svg/svg-geometries/shared.js.map +1 -1
  120. package/lib/renderers/svg/svg-geometries/svg-box.d.ts.map +1 -1
  121. package/lib/renderers/svg/svg-geometries/svg-box.js +2 -2
  122. package/lib/renderers/svg/svg-geometries/svg-box.js.map +1 -1
  123. package/lib/renderers/svg/svg-geometries/svg-cone.d.ts.map +1 -1
  124. package/lib/renderers/svg/svg-geometries/svg-cone.js +4 -9
  125. package/lib/renderers/svg/svg-geometries/svg-cone.js.map +1 -1
  126. package/lib/renderers/svg/svg-geometries/svg-cylinder.d.ts.map +1 -1
  127. package/lib/renderers/svg/svg-geometries/svg-cylinder.js +4 -9
  128. package/lib/renderers/svg/svg-geometries/svg-cylinder.js.map +1 -1
  129. package/lib/renderers/svg/svg-geometries/svg-image.d.ts.map +1 -1
  130. package/lib/renderers/svg/svg-geometries/svg-image.js +2 -2
  131. package/lib/renderers/svg/svg-geometries/svg-image.js.map +1 -1
  132. package/lib/renderers/svg/svg-geometries/svg-line.d.ts.map +1 -1
  133. package/lib/renderers/svg/svg-geometries/svg-line.js +3 -5
  134. package/lib/renderers/svg/svg-geometries/svg-line.js.map +1 -1
  135. package/lib/renderers/svg/svg-geometries/svg-plane.d.ts.map +1 -1
  136. package/lib/renderers/svg/svg-geometries/svg-plane.js +3 -5
  137. package/lib/renderers/svg/svg-geometries/svg-plane.js.map +1 -1
  138. package/lib/renderers/svg/svg-geometries/svg-polygon.d.ts.map +1 -1
  139. package/lib/renderers/svg/svg-geometries/svg-polygon.js +3 -5
  140. package/lib/renderers/svg/svg-geometries/svg-polygon.js.map +1 -1
  141. package/lib/renderers/svg/svg-geometries/svg-shape.d.ts.map +1 -1
  142. package/lib/renderers/svg/svg-geometries/svg-shape.js +2 -2
  143. package/lib/renderers/svg/svg-geometries/svg-shape.js.map +1 -1
  144. package/lib/renderers/svg/svg-geometries/svg-text.d.ts.map +1 -1
  145. package/lib/renderers/svg/svg-geometries/svg-text.js +1 -1
  146. package/lib/renderers/svg/svg-geometries/svg-text.js.map +1 -1
  147. package/lib/renderers/svg/svg.d.ts +1 -1
  148. package/lib/renderers/svg/svg.d.ts.map +1 -1
  149. package/lib/renderers/svg/svg.js +5 -5
  150. package/lib/renderers/svg/svg.js.map +1 -1
  151. package/lib/utils.d.ts +3 -5
  152. package/lib/utils.d.ts.map +1 -1
  153. package/lib/utils.js +12 -20
  154. package/lib/utils.js.map +1 -1
  155. package/package.json +17 -17
  156. package/src/abstract-3d.ts +70 -151
  157. package/src/custom_typings/react-three-fiber.d.ts +1 -1
  158. package/src/renderers/dxf/dxf-encoding/dxf-3dface.ts +1 -1
  159. package/src/renderers/dxf/dxf-encoding/dxf-build.ts +10 -0
  160. package/src/renderers/dxf/dxf-encoding/dxf-color.ts +27 -26
  161. package/src/renderers/dxf/dxf-encoding/dxf-common.ts +9 -17
  162. package/src/renderers/dxf/dxf-encoding/dxf-dimension.ts +3 -26
  163. package/src/renderers/dxf/dxf-encoding/dxf-footer.ts +2 -2
  164. package/src/renderers/dxf/dxf-encoding/dxf-header.ts +14 -4
  165. package/src/renderers/dxf/dxf-encoding/dxf-line.ts +2 -8
  166. package/src/renderers/dxf/dxf-encoding/dxf-lwpolyline.ts +21 -17
  167. package/src/renderers/dxf/dxf-encoding/dxf-mtext.ts +12 -3
  168. package/src/renderers/dxf/dxf-encoding/dxf-polyline.ts +3 -10
  169. package/src/renderers/dxf/dxf-encoding/dxf-solid.ts +2 -10
  170. package/src/renderers/dxf/dxf-encoding/dxf-triangle.ts +4 -16
  171. package/src/renderers/dxf/dxf-geometries/dxf-box.ts +2 -11
  172. package/src/renderers/dxf/dxf-geometries/dxf-cone.ts +3 -19
  173. package/src/renderers/dxf/dxf-geometries/dxf-cylinder.ts +4 -22
  174. package/src/renderers/dxf/dxf-geometries/dxf-dimension.ts +10 -3
  175. package/src/renderers/dxf/dxf-geometries/dxf-image.ts +11 -33
  176. package/src/renderers/dxf/dxf-geometries/dxf-plane.ts +3 -19
  177. package/src/renderers/dxf/dxf-geometries/dxf-polygon.ts +9 -28
  178. package/src/renderers/dxf/dxf-geometries/dxf-shape.ts +5 -5
  179. package/src/renderers/dxf/dxf.ts +10 -25
  180. package/src/renderers/react/react-camera.tsx +27 -26
  181. package/src/renderers/react/react-dimension.tsx +1 -7
  182. package/src/renderers/react/react-group.tsx +6 -16
  183. package/src/renderers/react/react-hotspot.tsx +4 -10
  184. package/src/renderers/react/react-image-material.tsx +7 -8
  185. package/src/renderers/react/react-material.tsx +4 -21
  186. package/src/renderers/react/react-mesh.tsx +15 -69
  187. package/src/renderers/react/react-scene.tsx +7 -21
  188. package/src/renderers/react/react.tsx +4 -4
  189. package/src/renderers/step/step-encoding.ts +36 -100
  190. package/src/renderers/step/step-geometries/step-box.ts +2 -17
  191. package/src/renderers/step/step-geometries/step-cylinder.ts +6 -36
  192. package/src/renderers/stl/stl-geometries/stl-cone.ts +1 -2
  193. package/src/renderers/stl/stl-geometries/stl-cylinder.ts +1 -2
  194. package/src/renderers/stl/stl-geometries/stl-plane.ts +1 -6
  195. package/src/renderers/stl/stl.ts +3 -7
  196. package/src/renderers/svg/svg-encoding.ts +12 -44
  197. package/src/renderers/svg/svg-geometries/shared.ts +1 -4
  198. package/src/renderers/svg/svg-geometries/svg-box.ts +2 -2
  199. package/src/renderers/svg/svg-geometries/svg-cone.ts +6 -15
  200. package/src/renderers/svg/svg-geometries/svg-cylinder.ts +6 -18
  201. package/src/renderers/svg/svg-geometries/svg-image.ts +7 -17
  202. package/src/renderers/svg/svg-geometries/svg-line.ts +3 -8
  203. package/src/renderers/svg/svg-geometries/svg-plane.ts +3 -8
  204. package/src/renderers/svg/svg-geometries/svg-polygon.ts +3 -8
  205. package/src/renderers/svg/svg-geometries/svg-shape.ts +2 -2
  206. package/src/renderers/svg/svg-geometries/svg-text.ts +1 -1
  207. package/src/renderers/svg/svg.ts +8 -18
  208. package/src/utils.ts +13 -18
  209. package/CHANGELOG.md +0 -92
package/lib/utils.js CHANGED
@@ -37,22 +37,20 @@ export function rgbGrayScale(color) {
37
37
  return `rgb(${c},${c},${c})`;
38
38
  }
39
39
  /**
40
- * This will take a HEX or RGB web color. pSBC can shade it darker or lighter,
41
- * or blend it with a second color, and can also pass it right thru but convert
42
- * from Hex to RGB (Hex2RGB) or RGB to Hex (RGB2Hex).
43
- * All without you even knowing what color format you are using.
40
+ * This will take a HEX or RGB web color. pSBC can shade it darker or lighter, or blend it with a second color, and can also pass it right thru but
41
+ * convert from Hex to RGB (Hex2RGB) or RGB to Hex (RGB2Hex). All without you even knowing what color format you are using.
44
42
  *
45
43
  * @param {number} p - From 0 to 1 Percentage float (Required).
46
44
  * @param {string} from - The starting color in HEX or RGB format.
47
45
  * @param {string} [to] - The ending color in HEX or RGB format, optional.
48
- * @returns {string|null} Either Hex or RGB color. Null if invalid color or percentage number.
46
+ * @returns {string | null} Either Hex or RGB color. Null if invalid color or percentage number.
49
47
  */
50
48
  export function shade(p, from, to) {
51
49
  if (typeof p !== "number" ||
52
50
  p < -1 ||
53
51
  p > 1 ||
54
52
  typeof from !== "string" ||
55
- (from[0] !== "r" && from[0] !== "#") ||
53
+ (!from.startsWith("r") && !from.startsWith("#")) ||
56
54
  (to && typeof to !== "string")) {
57
55
  return undefined; // ErrorCheck
58
56
  }
@@ -61,16 +59,18 @@ export function shade(p, from, to) {
61
59
  const RGB = {};
62
60
  if (l > 9) {
63
61
  const dArr = d.split(",");
64
- if (dArr.length < 3 || dArr.length > 4)
65
- return null; // ErrorCheck
62
+ if (dArr.length < 3 || dArr.length > 4) {
63
+ return null;
64
+ } // ErrorCheck
66
65
  RGB[0] = i(dArr[0].split("(")[1]);
67
66
  RGB[1] = i(dArr[1]);
68
67
  RGB[2] = i(dArr[2]);
69
68
  RGB[3] = dArr[3] ? parseFloat(dArr[3]) : -1;
70
69
  }
71
70
  else {
72
- if (l === 8 || l === 6 || l < 4)
73
- return null; // ErrorCheck
71
+ if (l === 8 || l === 6 || l < 4) {
72
+ return null;
73
+ } // ErrorCheck
74
74
  if (l < 6) {
75
75
  d = "#" + d[1] + d[1] + d[2] + d[2] + d[3] + d[3] + (l > 4 ? String(d[4]) + d[4] : ""); // 3 or 4 digit
76
76
  }
@@ -110,22 +110,14 @@ export function shade(p, from, to) {
110
110
  r((t[2] - f[2]) * p + f[2]) +
111
111
  (f[3] < 0 && t[3] < 0
112
112
  ? ")"
113
- : "," +
114
- (f[3] > -1 && t[3] > -1 ? r(((t[3] - f[3]) * p + f[3]) * 10000) / 10000 : t[3] < 0 ? f[3] : t[3]) +
115
- ")"));
113
+ : "," + (f[3] > -1 && t[3] > -1 ? r(((t[3] - f[3]) * p + f[3]) * 10000) / 10000 : t[3] < 0 ? f[3] : t[3]) + ")"));
116
114
  }
117
115
  return ("#" +
118
116
  (0x100000000 +
119
117
  r((t[0] - f[0]) * p + f[0]) * 0x1000000 +
120
118
  r((t[1] - f[1]) * p + f[1]) * 0x10000 +
121
119
  r((t[2] - f[2]) * p + f[2]) * 0x100 +
122
- (f[3] > -1 && t[3] > -1
123
- ? r(((t[3] - f[3]) * p + f[3]) * 255)
124
- : t[3] > -1
125
- ? r(t[3] * 255)
126
- : f[3] > -1
127
- ? r(f[3] * 255)
128
- : 255))
120
+ (f[3] > -1 && t[3] > -1 ? r(((t[3] - f[3]) * p + f[3]) * 255) : t[3] > -1 ? r(t[3] * 255) : f[3] > -1 ? r(f[3] * 255) : 255))
129
121
  .toString(16)
130
122
  .slice(1, f[3] > -1 || t[3] > -1 ? undefined : -2));
131
123
  }
package/lib/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,14 +1,21 @@
1
1
  {
2
2
  "name": "abstract-3d",
3
- "version": "2.7.32",
3
+ "version": "2.8.0",
4
+ "gitHead": "17921b59da5eee6cc446fd37a2134165af4d1901",
4
5
  "description": "Abstract 3D",
6
+ "license": "MIT",
5
7
  "author": "Divid AB <info@divid.se>",
6
8
  "repository": "https://github.com/dividab/abstract-visuals/tree/master/packages/abstract-3d",
7
- "license": "MIT",
9
+ "files": [
10
+ "/lib",
11
+ "/src",
12
+ "README.md",
13
+ "package.json"
14
+ ],
15
+ "type": "module",
16
+ "sideEffects": false,
8
17
  "main": "lib/index.js",
9
18
  "types": "lib/index",
10
- "sideEffects": false,
11
- "type": "module",
12
19
  "exports": {
13
20
  ".": {
14
21
  "ts": "./src/index.ts",
@@ -41,23 +48,14 @@
41
48
  "import": "./lib/renderers/svg/index.js"
42
49
  }
43
50
  },
44
- "files": [
45
- "/lib",
46
- "/src",
47
- "README.md",
48
- "package.json"
49
- ],
50
51
  "dependencies": {
51
52
  "@react-three/drei": "^10.7.7",
52
53
  "@react-three/fiber": "^9.6.1",
53
54
  "@react-three/postprocessing": "^3.0.4",
54
- "abstract-image": "^13.0.60",
55
55
  "suspend-react": "^0.1.3",
56
56
  "three": "^0.184.0",
57
- "ts-exhaustive-check": "^1.0.0"
58
- },
59
- "peerDependencies": {
60
- "react": "^19.2.0"
57
+ "ts-exhaustive-check": "^1.0.0",
58
+ "abstract-image": "^13.1.0"
61
59
  },
62
60
  "devDependencies": {
63
61
  "@types/react": "^19.2.15",
@@ -65,5 +63,7 @@
65
63
  "@types/three": "^0.180.0",
66
64
  "react": "^19.2.6"
67
65
  },
68
- "gitHead": "9576de23211494a32710b368588802c1c3c989c8"
69
- }
66
+ "peerDependencies": {
67
+ "react": "^19.2.0"
68
+ }
69
+ }
@@ -1,4 +1,4 @@
1
- /* eslint-disable max-lines */
1
+ /* oxlint-disable max-lines */
2
2
  import type { AbstractImage } from "abstract-image";
3
3
 
4
4
  export type Scene = {
@@ -79,19 +79,7 @@ export type Group = {
79
79
 
80
80
  export type Mesh = {
81
81
  readonly material: Material;
82
- readonly geometry:
83
- | Cylinder
84
- | Cone
85
- | Box
86
- | Line
87
- | CulledLine
88
- | Text
89
- | Polygon
90
- | Plane
91
- | Tube
92
- | Sphere
93
- | Shape
94
- | ImageMesh;
82
+ readonly geometry: Cylinder | Cone | Box | Line | CulledLine | Text | Polygon | Plane | Tube | Sphere | Shape | ImageMesh;
95
83
  };
96
84
 
97
85
  export type Material = {
@@ -324,7 +312,7 @@ export const vec3Normalize = (v: Vec3): Vec3 => vec3Scale(v, 1 / vec3Length(v));
324
312
 
325
313
  export const vec2Greater = (a: Vec2, b: Vec2): Vec2 => vec2(a.x > b.x ? a.x : b.x, a.y > b.y ? a.y : b.y);
326
314
 
327
- export const vec2DistSquared = (a: Vec2, b: Vec2): number => Math.pow(b.x - a.x, 2) + Math.pow(b.y - a.y, 2);
315
+ export const vec2DistSquared = (a: Vec2, b: Vec2): number => (b.x - a.x) ** 2 + (b.y - a.y) ** 2;
328
316
 
329
317
  export const vec2Dist = (a: Vec2, b: Vec2): number => vec2DistSquared(a, b);
330
318
 
@@ -341,11 +329,9 @@ export const vec3XMean = (...v: ReadonlyArray<Vec3>): number => v.reduce((a, c)
341
329
  export const vec3YMean = (...v: ReadonlyArray<Vec3>): number => v.reduce((a, c) => a + c.y, 0) / v.length;
342
330
  export const vec3ZMean = (...v: ReadonlyArray<Vec3>): number => v.reduce((a, c) => a + c.z, 0) / v.length;
343
331
 
344
- export const vec3Greater = (a: Vec3, b: Vec3): Vec3 =>
345
- vec3(a.x > b.x ? a.x : b.x, a.y > b.y ? a.y : b.y, a.z > b.z ? a.z : b.z);
332
+ export const vec3Greater = (a: Vec3, b: Vec3): Vec3 => vec3(a.x > b.x ? a.x : b.x, a.y > b.y ? a.y : b.y, a.z > b.z ? a.z : b.z);
346
333
 
347
- export const vec3DistSquared = (a: Vec3, b: Vec3): number =>
348
- Math.pow(b.x - a.x, 2) + Math.pow(b.y - a.y, 2) + Math.pow(b.z - a.z, 2);
334
+ export const vec3DistSquared = (a: Vec3, b: Vec3): number => (b.x - a.x) ** 2 + (b.y - a.y) ** 2 + (b.z - a.z) ** 2;
349
335
 
350
336
  export const vec3Dist = (a: Vec3, b: Vec3): number => vec3DistSquared(a, b);
351
337
 
@@ -354,8 +340,7 @@ export const vec3Cross = (left: Vec3, right: Vec3): Vec3 =>
354
340
 
355
341
  const TOLERANCE = 0.001;
356
342
 
357
- export const equals = (num1: number, num2: number, tolerance = TOLERANCE): boolean =>
358
- Math.abs(num1 - num2) <= tolerance;
343
+ export const equals = (num1: number, num2: number, tolerance = TOLERANCE): boolean => Math.abs(num1 - num2) <= tolerance;
359
344
  export const isZero = (num: number, tolerance = TOLERANCE): boolean => Math.abs(num) <= tolerance;
360
345
  export const geq = (num1: number, num2: number, tolerance = TOLERANCE): boolean => num1 >= num2 - tolerance;
361
346
  export const greater = (num1: number, num2: number, tolerance = TOLERANCE): boolean => num1 > num2 + tolerance;
@@ -374,11 +359,9 @@ export const bounds3Zero: Bounds3 = bounds3(vec3Zero, vec3Zero);
374
359
 
375
360
  export const bounds2ToSize = (bounds: Bounds2): Vec2 => vec2(bounds.max.x - bounds.min.x, bounds.max.y - bounds.min.y);
376
361
 
377
- export const bounds2Shift = (bounds: Bounds2, offset: Vec2): Bounds2 =>
378
- bounds2(vec2Add(bounds.min, offset), vec2Add(bounds.max, offset));
362
+ export const bounds2Shift = (bounds: Bounds2, offset: Vec2): Bounds2 => bounds2(vec2Add(bounds.min, offset), vec2Add(bounds.max, offset));
379
363
 
380
- export const bounds3ToSize = (bounds: Bounds3): Vec3 =>
381
- vec3(bounds.max.x - bounds.min.x, bounds.max.y - bounds.min.y, bounds.max.z - bounds.min.z);
364
+ export const bounds3ToSize = (bounds: Bounds3): Vec3 => vec3(bounds.max.x - bounds.min.x, bounds.max.y - bounds.min.y, bounds.max.z - bounds.min.z);
382
365
 
383
366
  export const bounds3Overlap = (a: Bounds3, b: Bounds3, tolerance = TOLERANCE): boolean =>
384
367
  !(
@@ -390,12 +373,10 @@ export const bounds3Overlap = (a: Bounds3, b: Bounds3, tolerance = TOLERANCE): b
390
373
  geq(a.min.z, b.max.z, tolerance)
391
374
  );
392
375
 
393
- export const boundsContains = (a: Bounds, b: Bounds, tolerance = TOLERANCE): boolean =>
394
- leq(a.min, b.min, tolerance) && geq(a.max, b.max, tolerance);
376
+ export const boundsContains = (a: Bounds, b: Bounds, tolerance = TOLERANCE): boolean => leq(a.min, b.min, tolerance) && geq(a.max, b.max, tolerance);
395
377
 
396
378
  export const boundsOverlap = (a: Bounds, b: Bounds, tolerance = TOLERANCE): boolean =>
397
- (greater(a.max, b.min, tolerance) && less(a.min, b.max, tolerance)) ||
398
- (greater(b.max, a.min, tolerance) && less(b.min, a.max, tolerance));
379
+ (greater(a.max, b.min, tolerance) && less(a.min, b.max, tolerance)) || (greater(b.max, a.min, tolerance) && less(b.min, a.max, tolerance));
399
380
 
400
381
  export const bounds2OverlapY = (a: Bounds2, b: Bounds2, tolerance = TOLERANCE): boolean =>
401
382
  (greater(a.max.y, b.min.y, tolerance) && less(a.min.y, b.max.y, tolerance)) ||
@@ -406,13 +387,9 @@ export const boundsXOverlapX = (a: Bounds2, b: Bounds2, tolerance = TOLERANCE):
406
387
  (greater(b.max.x, a.min.x, tolerance) && less(b.min.x, a.max.x, tolerance));
407
388
 
408
389
  export const bounds2Contains = (a: Bounds2, b: Bounds2, tolerance = TOLERANCE): boolean =>
409
- leq(a.min.x, b.min.x, tolerance) &&
410
- geq(a.max.x, b.max.x, tolerance) &&
411
- leq(a.min.y, b.min.y, tolerance) &&
412
- geq(a.max.y, b.max.y, tolerance);
390
+ leq(a.min.x, b.min.x, tolerance) && geq(a.max.x, b.max.x, tolerance) && leq(a.min.y, b.min.y, tolerance) && geq(a.max.y, b.max.y, tolerance);
413
391
 
414
- export const bounds2Center = (bounds: Bounds2): Vec2 =>
415
- vec2((bounds.min.x + bounds.max.x) / 2, (bounds.min.y + bounds.max.y) / 2);
392
+ export const bounds2Center = (bounds: Bounds2): Vec2 => vec2((bounds.min.x + bounds.max.x) / 2, (bounds.min.y + bounds.max.y) / 2);
416
393
 
417
394
  export const bounds3Center = (bounds: Bounds3): Vec3 =>
418
395
  vec3((bounds.min.x + bounds.max.x) / 2, (bounds.min.y + bounds.max.y) / 2, (bounds.min.z + bounds.max.z) / 2);
@@ -672,24 +649,28 @@ export function boundsText(t: Text, parentPos: Vec3, parentRot: Vec3): Bounds3 {
672
649
  // -- Transformations
673
650
 
674
651
  export function vec3RotCombine(outer: Vec3, inner: Vec3): Vec3 {
675
- if (inner.x === 0 && inner.y === 0 && inner.z === 0) return outer;
676
- if (outer.x === 0 && outer.y === 0 && outer.z === 0) return inner;
677
- const oc1 = Math.cos(outer.x / 2),
678
- os1 = Math.sin(outer.x / 2);
679
- const oc2 = Math.cos(outer.y / 2),
680
- os2 = Math.sin(outer.y / 2);
681
- const oc3 = Math.cos(outer.z / 2),
682
- os3 = Math.sin(outer.z / 2);
652
+ if (inner.x === 0 && inner.y === 0 && inner.z === 0) {
653
+ return outer;
654
+ }
655
+ if (outer.x === 0 && outer.y === 0 && outer.z === 0) {
656
+ return inner;
657
+ }
658
+ const oc1 = Math.cos(outer.x / 2);
659
+ const os1 = Math.sin(outer.x / 2);
660
+ const oc2 = Math.cos(outer.y / 2);
661
+ const os2 = Math.sin(outer.y / 2);
662
+ const oc3 = Math.cos(outer.z / 2);
663
+ const os3 = Math.sin(outer.z / 2);
683
664
  const ax = os1 * oc2 * oc3 + oc1 * os2 * os3;
684
665
  const ay = oc1 * os2 * oc3 - os1 * oc2 * os3;
685
666
  const az = oc1 * oc2 * os3 + os1 * os2 * oc3;
686
667
  const aw = oc1 * oc2 * oc3 - os1 * os2 * os3;
687
- const ic1 = Math.cos(inner.x / 2),
688
- is1 = Math.sin(inner.x / 2);
689
- const ic2 = Math.cos(inner.y / 2),
690
- is2 = Math.sin(inner.y / 2);
691
- const ic3 = Math.cos(inner.z / 2),
692
- is3 = Math.sin(inner.z / 2);
668
+ const ic1 = Math.cos(inner.x / 2);
669
+ const is1 = Math.sin(inner.x / 2);
670
+ const ic2 = Math.cos(inner.y / 2);
671
+ const is2 = Math.sin(inner.y / 2);
672
+ const ic3 = Math.cos(inner.z / 2);
673
+ const is3 = Math.sin(inner.z / 2);
693
674
  const bx = is1 * ic2 * ic3 + ic1 * is2 * is3;
694
675
  const by = ic1 * is2 * ic3 - is1 * ic2 * is3;
695
676
  const bz = ic1 * ic2 * is3 + is1 * is2 * ic3;
@@ -713,12 +694,12 @@ export function vec3RotCombine(outer: Vec3, inner: Vec3): Vec3 {
713
694
  }
714
695
 
715
696
  export function vec3RotInverse(rotation: Vec3): Vec3 {
716
- const c1 = Math.cos(rotation.x / 2),
717
- s1 = Math.sin(rotation.x / 2);
718
- const c2 = Math.cos(rotation.y / 2),
719
- s2 = Math.sin(rotation.y / 2);
720
- const c3 = Math.cos(rotation.z / 2),
721
- s3 = Math.sin(rotation.z / 2);
697
+ const c1 = Math.cos(rotation.x / 2);
698
+ const s1 = Math.sin(rotation.x / 2);
699
+ const c2 = Math.cos(rotation.y / 2);
700
+ const s2 = Math.sin(rotation.y / 2);
701
+ const c3 = Math.cos(rotation.z / 2);
702
+ const s3 = Math.sin(rotation.z / 2);
722
703
 
723
704
  // Euler -> Quaternion
724
705
  const qx = -(s1 * c2 * c3 + c1 * s2 * s3);
@@ -745,38 +726,38 @@ export function vec3RotInverse(rotation: Vec3): Vec3 {
745
726
  }
746
727
 
747
728
  export function vec3Rot(point: Vec3, origin: Vec3, rotation: Vec3): Vec3 {
748
- if (rotation.x === 0 && rotation.y === 0 && rotation.z === 0) return point;
749
- const c1 = Math.cos(rotation.x / 2),
750
- s1 = Math.sin(rotation.x / 2);
751
- const c2 = Math.cos(rotation.y / 2),
752
- s2 = Math.sin(rotation.y / 2);
753
- const c3 = Math.cos(rotation.z / 2),
754
- s3 = Math.sin(rotation.z / 2);
729
+ if (rotation.x === 0 && rotation.y === 0 && rotation.z === 0) {
730
+ return point;
731
+ }
732
+ const c1 = Math.cos(rotation.x / 2);
733
+ const s1 = Math.sin(rotation.x / 2);
734
+ const c2 = Math.cos(rotation.y / 2);
735
+ const s2 = Math.sin(rotation.y / 2);
736
+ const c3 = Math.cos(rotation.z / 2);
737
+ const s3 = Math.sin(rotation.z / 2);
755
738
  const qx = s1 * c2 * c3 + c1 * s2 * s3;
756
739
  const qy = c1 * s2 * c3 - s1 * c2 * s3;
757
740
  const qz = c1 * c2 * s3 + s1 * s2 * c3;
758
741
  const qw = c1 * c2 * c3 - s1 * s2 * s3;
759
- const vx = point.x - origin.x,
760
- vy = point.y - origin.y,
761
- vz = point.z - origin.z;
742
+ const vx = point.x - origin.x;
743
+ const vy = point.y - origin.y;
744
+ const vz = point.z - origin.z;
762
745
  const tx = 2 * (qy * vz - qz * vy);
763
746
  const ty = 2 * (qz * vx - qx * vz);
764
747
  const tz = 2 * (qx * vy - qy * vx);
765
- return vec3(
766
- vx + qw * tx + qy * tz - qz * ty + origin.x,
767
- vy + qw * ty + qz * tx - qx * tz + origin.y,
768
- vz + qw * tz + qx * ty - qy * tx + origin.z
769
- );
748
+ return vec3(vx + qw * tx + qy * tz - qz * ty + origin.x, vy + qw * ty + qz * tx - qx * tz + origin.y, vz + qw * tz + qx * ty - qy * tx + origin.z);
770
749
  }
771
750
 
772
751
  export const vec3TransRot = (p: Vec3, pos: Vec3, rot: Vec3): Vec3 => {
773
- if (rot.x === 0 && rot.y === 0 && rot.z === 0) return vec3(p.x + pos.x, p.y + pos.y, p.z + pos.z);
774
- const c1 = Math.cos(rot.x / 2),
775
- s1 = Math.sin(rot.x / 2);
776
- const c2 = Math.cos(rot.y / 2),
777
- s2 = Math.sin(rot.y / 2);
778
- const c3 = Math.cos(rot.z / 2),
779
- s3 = Math.sin(rot.z / 2);
752
+ if (rot.x === 0 && rot.y === 0 && rot.z === 0) {
753
+ return vec3(p.x + pos.x, p.y + pos.y, p.z + pos.z);
754
+ }
755
+ const c1 = Math.cos(rot.x / 2);
756
+ const s1 = Math.sin(rot.x / 2);
757
+ const c2 = Math.cos(rot.y / 2);
758
+ const s2 = Math.sin(rot.y / 2);
759
+ const c3 = Math.cos(rot.z / 2);
760
+ const s3 = Math.sin(rot.z / 2);
780
761
  const qx = s1 * c2 * c3 + c1 * s2 * s3;
781
762
  const qy = c1 * s2 * c3 - s1 * c2 * s3;
782
763
  const qz = c1 * c2 * s3 + s1 * s2 * c3;
@@ -784,11 +765,7 @@ export const vec3TransRot = (p: Vec3, pos: Vec3, rot: Vec3): Vec3 => {
784
765
  const tx = 2 * (qy * p.z - qz * p.y);
785
766
  const ty = 2 * (qz * p.x - qx * p.z);
786
767
  const tz = 2 * (qx * p.y - qy * p.x);
787
- return vec3(
788
- p.x + qw * tx + qy * tz - qz * ty + pos.x,
789
- p.y + qw * ty + qz * tx - qx * tz + pos.y,
790
- p.z + qw * tz + qx * ty - qy * tx + pos.z
791
- );
768
+ return vec3(p.x + qw * tx + qy * tz - qz * ty + pos.x, p.y + qw * ty + qz * tx - qx * tz + pos.y, p.z + qw * tz + qx * ty - qy * tx + pos.z);
792
769
  };
793
770
 
794
771
  export function vec3BasisToEuler(direction: Vec3, normal: Vec3): Vec3 {
@@ -826,11 +803,7 @@ export function geoRot<T extends Box | Plane | Cone | Cylinder | Text | Group>(g
826
803
  export function geoTrans<T extends Box | Plane | Cone | Cylinder | Text | Group>(g: T, translate: Vec3): T {
827
804
  return { ...g, pos: vec3Add(g.pos, translate) };
828
805
  }
829
- export function geoTransRot<T extends Box | Plane | Cone | Cylinder | Text | Group | Tube>(
830
- g: T,
831
- origin: Vec3,
832
- rot: Vec3
833
- ): T {
806
+ export function geoTransRot<T extends Box | Plane | Cone | Cylinder | Text | Group | Tube>(g: T, origin: Vec3, rot: Vec3): T {
834
807
  return { ...g, pos: vec3Rot(vec3Add(g.pos, origin), origin, rot), rot: vec3RotCombine(rot, g.rot ?? vec3Zero) };
835
808
  }
836
809
 
@@ -875,39 +848,22 @@ export const group = (
875
848
  rot = vec3Zero,
876
849
  groups: ReadonlyArray<Group> = Array<Group>(),
877
850
  data = {},
878
- animation: Animation | undefined = undefined
851
+ animation?: Animation
879
852
  ): Group => ({ meshes, pos, rot, data, groups, animation: animation! });
880
853
 
881
854
  export const boxMesh = (box: Box, material: Material): Mesh => ({ geometry: box, material });
882
- export const boxGeometry = (
883
- size: Vec3,
884
- pos: Vec3 = vec3Zero,
885
- rot = vec3Zero,
886
- holes: ReadonlyArray<Hole> = []
887
- ): Box => ({
855
+ export const boxGeometry = (size: Vec3, pos: Vec3 = vec3Zero, rot = vec3Zero, holes: ReadonlyArray<Hole> = []): Box => ({
888
856
  type: "Box",
889
857
  pos,
890
858
  rot,
891
859
  size,
892
860
  holes,
893
861
  });
894
- export const box = (
895
- size: Vec3,
896
- material: Material,
897
- pos: Vec3 = vec3Zero,
898
- rot = vec3Zero,
899
- holes: ReadonlyArray<Hole> = []
900
- ): BoxMesh => ({
862
+ export const box = (size: Vec3, material: Material, pos: Vec3 = vec3Zero, rot = vec3Zero, holes: ReadonlyArray<Hole> = []): BoxMesh => ({
901
863
  geometry: { type: "Box", pos, rot, size, holes },
902
864
  material,
903
865
  });
904
- export const image = (
905
- size: Vec3,
906
- material: Material,
907
- image: ImageMesh["image"],
908
- pos: Vec3 = vec3Zero,
909
- rot: Vec3 = vec3Zero
910
- ): Mesh => ({
866
+ export const image = (size: Vec3, material: Material, image: ImageMesh["image"], pos: Vec3 = vec3Zero, rot: Vec3 = vec3Zero): Mesh => ({
911
867
  material,
912
868
  geometry: {
913
869
  type: "Image",
@@ -921,13 +877,7 @@ export const image = (
921
877
  export const roundHole = (pos: Vec2, radius: number): Hole => ({ type: "RoundHole", pos, radius });
922
878
  export const squareHole = (pos: Vec2, size: Vec2): Hole => ({ type: "SquareHole", pos, size });
923
879
 
924
- export const plane = (
925
- pos: Vec3,
926
- size: Vec2,
927
- material: Material,
928
- rot = vec3Zero,
929
- holes: ReadonlyArray<Hole> = []
930
- ): PlaneMesh => ({
880
+ export const plane = (pos: Vec3, size: Vec2, material: Material, rot = vec3Zero, holes: ReadonlyArray<Hole> = []): PlaneMesh => ({
931
881
  geometry: { type: "Plane", pos, rot, size, holes },
932
882
  material,
933
883
  });
@@ -976,12 +926,7 @@ export const shape = (
976
926
  holes: ReadonlyArray<Hole> = []
977
927
  ): ShapeMesh => ({ geometry: { type: "Shape", points, pos, rot, thickness, holes }, material });
978
928
 
979
- export const polygon = (
980
- points: ReadonlyArray<Vec3>,
981
- material: Material,
982
- pos = vec3Zero,
983
- rot = vec3Zero
984
- ): PolygonMesh => ({
929
+ export const polygon = (points: ReadonlyArray<Vec3>, material: Material, pos = vec3Zero, rot = vec3Zero): PolygonMesh => ({
985
930
  geometry: { type: "Polygon", points, pos, rot },
986
931
  material,
987
932
  });
@@ -1004,13 +949,7 @@ export const culledLineGeo = (start: Vec3, end: Vec3, normal: Vec3, thickness: n
1004
949
  normal,
1005
950
  thickness,
1006
951
  });
1007
- export const culledLine = (
1008
- start: Vec3,
1009
- end: Vec3,
1010
- normal: Vec3,
1011
- thickness: number,
1012
- material: Material
1013
- ): CulledLineMesh => ({
952
+ export const culledLine = (start: Vec3, end: Vec3, normal: Vec3, thickness: number, material: Material): CulledLineMesh => ({
1014
953
  geometry: { type: "CulledLine", start, end, normal, thickness },
1015
954
  material,
1016
955
  });
@@ -1062,15 +1001,7 @@ export function dimensionMeshifyAlignedDimension(
1062
1001
  sceneRotation: Vec3,
1063
1002
  _viewRotation: Vec3,
1064
1003
  onCreateLine: (start: Vec3, end: Vec3, norm: Vec3, thickness: number, mat: Material) => void,
1065
- onCreateText: (
1066
- pos: Vec3,
1067
- measurement: string,
1068
- fontSize: number,
1069
- mat: Material,
1070
- rot: Vec3,
1071
- dir: Vec3,
1072
- normal: Vec3
1073
- ) => void,
1004
+ onCreateText: (pos: Vec3, measurement: string, fontSize: number, mat: Material, rot: Vec3, dir: Vec3, normal: Vec3) => void,
1074
1005
  onCreatePolygon: (p1: Vec3, p2: Vec3, p3: Vec3, mat: Material) => void,
1075
1006
  dimensionsMaterial?: Material
1076
1007
  ): void {
@@ -1164,11 +1095,7 @@ export function dimensionMeshifyAlignedDimension(
1164
1095
  }
1165
1096
  }
1166
1097
 
1167
- export function dimensionConvertToTypeMesh(
1168
- dimension: Dimension,
1169
- sceneRotation: Vec3,
1170
- dimensionsMaterial?: Material
1171
- ): DimensionMesh {
1098
+ export function dimensionConvertToTypeMesh(dimension: Dimension, sceneRotation: Vec3, dimensionsMaterial?: Material): DimensionMesh {
1172
1099
  if (dimensionIsOfTypeMesh(dimension)) {
1173
1100
  return dimension;
1174
1101
  }
@@ -1183,15 +1110,7 @@ export function dimensionConvertToTypeMesh(
1183
1110
  const onCreatePolygon = (p1: Vec3, p2: Vec3, p3: Vec3, mat: Material): void => {
1184
1111
  meshes.push(polygon([p1, p2, p3], mat));
1185
1112
  };
1186
- dimensionMeshifyAlignedDimension(
1187
- dimension,
1188
- sceneRotation,
1189
- vec3Zero,
1190
- onCreateLine,
1191
- onCreateText,
1192
- onCreatePolygon,
1193
- dimensionsMaterial
1194
- );
1113
+ dimensionMeshifyAlignedDimension(dimension, sceneRotation, vec3Zero, onCreateLine, onCreateText, onCreatePolygon, dimensionsMaterial);
1195
1114
 
1196
1115
  return {
1197
1116
  meshes,
@@ -3,7 +3,7 @@ import type { ThreeElements } from "@react-three/fiber";
3
3
  declare global {
4
4
  namespace React {
5
5
  namespace JSX {
6
- interface IntrinsicElements extends ThreeElements {}
6
+ type IntrinsicElements = ThreeElements;
7
7
  }
8
8
  }
9
9
  }
@@ -45,4 +45,4 @@ ${dxfRound(vec4.x)}
45
45
  ${dxfRound(vec4.y)}
46
46
  33
47
47
  ${dxfRound(vec4.z)}
48
- `;
48
+ `;
@@ -0,0 +1,10 @@
1
+ import { generateUUID } from "three/src/math/MathUtils.js";
2
+ import type { Bounds3, Vec3 } from "../../../abstract-3d.js";
3
+ import type { DxfDimensionDefinition } from "./dxf-dimension.js";
4
+ import { dxfEncFooter } from "./dxf-footer.js";
5
+ import { dxfEncHeader } from "./dxf-header.js";
6
+
7
+ export function dxfBuild(groups: string, dimensions: DxfDimensionDefinition, bounds: Bounds3, size: Vec3, center: Vec3): string {
8
+ const id = generateUUID();
9
+ return dxfEncHeader(bounds, center, id, size, dimensions.block, dimensions.blockRecord) + groups + dimensions.entity + dxfEncFooter(id);
10
+ }