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
@@ -1,6 +1,6 @@
1
- import React, { useMemo } from "react";
2
- import { extend, useThree } from "@react-three/fiber";
3
1
  import { Text, Line } from "@react-three/drei";
2
+ import { extend, useThree } from "@react-three/fiber";
3
+ import React, { useMemo } from "react";
4
4
  import {
5
5
  BoxGeometry,
6
6
  BufferAttribute,
@@ -23,6 +23,7 @@ import {
23
23
  Vector2,
24
24
  Vector3,
25
25
  } from "three";
26
+ import { exhaustiveCheck } from "ts-exhaustive-check";
26
27
  import type {
27
28
  Mesh,
28
29
  Box,
@@ -34,20 +35,7 @@ import type {
34
35
  CircleCurve as A3dCircleCurve,
35
36
  Hole,
36
37
  } from "../../abstract-3d.js";
37
- import {
38
- vec2Scale,
39
- vec2Sub,
40
- vec2Add,
41
- isZero,
42
- vec3Scale,
43
- vec3,
44
- vec3Add,
45
- vec3RotCombine,
46
- vec3Zero,
47
- vec3Rot,
48
- equals,
49
- } from "../../abstract-3d.js";
50
- import { exhaustiveCheck } from "ts-exhaustive-check";
38
+ import { vec2Scale, vec2Sub, vec2Add, isZero, vec3Scale, vec3, vec3Add, vec3RotCombine, vec3Zero, vec3Rot, equals } from "../../abstract-3d.js";
51
39
  import { planeGeometry } from "./react-image-material.js";
52
40
 
53
41
  extend({
@@ -77,13 +65,7 @@ export const euler = new Euler();
77
65
  export const vector3 = new Vector3();
78
66
  export const quaternion = new Quaternion();
79
67
 
80
- export function ReactMesh({
81
- mesh,
82
- children,
83
- }: {
84
- readonly mesh: Mesh;
85
- readonly children?: React.JSX.Element;
86
- }): React.JSX.Element {
68
+ export function ReactMesh({ mesh, children }: { readonly mesh: Mesh; readonly children?: React.JSX.Element }): React.JSX.Element {
87
69
  const culledLineGeometry = useMemo(() => {
88
70
  const g = new BufferGeometry();
89
71
 
@@ -159,14 +141,8 @@ export function ReactMesh({
159
141
  const aEnd = angleEnd - Math.PI / 2;
160
142
  const plane1Rot = vec3RotCombine(rot ?? vec3Zero, vec3(0, aStart, 0));
161
143
  const plane2Rot = vec3RotCombine(rot ?? vec3Zero, vec3(0, aEnd, 0));
162
- const plane1Pos = vec3Add(
163
- vec3Rot(vec3Scale(vec3(Math.cos(aStart), 0, -Math.sin(aStart)), halfRadius), vec3Zero, rot ?? vec3Zero),
164
- pos
165
- );
166
- const plane2Pos = vec3Add(
167
- vec3Rot(vec3Scale(vec3(Math.cos(aEnd), 0, -Math.sin(aEnd)), halfRadius), vec3Zero, rot ?? vec3Zero),
168
- pos
169
- );
144
+ const plane1Pos = vec3Add(vec3Rot(vec3Scale(vec3(Math.cos(aStart), 0, -Math.sin(aStart)), halfRadius), vec3Zero, rot ?? vec3Zero), pos);
145
+ const plane2Pos = vec3Add(vec3Rot(vec3Scale(vec3(Math.cos(aEnd), 0, -Math.sin(aEnd)), halfRadius), vec3Zero, rot ?? vec3Zero), pos);
170
146
  return (
171
147
  <mesh>
172
148
  <mesh
@@ -345,13 +321,7 @@ function ExcrudeBoxPlane({
345
321
  );
346
322
  }
347
323
 
348
- function ExcrudeShape({
349
- s,
350
- children,
351
- }: {
352
- readonly s: Shape_1;
353
- readonly children?: React.JSX.Element;
354
- }): React.JSX.Element {
324
+ function ExcrudeShape({ s, children }: { readonly s: Shape_1; readonly children?: React.JSX.Element }): React.JSX.Element {
355
325
  const excrudeGeometry = React.useMemo(() => {
356
326
  const shape = new Shape();
357
327
  if (s.points.length > 0) {
@@ -377,13 +347,7 @@ function ExcrudeShape({
377
347
  );
378
348
  }
379
349
 
380
- function ExcrudeCylinder({
381
- cyl,
382
- children,
383
- }: {
384
- readonly cyl: Cylinder;
385
- readonly children?: React.JSX.Element;
386
- }): React.JSX.Element {
350
+ function ExcrudeCylinder({ cyl, children }: { readonly cyl: Cylinder; readonly children?: React.JSX.Element }): React.JSX.Element {
387
351
  const excrudeGeometry = React.useMemo(() => {
388
352
  const shape = new Shape();
389
353
  shape.moveTo(0, cyl.radius).absellipse(0, 0, cyl.radius, cyl.radius, 0, Math.PI * 2, true);
@@ -394,7 +358,7 @@ function ExcrudeCylinder({
394
358
  return (
395
359
  // Doesn't seem to adjust for excrude z size directly???
396
360
  <mesh rotation={[cyl.rot?.x ?? 0, cyl.rot?.y ?? 0, cyl.rot?.z ?? 0]} position={[cyl.pos.x, cyl.pos.y, cyl.pos.z]}>
397
- <mesh geometry={excrudeGeometry} rotation-x={Math.PI / 2} position-y={+cyl.length / 2} castShadow receiveShadow>
361
+ <mesh geometry={excrudeGeometry} rotation-x={Math.PI / 2} position-y={cyl.length / 2} castShadow receiveShadow>
398
362
  {children}
399
363
  </mesh>
400
364
  </mesh>
@@ -424,13 +388,7 @@ function holes(holes: ReadonlyArray<Hole> | undefined, shape: Shape): void {
424
388
  });
425
389
  }
426
390
 
427
- function Polygon({
428
- polygon,
429
- children,
430
- }: {
431
- readonly polygon: A3dPolygon;
432
- readonly children?: React.JSX.Element;
433
- }): React.JSX.Element {
391
+ function Polygon({ polygon, children }: { readonly polygon: A3dPolygon; readonly children?: React.JSX.Element }): React.JSX.Element {
434
392
  const vertices = React.useMemo(() => {
435
393
  if (polygon.points.length === 4) {
436
394
  const [v0, v1, v2, v3] = polygon.points;
@@ -476,29 +434,16 @@ function Polygon({
476
434
  receiveShadow
477
435
  >
478
436
  <bufferGeometry key={vertices.join("")} attach="geometry" onUpdate={(self) => self.computeVertexNormals()}>
479
- <bufferAttribute
480
- attach="attributes-position"
481
- needsUpdate={true}
482
- args={fakeArgs}
483
- array={vertices}
484
- count={vertices.length / 3}
485
- itemSize={3}
486
- />
437
+ <bufferAttribute attach="attributes-position" needsUpdate={true} args={fakeArgs} array={vertices} count={vertices.length / 3} itemSize={3} />
487
438
  </bufferGeometry>
488
439
  {children}
489
440
  </mesh>
490
441
  );
491
442
  }
492
443
 
493
- const fakeArgs = [] as any;
444
+ const fakeArgs = [] as unknown as ConstructorParameters<typeof BufferAttribute>;
494
445
 
495
- function Tube({
496
- tube,
497
- children,
498
- }: {
499
- readonly tube: A3dTube;
500
- readonly children?: React.JSX.Element;
501
- }): React.JSX.Element {
446
+ function Tube({ tube, children }: { readonly tube: A3dTube; readonly children?: React.JSX.Element }): React.JSX.Element {
502
447
  const tubeGeometry = React.useMemo(() => {
503
448
  return new TubeGeometry(
504
449
  tube.curve.type === "SplineCurve"
@@ -537,6 +482,7 @@ function holeIsZero(hole: Hole): boolean {
537
482
  }
538
483
  }
539
484
 
485
+ // oxlint-disable-next-line functional/no-classes -- extends three.js Curve, which requires a class
540
486
  class CircleCurve extends Curve<Vector3> {
541
487
  radius: number;
542
488
  angleLength: number;
@@ -1,12 +1,12 @@
1
+ import { Html } from "@react-three/drei";
2
+ import type { ThreeEvent } from "@react-three/fiber";
1
3
  import React from "react";
2
4
  import type { Scene, Group } from "../../abstract-3d.js";
3
- import type { HotSpotInfo } from "./react-hotspot.js";
4
- import { ReactHotSpots } from "./react-hotspot.js";
5
5
  import { ReactDimensions } from "./react-dimension.js";
6
6
  import { ReactGroup } from "./react-group.js";
7
+ import type { HotSpotInfo } from "./react-hotspot.js";
8
+ import { ReactHotSpots } from "./react-hotspot.js";
7
9
  import type { MaterialState } from "./react-material.js";
8
- import { Html } from "@react-three/drei";
9
- import type { ThreeEvent } from "@react-three/fiber";
10
10
  import type { ReactPopover } from "./react-types.js";
11
11
 
12
12
  export type SceneMouseEvent = ThreeEvent<MouseEvent>;
@@ -69,16 +69,8 @@ export function ReactScene({
69
69
  }): React.JSX.Element {
70
70
  return (
71
71
  <group
72
- rotation={[
73
- scene.rotation_deprecated?.x ?? 0,
74
- scene.rotation_deprecated?.y ?? 0,
75
- scene.rotation_deprecated?.z ?? 0,
76
- ]}
77
- position={[
78
- -(scene.center_deprecated?.x ?? 0),
79
- -(scene.center_deprecated?.y ?? 0),
80
- -(scene.center_deprecated?.z ?? 0),
81
- ]}
72
+ rotation={[scene.rotation_deprecated?.x ?? 0, scene.rotation_deprecated?.y ?? 0, scene.rotation_deprecated?.z ?? 0]}
73
+ position={[-(scene.center_deprecated?.x ?? 0), -(scene.center_deprecated?.y ?? 0), -(scene.center_deprecated?.z ?? 0)]}
82
74
  >
83
75
  {scene.groups.map((g, i) => {
84
76
  const id = createGroupId ? createGroupId(g) : "";
@@ -117,13 +109,7 @@ export function ReactScene({
117
109
  showHotSpotTexts={showHotSpotTexts}
118
110
  />
119
111
  {reactPopovers?.map((p) => (
120
- <Html
121
- key={p.id}
122
- position={[p.pos.x, p.pos.y, p.pos.z]}
123
- center
124
- pointerEvents="none"
125
- style={{ pointerEvents: "none" }}
126
- >
112
+ <Html key={p.id} position={[p.pos.x, p.pos.y, p.pos.z]} center pointerEvents="none" style={{ pointerEvents: "none" }}>
127
113
  {p.content}
128
114
  </Html>
129
115
  ))}
@@ -1,13 +1,13 @@
1
- import React, { memo } from "react";
2
- import { Canvas, type CanvasProps, type ThreeEvent } from "@react-three/fiber";
3
1
  import { Html, type OrbitControlsProps } from "@react-three/drei";
2
+ import { Canvas, type CanvasProps, type ThreeEvent } from "@react-three/fiber";
4
3
  import { EffectComposer, N8AO } from "@react-three/postprocessing";
5
- import { ReactScene } from "./react-scene.js";
4
+ import React, { memo } from "react";
6
5
  import type { Scene, View, Group } from "../../abstract-3d.js";
7
6
  import type { ControlsHelper, Camera, BufferZones } from "./react-camera.js";
8
7
  import { ReactCamera } from "./react-camera.js";
9
8
  import type { HotSpotInfo } from "./react-hotspot.js";
10
9
  import type { MaterialState } from "./react-material.js";
10
+ import { ReactScene } from "./react-scene.js";
11
11
  import type { ReactPopover } from "./react-types.js";
12
12
 
13
13
  type ReactProps = {
@@ -173,7 +173,7 @@ export const render = memo(
173
173
  </React.Suspense>
174
174
  </Canvas>
175
175
  ) : (
176
- sceneFallback ?? <></>
176
+ (sceneFallback ?? <></>)
177
177
  );
178
178
  }
179
179
  );
@@ -47,39 +47,22 @@ ENDSEC;
47
47
  END-ISO-10303-21;`;
48
48
 
49
49
  export const CARTESIAN_POINT = (p: Vec3 | Vec2, m: MutableStep): number =>
50
- mutate(
51
- `CARTESIAN_POINT('',(${stepNumber(p.x)},${stepNumber(p.y)}${
52
- (p as Vec3)?.z !== undefined ? `,${stepNumber((p as Vec3).z)}` : ""
53
- }))`,
54
- m
55
- );
50
+ mutate(`CARTESIAN_POINT('',(${stepNumber(p.x)},${stepNumber(p.y)}${(p as Vec3)?.z !== undefined ? `,${stepNumber((p as Vec3).z)}` : ""}))`, m);
56
51
 
57
52
  export const DIRECTION = (d: Vec3 | Vec2, m: MutableStep): number =>
58
- mutate(
59
- `DIRECTION('',(${stepNumber(d.x)},${stepNumber(d.y)}${
60
- (d as Vec3)?.z !== undefined ? `,${stepNumber((d as Vec3).z)}` : ""
61
- }))`,
62
- m
63
- );
53
+ mutate(`DIRECTION('',(${stepNumber(d.x)},${stepNumber(d.y)}${(d as Vec3)?.z !== undefined ? `,${stepNumber((d as Vec3).z)}` : ""}))`, m);
64
54
 
65
- export const VERTEX_POINT = (CARTESIAN_POINT: number, m: MutableStep): number =>
66
- mutate(`VERTEX_POINT('',#${CARTESIAN_POINT})`, m);
55
+ export const VERTEX_POINT = (CARTESIAN_POINT: number, m: MutableStep): number => mutate(`VERTEX_POINT('',#${CARTESIAN_POINT})`, m);
67
56
 
68
- export const LINE = (CARTESIAN_POINT: number, VECTOR: number, m: MutableStep): number =>
69
- mutate(`LINE('',#${CARTESIAN_POINT},#${VECTOR})`, m);
57
+ export const LINE = (CARTESIAN_POINT: number, VECTOR: number, m: MutableStep): number => mutate(`LINE('',#${CARTESIAN_POINT},#${VECTOR})`, m);
70
58
 
71
59
  export const CIRCLE = (AXIS2_PLACEMENT_3D: number, radius: number, m: MutableStep): number =>
72
60
  mutate(`CIRCLE('',#${AXIS2_PLACEMENT_3D},${radius})`, m);
73
61
 
74
62
  export const VECTOR = (DIRECTION: number, m: MutableStep): number => mutate(`VECTOR('',#${DIRECTION},1.)`, m);
75
63
 
76
- export const EDGE_CURVE = (
77
- startVertex: number,
78
- endVertex: number,
79
- line: number,
80
- m: MutableStep,
81
- type: "T" | "F" = "F"
82
- ): number => mutate(`EDGE_CURVE('',#${startVertex},#${endVertex},#${line},.${type}.)`, m);
64
+ export const EDGE_CURVE = (startVertex: number, endVertex: number, line: number, m: MutableStep, type: "T" | "F" = "F"): number =>
65
+ mutate(`EDGE_CURVE('',#${startVertex},#${endVertex},#${line},.${type}.)`, m);
83
66
 
84
67
  export const ORIENTED_EDGE = (EDGE_CURVE: number, m: MutableStep, type: "T" | "F" = "F"): number =>
85
68
  mutate(`ORIENTED_EDGE('',*,*,#${EDGE_CURVE},.${type}.)`, m);
@@ -93,93 +76,61 @@ export const SEAM_CURVE = (LINE: number, PCURVE1: number, PCURVE2: number, m: Mu
93
76
  export const ADVANCED_FACE = (faceBound: number, planeOrSurface: number, m: MutableStep, type: "T" | "F"): number =>
94
77
  mutate(`ADVANCED_FACE('',(#${faceBound}),#${planeOrSurface},.${type}.)`, m);
95
78
 
96
- export const OPEN_SHELL = (ADVANCED_FACE: number, m: MutableStep): number =>
97
- mutate(`OPEN_SHELL('',(#${ADVANCED_FACE}))`, m);
79
+ export const OPEN_SHELL = (ADVANCED_FACE: number, m: MutableStep): number => mutate(`OPEN_SHELL('',(#${ADVANCED_FACE}))`, m);
98
80
 
99
- export const FACE_BOUND = (EDGE_LOOP: number, type: "T" | "F", m: MutableStep): number =>
100
- mutate(`FACE_BOUND('',#${EDGE_LOOP},.${type}.)`, m);
81
+ export const FACE_BOUND = (EDGE_LOOP: number, type: "T" | "F", m: MutableStep): number => mutate(`FACE_BOUND('',#${EDGE_LOOP},.${type}.)`, m);
101
82
 
102
83
  export const EDGE_LOOP = (ORIENTED_EDGE: ReadonlyArray<number>, m: MutableStep): number =>
103
84
  mutate(`EDGE_LOOP('',(${ORIENTED_EDGE.map((af) => `#${af}`).join(",")}))`, m);
104
85
 
105
- export const PLANE = (AXIS2_PLACEMENT_3D: number, m: MutableStep): number =>
106
- mutate(`PLANE('',#${AXIS2_PLACEMENT_3D})`, m);
86
+ export const PLANE = (AXIS2_PLACEMENT_3D: number, m: MutableStep): number => mutate(`PLANE('',#${AXIS2_PLACEMENT_3D})`, m);
107
87
 
108
- export const PCURVE = (
109
- CYLINDRICAL_SURFACE_or_PLANE: number,
110
- DEFINITIONAL_REPRESENTATION: number,
111
- m: MutableStep
112
- ): number => mutate(`PCURVE('',#${CYLINDRICAL_SURFACE_or_PLANE},#${DEFINITIONAL_REPRESENTATION})`, m);
88
+ export const PCURVE = (CYLINDRICAL_SURFACE_or_PLANE: number, DEFINITIONAL_REPRESENTATION: number, m: MutableStep): number =>
89
+ mutate(`PCURVE('',#${CYLINDRICAL_SURFACE_or_PLANE},#${DEFINITIONAL_REPRESENTATION})`, m);
113
90
 
114
91
  export const CYLINDRICAL_SURFACE = (AXIS2_PLACEMENT_3D: number, radius: number, m: MutableStep): number =>
115
92
  mutate(`CYLINDRICAL_SURFACE('',#${AXIS2_PLACEMENT_3D},${stepNumber(radius)})`, m);
116
93
 
117
- export const CONICAL_SURFACE = (
118
- AXIS2_PLACEMENT_3D: number,
119
- radius: number,
120
- semiAngle: number,
121
- m: MutableStep
122
- ): number => mutate(`CONICAL_SURFACE('',#${AXIS2_PLACEMENT_3D},${stepNumber(radius)},${stepNumber(semiAngle)})`, m);
94
+ export const CONICAL_SURFACE = (AXIS2_PLACEMENT_3D: number, radius: number, semiAngle: number, m: MutableStep): number =>
95
+ mutate(`CONICAL_SURFACE('',#${AXIS2_PLACEMENT_3D},${stepNumber(radius)},${stepNumber(semiAngle)})`, m);
123
96
 
124
97
  export const DEFINITIONAL_REPRESENTATION = (LINEorCircle: number, m: MutableStep): number =>
125
98
  mutate(`DEFINITIONAL_REPRESENTATION('',(#${LINEorCircle}),#7)`, m);
126
99
 
127
- export const SHELL_BASED_SURFACE_MODEL = (OPEN_SHELL: number, m: MutableStep): number =>
128
- mutate(`SHELL_BASED_SURFACE_MODEL('',(#${OPEN_SHELL}))`, m);
100
+ export const SHELL_BASED_SURFACE_MODEL = (OPEN_SHELL: number, m: MutableStep): number => mutate(`SHELL_BASED_SURFACE_MODEL('',(#${OPEN_SHELL}))`, m);
129
101
 
130
102
  export const MANIFOLD_SURFACE_SHAPE_REPRESENTATION = (
131
103
  AXIS2_PLACEMENT_3D: number,
132
104
  CLOSED_SHELL: number,
133
105
  GEOMETRY_CONTEXT: number,
134
106
  m: MutableStep
135
- ): number =>
136
- mutate(`MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#${AXIS2_PLACEMENT_3D},#${CLOSED_SHELL}),#${GEOMETRY_CONTEXT})`, m);
107
+ ): number => mutate(`MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#${AXIS2_PLACEMENT_3D},#${CLOSED_SHELL}),#${GEOMETRY_CONTEXT})`, m);
137
108
 
138
109
  export const ADVANCED_BREP_SHAPE_REPRESENTATION = (
139
110
  AXIS2_PLACEMENT_3D: number,
140
111
  MANIFOLD_SOLID_BREP: number,
141
112
  GEOMETRY_CONTEXT: number,
142
113
  m: MutableStep
143
- ): number =>
144
- mutate(
145
- `ADVANCED_BREP_SHAPE_REPRESENTATION('',(#${AXIS2_PLACEMENT_3D},#${MANIFOLD_SOLID_BREP}),#${GEOMETRY_CONTEXT})`,
146
- m
147
- );
114
+ ): number => mutate(`ADVANCED_BREP_SHAPE_REPRESENTATION('',(#${AXIS2_PLACEMENT_3D},#${MANIFOLD_SOLID_BREP}),#${GEOMETRY_CONTEXT})`, m);
148
115
 
149
116
  export const CLOSED_SHELL = (ADVANCED_FACE: ReadonlyArray<number>, m: MutableStep): number =>
150
117
  mutate(`CLOSED_SHELL('',(${ADVANCED_FACE.map((af) => `#${af}`).join(",")}))`, m);
151
118
 
152
- export const CLOSED_SHELL2 = (ADVANCED_FACE: number, m: MutableStep): number =>
153
- mutate(`CLOSED_SHELL('',(#${ADVANCED_FACE}))`, m);
119
+ export const CLOSED_SHELL2 = (ADVANCED_FACE: number, m: MutableStep): number => mutate(`CLOSED_SHELL('',(#${ADVANCED_FACE}))`, m);
154
120
 
155
- export const MANIFOLD_SOLID_BREP = (closedRef: number, m: MutableStep): number =>
156
- mutate(`MANIFOLD_SOLID_BREP('',#${closedRef})`, m);
121
+ export const MANIFOLD_SOLID_BREP = (closedRef: number, m: MutableStep): number => mutate(`MANIFOLD_SOLID_BREP('',#${closedRef})`, m);
157
122
 
158
- export const AXIS2_PLACEMENT_3D = (
159
- CARTESIAN_POINT: number,
160
- DIRECTION_NORMAL: number,
161
- DIRECTION_PLANE_DIRECITON: number,
162
- m: MutableStep
163
- ): number => mutate(`AXIS2_PLACEMENT_3D('',#${CARTESIAN_POINT},#${DIRECTION_NORMAL},#${DIRECTION_PLANE_DIRECITON})`, m);
123
+ export const AXIS2_PLACEMENT_3D = (CARTESIAN_POINT: number, DIRECTION_NORMAL: number, DIRECTION_PLANE_DIRECITON: number, m: MutableStep): number =>
124
+ mutate(`AXIS2_PLACEMENT_3D('',#${CARTESIAN_POINT},#${DIRECTION_NORMAL},#${DIRECTION_PLANE_DIRECITON})`, m);
164
125
 
165
- export const MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION = (
166
- STYLED_ITEM: number,
167
- GEOMETRY_CONTEXT: number,
168
- m: MutableStep
169
- ): number =>
126
+ export const MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION = (STYLED_ITEM: number, GEOMETRY_CONTEXT: number, m: MutableStep): number =>
170
127
  mutate(`MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#${STYLED_ITEM}),#${GEOMETRY_CONTEXT})`, m);
171
128
 
172
- export const STYLED_ITEM = (
173
- PRESENTATION_STYLE_ASSIGNMENT: number,
174
- MANIFOLD_SOLID_BREP: number,
175
- m: MutableStep
176
- ): number => mutate(`STYLED_ITEM('color',(#${PRESENTATION_STYLE_ASSIGNMENT}),#${MANIFOLD_SOLID_BREP})`, m);
129
+ export const STYLED_ITEM = (PRESENTATION_STYLE_ASSIGNMENT: number, MANIFOLD_SOLID_BREP: number, m: MutableStep): number =>
130
+ mutate(`STYLED_ITEM('color',(#${PRESENTATION_STYLE_ASSIGNMENT}),#${MANIFOLD_SOLID_BREP})`, m);
177
131
 
178
- export const PRESENTATION_STYLE_ASSIGNMENT = (
179
- SURFACE_STYLE_USAGE: number,
180
- CURVE_STYLE: number,
181
- m: MutableStep
182
- ): number => mutate(`PRESENTATION_STYLE_ASSIGNMENT((#${SURFACE_STYLE_USAGE},#${CURVE_STYLE}))`, m);
132
+ export const PRESENTATION_STYLE_ASSIGNMENT = (SURFACE_STYLE_USAGE: number, CURVE_STYLE: number, m: MutableStep): number =>
133
+ mutate(`PRESENTATION_STYLE_ASSIGNMENT((#${SURFACE_STYLE_USAGE},#${CURVE_STYLE}))`, m);
183
134
 
184
135
  export const SURFACE_STYLE_USAGE = (SURFACE_SIDE_STYLE: number, m: MutableStep): number =>
185
136
  mutate(`SURFACE_STYLE_USAGE(.BOTH.,#${SURFACE_SIDE_STYLE})`, m);
@@ -187,14 +138,12 @@ export const SURFACE_STYLE_USAGE = (SURFACE_SIDE_STYLE: number, m: MutableStep):
187
138
  export const SURFACE_SIDE_STYLE = (SURFACE_STYLE_FILL_AREA: number, m: MutableStep): number =>
188
139
  mutate(`SURFACE_SIDE_STYLE('',(#${SURFACE_STYLE_FILL_AREA}))`, m);
189
140
 
190
- export const SURFACE_STYLE_FILL_AREA = (FILL_AREA_STYLE: number, m: MutableStep): number =>
191
- mutate(`SURFACE_STYLE_FILL_AREA(#${FILL_AREA_STYLE})`, m);
141
+ export const SURFACE_STYLE_FILL_AREA = (FILL_AREA_STYLE: number, m: MutableStep): number => mutate(`SURFACE_STYLE_FILL_AREA(#${FILL_AREA_STYLE})`, m);
192
142
 
193
143
  export const FILL_AREA_STYLE = (FILL_AREA_STYLE_COLOUR: number, m: MutableStep): number =>
194
144
  mutate(`FILL_AREA_STYLE('',(#${FILL_AREA_STYLE_COLOUR}))`, m);
195
145
 
196
- export const FILL_AREA_STYLE_COLOUR = (COLOUR_RGB: number, m: MutableStep): number =>
197
- mutate(`FILL_AREA_STYLE_COLOUR('',#${COLOUR_RGB})`, m);
146
+ export const FILL_AREA_STYLE_COLOUR = (COLOUR_RGB: number, m: MutableStep): number => mutate(`FILL_AREA_STYLE_COLOUR('',#${COLOUR_RGB})`, m);
198
147
 
199
148
  export const CURVE_STYLE = (DRAUGHTING_PRE_DEFINED_CURVE_FONT: number, COLOUR_RGB: number, m: MutableStep): number =>
200
149
  mutate(`CURVE_STYLE('',#${DRAUGHTING_PRE_DEFINED_CURVE_FONT},POSITIVE_LENGTH_MEASURE(0.1),#${COLOUR_RGB})`, m);
@@ -228,13 +177,10 @@ PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE',''
228
177
  m
229
178
  );
230
179
 
231
- export const LENGTH_UNIT = (m: MutableStep): number =>
232
- mutate(`( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) )`, m);
180
+ export const LENGTH_UNIT = (m: MutableStep): number => mutate(`( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) )`, m);
233
181
 
234
- export const NAMED_UNIT = (
235
- unit: "PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.)" | "SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT()",
236
- m: MutableStep
237
- ): number => mutate(`( NAMED_UNIT(*) ${unit} )`, m);
182
+ export const NAMED_UNIT = (unit: "PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.)" | "SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT()", m: MutableStep): number =>
183
+ mutate(`( NAMED_UNIT(*) ${unit} )`, m);
238
184
 
239
185
  export const UNCERTAINTY_MEASURE_WITH_UNIT = (LENGTH_UNIT: number, m: MutableStep): number =>
240
186
  mutate(
@@ -244,31 +190,21 @@ export const UNCERTAINTY_MEASURE_WITH_UNIT = (LENGTH_UNIT: number, m: MutableSte
244
190
  );
245
191
 
246
192
  export const APPLICATION_PROTOCOL_DEFINITION = (APPLICATION_CONTEXT: number, m: MutableStep): number =>
247
- mutate(
248
- `APPLICATION_PROTOCOL_DEFINITION('international standard','automotive_design',2000,#${APPLICATION_CONTEXT})`,
249
- m
250
- );
193
+ mutate(`APPLICATION_PROTOCOL_DEFINITION('international standard','automotive_design',2000,#${APPLICATION_CONTEXT})`, m);
251
194
 
252
195
  export const APPLICATION_CONTEXT = (m: MutableStep): number =>
253
196
  mutate(`APPLICATION_CONTEXT('core data for automotive mechanical design processes')`, m);
254
197
 
255
- export const SHAPE_DEFINITION_REPRESENTATION = (
256
- productDefinitionShape: number,
257
- manifoldSurfaceShapeRepr: number,
258
- m: MutableStep
259
- ): number => mutate(`SHAPE_DEFINITION_REPRESENTATION(#${productDefinitionShape},#${manifoldSurfaceShapeRepr})`, m);
198
+ export const SHAPE_DEFINITION_REPRESENTATION = (productDefinitionShape: number, manifoldSurfaceShapeRepr: number, m: MutableStep): number =>
199
+ mutate(`SHAPE_DEFINITION_REPRESENTATION(#${productDefinitionShape},#${manifoldSurfaceShapeRepr})`, m);
260
200
 
261
201
  export const PRODUCT_DEFINITION_SHAPE = (productDefinition: number, m: MutableStep): number =>
262
202
  mutate(`PRODUCT_DEFINITION_SHAPE('','',#${productDefinition})`, m);
263
203
 
264
- export const PRODUCT_DEFINITION = (
265
- productDefinitionFormation: number,
266
- productDefinitionContext: number,
267
- m: MutableStep
268
- ): number => mutate(`PRODUCT_DEFINITION('design',#${productDefinitionFormation},#${productDefinitionContext})`, m);
204
+ export const PRODUCT_DEFINITION = (productDefinitionFormation: number, productDefinitionContext: number, m: MutableStep): number =>
205
+ mutate(`PRODUCT_DEFINITION('design',#${productDefinitionFormation},#${productDefinitionContext})`, m);
269
206
 
270
- export const PRODUCT_DEFINITION_FORMATION = (product: number, m: MutableStep): number =>
271
- mutate(`PRODUCT_DEFINITION_FORMATION('','',#${product})`, m);
207
+ export const PRODUCT_DEFINITION_FORMATION = (product: number, m: MutableStep): number => mutate(`PRODUCT_DEFINITION_FORMATION('','',#${product})`, m);
272
208
 
273
209
  export const PRODUCT = (productContext: number, name: string, m: MutableStep): number =>
274
210
  mutate(`PRODUCT('${name}','${name}','',(#${productContext}))`, m);
@@ -1,15 +1,5 @@
1
1
  import type { Box, Material, Vec3 } from "../../../abstract-3d.js";
2
- import {
3
- vec3Scale,
4
- vec3TransRot,
5
- vec3RotCombine,
6
- vec3Zero,
7
- vec3,
8
- vec3Normalize,
9
- vec3Sub,
10
- vec3Add,
11
- vec3Rot,
12
- } from "../../../abstract-3d.js";
2
+ import { vec3Scale, vec3TransRot, vec3RotCombine, vec3Zero, vec3, vec3Normalize, vec3Sub, vec3Add, vec3Rot } from "../../../abstract-3d.js";
13
3
  import { parseRgb } from "../../../utils.js";
14
4
  import type { MutableStep } from "../step-encoding.js";
15
5
  import {
@@ -131,12 +121,7 @@ export function stepBox(b: Box, mat: Material, parentPos: Vec3, parentRot: Vec3,
131
121
  const closedShell = CLOSED_SHELL(faces, m);
132
122
  const manifoldSolidBrep = MANIFOLD_SOLID_BREP(closedShell, m);
133
123
 
134
- const axisPlacement = AXIS2_PLACEMENT_3D(
135
- CARTESIAN_POINT(vec3Zero, m),
136
- DIRECTION(normFrontGlobal, m),
137
- DIRECTION(normRightGlobal, m),
138
- m
139
- );
124
+ const axisPlacement = AXIS2_PLACEMENT_3D(CARTESIAN_POINT(vec3Zero, m), DIRECTION(normFrontGlobal, m), DIRECTION(normRightGlobal, m), m);
140
125
 
141
126
  const advBrepShapeRepr = ADVANCED_BREP_SHAPE_REPRESENTATION(axisPlacement, manifoldSolidBrep, m.geoContext3d, m);
142
127
 
@@ -45,14 +45,7 @@ import {
45
45
  const SMALLEST_RADIUS = 1e-4;
46
46
  const GEOMETRY_EPSILON = 1e-12;
47
47
 
48
- export function stepCylinder(
49
- c: Cylinder,
50
- mat: Material,
51
- parentPos: Vec3,
52
- parentRot: Vec3,
53
- m: MutableStep,
54
- rSmall?: number
55
- ): void {
48
+ export function stepCylinder(c: Cylinder, mat: Material, parentPos: Vec3, parentRot: Vec3, m: MutableStep, rSmall?: number): void {
56
49
  const h = c.length;
57
50
 
58
51
  if (h <= GEOMETRY_EPSILON) {
@@ -84,11 +77,7 @@ export function stepCylinder(
84
77
 
85
78
  const topSeamPoint = vec3Add(pos, rot(vec3(topRadius, h / 2, 0)));
86
79
 
87
- const seamDelta = vec3(
88
- topSeamPoint.x - bottomSeamPoint.x,
89
- topSeamPoint.y - bottomSeamPoint.y,
90
- topSeamPoint.z - bottomSeamPoint.z
91
- );
80
+ const seamDelta = vec3(topSeamPoint.x - bottomSeamPoint.x, topSeamPoint.y - bottomSeamPoint.y, topSeamPoint.z - bottomSeamPoint.z);
92
81
 
93
82
  const seamLength = Math.hypot(seamDelta.x, seamDelta.y, seamDelta.z);
94
83
 
@@ -120,13 +109,7 @@ export function stepCylinder(
120
109
 
121
110
  const topPlacement = AXIS2_PLACEMENT_3D(topCenterPoint, axisDirection, radialDirection, m);
122
111
 
123
- const seamEdge = EDGE_CURVE(
124
- bottomVertex,
125
- topVertex,
126
- LINE(bottomSeamCartesianPoint, VECTOR(DIRECTION(seamDirection, m), m), m),
127
- m,
128
- "T"
129
- );
112
+ const seamEdge = EDGE_CURVE(bottomVertex, topVertex, LINE(bottomSeamCartesianPoint, VECTOR(DIRECTION(seamDirection, m), m), m), m, "T");
130
113
 
131
114
  const bottomCircleEdge = EDGE_CURVE(bottomVertex, bottomVertex, CIRCLE(bottomPlacement, bottomRadius, m), m, "T");
132
115
 
@@ -167,19 +150,9 @@ export function stepCylinder(
167
150
  "T"
168
151
  );
169
152
 
170
- const bottomFace = ADVANCED_FACE(
171
- FACE_BOUND(EDGE_LOOP([ORIENTED_EDGE(bottomCircleEdge, m, "F")], m), "T", m),
172
- PLANE(bottomPlacement, m),
173
- m,
174
- "F"
175
- );
153
+ const bottomFace = ADVANCED_FACE(FACE_BOUND(EDGE_LOOP([ORIENTED_EDGE(bottomCircleEdge, m, "F")], m), "T", m), PLANE(bottomPlacement, m), m, "F");
176
154
 
177
- const topFace = ADVANCED_FACE(
178
- FACE_BOUND(EDGE_LOOP([ORIENTED_EDGE(topCircleEdge, m, "F")], m), "F", m),
179
- PLANE(topPlacement, m),
180
- m,
181
- "T"
182
- );
155
+ const topFace = ADVANCED_FACE(FACE_BOUND(EDGE_LOOP([ORIENTED_EDGE(topCircleEdge, m, "F")], m), "F", m), PLANE(topPlacement, m), m, "T");
183
156
 
184
157
  const msb = MANIFOLD_SOLID_BREP(CLOSED_SHELL([sideFace, bottomFace, topFace], m), m);
185
158
 
@@ -193,10 +166,7 @@ export function stepCylinder(
193
166
  const prod = PRODUCT(PRODUCT_CONTEXT(applicationContext, m), isCylinder ? "Cylinder" : "Cone", m);
194
167
 
195
168
  SHAPE_DEFINITION_REPRESENTATION(
196
- PRODUCT_DEFINITION_SHAPE(
197
- PRODUCT_DEFINITION(PRODUCT_DEFINITION_FORMATION(prod, m), PRODUCT_DEFINITION_CONTEXT(applicationContext, m), m),
198
- m
199
- ),
169
+ PRODUCT_DEFINITION_SHAPE(PRODUCT_DEFINITION(PRODUCT_DEFINITION_FORMATION(prod, m), PRODUCT_DEFINITION_CONTEXT(applicationContext, m), m), m),
200
170
  absp,
201
171
  m
202
172
  );
@@ -22,8 +22,7 @@ export function stlCone(c: Cone, _m: Material, sides: number, parentPos: Vec3, p
22
22
 
23
23
  if (i !== 0) {
24
24
  const prevBot = botVec3Array[i - 1]!;
25
- stlString +=
26
- stlPlaneOfVertices(botPos, prevBot, currBot, currBot) + stlPlaneOfVertices(currBot, prevBot, topPos, topPos);
25
+ stlString += stlPlaneOfVertices(botPos, prevBot, currBot, currBot) + stlPlaneOfVertices(currBot, prevBot, topPos, topPos);
27
26
  }
28
27
  currentAngle += angleStep;
29
28
  }
@@ -33,8 +33,7 @@ export function stlCylinder(c: Cylinder, m: Material, sides: number, parentPos:
33
33
  const prevBot = botVec3Array[i - 1]!;
34
34
  const prevTop = topVec3Array[i - 1]!;
35
35
  if (!c.open) {
36
- stlString +=
37
- stlPlaneOfVertices(botPos, prevBot, currBot, currBot) + stlPlaneOfVertices(topPos, prevTop, currTop, currTop);
36
+ stlString += stlPlaneOfVertices(botPos, prevBot, currBot, currBot) + stlPlaneOfVertices(topPos, prevTop, currTop, currTop);
38
37
  }
39
38
  stlString += stlPlaneOfVertices(currBot, prevBot, prevTop, currTop);
40
39
  }
@@ -7,11 +7,6 @@ export function stlPlane(p: Plane, _m: Material, parentPos: Vec3, parentRot: Vec
7
7
  const pos = vec3TransRot(p.pos, parentPos, parentRot);
8
8
  const rot = vec3RotCombine(parentRot, p.rot ?? vec3Zero);
9
9
  const vec3tr = (x: number, y: number): Vec3 => vec3TransRot(vec3(x, y, 0), pos, rot);
10
- const [v1, v2, v3, v4] = [
11
- vec3tr(-half.x, -half.y),
12
- vec3tr(half.x, -half.y),
13
- vec3tr(half.x, half.y),
14
- vec3tr(-half.x, half.y),
15
- ];
10
+ const [v1, v2, v3, v4] = [vec3tr(-half.x, -half.y), vec3tr(half.x, -half.y), vec3tr(half.x, half.y), vec3tr(-half.x, half.y)];
16
11
  return stlTriangle(v1, v2, v3) + stlTriangle(v3, v4, v1);
17
12
  }
@@ -1,18 +1,14 @@
1
1
  import type { Scene, Group, Vec3 } from "../../abstract-3d.js";
2
2
  import { vec3Zero, vec3TransRot, vec3RotCombine } from "../../abstract-3d.js";
3
- import { stlPlane } from "./stl-geometries/stl-plane.js";
4
3
  import { stlBox } from "./stl-geometries/stl-box.js";
5
- import { stlCylinder } from "./stl-geometries/stl-cylinder.js";
6
4
  import { stlCone } from "./stl-geometries/stl-cone.js";
5
+ import { stlCylinder } from "./stl-geometries/stl-cylinder.js";
6
+ import { stlPlane } from "./stl-geometries/stl-plane.js";
7
7
  import { stlPolygon } from "./stl-geometries/stl-polygon.js";
8
8
 
9
9
  export const render = (scene: Scene): string =>
10
10
  `solid
11
- ` +
12
- scene.groups.reduce(
13
- (a, c) => a + stlGroup(c, scene.center_deprecated ?? vec3Zero, scene.rotation_deprecated ?? vec3Zero),
14
- ""
15
- );
11
+ ` + scene.groups.reduce((a, c) => a + stlGroup(c, scene.center_deprecated ?? vec3Zero, scene.rotation_deprecated ?? vec3Zero), "");
16
12
 
17
13
  function stlGroup(g: Group, parentPos: Vec3, parentRot: Vec3): string {
18
14
  const pos = vec3TransRot(g.pos, parentPos, parentRot);