abstract-3d 2.7.30 → 2.7.32

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 (199) hide show
  1. package/CHANGELOG.md +4 -0
  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 +20 -12
  5. package/lib/abstract-3d.js.map +1 -1
  6. package/lib/renderers/dxf/dxf-encoding/dxf-3dface.d.ts.map +1 -1
  7. package/lib/renderers/dxf/dxf-encoding/dxf-dimension.d.ts +1 -1
  8. package/lib/renderers/dxf/dxf-encoding/dxf-dimension.d.ts.map +1 -1
  9. package/lib/renderers/dxf/dxf-encoding/dxf-dimension.js +3 -3
  10. package/lib/renderers/dxf/dxf-encoding/dxf-dimension.js.map +1 -1
  11. package/lib/renderers/dxf/dxf-encoding/dxf-footer.d.ts.map +1 -1
  12. package/lib/renderers/dxf/dxf-encoding/dxf-header.d.ts.map +1 -1
  13. package/lib/renderers/dxf/dxf-encoding/dxf-header.js.map +1 -1
  14. package/lib/renderers/dxf/dxf-encoding/dxf-mtext.js.map +1 -1
  15. package/lib/renderers/dxf/dxf-encoding/dxf-solid.d.ts.map +1 -1
  16. package/lib/renderers/dxf/dxf-encoding/dxf-triangle.d.ts.map +1 -1
  17. package/lib/renderers/dxf/dxf-geometries/dxf-image.js.map +1 -1
  18. package/lib/renderers/dxf/dxf-geometries/dxf-polygon.js.map +1 -1
  19. package/lib/renderers/dxf/dxf-geometries/dxf-shape.js.map +1 -1
  20. package/lib/renderers/dxf/dxf.d.ts.map +1 -1
  21. package/lib/renderers/dxf/dxf.js +9 -5
  22. package/lib/renderers/dxf/dxf.js.map +1 -1
  23. package/lib/renderers/react/react-camera.d.ts +2 -2
  24. package/lib/renderers/react/react-camera.d.ts.map +1 -1
  25. package/lib/renderers/react/react-camera.js +3 -5
  26. package/lib/renderers/react/react-camera.js.map +1 -1
  27. package/lib/renderers/react/react-dimension.d.ts +2 -2
  28. package/lib/renderers/react/react-dimension.d.ts.map +1 -1
  29. package/lib/renderers/react/react-dimension.js +3 -3
  30. package/lib/renderers/react/react-dimension.js.map +1 -1
  31. package/lib/renderers/react/react-group.d.ts +4 -4
  32. package/lib/renderers/react/react-group.d.ts.map +1 -1
  33. package/lib/renderers/react/react-group.js.map +1 -1
  34. package/lib/renderers/react/react-hotspot.d.ts +2 -2
  35. package/lib/renderers/react/react-hotspot.d.ts.map +1 -1
  36. package/lib/renderers/react/react-hotspot.js +1 -1
  37. package/lib/renderers/react/react-hotspot.js.map +1 -1
  38. package/lib/renderers/react/react-image-material.d.ts +2 -2
  39. package/lib/renderers/react/react-image-material.d.ts.map +1 -1
  40. package/lib/renderers/react/react-image-material.js +1 -0
  41. package/lib/renderers/react/react-image-material.js.map +1 -1
  42. package/lib/renderers/react/react-material.d.ts +1 -1
  43. package/lib/renderers/react/react-material.d.ts.map +1 -1
  44. package/lib/renderers/react/react-material.js +1 -0
  45. package/lib/renderers/react/react-material.js.map +1 -1
  46. package/lib/renderers/react/react-mesh.d.ts +1 -1
  47. package/lib/renderers/react/react-mesh.d.ts.map +1 -1
  48. package/lib/renderers/react/react-mesh.js +4 -12
  49. package/lib/renderers/react/react-mesh.js.map +1 -1
  50. package/lib/renderers/react/react-scene.d.ts +5 -5
  51. package/lib/renderers/react/react-scene.d.ts.map +1 -1
  52. package/lib/renderers/react/react-scene.js +1 -0
  53. package/lib/renderers/react/react-scene.js.map +1 -1
  54. package/lib/renderers/react/react-types.d.ts +1 -1
  55. package/lib/renderers/react/react-types.d.ts.map +1 -1
  56. package/lib/renderers/react/react.d.ts +5 -5
  57. package/lib/renderers/react/react.d.ts.map +1 -1
  58. package/lib/renderers/react/react.js +1 -1
  59. package/lib/renderers/react/react.js.map +1 -1
  60. package/lib/renderers/step/step-encoding.d.ts +1 -1
  61. package/lib/renderers/step/step-encoding.d.ts.map +1 -1
  62. package/lib/renderers/step/step-encoding.js.map +1 -1
  63. package/lib/renderers/step/step-geometries/step-box.d.ts +2 -2
  64. package/lib/renderers/step/step-geometries/step-box.d.ts.map +1 -1
  65. package/lib/renderers/step/step-geometries/step-box.js.map +1 -1
  66. package/lib/renderers/step/step-geometries/step-cone.d.ts +2 -2
  67. package/lib/renderers/step/step-geometries/step-cone.d.ts.map +1 -1
  68. package/lib/renderers/step/step-geometries/step-cone.js +0 -1
  69. package/lib/renderers/step/step-geometries/step-cone.js.map +1 -1
  70. package/lib/renderers/step/step-geometries/step-cylinder.d.ts +2 -2
  71. package/lib/renderers/step/step-geometries/step-cylinder.d.ts.map +1 -1
  72. package/lib/renderers/step/step-geometries/step-cylinder.js +8 -23
  73. package/lib/renderers/step/step-geometries/step-cylinder.js.map +1 -1
  74. package/lib/renderers/step/step-geometries/step-plane.d.ts +2 -2
  75. package/lib/renderers/step/step-geometries/step-plane.d.ts.map +1 -1
  76. package/lib/renderers/step/step-geometries/step-plane.js +1 -1
  77. package/lib/renderers/step/step-geometries/step-plane.js.map +1 -1
  78. package/lib/renderers/step/step.d.ts +1 -1
  79. package/lib/renderers/step/step.d.ts.map +1 -1
  80. package/lib/renderers/step/step.js +1 -1
  81. package/lib/renderers/step/step.js.map +1 -1
  82. package/lib/renderers/stl/stl-encoding.d.ts +1 -1
  83. package/lib/renderers/stl/stl-encoding.d.ts.map +1 -1
  84. package/lib/renderers/stl/stl-encoding.js.map +1 -1
  85. package/lib/renderers/stl/stl-geometries/stl-box.d.ts +1 -1
  86. package/lib/renderers/stl/stl-geometries/stl-box.d.ts.map +1 -1
  87. package/lib/renderers/stl/stl-geometries/stl-box.js.map +1 -1
  88. package/lib/renderers/stl/stl-geometries/stl-cone.d.ts +1 -1
  89. package/lib/renderers/stl/stl-geometries/stl-cone.d.ts.map +1 -1
  90. package/lib/renderers/stl/stl-geometries/stl-cone.js.map +1 -1
  91. package/lib/renderers/stl/stl-geometries/stl-cylinder.d.ts +1 -1
  92. package/lib/renderers/stl/stl-geometries/stl-cylinder.d.ts.map +1 -1
  93. package/lib/renderers/stl/stl-geometries/stl-cylinder.js +1 -1
  94. package/lib/renderers/stl/stl-geometries/stl-cylinder.js.map +1 -1
  95. package/lib/renderers/stl/stl-geometries/stl-plane.d.ts +1 -1
  96. package/lib/renderers/stl/stl-geometries/stl-plane.d.ts.map +1 -1
  97. package/lib/renderers/stl/stl-geometries/stl-plane.js +1 -1
  98. package/lib/renderers/stl/stl-geometries/stl-plane.js.map +1 -1
  99. package/lib/renderers/stl/stl-geometries/stl-polygon.d.ts +1 -1
  100. package/lib/renderers/stl/stl-geometries/stl-polygon.d.ts.map +1 -1
  101. package/lib/renderers/stl/stl-geometries/stl-polygon.js.map +1 -1
  102. package/lib/renderers/stl/stl-geometries/stl-shape.d.ts +1 -1
  103. package/lib/renderers/stl/stl-geometries/stl-shape.d.ts.map +1 -1
  104. package/lib/renderers/stl/stl-geometries/stl-shape.js.map +1 -1
  105. package/lib/renderers/stl/stl.d.ts +1 -1
  106. package/lib/renderers/stl/stl.d.ts.map +1 -1
  107. package/lib/renderers/stl/stl.js.map +1 -1
  108. package/lib/renderers/svg/index.js +1 -0
  109. package/lib/renderers/svg/index.js.map +1 -1
  110. package/lib/renderers/svg/svg-encoding.d.ts +3 -3
  111. package/lib/renderers/svg/svg-encoding.d.ts.map +1 -1
  112. package/lib/renderers/svg/svg-encoding.js +6 -15
  113. package/lib/renderers/svg/svg-encoding.js.map +1 -1
  114. package/lib/renderers/svg/svg-geometries/shared.d.ts +1 -1
  115. package/lib/renderers/svg/svg-geometries/shared.d.ts.map +1 -1
  116. package/lib/renderers/svg/svg-geometries/shared.js.map +1 -1
  117. package/lib/renderers/svg/svg-geometries/svg-box.d.ts +2 -2
  118. package/lib/renderers/svg/svg-geometries/svg-box.d.ts.map +1 -1
  119. package/lib/renderers/svg/svg-geometries/svg-box.js +1 -1
  120. package/lib/renderers/svg/svg-geometries/svg-box.js.map +1 -1
  121. package/lib/renderers/svg/svg-geometries/svg-cone.d.ts +2 -2
  122. package/lib/renderers/svg/svg-geometries/svg-cone.d.ts.map +1 -1
  123. package/lib/renderers/svg/svg-geometries/svg-cone.js +1 -1
  124. package/lib/renderers/svg/svg-geometries/svg-cone.js.map +1 -1
  125. package/lib/renderers/svg/svg-geometries/svg-cylinder.d.ts +2 -2
  126. package/lib/renderers/svg/svg-geometries/svg-cylinder.d.ts.map +1 -1
  127. package/lib/renderers/svg/svg-geometries/svg-cylinder.js +1 -1
  128. package/lib/renderers/svg/svg-geometries/svg-cylinder.js.map +1 -1
  129. package/lib/renderers/svg/svg-geometries/svg-image.d.ts +2 -2
  130. package/lib/renderers/svg/svg-geometries/svg-image.d.ts.map +1 -1
  131. package/lib/renderers/svg/svg-geometries/svg-image.js +1 -1
  132. package/lib/renderers/svg/svg-geometries/svg-image.js.map +1 -1
  133. package/lib/renderers/svg/svg-geometries/svg-line.d.ts +2 -2
  134. package/lib/renderers/svg/svg-geometries/svg-line.d.ts.map +1 -1
  135. package/lib/renderers/svg/svg-geometries/svg-line.js.map +1 -1
  136. package/lib/renderers/svg/svg-geometries/svg-plane.d.ts +2 -2
  137. package/lib/renderers/svg/svg-geometries/svg-plane.d.ts.map +1 -1
  138. package/lib/renderers/svg/svg-geometries/svg-plane.js +1 -1
  139. package/lib/renderers/svg/svg-geometries/svg-plane.js.map +1 -1
  140. package/lib/renderers/svg/svg-geometries/svg-polygon.d.ts +2 -2
  141. package/lib/renderers/svg/svg-geometries/svg-polygon.d.ts.map +1 -1
  142. package/lib/renderers/svg/svg-geometries/svg-polygon.js +1 -1
  143. package/lib/renderers/svg/svg-geometries/svg-polygon.js.map +1 -1
  144. package/lib/renderers/svg/svg-geometries/svg-shape.d.ts +2 -2
  145. package/lib/renderers/svg/svg-geometries/svg-shape.d.ts.map +1 -1
  146. package/lib/renderers/svg/svg-geometries/svg-shape.js +1 -1
  147. package/lib/renderers/svg/svg-geometries/svg-shape.js.map +1 -1
  148. package/lib/renderers/svg/svg-geometries/svg-text.d.ts +2 -2
  149. package/lib/renderers/svg/svg-geometries/svg-text.d.ts.map +1 -1
  150. package/lib/renderers/svg/svg-geometries/svg-text.js.map +1 -1
  151. package/lib/renderers/svg/svg.d.ts +3 -3
  152. package/lib/renderers/svg/svg.d.ts.map +1 -1
  153. package/lib/renderers/svg/svg.js.map +1 -1
  154. package/lib/utils.d.ts +1 -1
  155. package/lib/utils.d.ts.map +1 -1
  156. package/lib/utils.js +0 -1
  157. package/lib/utils.js.map +1 -1
  158. package/package.json +3 -3
  159. package/src/abstract-3d.ts +91 -91
  160. package/src/custom_typings/react-three-fiber.d.ts +1 -1
  161. package/src/renderers/dxf/dxf-encoding/dxf-dimension.ts +57 -13
  162. package/src/renderers/dxf/dxf.ts +67 -16
  163. package/src/renderers/react/react-camera.tsx +3 -4
  164. package/src/renderers/react/react-dimension.tsx +5 -5
  165. package/src/renderers/react/react-group.tsx +6 -4
  166. package/src/renderers/react/react-hotspot.tsx +3 -2
  167. package/src/renderers/react/react-image-material.tsx +3 -2
  168. package/src/renderers/react/react-material.tsx +1 -1
  169. package/src/renderers/react/react-mesh.tsx +28 -39
  170. package/src/renderers/react/react-scene.tsx +6 -5
  171. package/src/renderers/react/react-types.ts +1 -1
  172. package/src/renderers/react/react.tsx +7 -6
  173. package/src/renderers/step/step-encoding.ts +43 -44
  174. package/src/renderers/step/step-geometries/step-box.ts +3 -8
  175. package/src/renderers/step/step-geometries/step-cone.ts +3 -14
  176. package/src/renderers/step/step-geometries/step-cylinder.ts +49 -251
  177. package/src/renderers/step/step-geometries/step-plane.ts +4 -11
  178. package/src/renderers/step/step.ts +3 -19
  179. package/src/renderers/stl/stl-encoding.ts +2 -1
  180. package/src/renderers/stl/stl-geometries/stl-box.ts +2 -1
  181. package/src/renderers/stl/stl-geometries/stl-cone.ts +2 -1
  182. package/src/renderers/stl/stl-geometries/stl-cylinder.ts +3 -2
  183. package/src/renderers/stl/stl-geometries/stl-plane.ts +2 -10
  184. package/src/renderers/stl/stl-geometries/stl-polygon.ts +2 -1
  185. package/src/renderers/stl/stl-geometries/stl-shape.ts +2 -1
  186. package/src/renderers/stl/stl.ts +2 -1
  187. package/src/renderers/svg/svg-encoding.ts +7 -31
  188. package/src/renderers/svg/svg-geometries/shared.ts +2 -1
  189. package/src/renderers/svg/svg-geometries/svg-box.ts +4 -13
  190. package/src/renderers/svg/svg-geometries/svg-cone.ts +4 -13
  191. package/src/renderers/svg/svg-geometries/svg-cylinder.ts +4 -13
  192. package/src/renderers/svg/svg-geometries/svg-image.ts +6 -12
  193. package/src/renderers/svg/svg-geometries/svg-line.ts +4 -2
  194. package/src/renderers/svg/svg-geometries/svg-plane.ts +4 -14
  195. package/src/renderers/svg/svg-geometries/svg-polygon.ts +4 -11
  196. package/src/renderers/svg/svg-geometries/svg-shape.ts +4 -12
  197. package/src/renderers/svg/svg-geometries/svg-text.ts +6 -8
  198. package/src/renderers/svg/svg.ts +13 -17
  199. package/src/utils.ts +22 -27
