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.
- package/CHANGELOG.md +4 -0
- package/lib/abstract-3d.d.ts +1 -1
- package/lib/abstract-3d.d.ts.map +1 -1
- package/lib/abstract-3d.js +20 -12
- package/lib/abstract-3d.js.map +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-3dface.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-dimension.d.ts +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-dimension.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-dimension.js +3 -3
- package/lib/renderers/dxf/dxf-encoding/dxf-dimension.js.map +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-footer.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-header.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-header.js.map +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-mtext.js.map +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-solid.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-triangle.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-image.js.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-polygon.js.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-shape.js.map +1 -1
- package/lib/renderers/dxf/dxf.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf.js +9 -5
- package/lib/renderers/dxf/dxf.js.map +1 -1
- package/lib/renderers/react/react-camera.d.ts +2 -2
- package/lib/renderers/react/react-camera.d.ts.map +1 -1
- package/lib/renderers/react/react-camera.js +3 -5
- package/lib/renderers/react/react-camera.js.map +1 -1
- package/lib/renderers/react/react-dimension.d.ts +2 -2
- package/lib/renderers/react/react-dimension.d.ts.map +1 -1
- package/lib/renderers/react/react-dimension.js +3 -3
- package/lib/renderers/react/react-dimension.js.map +1 -1
- package/lib/renderers/react/react-group.d.ts +4 -4
- package/lib/renderers/react/react-group.d.ts.map +1 -1
- package/lib/renderers/react/react-group.js.map +1 -1
- package/lib/renderers/react/react-hotspot.d.ts +2 -2
- package/lib/renderers/react/react-hotspot.d.ts.map +1 -1
- package/lib/renderers/react/react-hotspot.js +1 -1
- package/lib/renderers/react/react-hotspot.js.map +1 -1
- package/lib/renderers/react/react-image-material.d.ts +2 -2
- package/lib/renderers/react/react-image-material.d.ts.map +1 -1
- package/lib/renderers/react/react-image-material.js +1 -0
- package/lib/renderers/react/react-image-material.js.map +1 -1
- package/lib/renderers/react/react-material.d.ts +1 -1
- package/lib/renderers/react/react-material.d.ts.map +1 -1
- package/lib/renderers/react/react-material.js +1 -0
- package/lib/renderers/react/react-material.js.map +1 -1
- package/lib/renderers/react/react-mesh.d.ts +1 -1
- package/lib/renderers/react/react-mesh.d.ts.map +1 -1
- package/lib/renderers/react/react-mesh.js +4 -12
- package/lib/renderers/react/react-mesh.js.map +1 -1
- package/lib/renderers/react/react-scene.d.ts +5 -5
- package/lib/renderers/react/react-scene.d.ts.map +1 -1
- package/lib/renderers/react/react-scene.js +1 -0
- package/lib/renderers/react/react-scene.js.map +1 -1
- package/lib/renderers/react/react-types.d.ts +1 -1
- package/lib/renderers/react/react-types.d.ts.map +1 -1
- package/lib/renderers/react/react.d.ts +5 -5
- package/lib/renderers/react/react.d.ts.map +1 -1
- package/lib/renderers/react/react.js +1 -1
- package/lib/renderers/react/react.js.map +1 -1
- package/lib/renderers/step/step-encoding.d.ts +1 -1
- package/lib/renderers/step/step-encoding.d.ts.map +1 -1
- package/lib/renderers/step/step-encoding.js.map +1 -1
- package/lib/renderers/step/step-geometries/step-box.d.ts +2 -2
- package/lib/renderers/step/step-geometries/step-box.d.ts.map +1 -1
- package/lib/renderers/step/step-geometries/step-box.js.map +1 -1
- package/lib/renderers/step/step-geometries/step-cone.d.ts +2 -2
- package/lib/renderers/step/step-geometries/step-cone.d.ts.map +1 -1
- package/lib/renderers/step/step-geometries/step-cone.js +0 -1
- package/lib/renderers/step/step-geometries/step-cone.js.map +1 -1
- package/lib/renderers/step/step-geometries/step-cylinder.d.ts +2 -2
- package/lib/renderers/step/step-geometries/step-cylinder.d.ts.map +1 -1
- package/lib/renderers/step/step-geometries/step-cylinder.js +8 -23
- package/lib/renderers/step/step-geometries/step-cylinder.js.map +1 -1
- package/lib/renderers/step/step-geometries/step-plane.d.ts +2 -2
- package/lib/renderers/step/step-geometries/step-plane.d.ts.map +1 -1
- package/lib/renderers/step/step-geometries/step-plane.js +1 -1
- package/lib/renderers/step/step-geometries/step-plane.js.map +1 -1
- package/lib/renderers/step/step.d.ts +1 -1
- package/lib/renderers/step/step.d.ts.map +1 -1
- package/lib/renderers/step/step.js +1 -1
- package/lib/renderers/step/step.js.map +1 -1
- package/lib/renderers/stl/stl-encoding.d.ts +1 -1
- package/lib/renderers/stl/stl-encoding.d.ts.map +1 -1
- package/lib/renderers/stl/stl-encoding.js.map +1 -1
- package/lib/renderers/stl/stl-geometries/stl-box.d.ts +1 -1
- package/lib/renderers/stl/stl-geometries/stl-box.d.ts.map +1 -1
- package/lib/renderers/stl/stl-geometries/stl-box.js.map +1 -1
- package/lib/renderers/stl/stl-geometries/stl-cone.d.ts +1 -1
- package/lib/renderers/stl/stl-geometries/stl-cone.d.ts.map +1 -1
- package/lib/renderers/stl/stl-geometries/stl-cone.js.map +1 -1
- package/lib/renderers/stl/stl-geometries/stl-cylinder.d.ts +1 -1
- package/lib/renderers/stl/stl-geometries/stl-cylinder.d.ts.map +1 -1
- package/lib/renderers/stl/stl-geometries/stl-cylinder.js +1 -1
- package/lib/renderers/stl/stl-geometries/stl-cylinder.js.map +1 -1
- package/lib/renderers/stl/stl-geometries/stl-plane.d.ts +1 -1
- package/lib/renderers/stl/stl-geometries/stl-plane.d.ts.map +1 -1
- package/lib/renderers/stl/stl-geometries/stl-plane.js +1 -1
- package/lib/renderers/stl/stl-geometries/stl-plane.js.map +1 -1
- package/lib/renderers/stl/stl-geometries/stl-polygon.d.ts +1 -1
- package/lib/renderers/stl/stl-geometries/stl-polygon.d.ts.map +1 -1
- package/lib/renderers/stl/stl-geometries/stl-polygon.js.map +1 -1
- package/lib/renderers/stl/stl-geometries/stl-shape.d.ts +1 -1
- package/lib/renderers/stl/stl-geometries/stl-shape.d.ts.map +1 -1
- package/lib/renderers/stl/stl-geometries/stl-shape.js.map +1 -1
- package/lib/renderers/stl/stl.d.ts +1 -1
- package/lib/renderers/stl/stl.d.ts.map +1 -1
- package/lib/renderers/stl/stl.js.map +1 -1
- package/lib/renderers/svg/index.js +1 -0
- package/lib/renderers/svg/index.js.map +1 -1
- package/lib/renderers/svg/svg-encoding.d.ts +3 -3
- package/lib/renderers/svg/svg-encoding.d.ts.map +1 -1
- package/lib/renderers/svg/svg-encoding.js +6 -15
- package/lib/renderers/svg/svg-encoding.js.map +1 -1
- package/lib/renderers/svg/svg-geometries/shared.d.ts +1 -1
- package/lib/renderers/svg/svg-geometries/shared.d.ts.map +1 -1
- package/lib/renderers/svg/svg-geometries/shared.js.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-box.d.ts +2 -2
- package/lib/renderers/svg/svg-geometries/svg-box.d.ts.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-box.js +1 -1
- package/lib/renderers/svg/svg-geometries/svg-box.js.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-cone.d.ts +2 -2
- package/lib/renderers/svg/svg-geometries/svg-cone.d.ts.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-cone.js +1 -1
- package/lib/renderers/svg/svg-geometries/svg-cone.js.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-cylinder.d.ts +2 -2
- package/lib/renderers/svg/svg-geometries/svg-cylinder.d.ts.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-cylinder.js +1 -1
- package/lib/renderers/svg/svg-geometries/svg-cylinder.js.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-image.d.ts +2 -2
- package/lib/renderers/svg/svg-geometries/svg-image.d.ts.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-image.js +1 -1
- package/lib/renderers/svg/svg-geometries/svg-image.js.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-line.d.ts +2 -2
- package/lib/renderers/svg/svg-geometries/svg-line.d.ts.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-line.js.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-plane.d.ts +2 -2
- package/lib/renderers/svg/svg-geometries/svg-plane.d.ts.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-plane.js +1 -1
- package/lib/renderers/svg/svg-geometries/svg-plane.js.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-polygon.d.ts +2 -2
- package/lib/renderers/svg/svg-geometries/svg-polygon.d.ts.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-polygon.js +1 -1
- package/lib/renderers/svg/svg-geometries/svg-polygon.js.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-shape.d.ts +2 -2
- package/lib/renderers/svg/svg-geometries/svg-shape.d.ts.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-shape.js +1 -1
- package/lib/renderers/svg/svg-geometries/svg-shape.js.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-text.d.ts +2 -2
- package/lib/renderers/svg/svg-geometries/svg-text.d.ts.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-text.js.map +1 -1
- package/lib/renderers/svg/svg.d.ts +3 -3
- package/lib/renderers/svg/svg.d.ts.map +1 -1
- package/lib/renderers/svg/svg.js.map +1 -1
- package/lib/utils.d.ts +1 -1
- package/lib/utils.d.ts.map +1 -1
- package/lib/utils.js +0 -1
- package/lib/utils.js.map +1 -1
- package/package.json +3 -3
- package/src/abstract-3d.ts +91 -91
- package/src/custom_typings/react-three-fiber.d.ts +1 -1
- package/src/renderers/dxf/dxf-encoding/dxf-dimension.ts +57 -13
- package/src/renderers/dxf/dxf.ts +67 -16
- package/src/renderers/react/react-camera.tsx +3 -4
- package/src/renderers/react/react-dimension.tsx +5 -5
- package/src/renderers/react/react-group.tsx +6 -4
- package/src/renderers/react/react-hotspot.tsx +3 -2
- package/src/renderers/react/react-image-material.tsx +3 -2
- package/src/renderers/react/react-material.tsx +1 -1
- package/src/renderers/react/react-mesh.tsx +28 -39
- package/src/renderers/react/react-scene.tsx +6 -5
- package/src/renderers/react/react-types.ts +1 -1
- package/src/renderers/react/react.tsx +7 -6
- package/src/renderers/step/step-encoding.ts +43 -44
- package/src/renderers/step/step-geometries/step-box.ts +3 -8
- package/src/renderers/step/step-geometries/step-cone.ts +3 -14
- package/src/renderers/step/step-geometries/step-cylinder.ts +49 -251
- package/src/renderers/step/step-geometries/step-plane.ts +4 -11
- package/src/renderers/step/step.ts +3 -19
- package/src/renderers/stl/stl-encoding.ts +2 -1
- package/src/renderers/stl/stl-geometries/stl-box.ts +2 -1
- package/src/renderers/stl/stl-geometries/stl-cone.ts +2 -1
- package/src/renderers/stl/stl-geometries/stl-cylinder.ts +3 -2
- package/src/renderers/stl/stl-geometries/stl-plane.ts +2 -10
- package/src/renderers/stl/stl-geometries/stl-polygon.ts +2 -1
- package/src/renderers/stl/stl-geometries/stl-shape.ts +2 -1
- package/src/renderers/stl/stl.ts +2 -1
- package/src/renderers/svg/svg-encoding.ts +7 -31
- package/src/renderers/svg/svg-geometries/shared.ts +2 -1
- package/src/renderers/svg/svg-geometries/svg-box.ts +4 -13
- package/src/renderers/svg/svg-geometries/svg-cone.ts +4 -13
- package/src/renderers/svg/svg-geometries/svg-cylinder.ts +4 -13
- package/src/renderers/svg/svg-geometries/svg-image.ts +6 -12
- package/src/renderers/svg/svg-geometries/svg-line.ts +4 -2
- package/src/renderers/svg/svg-geometries/svg-plane.ts +4 -14
- package/src/renderers/svg/svg-geometries/svg-polygon.ts +4 -11
- package/src/renderers/svg/svg-geometries/svg-shape.ts +4 -12
- package/src/renderers/svg/svg-geometries/svg-text.ts +6 -8
- package/src/renderers/svg/svg.ts +13 -17
- package/src/utils.ts +22 -27
package/src/renderers/dxf/dxf.ts
CHANGED
|
@@ -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 {
|
|
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
|
-
): {
|
|
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(
|
|
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(
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
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>(
|
|
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(
|
|
222
|
-
|
|
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
|
|
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 {
|
|
4
|
-
import {
|
|
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
|
|
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
|
|
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
|
|
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 {
|
|
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 {
|
|
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
|
|
306
|
-
<
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
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
|
|
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,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,
|
|
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
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
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 = (
|
|
118
|
-
|
|
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 =>
|
|
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 =>
|
|
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 = (
|
|
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(
|
|
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
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
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 = (
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
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
|
-
|
|
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
|
+
}
|