abstract-3d 2.7.30 → 2.7.33
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/README.md +1 -1
- package/lib/abstract-3d.d.ts +2 -2
- package/lib/abstract-3d.d.ts.map +1 -1
- package/lib/abstract-3d.js +21 -13
- 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-color.js +2 -2
- package/lib/renderers/dxf/dxf-encoding/dxf-color.js.map +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-common.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-common.js +9 -4
- package/lib/renderers/dxf/dxf-encoding/dxf-common.js.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-footer.js +2 -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 +2 -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 +1 -3
- package/lib/renderers/dxf/dxf-encoding/dxf-lwpolyline.js.map +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-mtext.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-mtext.js +0 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-mtext.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-triangle.d.ts.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.js +3 -8
- package/lib/renderers/dxf/dxf-geometries/dxf-image.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 +2 -2
- 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.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 +4 -6
- 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 +5 -5
- 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 +5 -13
- 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 +2 -2
- 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 +2 -2
- 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 +2 -2
- 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 +93 -93
- package/src/custom_typings/react-three-fiber.d.ts +1 -1
- package/src/renderers/dxf/dxf-encoding/dxf-3dface.ts +1 -1
- package/src/renderers/dxf/dxf-encoding/dxf-color.ts +26 -26
- package/src/renderers/dxf/dxf-encoding/dxf-common.ts +23 -9
- package/src/renderers/dxf/dxf-encoding/dxf-dimension.ts +57 -13
- package/src/renderers/dxf/dxf-encoding/dxf-footer.ts +3 -2
- package/src/renderers/dxf/dxf-encoding/dxf-header.ts +15 -4
- package/src/renderers/dxf/dxf-encoding/dxf-line.ts +1 -1
- package/src/renderers/dxf/dxf-encoding/dxf-lwpolyline.ts +21 -17
- package/src/renderers/dxf/dxf-encoding/dxf-mtext.ts +12 -3
- package/src/renderers/dxf/dxf-encoding/dxf-polyline.ts +2 -3
- package/src/renderers/dxf/dxf-encoding/dxf-solid.ts +1 -1
- package/src/renderers/dxf/dxf-encoding/dxf-triangle.ts +1 -1
- package/src/renderers/dxf/dxf-geometries/dxf-box.ts +1 -1
- package/src/renderers/dxf/dxf-geometries/dxf-dimension.ts +18 -4
- package/src/renderers/dxf/dxf-geometries/dxf-image.ts +8 -20
- package/src/renderers/dxf/dxf-geometries/dxf-polygon.ts +16 -28
- package/src/renderers/dxf/dxf-geometries/dxf-shape.ts +13 -5
- package/src/renderers/dxf/dxf.ts +67 -16
- package/src/renderers/react/react-camera.tsx +7 -8
- 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 +9 -9
- package/src/renderers/react/react-material.tsx +7 -7
- package/src/renderers/react/react-mesh.tsx +29 -40
- package/src/renderers/react/react-scene.tsx +6 -5
- package/src/renderers/react/react-types.ts +1 -1
- package/src/renderers/react/react.tsx +8 -7
- 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 +5 -14
- package/src/renderers/svg/svg-geometries/svg-cylinder.ts +5 -14
- package/src/renderers/svg/svg-geometries/svg-image.ts +8 -14
- 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 +26 -31
|
@@ -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,7 @@
|
|
|
1
|
+
// oxlint-disable-next-line import/no-cycle -- both sides only call each other from function bodies
|
|
1
2
|
import { DXF_MODEL_SPACE_HANDLE } from "./dxf-common.js";
|
|
2
3
|
|
|
3
|
-
/*
|
|
4
|
+
/* oxlint-disable max-lines */
|
|
4
5
|
export const dxfEncFooter = (blockId: string): string => ` 0
|
|
5
6
|
ENDBLK
|
|
6
7
|
5
|
|
@@ -16648,4 +16649,4 @@ RTVSPost2010PropOp57
|
|
|
16648
16649
|
0
|
|
16649
16650
|
ENDSEC
|
|
16650
16651
|
0
|
|
16651
|
-
EOF`;
|
|
16652
|
+
EOF`;
|
|
@@ -1,11 +1,22 @@
|
|
|
1
|
-
/*
|
|
1
|
+
/* oxlint-disable max-lines */
|
|
2
2
|
import type { Bounds3, Vec3 } from "../../../abstract-3d.js";
|
|
3
|
+
// oxlint-disable-next-line import/no-cycle -- both sides only call each other from function bodies
|
|
3
4
|
import { DXF_BLOCK_RECORD_TABLE_HANDLE, DXF_MODEL_SPACE_HANDLE } from "./dxf-common.js";
|
|
4
5
|
|
|
5
6
|
const DXF_MAKER = "DXF Generated from Divid Abstract 3D";
|
|
6
7
|
const DXF_STANDARD = "AC1015";
|
|
7
8
|
|
|
8
|
-
export const dxfEncHeader = (
|
|
9
|
+
export const dxfEncHeader = (
|
|
10
|
+
bounds: Bounds3,
|
|
11
|
+
center: Vec3,
|
|
12
|
+
blockId: string,
|
|
13
|
+
size: Vec3,
|
|
14
|
+
dimBlocks: string,
|
|
15
|
+
dimBlockRecords: string,
|
|
16
|
+
dimScale: number = 44.0,
|
|
17
|
+
dimArrowSize: number = 1.0,
|
|
18
|
+
dimTextHeight: number = 1.0
|
|
19
|
+
): string =>
|
|
9
20
|
` 999
|
|
10
21
|
${DXF_MAKER}
|
|
11
22
|
0
|
|
@@ -1093,7 +1104,7 @@ AcDbViewportTableRecord
|
|
|
1093
1104
|
12
|
|
1094
1105
|
${-size.x / 2}
|
|
1095
1106
|
22
|
|
1096
|
-
|
|
1107
|
+
0
|
|
1097
1108
|
13
|
|
1098
1109
|
0.0
|
|
1099
1110
|
23
|
|
@@ -1654,4 +1665,4 @@ ${blockId}
|
|
|
1654
1665
|
${blockId}
|
|
1655
1666
|
1
|
|
1656
1667
|
|
|
1657
|
-
`;
|
|
1668
|
+
`;
|
|
@@ -28,18 +28,15 @@ export function dxfEncLwPolyline(
|
|
|
28
28
|
return undefined;
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
if(points.length === 2) {
|
|
31
|
+
if (points.length === 2) {
|
|
32
32
|
const a = points[0];
|
|
33
33
|
const b = points[1];
|
|
34
|
-
if(a === undefined || b === undefined) {
|
|
34
|
+
if (a === undefined || b === undefined) {
|
|
35
35
|
return undefined;
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
const direction = vec3Normalize(vec3Sub(b, a));
|
|
39
|
-
const reference =
|
|
40
|
-
Math.abs(direction.z) < 0.9
|
|
41
|
-
? vec3(0, 0, 1)
|
|
42
|
-
: vec3(0, 1, 0);
|
|
39
|
+
const reference = Math.abs(direction.z) < 0.9 ? vec3(0, 0, 1) : vec3(0, 1, 0);
|
|
43
40
|
const normal = vec3Normalize(vec3Cross(direction, reference));
|
|
44
41
|
|
|
45
42
|
const plane: LwPolylinePlane = {
|
|
@@ -52,13 +49,20 @@ export function dxfEncLwPolyline(
|
|
|
52
49
|
}
|
|
53
50
|
|
|
54
51
|
const plane = findPlane(planePos, points);
|
|
55
|
-
if(!plane || !isCoplanar(points, plane)) {
|
|
52
|
+
if (!plane || !isCoplanar(points, plane)) {
|
|
56
53
|
return undefined;
|
|
57
54
|
}
|
|
58
55
|
return encodeLwPolyline(points, plane, col, closed, handleRef, blockRefHandle);
|
|
59
56
|
}
|
|
60
57
|
|
|
61
|
-
function encodeLwPolyline(
|
|
58
|
+
function encodeLwPolyline(
|
|
59
|
+
points: ReadonlyArray<Vec3>,
|
|
60
|
+
plane: LwPolylinePlane,
|
|
61
|
+
col: DxfColor,
|
|
62
|
+
closed: boolean,
|
|
63
|
+
handleRef: Handle,
|
|
64
|
+
blockRefHandle?: string
|
|
65
|
+
): string {
|
|
62
66
|
let dxf = "";
|
|
63
67
|
const planeElevation = vec3Dot(plane.pos, plane.normal);
|
|
64
68
|
|
|
@@ -73,7 +77,7 @@ function encodeLwPolyline(points: ReadonlyArray<Vec3>, plane: LwPolylinePlane, c
|
|
|
73
77
|
dxf += `70\n${closed ? 1 : 0}\n`;
|
|
74
78
|
dxf += `38\n${planeElevation}\n`;
|
|
75
79
|
|
|
76
|
-
for(const point of points) {
|
|
80
|
+
for (const point of points) {
|
|
77
81
|
dxf += `10\n${vec3Dot(point, plane.xAxis)}\n`;
|
|
78
82
|
dxf += `20\n${vec3Dot(point, plane.yAxis)}\n`;
|
|
79
83
|
}
|
|
@@ -86,29 +90,29 @@ function encodeLwPolyline(points: ReadonlyArray<Vec3>, plane: LwPolylinePlane, c
|
|
|
86
90
|
}
|
|
87
91
|
|
|
88
92
|
function findPlane(planePos: Vec3, points: ReadonlyArray<Vec3>): LwPolylinePlane | undefined {
|
|
89
|
-
if(points.length < 3) {
|
|
93
|
+
if (points.length < 3) {
|
|
90
94
|
return undefined;
|
|
91
95
|
}
|
|
92
|
-
for(let i = 1; i < points.length; i++) {
|
|
96
|
+
for (let i = 1; i < points.length; i++) {
|
|
93
97
|
const aRaw = points[i];
|
|
94
|
-
if(aRaw === undefined) {
|
|
98
|
+
if (aRaw === undefined) {
|
|
95
99
|
continue;
|
|
96
100
|
}
|
|
97
101
|
const a = vec3Sub(aRaw, planePos);
|
|
98
|
-
for(let j = i + 1; j < points.length; j++) {
|
|
102
|
+
for (let j = i + 1; j < points.length; j++) {
|
|
99
103
|
const bRaw = points[j];
|
|
100
|
-
if(bRaw === undefined) {
|
|
104
|
+
if (bRaw === undefined) {
|
|
101
105
|
continue;
|
|
102
106
|
}
|
|
103
107
|
const b = vec3Sub(bRaw, planePos);
|
|
104
108
|
const normal = vec3Cross(a, b);
|
|
105
|
-
if(vec3Length(normal) > EPSILON) {
|
|
109
|
+
if (vec3Length(normal) > EPSILON) {
|
|
106
110
|
const normalizedNormal = vec3Normalize(normal);
|
|
107
111
|
return {
|
|
108
112
|
normal: normalizedNormal,
|
|
109
113
|
pos: planePos,
|
|
110
114
|
...dxfOCSXYAxis(normalizedNormal),
|
|
111
|
-
}
|
|
115
|
+
};
|
|
112
116
|
}
|
|
113
117
|
}
|
|
114
118
|
}
|
|
@@ -120,4 +124,4 @@ function isCoplanar(points: ReadonlyArray<Vec3>, plane: LwPolylinePlane): boolea
|
|
|
120
124
|
const distance = vec3Dot(vec3Sub(p, plane.pos), plane.normal);
|
|
121
125
|
return Math.abs(distance) < EPSILON;
|
|
122
126
|
});
|
|
123
|
-
}
|
|
127
|
+
}
|
|
@@ -11,9 +11,18 @@ export enum DxfMTextAttachment {
|
|
|
11
11
|
BottomLeft = 7,
|
|
12
12
|
BottomCenter = 8,
|
|
13
13
|
BottomRight = 9,
|
|
14
|
-
}
|
|
14
|
+
}
|
|
15
15
|
|
|
16
|
-
export function dxfEncMText(
|
|
16
|
+
export function dxfEncMText(
|
|
17
|
+
pos: Vec3,
|
|
18
|
+
text: string,
|
|
19
|
+
dir: Vec3,
|
|
20
|
+
normal: Vec3,
|
|
21
|
+
fontSize: number,
|
|
22
|
+
handleRef: Handle,
|
|
23
|
+
attachment: DxfMTextAttachment = DxfMTextAttachment.MiddleCenter,
|
|
24
|
+
blockRefHandle?: string
|
|
25
|
+
): string {
|
|
17
26
|
return `0
|
|
18
27
|
MTEXT
|
|
19
28
|
5
|
|
@@ -55,4 +64,4 @@ ${encodeDxfFormattedText(text)}
|
|
|
55
64
|
|
|
56
65
|
export function encodeDxfFormattedText(text: string): string {
|
|
57
66
|
return text.replace(/\r\n|\r|\n/g, "\\P");
|
|
58
|
-
}
|
|
67
|
+
}
|
|
@@ -17,7 +17,7 @@ export function dxfEncPolyline(
|
|
|
17
17
|
const seqEndHandle = dxfHandleNext(handleRef);
|
|
18
18
|
const vertices = points
|
|
19
19
|
.map((p) => {
|
|
20
|
-
|
|
20
|
+
return ` 0
|
|
21
21
|
VERTEX
|
|
22
22
|
5
|
|
23
23
|
${dxfHandleNext(handleRef)}
|
|
@@ -42,7 +42,6 @@ ${dxfRound(p.z)}
|
|
|
42
42
|
32`;
|
|
43
43
|
})
|
|
44
44
|
.join("\n");
|
|
45
|
-
|
|
46
45
|
|
|
47
46
|
return ` 0
|
|
48
47
|
POLYLINE
|
|
@@ -79,4 +78,4 @@ AcDbEntity
|
|
|
79
78
|
8
|
|
80
79
|
0
|
|
81
80
|
`;
|
|
82
|
-
}
|
|
81
|
+
}
|
|
@@ -20,4 +20,4 @@ export const dxfEncSolidTriangle = (
|
|
|
20
20
|
col: DxfColor,
|
|
21
21
|
handleRef: Handle,
|
|
22
22
|
blockRefHandle?: string
|
|
23
|
-
): string => dxfEncSolid(vec1, vec2, vec3, vec3, col, handleRef, blockRefHandle);
|
|
23
|
+
): string => dxfEncSolid(vec1, vec2, vec3, vec3, col, handleRef, blockRefHandle);
|
|
@@ -1,9 +1,23 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
type Dimension,
|
|
3
|
+
dimensionIsOfTypeMesh,
|
|
4
|
+
type Vec3,
|
|
5
|
+
vec3Length,
|
|
6
|
+
vec3Sub,
|
|
7
|
+
vec3TransRot,
|
|
8
|
+
} from "../../../abstract-3d.js";
|
|
2
9
|
import type { Handle } from "../dxf-encoding/dxf-common.js";
|
|
3
10
|
import { type DxfDimensionDefinition, dxfEncDimension } from "../dxf-encoding/dxf-dimension.js";
|
|
4
11
|
|
|
5
|
-
export function dxfDimension(
|
|
6
|
-
|
|
12
|
+
export function dxfDimension(
|
|
13
|
+
dimension: Dimension,
|
|
14
|
+
parentPos: Vec3,
|
|
15
|
+
parentRot: Vec3,
|
|
16
|
+
sceneRotation: Vec3,
|
|
17
|
+
viewRotation: Vec3,
|
|
18
|
+
handleRef: Handle
|
|
19
|
+
): DxfDimensionDefinition {
|
|
20
|
+
if (dimensionIsOfTypeMesh(dimension)) {
|
|
7
21
|
return {
|
|
8
22
|
block: "",
|
|
9
23
|
entity: "",
|
|
@@ -15,4 +29,4 @@ export function dxfDimension(dimension: Dimension, parentPos: Vec3, parentRot: V
|
|
|
15
29
|
const lp = vec3TransRot(dimension.linePosition, parentPos, parentRot);
|
|
16
30
|
const text = dimension.text ?? `${vec3Length(vec3Sub(me, ms))}`;
|
|
17
31
|
return dxfEncDimension(ms, me, lp, text, 7, sceneRotation, viewRotation, dimension.views ?? ["front"], handleRef);
|
|
18
|
-
}
|
|
32
|
+
}
|
|
@@ -35,29 +35,17 @@ export function dxfImage(i: ImageMesh, parentPos: Vec3, parentRot: Vec3, handleR
|
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
function abstractImageToDxf3D(image: AbstractImage, pos: Vec3, rot: Vec3, scale: Vec3, handleRef: Handle): string {
|
|
38
|
-
|
|
39
|
-
return image.components
|
|
40
|
-
.map((comp) => abstractImageComponentToDxf3D(comp, pos, rot, scale, strokeScale, handleRef))
|
|
41
|
-
.join("");
|
|
38
|
+
return image.components.map((comp) => abstractImageComponentToDxf3D(comp, pos, rot, scale, handleRef)).join("");
|
|
42
39
|
}
|
|
43
40
|
|
|
44
|
-
function abstractImageComponentToDxf3D(
|
|
45
|
-
comp: Component,
|
|
46
|
-
pos: Vec3,
|
|
47
|
-
rot: Vec3,
|
|
48
|
-
scale: Vec3,
|
|
49
|
-
strokeScale: number,
|
|
50
|
-
handleRef: Handle
|
|
51
|
-
): string {
|
|
41
|
+
function abstractImageComponentToDxf3D(comp: Component, pos: Vec3, rot: Vec3, scale: Vec3, handleRef: Handle): string {
|
|
52
42
|
const vec3tr = (x: number, y: number): Vec3 => vec3TransRot(vec3(x * scale.x, y * scale.y, 0), pos, rot);
|
|
53
43
|
const strokeColor: DxfDynamicColor = 7;
|
|
54
44
|
|
|
55
45
|
let dxf = "";
|
|
56
46
|
switch (comp.type) {
|
|
57
47
|
case "group": {
|
|
58
|
-
dxf += comp.children
|
|
59
|
-
.map((child) => abstractImageComponentToDxf3D(child, pos, rot, scale, strokeScale, handleRef))
|
|
60
|
-
.join("");
|
|
48
|
+
dxf += comp.children.map((child) => abstractImageComponentToDxf3D(child, pos, rot, scale, handleRef)).join("");
|
|
61
49
|
break;
|
|
62
50
|
}
|
|
63
51
|
case "line": {
|
|
@@ -89,11 +77,11 @@ function abstractImageComponentToDxf3D(
|
|
|
89
77
|
}
|
|
90
78
|
case "rectangle": {
|
|
91
79
|
const points = [
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
80
|
+
//these points form a loop
|
|
81
|
+
vec3tr(comp.topLeft.x, comp.topLeft.y),
|
|
82
|
+
vec3tr(comp.bottomRight.x, comp.topLeft.y),
|
|
83
|
+
vec3tr(comp.bottomRight.x, comp.bottomRight.y),
|
|
84
|
+
vec3tr(comp.topLeft.x, comp.bottomRight.y),
|
|
97
85
|
];
|
|
98
86
|
dxf += dxfEncLwPolyline(pos, points, strokeColor, true, handleRef) ?? "";
|
|
99
87
|
break;
|
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
type Polygon,
|
|
3
|
+
type Material,
|
|
4
|
+
type Vec3,
|
|
5
|
+
vec3RotCombine,
|
|
6
|
+
vec3TransRot,
|
|
7
|
+
vec3Zero,
|
|
8
|
+
} from "../../../abstract-3d.js";
|
|
2
9
|
import type { Handle } from "../dxf-encoding/dxf-common.js";
|
|
3
10
|
import { dxfEnc3DFace } from "../dxf-encoding/dxf-3dface.js";
|
|
4
11
|
import { dxfEnc3DFaceTriangle } from "../dxf-encoding/dxf-triangle.js";
|
|
@@ -13,20 +20,13 @@ export function dxfPolygon(p: Polygon, m: Material, parentPos: Vec3, parentRot:
|
|
|
13
20
|
const rot = vec3RotCombine(parentRot, p.rot ?? vec3Zero);
|
|
14
21
|
const points = p.points.map((p) => vec3TransRot(p, pos, rot));
|
|
15
22
|
let i = 0;
|
|
16
|
-
while(
|
|
23
|
+
while (points.length - i >= QUAD_STRIDE) {
|
|
17
24
|
const vec1 = points[i];
|
|
18
25
|
const vec2 = points[i + 1];
|
|
19
26
|
const vec3 = points[i + 2];
|
|
20
27
|
const vec4 = points[i + 3];
|
|
21
|
-
if(vec1 && vec2 && vec3 && vec4) {
|
|
22
|
-
polygonString += dxfEnc3DFace(
|
|
23
|
-
vec1,
|
|
24
|
-
vec2,
|
|
25
|
-
vec3,
|
|
26
|
-
vec4,
|
|
27
|
-
col,
|
|
28
|
-
handleRef
|
|
29
|
-
);
|
|
28
|
+
if (vec1 && vec2 && vec3 && vec4) {
|
|
29
|
+
polygonString += dxfEnc3DFace(vec1, vec2, vec3, vec4, col, handleRef);
|
|
30
30
|
}
|
|
31
31
|
i += QUAD_STRIDE;
|
|
32
32
|
}
|
|
@@ -38,7 +38,7 @@ export function dxfPolygon(p: Polygon, m: Material, parentPos: Vec3, parentRot:
|
|
|
38
38
|
const vec1 = points[i];
|
|
39
39
|
const vec2 = points[i - 1];
|
|
40
40
|
const vec3 = points[i - 2];
|
|
41
|
-
if(vec1 && vec2 && vec3) {
|
|
41
|
+
if (vec1 && vec2 && vec3) {
|
|
42
42
|
polygonString += dxfEnc3DFaceTriangle(vec3, vec2, vec1, col, handleRef);
|
|
43
43
|
}
|
|
44
44
|
break;
|
|
@@ -47,14 +47,8 @@ export function dxfPolygon(p: Polygon, m: Material, parentPos: Vec3, parentRot:
|
|
|
47
47
|
const vec1 = points[i];
|
|
48
48
|
const vec2 = points[i - 1];
|
|
49
49
|
const vec3 = points[i + 1];
|
|
50
|
-
if(vec1 && vec2 && vec3) {
|
|
51
|
-
polygonString += dxfEnc3DFaceTriangle(
|
|
52
|
-
vec2,
|
|
53
|
-
vec1,
|
|
54
|
-
vec3,
|
|
55
|
-
col,
|
|
56
|
-
handleRef
|
|
57
|
-
);
|
|
50
|
+
if (vec1 && vec2 && vec3) {
|
|
51
|
+
polygonString += dxfEnc3DFaceTriangle(vec2, vec1, vec3, col, handleRef);
|
|
58
52
|
}
|
|
59
53
|
break;
|
|
60
54
|
}
|
|
@@ -62,14 +56,8 @@ export function dxfPolygon(p: Polygon, m: Material, parentPos: Vec3, parentRot:
|
|
|
62
56
|
const vec1 = points[i];
|
|
63
57
|
const vec2 = points[i + 1];
|
|
64
58
|
const vec3 = points[i + 2];
|
|
65
|
-
if(vec1 && vec2 && vec3) {
|
|
66
|
-
polygonString += dxfEnc3DFaceTriangle(
|
|
67
|
-
vec1,
|
|
68
|
-
vec2,
|
|
69
|
-
vec3,
|
|
70
|
-
col,
|
|
71
|
-
handleRef
|
|
72
|
-
);
|
|
59
|
+
if (vec1 && vec2 && vec3) {
|
|
60
|
+
polygonString += dxfEnc3DFaceTriangle(vec1, vec2, vec3, col, handleRef);
|
|
73
61
|
}
|
|
74
62
|
break;
|
|
75
63
|
}
|
|
@@ -1,4 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
type Shape,
|
|
3
|
+
type Material,
|
|
4
|
+
type Vec3,
|
|
5
|
+
vec3TransRot,
|
|
6
|
+
vec3RotCombine,
|
|
7
|
+
vec3Zero,
|
|
8
|
+
vec3,
|
|
9
|
+
} from "../../../abstract-3d.js";
|
|
2
10
|
import type { Handle } from "../dxf-encoding/dxf-common.js";
|
|
3
11
|
import { dxfEnc3DFace } from "../dxf-encoding/dxf-3dface.js";
|
|
4
12
|
import { dxfEnc3DFaceTriangle } from "../dxf-encoding/dxf-triangle.js";
|
|
@@ -18,7 +26,7 @@ export function dxfPolygon(s: Shape, m: Material, parentPos: Vec3, parentRot: Ve
|
|
|
18
26
|
const p2 = points[i + 1];
|
|
19
27
|
const p3 = points[i + 2];
|
|
20
28
|
const p4 = points[i + 3];
|
|
21
|
-
if(p1 && p2 && p3 && p4) {
|
|
29
|
+
if (p1 && p2 && p3 && p4) {
|
|
22
30
|
polygonString += dxfEnc3DFace(p1, p2, p3, p4, m.normal, handleRef);
|
|
23
31
|
}
|
|
24
32
|
}
|
|
@@ -31,7 +39,7 @@ export function dxfPolygon(s: Shape, m: Material, parentPos: Vec3, parentRot: Ve
|
|
|
31
39
|
const p1 = points[i - 2];
|
|
32
40
|
const p2 = points[i - 1];
|
|
33
41
|
const p3 = points[i];
|
|
34
|
-
if(p1 && p2 && p3) {
|
|
42
|
+
if (p1 && p2 && p3) {
|
|
35
43
|
polygonString += dxfEnc3DFaceTriangle(p1, p2, p3, m.normal, handleRef);
|
|
36
44
|
}
|
|
37
45
|
break;
|
|
@@ -40,7 +48,7 @@ export function dxfPolygon(s: Shape, m: Material, parentPos: Vec3, parentRot: Ve
|
|
|
40
48
|
const p1 = points[i - 1];
|
|
41
49
|
const p2 = points[i];
|
|
42
50
|
const p3 = points[i + 1];
|
|
43
|
-
if(p1 && p2 && p3) {
|
|
51
|
+
if (p1 && p2 && p3) {
|
|
44
52
|
polygonString += dxfEnc3DFaceTriangle(p1, p2, p3, m.normal, handleRef);
|
|
45
53
|
}
|
|
46
54
|
break;
|
|
@@ -49,7 +57,7 @@ export function dxfPolygon(s: Shape, m: Material, parentPos: Vec3, parentRot: Ve
|
|
|
49
57
|
const p1 = points[i];
|
|
50
58
|
const p2 = points[i + 1];
|
|
51
59
|
const p3 = points[i + 2];
|
|
52
|
-
if(p1 && p2 && p3) {
|
|
60
|
+
if (p1 && p2 && p3) {
|
|
53
61
|
polygonString += dxfEnc3DFaceTriangle(p1, p2, p3, m.normal, handleRef);
|
|
54
62
|
}
|
|
55
63
|
break;
|