@@ -18,9 +18,15 @@ import {
18
18
  vec3RotCombine,
19
19
  vec3Sub,
20
20
  vec3TransRot,
21
- vec3Zero
21
+ vec3Zero,
22
22
  } from "../../abstract-3d.js";
23
- import { DEFAULT_CIRCLE_SIDE_COUNT, type DxfOrigin, type Handle, dxfBuild, dxfHandleInit } from "./dxf-encoding/dxf-common.js";
23
+ import {
24
+ DEFAULT_CIRCLE_SIDE_COUNT,
25
+ type DxfOrigin,
26
+ type Handle,
27
+ dxfBuild,
28
+ dxfHandleInit,
29
+ } from "./dxf-encoding/dxf-common.js";
24
30
  import { type Optional, calculateVisibleViews } from "../../utils.js";
25
31
  import { dxfPlane } from "./dxf-geometries/dxf-plane.js";
26
32
  import { dxfBox } from "./dxf-geometries/dxf-box.js";
@@ -29,7 +35,7 @@ import { dxfCone } from "./dxf-geometries/dxf-cone.js";
29
35
  import { dxfPolygon } from "./dxf-geometries/dxf-polygon.js";
30
36
  import { dxfImage } from "./dxf-geometries/dxf-image.js";
31
37
  import { dxfDimension } from "./dxf-geometries/dxf-dimension.js";
