abstract-3d 2.7.29 → 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-lwpolyline.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-lwpolyline.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.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-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-encoding/dxf-lwpolyline.ts +1 -1
- package/src/renderers/dxf/dxf-geometries/dxf-image.ts +9 -9
- 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/.DS_Store +0 -0
- package/src/renderers/.DS_Store +0 -0
|
@@ -1,6 +1,13 @@
|
|
|
1
|
-
import { dimensionMeshifyAlignedDimension
|
|
1
|
+
import { dimensionMeshifyAlignedDimension } from "../../../abstract-3d.js";
|
|
2
|
+
import type { DimensionAligned, View, Material, Vec3 } from "../../../abstract-3d.js";
|
|
2
3
|
import { type DxfColor, dxfColor } from "./dxf-color.js";
|
|
3
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
DXF_BLOCK_RECORD_TABLE_HANDLE,
|
|
6
|
+
DXF_MODEL_SPACE_HANDLE,
|
|
7
|
+
dxfHandleNext,
|
|
8
|
+
dxfRound,
|
|
9
|
+
type Handle,
|
|
10
|
+
} from "./dxf-common.js";
|
|
4
11
|
import { dxfEncLine } from "./dxf-line.js";
|
|
5
12
|
import { DxfMTextAttachment, dxfEncMText, encodeDxfFormattedText } from "./dxf-mtext.js";
|
|
6
13
|
import { dxfEncSolidTriangle } from "./dxf-triangle.js";
|
|
@@ -26,8 +33,20 @@ export function dxfEncDimension(
|
|
|
26
33
|
const blockName = `*D${blockRecordHandle}`;
|
|
27
34
|
return {
|
|
28
35
|
entity: dxfEncodeDimensionEntity(blockName, measurementStart, measurementEnd, linePosition, text, col, handleRef),
|
|
29
|
-
block: dxfEncodeDimensionBlock(
|
|
30
|
-
|
|
36
|
+
block: dxfEncodeDimensionBlock(
|
|
37
|
+
blockName,
|
|
38
|
+
blockRecordHandle,
|
|
39
|
+
measurementStart,
|
|
40
|
+
measurementEnd,
|
|
41
|
+
linePosition,
|
|
42
|
+
text,
|
|
43
|
+
col,
|
|
44
|
+
sceneRotation,
|
|
45
|
+
viewRotation,
|
|
46
|
+
views,
|
|
47
|
+
handleRef
|
|
48
|
+
),
|
|
49
|
+
blockRecord: dxfEncodeDimensionBlockRecord(blockName, blockRecordHandle),
|
|
31
50
|
};
|
|
32
51
|
}
|
|
33
52
|
|
|
@@ -88,10 +107,7 @@ ${dxfRound(measurementEnd.z)}
|
|
|
88
107
|
`;
|
|
89
108
|
}
|
|
90
109
|
|
|
91
|
-
function dxfEncodeDimensionBlockRecord(
|
|
92
|
-
blockName: string,
|
|
93
|
-
blockRecordHandle: string,
|
|
94
|
-
): string {
|
|
110
|
+
function dxfEncodeDimensionBlockRecord(blockName: string, blockRecordHandle: string): string {
|
|
95
111
|
return `0
|
|
96
112
|
BLOCK_RECORD
|
|
97
113
|
5
|
|
@@ -146,7 +162,18 @@ ${blockName}
|
|
|
146
162
|
${blockName}
|
|
147
163
|
1
|
|
148
164
|
|
|
149
|
-
${dxfEncodeDimensionGeometry(
|
|
165
|
+
${dxfEncodeDimensionGeometry(
|
|
166
|
+
blockRecordHandle,
|
|
167
|
+
measurementStart,
|
|
168
|
+
measurementEnd,
|
|
169
|
+
linePosition,
|
|
170
|
+
text,
|
|
171
|
+
col,
|
|
172
|
+
sceneRotation,
|
|
173
|
+
viewRotation,
|
|
174
|
+
views,
|
|
175
|
+
handleRef
|
|
176
|
+
)}0
|
|
150
177
|
ENDBLK
|
|
151
178
|
5
|
|
152
179
|
${dxfHandleNext(handleRef)}
|
|
@@ -180,8 +207,25 @@ function dxfEncodeDimensionGeometry(
|
|
|
180
207
|
const onCreateLine = (start: Vec3, end: Vec3, _norm: Vec3, _thickness: number, _mat: Material): void => {
|
|
181
208
|
entities += dxfEncLine(start, end, col, handleRef, blockRecordHandle);
|
|
182
209
|
};
|
|
183
|
-
const onCreateText = (
|
|
184
|
-
|
|
210
|
+
const onCreateText = (
|
|
211
|
+
pos: Vec3,
|
|
212
|
+
measurement: string,
|
|
213
|
+
fontSize: number,
|
|
214
|
+
_mat: Material,
|
|
215
|
+
_rot: Vec3,
|
|
216
|
+
dir: Vec3,
|
|
217
|
+
norm: Vec3
|
|
218
|
+
): void => {
|
|
219
|
+
entities += dxfEncMText(
|
|
220
|
+
pos,
|
|
221
|
+
measurement,
|
|
222
|
+
dir,
|
|
223
|
+
norm,
|
|
224
|
+
fontSize,
|
|
225
|
+
handleRef,
|
|
226
|
+
DxfMTextAttachment.MiddleCenter,
|
|
227
|
+
blockRecordHandle
|
|
228
|
+
);
|
|
185
229
|
};
|
|
186
230
|
const onCreatePolygon = (p1: Vec3, p2: Vec3, p3: Vec3, _mat: Material): void => {
|
|
187
231
|
entities += dxfEncSolidTriangle(p1, p2, p3, col, handleRef, blockRecordHandle);
|
|
@@ -191,8 +235,8 @@ function dxfEncodeDimensionGeometry(
|
|
|
191
235
|
measurementStart,
|
|
192
236
|
measurementEnd,
|
|
193
237
|
text,
|
|
194
|
-
views
|
|
238
|
+
views,
|
|
195
239
|
};
|
|
196
240
|
dimensionMeshifyAlignedDimension(dimension, sceneRotation, viewRotation, onCreateLine, onCreateText, onCreatePolygon);
|
|
197
241
|
return entities;
|
|
198
|
-
}
|
|
242
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { vec3, vec3Cross, vec3Dot, vec3Length, vec3Normalize, vec3Sub, type Vec3 } from "../../../abstract-3d.js";
|
|
2
2
|
import { type DxfColor, dxfColor } from "./dxf-color.js";
|
|
3
|
-
import { DXF_MODEL_SPACE_HANDLE, dxfHandleNext, dxfOCSXYAxis,
|
|
3
|
+
import { DXF_MODEL_SPACE_HANDLE, dxfHandleNext, dxfOCSXYAxis, type Handle } from "./dxf-common.js";
|
|
4
4
|
|
|
5
5
|
type LwPolylinePlane = {
|
|
6
6
|
readonly pos: Vec3;
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { DEFAULT_CIRCLE_SIDE_COUNT, type Handle } from "../dxf-encoding/dxf-common.js";
|
|
2
|
+
import { dxfEncLine } from "../dxf-encoding/dxf-line.js";
|
|
3
|
+
import { dxfEncLwPolyline } from "../dxf-encoding/dxf-lwpolyline.js";
|
|
4
|
+
import type { AbstractImage, Component } from "abstract-image";
|
|
5
|
+
import type { DxfDynamicColor } from "../dxf-encoding/dxf-color.js";
|
|
2
6
|
import {
|
|
3
7
|
type ImageMesh,
|
|
4
8
|
type Vec3,
|
|
5
9
|
vec2Scale,
|
|
6
|
-
vec3TransRot,
|
|
7
|
-
vec3RotCombine,
|
|
8
|
-
vec3Zero,
|
|
9
10
|
vec3,
|
|
10
|
-
vec3Rot,
|
|
11
11
|
vec3Add,
|
|
12
|
+
vec3Rot,
|
|
13
|
+
vec3RotCombine,
|
|
14
|
+
vec3TransRot,
|
|
15
|
+
vec3Zero,
|
|
12
16
|
} from "../../../abstract-3d.js";
|
|
13
|
-
import { DEFAULT_CIRCLE_SIDE_COUNT, type Handle } from "../dxf-encoding/dxf-common.js";
|
|
14
|
-
import { DxfDynamicColor } from "../dxf-encoding/dxf-color.js";
|
|
15
|
-
import { dxfEncLine } from "../dxf-encoding/dxf-line.js";
|
|
16
|
-
import { dxfEncLwPolyline } from "../dxf-encoding/dxf-lwpolyline.js";
|
|
17
17
|
|
|
18
18
|
export function dxfImage(i: ImageMesh, parentPos: Vec3, parentRot: Vec3, handleRef: Handle): string {
|
|
19
19
|
const half = vec2Scale(i.size, 0.5);
|
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
|