abstract-3d 2.7.33 → 2.8.1
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/lib/abstract-3d.d.ts.map +1 -1
- package/lib/abstract-3d.js +45 -28
- package/lib/abstract-3d.js.map +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-build.d.ts +4 -0
- package/lib/renderers/dxf/dxf-encoding/dxf-build.d.ts.map +1 -0
- package/lib/renderers/dxf/dxf-encoding/dxf-build.js +8 -0
- package/lib/renderers/dxf/dxf-encoding/dxf-build.js.map +1 -0
- package/lib/renderers/dxf/dxf-encoding/dxf-color.js +1 -0
- package/lib/renderers/dxf/dxf-encoding/dxf-color.js.map +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-common.d.ts +1 -3
- package/lib/renderers/dxf/dxf-encoding/dxf-common.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-common.js +0 -12
- package/lib/renderers/dxf/dxf-encoding/dxf-common.js.map +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-dimension.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-dimension.js +1 -1
- 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-footer.js +0 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-footer.js.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 +0 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-header.js.map +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-line.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-line.js.map +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-polyline.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-polyline.js.map +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-solid.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-solid.js.map +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-triangle.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-triangle.js.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-box.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-box.js +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-box.js.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-cone.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-cone.js +2 -3
- package/lib/renderers/dxf/dxf-geometries/dxf-cone.js.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-cylinder.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-cylinder.js +2 -3
- package/lib/renderers/dxf/dxf-geometries/dxf-cylinder.js.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-dimension.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-dimension.js +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-dimension.js.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-image.d.ts +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-image.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-image.js +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-image.js.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-plane.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-plane.js +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-plane.js.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-polygon.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-polygon.js +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-polygon.js.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-shape.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-shape.js +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-shape.js.map +1 -1
- package/lib/renderers/dxf/dxf.d.ts +1 -1
- package/lib/renderers/dxf/dxf.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf.js +6 -5
- package/lib/renderers/dxf/dxf.js.map +1 -1
- package/lib/renderers/react/react-camera.d.ts +1 -1
- package/lib/renderers/react/react-camera.d.ts.map +1 -1
- package/lib/renderers/react/react-camera.js +12 -17
- package/lib/renderers/react/react-camera.js.map +1 -1
- package/lib/renderers/react/react-dimension.js +1 -1
- package/lib/renderers/react/react-dimension.js.map +1 -1
- package/lib/renderers/react/react-group.d.ts +1 -1
- package/lib/renderers/react/react-group.d.ts.map +1 -1
- package/lib/renderers/react/react-group.js +4 -3
- package/lib/renderers/react/react-group.js.map +1 -1
- package/lib/renderers/react/react-hotspot.d.ts +1 -1
- package/lib/renderers/react/react-hotspot.d.ts.map +1 -1
- package/lib/renderers/react/react-hotspot.js +2 -2
- package/lib/renderers/react/react-hotspot.js.map +1 -1
- package/lib/renderers/react/react-image-material.d.ts.map +1 -1
- package/lib/renderers/react/react-image-material.js +1 -1
- package/lib/renderers/react/react-image-material.js.map +1 -1
- package/lib/renderers/react/react-material.d.ts.map +1 -1
- package/lib/renderers/react/react-material.js +3 -15
- 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 +9 -8
- package/lib/renderers/react/react-mesh.js.map +1 -1
- package/lib/renderers/react/react-scene.d.ts +1 -1
- package/lib/renderers/react/react-scene.d.ts.map +1 -1
- package/lib/renderers/react/react-scene.js +3 -11
- package/lib/renderers/react/react-scene.js.map +1 -1
- package/lib/renderers/react/react.d.ts +2 -2
- package/lib/renderers/react/react.d.ts.map +1 -1
- package/lib/renderers/react/react.js +3 -3
- package/lib/renderers/react/react.js.map +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.map +1 -1
- package/lib/renderers/step/step-geometries/step-box.js +1 -1
- package/lib/renderers/step/step-geometries/step-box.js.map +1 -1
- package/lib/renderers/step/step-geometries/step-cylinder.d.ts.map +1 -1
- package/lib/renderers/step/step-geometries/step-cylinder.js.map +1 -1
- package/lib/renderers/stl/stl-geometries/stl-cone.d.ts.map +1 -1
- package/lib/renderers/stl/stl-geometries/stl-cone.js +1 -2
- package/lib/renderers/stl/stl-geometries/stl-cone.js.map +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 -2
- package/lib/renderers/stl/stl-geometries/stl-cylinder.js.map +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 -6
- package/lib/renderers/stl/stl-geometries/stl-plane.js.map +1 -1
- package/lib/renderers/stl/stl.d.ts.map +1 -1
- package/lib/renderers/stl/stl.js +3 -4
- package/lib/renderers/stl/stl.js.map +1 -1
- package/lib/renderers/svg/svg-encoding.d.ts.map +1 -1
- package/lib/renderers/svg/svg-encoding.js +3 -3
- package/lib/renderers/svg/svg-encoding.js.map +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.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-box.js +2 -2
- package/lib/renderers/svg/svg-geometries/svg-box.js.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-cone.d.ts.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-cone.js +3 -8
- package/lib/renderers/svg/svg-geometries/svg-cone.js.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-cylinder.d.ts.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-cylinder.js +3 -8
- package/lib/renderers/svg/svg-geometries/svg-cylinder.js.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-image.d.ts.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-image.js +2 -2
- package/lib/renderers/svg/svg-geometries/svg-image.js.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-line.d.ts.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-line.js +3 -5
- package/lib/renderers/svg/svg-geometries/svg-line.js.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-plane.d.ts.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-plane.js +3 -5
- package/lib/renderers/svg/svg-geometries/svg-plane.js.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-polygon.d.ts.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-polygon.js +3 -5
- package/lib/renderers/svg/svg-geometries/svg-polygon.js.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-shape.d.ts.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-shape.js +2 -2
- package/lib/renderers/svg/svg-geometries/svg-shape.js.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-text.d.ts.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-text.js +1 -1
- package/lib/renderers/svg/svg-geometries/svg-text.js.map +1 -1
- package/lib/renderers/svg/svg.d.ts +1 -1
- package/lib/renderers/svg/svg.d.ts.map +1 -1
- package/lib/renderers/svg/svg.js +5 -5
- package/lib/renderers/svg/svg.js.map +1 -1
- package/lib/utils.d.ts +3 -5
- package/lib/utils.d.ts.map +1 -1
- package/lib/utils.js +12 -20
- package/lib/utils.js.map +1 -1
- package/package.json +17 -17
- package/src/abstract-3d.ts +68 -149
- package/src/custom_typings/react-three-fiber.d.ts +1 -1
- package/src/renderers/dxf/dxf-encoding/dxf-build.ts +10 -0
- package/src/renderers/dxf/dxf-encoding/dxf-color.ts +1 -0
- package/src/renderers/dxf/dxf-encoding/dxf-common.ts +1 -23
- package/src/renderers/dxf/dxf-encoding/dxf-dimension.ts +3 -26
- package/src/renderers/dxf/dxf-encoding/dxf-footer.ts +0 -1
- package/src/renderers/dxf/dxf-encoding/dxf-header.ts +0 -1
- package/src/renderers/dxf/dxf-encoding/dxf-line.ts +1 -7
- package/src/renderers/dxf/dxf-encoding/dxf-polyline.ts +1 -7
- package/src/renderers/dxf/dxf-encoding/dxf-solid.ts +1 -9
- package/src/renderers/dxf/dxf-encoding/dxf-triangle.ts +4 -16
- package/src/renderers/dxf/dxf-geometries/dxf-box.ts +2 -11
- package/src/renderers/dxf/dxf-geometries/dxf-cone.ts +3 -19
- package/src/renderers/dxf/dxf-geometries/dxf-cylinder.ts +4 -22
- package/src/renderers/dxf/dxf-geometries/dxf-dimension.ts +1 -8
- package/src/renderers/dxf/dxf-geometries/dxf-image.ts +3 -13
- package/src/renderers/dxf/dxf-geometries/dxf-plane.ts +3 -19
- package/src/renderers/dxf/dxf-geometries/dxf-polygon.ts +2 -9
- package/src/renderers/dxf/dxf-geometries/dxf-shape.ts +2 -10
- package/src/renderers/dxf/dxf.ts +10 -25
- package/src/renderers/react/react-camera.tsx +26 -25
- package/src/renderers/react/react-dimension.tsx +1 -7
- package/src/renderers/react/react-group.tsx +6 -16
- package/src/renderers/react/react-hotspot.tsx +4 -10
- package/src/renderers/react/react-image-material.tsx +1 -1
- package/src/renderers/react/react-material.tsx +4 -21
- package/src/renderers/react/react-mesh.tsx +14 -68
- package/src/renderers/react/react-scene.tsx +7 -21
- package/src/renderers/react/react.tsx +3 -3
- package/src/renderers/step/step-encoding.ts +36 -100
- package/src/renderers/step/step-geometries/step-box.ts +2 -17
- package/src/renderers/step/step-geometries/step-cylinder.ts +6 -36
- package/src/renderers/stl/stl-geometries/stl-cone.ts +1 -2
- package/src/renderers/stl/stl-geometries/stl-cylinder.ts +1 -2
- package/src/renderers/stl/stl-geometries/stl-plane.ts +1 -6
- package/src/renderers/stl/stl.ts +3 -7
- package/src/renderers/svg/svg-encoding.ts +12 -44
- package/src/renderers/svg/svg-geometries/shared.ts +1 -4
- package/src/renderers/svg/svg-geometries/svg-box.ts +2 -2
- package/src/renderers/svg/svg-geometries/svg-cone.ts +5 -14
- package/src/renderers/svg/svg-geometries/svg-cylinder.ts +5 -17
- package/src/renderers/svg/svg-geometries/svg-image.ts +5 -15
- package/src/renderers/svg/svg-geometries/svg-line.ts +3 -8
- package/src/renderers/svg/svg-geometries/svg-plane.ts +3 -8
- package/src/renderers/svg/svg-geometries/svg-polygon.ts +3 -8
- package/src/renderers/svg/svg-geometries/svg-shape.ts +2 -2
- package/src/renderers/svg/svg-geometries/svg-text.ts +1 -1
- package/src/renderers/svg/svg.ts +8 -18
- package/src/utils.ts +13 -18
- 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
|
-
|
|
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);
|
|
@@ -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
|
|
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
|
-
|
|
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 {
|
|
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 = {
|
|
@@ -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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
}
|
package/src/renderers/stl/stl.ts
CHANGED
|
@@ -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);
|