32
- import { DxfDimensionDefinition } from "./dxf-encoding/dxf-dimension.js";
38
+ import type { DxfDimensionDefinition } from "./dxf-encoding/dxf-dimension.js";
33
39
 
34
40
  export type DxfOptions = {
35
41
  readonly view: View;
@@ -68,7 +74,7 @@ export function renderScenes(scenes: ReadonlyArray<DxfScene>, baseOptions?: Opti
68
74
  allDimensions = {
69
75
  entity: allDimensions.entity + dimensions.entity,
70
76
  block: allDimensions.block + dimensions.block,
71
- blockRecord: allDimensions.blockRecord + dimensions.blockRecord
77
+ blockRecord: allDimensions.blockRecord + dimensions.blockRecord,
72
78
  };
73
79
  allBounds.push(bounds3FromPosAndSize(center, size));
74
80
  }
@@ -88,7 +94,12 @@ const renderInternal = (
88
94
  options: DxfOptions,
89
95
  offset: Vec3,
90
96
  handleRef: Handle
91
- ): { readonly groups: string; readonly dimensions: DxfDimensionDefinition; readonly size: Vec3; readonly center: Vec3 } => {
97
+ ): {
98
+ readonly groups: string;
99
+ readonly dimensions: DxfDimensionDefinition;
100
+ readonly size: Vec3;
101
+ readonly center: Vec3;
102
+ } => {
92
103
  const viewRotation = rotationForCameraPos(options.view);
93
104
  const unitRot = vec3RotCombine(viewRotation, scene.rotation_deprecated ?? vec3Zero);
94
105
  const unitCenter = scene.center_deprecated ?? vec3Zero;
@@ -100,7 +111,16 @@ const renderInternal = (
100
111
  const visibleViews = calculateVisibleViews(options.view, scene.rotation_deprecated);
101
112
  return {
102
113
  groups: scene.groups.reduce((a, c) => a + dxfGroup(c, pos, unitRot, options, handleRef), ""),
103
- dimensions: dxfDimensions(scene.dimensions_deprecated, pos, unitRot, scene.rotation_deprecated ?? vec3Zero, viewRotation, visibleViews, options, handleRef),
114
+ dimensions: dxfDimensions(
115
+ scene.dimensions_deprecated,
116
+ pos,
117
+ unitRot,
118
+ scene.rotation_deprecated ?? vec3Zero,
119
+ viewRotation,
120
+ visibleViews,
121
+ options,
122
+ handleRef
123
+ ),
104
124
  size,
105
125
  center: pos,
106
126
  };
@@ -178,18 +198,34 @@ function dxfGroup(g: Group, parentPos: Vec3, parentRot: Vec3, options: DxfOption
178
198
  return dxf;
179
199
  }
180
200
 
181
- function dxfDimensions(d: Dimensions | undefined, parentPos: Vec3, parentRot: Vec3, sceneRotation: Vec3, viewRotation: Vec3, visibleViews: Record<string, boolean>, options: DxfOptions, handleRef: Handle): DxfDimensionDefinition {
182
- if(!d || !options.showDimensions) {
183
- return {
184
- entity: "",
185
- block: "",
186
- blockRecord: ""
187
- };
201
+ function dxfDimensions(
202
+ d: Dimensions | undefined,
203
+ parentPos: Vec3,
204
+ parentRot: Vec3,
205
+ sceneRotation: Vec3,
206
+ viewRotation: Vec3,
207
+ visibleViews: Record<string, boolean>,
208
+ options: DxfOptions,
209
+ handleRef: Handle
210
+ ): DxfDimensionDefinition {
211
+ if (!d || !options.showDimensions) {
212
+ return {
213
+ entity: "",
214
+ block: "",
215
+ blockRecord: "",
216
+ };
188
217
  }
189
218
  return d.dimensions
190
219
  .filter((d) => d.views?.[0] && visibleViews[d.views[0]] === true)
191
220
  .map((d) => dxfDimension(d, parentPos, parentRot, sceneRotation, viewRotation, handleRef))
192
- .reduce<DxfDimensionDefinition>((prev, curr) => ({ block: prev.block + curr.block, entity: prev.entity + curr.entity, blockRecord: prev.blockRecord + curr.blockRecord }), {block: "", entity: "", blockRecord: ""});
221
+ .reduce<DxfDimensionDefinition>(
222
+ (prev, curr) => ({
223
+ block: prev.block + curr.block,
224
+ entity: prev.entity + curr.entity,
225
+ blockRecord: prev.blockRecord + curr.blockRecord,
226
+ }),
227
+ { block: "", entity: "", blockRecord: "" }
228
+ );
193
229
  }
194
230
 
195
231
  function optionsDef(options: Optional<DxfOptions> | undefined): DxfOptions {
@@ -218,6 +254,21 @@ export const renderOld = (scene: Scene, options?: Optional<DxfOptions>): string
218
254
  const bounds2 = bounds3FromPosAndSize(offset, scene.size_deprecated);
219
255
  const groupRoot = group([], offset, vec3Zero, scene.groups);
220
256
  const handleRef = dxfHandleInit();
221
- const dimensions = dxfDimensions(scene.dimensions_deprecated, dimensionsPos, unitRot, scene.rotation_deprecated ?? vec3Zero, viewRotation, visibleViews, opts, handleRef);
222
- return dxfBuild(dxfGroup(groupRoot, center, unitRot, opts, handleRef), dimensions, bounds2, scene.size_deprecated, center);
257
+ const dimensions = dxfDimensions(
258
+ scene.dimensions_deprecated,
259
+ dimensionsPos,
260
+ unitRot,
261
+ scene.rotation_deprecated ?? vec3Zero,
262
+ viewRotation,
263
+ visibleViews,
264
+ opts,
265
+ handleRef
266
+ );
267
+ return dxfBuild(
268
+ dxfGroup(groupRoot, center, unitRot, opts, handleRef),
269
+ dimensions,
270
+ bounds2,
271
+ scene.size_deprecated,
272
+ center
273
+ );
223
274
  };
@@ -1,5 +1,3 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- /* eslint-disable @typescript-eslint/no-unused-vars */
3
1
  import React, { useLayoutEffect, useRef, useState } from "react";
4
2
  import {
5
3
  type GizmoHelperProps,
@@ -14,7 +12,8 @@ import {
14
12
  import { type ThreeEvent, useThree } from "@react-three/fiber";
15
13
  import { exhaustiveCheck } from "ts-exhaustive-check";
16
14
  import { Vector3 } from "three";
17
- import { View, Scene, Vec3, vec3 } from "../../abstract-3d.js";
15
+ import type { View, Scene, Vec3 } from "../../abstract-3d.js";
16
+ import { vec3 } from "../../abstract-3d.js";
18
17
 
19
18
  export type Camera = A3dPerspectiveCamera | A3dOrthographicCamera;
20
19
  export type CameraType = Camera["type"];
@@ -46,7 +45,7 @@ type Viewcube = { readonly type: "Viewcube"; readonly viewcubeProps: GenericProp
46
45
  type Viewport = { readonly type: "Viewport"; readonly viewportProps: GizmoViewportProps };
47
46
 
48
47
  export function ReactCamera({
49
- useAnimations,
48
+ useAnimations: _useAnimations,
50
49
  camera,
51
50
  view,
52
51
  scene,
@@ -1,7 +1,6 @@
1
- import { useFrame } from "@react-three/fiber";
2
1
  import React from "react";
3
- import type { Group, Line } from "three";
4
- import { Dimensions, Vec3, Dimension, vec3TransRot, vec3Flip, Mesh, dimensionConvertToTypeMesh, vec3Zero, Material, DimensionAligned, vec3, View, DimensionMesh } from "../../abstract-3d.js";
2
+ import type { Dimensions, Vec3, Dimension, Mesh, Material } from "../../abstract-3d.js";
3
+ import { dimensionConvertToTypeMesh, vec3Zero } from "../../abstract-3d.js";
5
4
  import { ReactMaterial } from "./react-material.js";
6
5
  import { ReactMesh } from "./react-mesh.js";
7
6
 
@@ -46,7 +45,6 @@ export function ReactDimension({
46
45
  visible,
47
46
  children,
48
47
  sceneRotation,
49
- _sceneCenter
50
48
  }: {
51
49
  readonly dimension: Dimension;
52
50
  readonly material: Material;
@@ -60,7 +58,9 @@ export function ReactDimension({
60
58
  <group position={[dim.pos.x, dim.pos.y, dim.pos.z]} rotation={[dim.rot.x, dim.rot.y, dim.rot.z]}>
61
59
  <DimensionMeshes meshes={dim.meshes}>{children}</DimensionMeshes>
62
60
  </group>
63
- ) : <></>;
61
+ ) : (
62
+ <></>
63
+ );
64
64
  }
65
65
 
66
66
  const DimensionMeshes = React.memo(
@@ -1,12 +1,14 @@
1
1
  import React from "react";
2
- import { ThreeEvent, useFrame } from "@react-three/fiber";
2
+ import type { ThreeEvent } from "@react-three/fiber";
3
+ import { useFrame } from "@react-three/fiber";
3
4
  import type { Group } from "three";
4
- import { Group as Group_1 } from "../../abstract-3d.js";
5
- import { MaterialState, ReactMaterial } from "./react-material.js";
5
+ import type { Group as Group_1 } from "../../abstract-3d.js";
6
+ import type { MaterialState } from "./react-material.js";
7
+ import { ReactMaterial } from "./react-material.js";
6
8
  import { ReactMesh } from "./react-mesh.js";
7
9
  import { ImageMaterial } from "./react-image-material.js";
8
10
  import { Html } from "@react-three/drei";
9
- import { ReactPopover } from "./react-types.js";
11
+ import type { ReactPopover } from "./react-types.js";
10
12
 
11
13
  export function ReactGroup({
12
14
  g,
@@ -1,9 +1,10 @@
1
1
  import React from "react";
2
2
  import { Html } from "@react-three/drei";
3
- import { Box, HotSpot, vec3Scale, vec3Zero } from "../../abstract-3d.js";
3
+ import type { Box, HotSpot } from "../../abstract-3d.js";
4
+ import { vec3Scale, vec3Zero } from "../../abstract-3d.js";
4
5
  import { ReactMesh } from "./react-mesh.js";
5
6
  import { ReactMaterial } from "./react-material.js";
6
- import { ThreeEvent } from "@react-three/fiber";
7
+ import type { ThreeEvent } from "@react-three/fiber";
7
8
 
8
9
  export interface HotSpotInfo {
9
10
  readonly replaceId: string;
@@ -2,8 +2,9 @@ import React from "react";
2
2
  import { suspend } from "suspend-react";
3
3
  import { createSVG } from "abstract-image";
4
4
  import { CanvasTexture, DoubleSide, PlaneGeometry, SRGBColorSpace, type Texture, TextureLoader } from "three";
5
- import { Material, Image as A3dImage } from "../../abstract-3d.js";
6
- import { ERROR_IMG_KEY, getColor, materialDefaults, MaterialState, selectMat } from "./react-material.js";
5
+ import type { Material, Image as A3dImage } from "../../abstract-3d.js";
6
+ import type { MaterialState } from "./react-material.js";
7
+ import { ERROR_IMG_KEY, getColor, materialDefaults, selectMat } from "./react-material.js";
7
8
 
8
9
  export const planeGeometry = new PlaneGeometry();
9
10
 
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
2
  import { BackSide, DoubleSide, FrontSide, type MaterialParameters } from "three";
3
- import { Material } from "../../abstract-3d.js";
3
+ import type { Material } from "../../abstract-3d.js";
4
4
  import { shade } from "../../utils.js";
5
5
 
6
6
  const decreasedOpacity = 0.125;
@@ -23,19 +23,21 @@ import {
23
23
  Vector2,
24
24
  Vector3,
25
25
  } from "three";
26
- import {
26
+ import type {
27
27
  Mesh,
28
28
  Box,
29
29
  Plane,
30
- vec2Scale,
31
30
  Shape as Shape_1,
32
31
  Cylinder,
33
- vec2Sub,
34
- vec2Add,
35
32
  Polygon as A3dPolygon,
36
33
  Tube as A3dTube,
37
34
  CircleCurve as A3dCircleCurve,
38
35
  Hole,
36
+ } from "../../abstract-3d.js";
37
+ import {
38
+ vec2Scale,
39
+ vec2Sub,
40
+ vec2Add,
39
41
  isZero,
40
42
  vec3Scale,
41
43
  vec3,
@@ -46,8 +48,7 @@ import {
46
48
  equals,
47
49
  } from "../../abstract-3d.js";
48
50
  import { exhaustiveCheck } from "ts-exhaustive-check";
49
- import { ImageMaterial, planeGeometry } from "./react-image-material.js";
50
- import { MaterialState } from "./react-material.js";
51
+ import { planeGeometry } from "./react-image-material.js";
51
52
 
52
53
  extend({
53
54
  SphereGeometry,
@@ -86,23 +87,9 @@ export function ReactMesh({
86
87
  const culledLineGeometry = useMemo(() => {
87
88
  const g = new BufferGeometry();
88
89
 
89
- g.setAttribute(
90
- "position",
91
- new Float32BufferAttribute(
92
- [
93
- 0, -1, 0,
94
- 0, 1, 0,
95
- 1, -1, 0,
96
- 1, 1, 0,
97
- ],
98
- 3
99
- )
100
- );
90
+ g.setAttribute("position", new Float32BufferAttribute([0, -1, 0, 0, 1, 0, 1, -1, 0, 1, 1, 0], 3));
101
91
 
102
- g.setIndex([
103
- 0, 2, 1,
104
- 2, 3, 1,
105
- ]);
92
+ g.setIndex([0, 2, 1, 2, 3, 1]);
106
93
 
107
94
  return g;
108
95
  }, []);
@@ -302,22 +289,24 @@ export function ReactMesh({
302
289
  const { start, end, normal, thickness } = mesh.geometry;
303
290
  const color = mesh.material.normal;
304
291
 
305
- return <mesh geometry={culledLineGeometry} frustumCulled={false}>
306
- <shaderMaterial
307
- side={FrontSide}
308
- uniforms={{
309
- lineStart: { value: new Vector3(start.x, start.y, start.z) },
310
- lineEnd: { value: new Vector3(end.x, end.y, end.z) },
311
- lineNormal: { value: new Vector3(normal.x, normal.y, normal.z) },
312
- thickness: { value: thickness },
313
- viewport: { value: new Vector2(size.width, size.height) },
314
- nearPlane: { value: camera.near },
315
- color: { value: new Color(color) },
316
- }}
317
- vertexShader={culledLineVertexShader}
318
- fragmentShader={culledLineFragmentShader}
319
- />
320
- </mesh>;
292
+ return (
293
+ <mesh geometry={culledLineGeometry} frustumCulled={false}>
294
+ <shaderMaterial
295
+ side={FrontSide}
296
+ uniforms={{
297
+ lineStart: { value: new Vector3(start.x, start.y, start.z) },
298
+ lineEnd: { value: new Vector3(end.x, end.y, end.z) },
299
+ lineNormal: { value: new Vector3(normal.x, normal.y, normal.z) },
300
+ thickness: { value: thickness },
301
+ viewport: { value: new Vector2(size.width, size.height) },
302
+ nearPlane: { value: camera.near },
303
+ color: { value: new Color(color) },
304
+ }}
305
+ vertexShader={culledLineVertexShader}
306
+ fragmentShader={culledLineFragmentShader}
307
+ />
308
+ </mesh>
309
+ );
321
310
  }
322
311
  case "Polygon":
323
312
  return <Polygon polygon={mesh.geometry}>{children}</Polygon>;
@@ -655,4 +644,4 @@ const culledLineFragmentShader = `
655
644
  void main() {
656
645
  gl_FragColor = vec4(color, 1.0);
657
646
  }
658
- `;
647
+ `;
@@ -1,12 +1,13 @@
1
1
  import React from "react";
2
- import { Scene, Group } from "../../abstract-3d.js";
3
- import { HotSpotInfo, ReactHotSpots } from "./react-hotspot.js";
2
+ import type { Scene, Group } from "../../abstract-3d.js";
3
+ import type { HotSpotInfo } from "./react-hotspot.js";
4
+ import { ReactHotSpots } from "./react-hotspot.js";
4
5
  import { ReactDimensions } from "./react-dimension.js";
5
6
  import { ReactGroup } from "./react-group.js";
6
- import { MaterialState } from "./react-material.js";
7
+ import type { MaterialState } from "./react-material.js";
7
8
  import { Html } from "@react-three/drei";
8
- import { ThreeEvent } from "@react-three/fiber";
9
- import { ReactPopover } from "./react-types.js";
9
+ import type { ThreeEvent } from "@react-three/fiber";
10
+ import type { ReactPopover } from "./react-types.js";
10
11
 
11
12
  export type SceneMouseEvent = ThreeEvent<MouseEvent>;
12
13
 
@@ -1,4 +1,4 @@
1
- import { Vec3 } from "../../abstract-3d.js";
1
+ import type { Vec3 } from "../../abstract-3d.js";
2
2
 
3
3
  export interface ReactPopover {
4
4
  readonly id: string;
@@ -1,13 +1,14 @@
1
1
  import React, { memo } from "react";
2
2
  import { Canvas, type CanvasProps, type ThreeEvent } from "@react-three/fiber";
3
- import { Html, Stats, type OrbitControlsProps } from "@react-three/drei";
3
+ import { Html, type OrbitControlsProps } from "@react-three/drei";
4
4
  import { EffectComposer, N8AO } from "@react-three/postprocessing";
5
5
  import { ReactScene } from "./react-scene.js";
6
- import { Scene, View, Group, Vec3 } from "../../abstract-3d.js";
7
- import { ReactCamera, ControlsHelper, Camera, BufferZones } from "./react-camera.js";
8
- import { HotSpotInfo } from "./react-hotspot.js";
9
- import { MaterialState } from "./react-material.js";
10
- import { ReactPopover } from "./react-types.js";
6
+ import type { Scene, View, Group } from "../../abstract-3d.js";
7
+ import type { ControlsHelper, Camera, BufferZones } from "./react-camera.js";
8
+ import { ReactCamera } from "./react-camera.js";
9
+ import type { HotSpotInfo } from "./react-hotspot.js";
10
+ import type { MaterialState } from "./react-material.js";
11
+ import type { ReactPopover } from "./react-types.js";
11
12
 
12
13
  type ReactProps = {
13
14
  readonly scene: Scene | undefined; // undefined to allow for simple early loadign the js when lazy loading the React3Js renderer
@@ -1,6 +1,6 @@
1
- import { Vec2, Vec3 } from "../../abstract-3d.js";
1
+ import type { Vec2, Vec3 } from "../../abstract-3d.js";
2
2
 
3
- export type MutableStep = { refs: Map<string, number>; step: string; geoContext3d: number; };
3
+ export type MutableStep = { refs: Map<string, number>; step: string; geoContext3d: number };
4
4
 
5
5
  export const STEP_NUMBER_EPSILON: number = 1e-5;
6
6
 
@@ -19,17 +19,17 @@ const mutate = (step: string, m: MutableStep): number => {
19
19
 
20
20
  const stepNumber = (num: number): number => {
21
21
  const absNum = Math.abs(num);
22
- if(absNum < STEP_NUMBER_EPSILON) {
22
+ if (absNum < STEP_NUMBER_EPSILON) {
23
23
  return 0.0;
24
24
  }
25
25
 
26
26
  const roundNum = Math.round(num);
27
- if(Math.abs(absNum - Math.abs(roundNum)) < STEP_NUMBER_EPSILON) {
27
+ if (Math.abs(absNum - Math.abs(roundNum)) < STEP_NUMBER_EPSILON) {
28
28
  return roundNum;
29
29
  }
30
30
 
31
31
  return num;
32
- }
32
+ };
33
33
 
34
34
  export const HEADER = (date: string): string =>
35
35
  `ISO-10303-21;
@@ -114,8 +114,12 @@ export const PCURVE = (
114
114
  export const CYLINDRICAL_SURFACE = (AXIS2_PLACEMENT_3D: number, radius: number, m: MutableStep): number =>
115
115
  mutate(`CYLINDRICAL_SURFACE('',#${AXIS2_PLACEMENT_3D},${stepNumber(radius)})`, m);
116
116
 
117
- export const CONICAL_SURFACE = (AXIS2_PLACEMENT_3D: number, radius: number, semiAngle: number, m: MutableStep): number =>
118
- mutate(`CONICAL_SURFACE('',#${AXIS2_PLACEMENT_3D},${stepNumber(radius)},${stepNumber(semiAngle)})`, m);
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);
119
123
 
120
124
  export const DEFINITIONAL_REPRESENTATION = (LINEorCircle: number, m: MutableStep): number =>
121
125
  mutate(`DEFINITIONAL_REPRESENTATION('',(#${LINEorCircle}),#7)`, m);
@@ -126,16 +130,21 @@ export const SHELL_BASED_SURFACE_MODEL = (OPEN_SHELL: number, m: MutableStep): n
126
130
  export const MANIFOLD_SURFACE_SHAPE_REPRESENTATION = (
127
131
  AXIS2_PLACEMENT_3D: number,
128
132
  CLOSED_SHELL: number,
129
- GEOMETRY_CONTEXT: number,
133
+ GEOMETRY_CONTEXT: number,
130
134
  m: MutableStep
131
- ): number => mutate(`MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#${AXIS2_PLACEMENT_3D},#${CLOSED_SHELL}),#${GEOMETRY_CONTEXT})`, m);
135
+ ): number =>
136
+ mutate(`MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#${AXIS2_PLACEMENT_3D},#${CLOSED_SHELL}),#${GEOMETRY_CONTEXT})`, m);
132
137
 
133
138
  export const ADVANCED_BREP_SHAPE_REPRESENTATION = (
134
139
  AXIS2_PLACEMENT_3D: number,
135
140
  MANIFOLD_SOLID_BREP: number,
136
141
  GEOMETRY_CONTEXT: number,
137
142
  m: MutableStep
138
- ): number => mutate(`ADVANCED_BREP_SHAPE_REPRESENTATION('',(#${AXIS2_PLACEMENT_3D},#${MANIFOLD_SOLID_BREP}),#${GEOMETRY_CONTEXT})`, m);
143
+ ): number =>
144
+ mutate(
145
+ `ADVANCED_BREP_SHAPE_REPRESENTATION('',(#${AXIS2_PLACEMENT_3D},#${MANIFOLD_SOLID_BREP}),#${GEOMETRY_CONTEXT})`,
146
+ m
147
+ );
139
148
 
140
149
  export const CLOSED_SHELL = (ADVANCED_FACE: ReadonlyArray<number>, m: MutableStep): number =>
141
150
  mutate(`CLOSED_SHELL('',(${ADVANCED_FACE.map((af) => `#${af}`).join(",")}))`, m);
@@ -153,7 +162,11 @@ export const AXIS2_PLACEMENT_3D = (
153
162
  m: MutableStep
154
163
  ): number => mutate(`AXIS2_PLACEMENT_3D('',#${CARTESIAN_POINT},#${DIRECTION_NORMAL},#${DIRECTION_PLANE_DIRECITON})`, m);
155
164
 
156
- export const MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION = (STYLED_ITEM: number, GEOMETRY_CONTEXT: number, m: MutableStep): number =>
165
+ export const MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION = (
166
+ STYLED_ITEM: number,
167
+ GEOMETRY_CONTEXT: number,
168
+ m: MutableStep
169
+ ): number =>
157
170
  mutate(`MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#${STYLED_ITEM}),#${GEOMETRY_CONTEXT})`, m);
158
171
 
159
172
  export const STYLED_ITEM = (
@@ -231,51 +244,37 @@ export const UNCERTAINTY_MEASURE_WITH_UNIT = (LENGTH_UNIT: number, m: MutableSte
231
244
  );
232
245
 
233
246
  export const APPLICATION_PROTOCOL_DEFINITION = (APPLICATION_CONTEXT: number, m: MutableStep): number =>
234
- mutate(`APPLICATION_PROTOCOL_DEFINITION('international standard','automotive_design',2000,#${APPLICATION_CONTEXT})`, m);
247
+ mutate(
248
+ `APPLICATION_PROTOCOL_DEFINITION('international standard','automotive_design',2000,#${APPLICATION_CONTEXT})`,
249
+ m
250
+ );
235
251
 
236
252
  export const APPLICATION_CONTEXT = (m: MutableStep): number =>
237
253
  mutate(`APPLICATION_CONTEXT('core data for automotive mechanical design processes')`, m);
238
254
 
239
-
240
- export const SHAPE_DEFINITION_REPRESENTATION = (productDefinitionShape: number, manifoldSurfaceShapeRepr: number, m: MutableStep): number =>
241
- mutate(
242
- `SHAPE_DEFINITION_REPRESENTATION(#${productDefinitionShape},#${manifoldSurfaceShapeRepr})`,
243
- m
244
- );
255
+ export const SHAPE_DEFINITION_REPRESENTATION = (
256
+ productDefinitionShape: number,
257
+ manifoldSurfaceShapeRepr: number,
258
+ m: MutableStep
259
+ ): number => mutate(`SHAPE_DEFINITION_REPRESENTATION(#${productDefinitionShape},#${manifoldSurfaceShapeRepr})`, m);
245
260
 
246
261
  export const PRODUCT_DEFINITION_SHAPE = (productDefinition: number, m: MutableStep): number =>
247
- mutate(
248
- `PRODUCT_DEFINITION_SHAPE('','',#${productDefinition})`,
249
- m
250
- )
262
+ mutate(`PRODUCT_DEFINITION_SHAPE('','',#${productDefinition})`, m);
251
263
 
252
- export const PRODUCT_DEFINITION = (productDefinitionFormation: number, productDefinitionContext: number, m: MutableStep): number =>
253
- mutate(
254
- `PRODUCT_DEFINITION('design',#${productDefinitionFormation},#${productDefinitionContext})`,
255
- m
256
- )
264
+ export const PRODUCT_DEFINITION = (
265
+ productDefinitionFormation: number,
266
+ productDefinitionContext: number,
267
+ m: MutableStep
268
+ ): number => mutate(`PRODUCT_DEFINITION('design',#${productDefinitionFormation},#${productDefinitionContext})`, m);
257
269
 
258
270
  export const PRODUCT_DEFINITION_FORMATION = (product: number, m: MutableStep): number =>
259
- mutate(
260
- `PRODUCT_DEFINITION_FORMATION('','',#${product})`,
261
- m
262
- )
271
+ mutate(`PRODUCT_DEFINITION_FORMATION('','',#${product})`, m);
263
272
 
264
273
  export const PRODUCT = (productContext: number, name: string, m: MutableStep): number =>
265
- mutate(
266
- `PRODUCT('${name}','${name}','',(#${productContext}))`,
267
- m
268
- )
274
+ mutate(`PRODUCT('${name}','${name}','',(#${productContext}))`, m);
269
275
 
270
276
  export const PRODUCT_CONTEXT = (applicationContext: number, m: MutableStep): number =>
271
- mutate(
272
- `PRODUCT_CONTEXT('',#${applicationContext},'mechanical')`,
273
- m
274
- )
277
+ mutate(`PRODUCT_CONTEXT('',#${applicationContext},'mechanical')`, m);
275
278
 
276
279
  export const PRODUCT_DEFINITION_CONTEXT = (applicationContext: number, m: MutableStep): number =>
277
- mutate(
278
- `PRODUCT_DEFINITION_CONTEXT('part definition',#${applicationContext},'design')`,
279
- m
280
- )
281
-
280
+ mutate(`PRODUCT_DEFINITION_CONTEXT('part definition',#${applicationContext},'design')`, m);
@@ -1,7 +1,5 @@
1
+ import type { Box, Material, Vec3 } from "../../../abstract-3d.js";
1
2
  import {
2
- Box,
3
- Material,
4
- Vec3,
5
3
  vec3Scale,
6
4
  vec3TransRot,
7
5
  vec3RotCombine,
@@ -11,14 +9,13 @@ import {
11
9
  vec3Sub,
12
10
  vec3Add,
13
11
  vec3Rot,
14
- vec3Length,
15
12
  } from "../../../abstract-3d.js";
16
13
  import { parseRgb } from "../../../utils.js";
14
+ import type { MutableStep } from "../step-encoding.js";
17
15
  import {
18
16
  ADVANCED_BREP_SHAPE_REPRESENTATION,
19
17
  ADVANCED_FACE,
20
18
  APPLICATION_CONTEXT,
21
- APPLICATION_PROTOCOL_DEFINITION,
22
19
  AXIS2_PLACEMENT_3D,
23
20
  CARTESIAN_POINT,
24
21
  CLOSED_SHELL,
@@ -34,7 +31,6 @@ import {
34
31
  LINE,
35
32
  MANIFOLD_SOLID_BREP,
36
33
  MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION,
37
- MutableStep,
38
34
  ORIENTED_EDGE,
39
35
  PLANE,
40
36
  PRESENTATION_STYLE_ASSIGNMENT,
@@ -45,7 +41,6 @@ import {
45
41
  PRODUCT_DEFINITION_FORMATION,
46
42
  PRODUCT_DEFINITION_SHAPE,
47
43
  SHAPE_DEFINITION_REPRESENTATION,
48
- STEP_NUMBER_EPSILON,
49
44
  STYLED_ITEM,
50
45
  SURFACE_SIDE_STYLE,
51
46
  SURFACE_STYLE_FILL_AREA,
@@ -62,7 +57,7 @@ export function stepBox(b: Box, mat: Material, parentPos: Vec3, parentRot: Vec3,
62
57
  const color = parseRgb(mat.normal);
63
58
  const rotate = (v: Vec3): Vec3 => vec3Rot(v, vec3Zero, rotation);
64
59
 
65
- if(size.x === 0.0 || size.y === 0.0 || size.z === 0.0) {
60
+ if (size.x === 0.0 || size.y === 0.0 || size.z === 0.0) {
66
61
  return;
67
62
  }
68
63
 
@@ -1,18 +1,7 @@
1
- import {
2
- Material,
3
- Vec3,
4
- vec3,
5
- Cone,
6
- Cylinder,
7
- } from "../../../abstract-3d.js";
8
- import {
9
- MutableStep,
10
- } from "../step-encoding.js";
11
- import { stepBox } from "./step-box.js";
1
+ import type { Material, Vec3, Cone, Cylinder } from "../../../abstract-3d.js";
2
+ import type { MutableStep } from "../step-encoding.js";
12
3
  import { stepCylinder } from "./step-cylinder.js";
13
4
 
14
- const PLANE_THICKNESS = 1e-4;
15
-
16
5
  export function stepCone(c: Cone, mat: Material, parentPos: Vec3, parentRot: Vec3, m: MutableStep): void {
17
6
  //convert it into a box
18
7
  const cylinder: Cylinder = {
@@ -23,4 +12,4 @@ export function stepCone(c: Cone, mat: Material, parentPos: Vec3, parentRot: Vec
23
12
  radius: c.radius,
24
13
  };
25
14
  stepCylinder(cylinder, mat, parentPos, parentRot, m, 0.0);
26
- }
15
+ }