abstract-3d 2.7.11 → 2.7.13
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 +1 -0
- package/lib/abstract-3d.d.ts.map +1 -1
- package/lib/abstract-3d.js +30 -15
- package/lib/abstract-3d.js.map +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-3dface.d.ts +5 -0
- package/lib/renderers/dxf/dxf-encoding/dxf-3dface.d.ts.map +1 -0
- package/lib/renderers/dxf/dxf-encoding/{dxf-quad.js → dxf-3dface.js} +3 -3
- package/lib/renderers/dxf/dxf-encoding/dxf-3dface.js.map +1 -0
- package/lib/renderers/dxf/dxf-encoding/dxf-common.d.ts +3 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-common.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-common.js +2 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-common.js.map +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-dimension.d.ts +7 -2
- package/lib/renderers/dxf/dxf-encoding/dxf-dimension.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-dimension.js +107 -4
- package/lib/renderers/dxf/dxf-encoding/dxf-dimension.js.map +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-header.d.ts +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-header.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-header.js +8 -8
- package/lib/renderers/dxf/dxf-encoding/dxf-header.js.map +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-line.d.ts +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-line.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-line.js +2 -2
- package/lib/renderers/dxf/dxf-encoding/dxf-line.js.map +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-mtext.d.ts +15 -0
- package/lib/renderers/dxf/dxf-encoding/dxf-mtext.d.ts.map +1 -0
- package/lib/renderers/dxf/dxf-encoding/dxf-mtext.js +44 -0
- package/lib/renderers/dxf/dxf-encoding/dxf-mtext.js.map +1 -0
- package/lib/renderers/dxf/dxf-encoding/dxf-polyline.d.ts +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-polyline.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-polyline.js +3 -4
- package/lib/renderers/dxf/dxf-encoding/dxf-polyline.js.map +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-solid.d.ts +5 -0
- package/lib/renderers/dxf/dxf-encoding/dxf-solid.d.ts.map +1 -0
- package/lib/renderers/dxf/dxf-encoding/dxf-solid.js +39 -0
- package/lib/renderers/dxf/dxf-encoding/dxf-solid.js.map +1 -0
- package/lib/renderers/dxf/dxf-encoding/dxf-triangle.d.ts +2 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-triangle.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-triangle.js +4 -2
- package/lib/renderers/dxf/dxf-encoding/dxf-triangle.js.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-box.js +7 -7
- package/lib/renderers/dxf/dxf-geometries/dxf-box.js.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-cone.js +3 -3
- package/lib/renderers/dxf/dxf-geometries/dxf-cone.js.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-cylinder.js +5 -5
- package/lib/renderers/dxf/dxf-geometries/dxf-cylinder.js.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-dimension.d.ts +2 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-dimension.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-dimension.js +5 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-dimension.js.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-plane.js +2 -2
- package/lib/renderers/dxf/dxf-geometries/dxf-plane.js.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-polygon.js +6 -6
- package/lib/renderers/dxf/dxf-geometries/dxf-polygon.js.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-shape.js +6 -6
- 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 +17 -4
- package/lib/renderers/dxf/dxf.js.map +1 -1
- package/package.json +2 -2
- package/src/abstract-3d.ts +40 -16
- package/src/renderers/dxf/dxf-encoding/dxf-3dface.ts +48 -0
- package/src/renderers/dxf/dxf-encoding/dxf-common.ts +4 -2
- package/src/renderers/dxf/dxf-encoding/dxf-dimension.ts +147 -6
- package/src/renderers/dxf/dxf-encoding/dxf-header.ts +8 -8
- package/src/renderers/dxf/dxf-encoding/dxf-line.ts +3 -2
- package/src/renderers/dxf/dxf-encoding/dxf-mtext.ts +44 -0
- package/src/renderers/dxf/dxf-encoding/dxf-polyline.ts +4 -5
- package/src/renderers/dxf/dxf-encoding/{dxf-quad.ts → dxf-solid.ts} +6 -5
- package/src/renderers/dxf/dxf-encoding/dxf-triangle.ts +15 -4
- package/src/renderers/dxf/dxf-geometries/dxf-box.ts +7 -7
- package/src/renderers/dxf/dxf-geometries/dxf-cone.ts +3 -3
- package/src/renderers/dxf/dxf-geometries/dxf-cylinder.ts +5 -5
- package/src/renderers/dxf/dxf-geometries/dxf-dimension.ts +7 -3
- package/src/renderers/dxf/dxf-geometries/dxf-plane.ts +2 -2
- package/src/renderers/dxf/dxf-geometries/dxf-polygon.ts +6 -6
- package/src/renderers/dxf/dxf-geometries/dxf-shape.ts +6 -6
- package/src/renderers/dxf/dxf.ts +21 -6
- package/lib/renderers/dxf/dxf-encoding/dxf-quad.d.ts +0 -5
- package/lib/renderers/dxf/dxf-encoding/dxf-quad.d.ts.map +0 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-quad.js.map +0 -1
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/* eslint-disable max-lines */
|
|
2
2
|
import type { Bounds3, Vec3 } from "../../../abstract-3d.js";
|
|
3
|
-
import { DXF_MODEL_SPACE_HANDLE } from "./dxf-common.js";
|
|
3
|
+
import { DXF_BLOCK_RECORD_HANDLE, DXF_MODEL_SPACE_HANDLE } from "./dxf-common.js";
|
|
4
4
|
|
|
5
5
|
const DXF_MAKER = "DXF Generated from Divid Abstract 3D";
|
|
6
6
|
const DXF_STANDARD = "AC1015";
|
|
7
7
|
|
|
8
|
-
export const dxfEncHeader = (bounds: Bounds3, center: Vec3, blockId: string, size: Vec3, dimScale: number = 44.0, dimArrowSize: number = 1.0, dimTextHeight: number = 1.0): string =>
|
|
8
|
+
export const dxfEncHeader = (bounds: Bounds3, center: Vec3, blockId: string, size: Vec3, dimBlocks: string, dimBlockRecords: string, dimScale: number = 44.0, dimArrowSize: number = 1.0, dimTextHeight: number = 1.0): string =>
|
|
9
9
|
` 999
|
|
10
10
|
${DXF_MAKER}
|
|
11
11
|
0
|
|
@@ -1485,7 +1485,7 @@ TABLE
|
|
|
1485
1485
|
2
|
|
1486
1486
|
BLOCK_RECORD
|
|
1487
1487
|
5
|
|
1488
|
-
|
|
1488
|
+
${DXF_BLOCK_RECORD_HANDLE}
|
|
1489
1489
|
330
|
|
1490
1490
|
0
|
|
1491
1491
|
100
|
|
@@ -1497,7 +1497,7 @@ BLOCK_RECORD
|
|
|
1497
1497
|
5
|
|
1498
1498
|
${DXF_MODEL_SPACE_HANDLE}
|
|
1499
1499
|
330
|
|
1500
|
-
|
|
1500
|
+
${DXF_BLOCK_RECORD_HANDLE}
|
|
1501
1501
|
100
|
|
1502
1502
|
AcDbSymbolTableRecord
|
|
1503
1503
|
100
|
|
@@ -1511,7 +1511,7 @@ BLOCK_RECORD
|
|
|
1511
1511
|
5
|
|
1512
1512
|
1B
|
|
1513
1513
|
330
|
|
1514
|
-
|
|
1514
|
+
${DXF_BLOCK_RECORD_HANDLE}
|
|
1515
1515
|
100
|
|
1516
1516
|
AcDbSymbolTableRecord
|
|
1517
1517
|
100
|
|
@@ -1520,12 +1520,12 @@ AcDbBlockTableRecord
|
|
|
1520
1520
|
*Paper_Space
|
|
1521
1521
|
340
|
|
1522
1522
|
1C
|
|
1523
|
-
|
|
1523
|
+
${dimBlockRecords}0
|
|
1524
1524
|
BLOCK_RECORD
|
|
1525
1525
|
5
|
|
1526
1526
|
2D
|
|
1527
1527
|
330
|
|
1528
|
-
|
|
1528
|
+
${DXF_BLOCK_RECORD_HANDLE}
|
|
1529
1529
|
100
|
|
1530
1530
|
AcDbSymbolTableRecord
|
|
1531
1531
|
100
|
|
@@ -1628,7 +1628,7 @@ AcDbEntity
|
|
|
1628
1628
|
0
|
|
1629
1629
|
100
|
|
1630
1630
|
AcDbBlockEnd
|
|
1631
|
-
|
|
1631
|
+
${dimBlocks}0
|
|
1632
1632
|
BLOCK
|
|
1633
1633
|
5
|
|
1634
1634
|
2C
|
|
@@ -6,14 +6,15 @@ export function dxfEncLine(
|
|
|
6
6
|
vecStart: Vec3,
|
|
7
7
|
vecEnd: Vec3,
|
|
8
8
|
col: DxfColor,
|
|
9
|
-
handleRef: Handle
|
|
9
|
+
handleRef: Handle,
|
|
10
|
+
blockRefHandle?: string
|
|
10
11
|
): string {
|
|
11
12
|
return ` 0
|
|
12
13
|
LINE
|
|
13
14
|
5
|
|
14
15
|
${dxfHandleNext(handleRef)}
|
|
15
16
|
330
|
|
16
|
-
${DXF_MODEL_SPACE_HANDLE}
|
|
17
|
+
${blockRefHandle ?? DXF_MODEL_SPACE_HANDLE}
|
|
17
18
|
100
|
|
18
19
|
AcDbEntity
|
|
19
20
|
${dxfColor(col)}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { Vec3 } from "../../../abstract-3d.js";
|
|
2
|
+
import { DXF_MODEL_SPACE_HANDLE, dxfHandleNext, dxfRound, type Handle } from "./dxf-common.js";
|
|
3
|
+
|
|
4
|
+
export enum DxfMTextAttachment {
|
|
5
|
+
TopLeft = 1,
|
|
6
|
+
TopCenter = 2,
|
|
7
|
+
TopRight = 3,
|
|
8
|
+
MiddleLeft = 4,
|
|
9
|
+
MiddleCenter = 5,
|
|
10
|
+
MiddleRight = 6,
|
|
11
|
+
BottomLeft = 7,
|
|
12
|
+
BottomCenter = 8,
|
|
13
|
+
BottomRight = 9,
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export function dxfEncMText(pos: Vec3, text: string, rotation: number, fontSize: number, handleRef: Handle, attachment: DxfMTextAttachment = DxfMTextAttachment.MiddleCenter, blockRefHandle?: string): string {
|
|
17
|
+
return `0
|
|
18
|
+
MTEXT
|
|
19
|
+
5
|
|
20
|
+
${dxfHandleNext(handleRef)}
|
|
21
|
+
330
|
|
22
|
+
${blockRefHandle ?? DXF_MODEL_SPACE_HANDLE}
|
|
23
|
+
100
|
|
24
|
+
AcDbEntity
|
|
25
|
+
8
|
|
26
|
+
0
|
|
27
|
+
100
|
|
28
|
+
AcDbMText
|
|
29
|
+
10
|
|
30
|
+
${dxfRound(pos.x)}
|
|
31
|
+
20
|
|
32
|
+
${dxfRound(pos.y)}
|
|
33
|
+
30
|
|
34
|
+
${dxfRound(pos.z)}
|
|
35
|
+
40
|
|
36
|
+
${(fontSize * 0.75).toString()}
|
|
37
|
+
71
|
|
38
|
+
${attachment}
|
|
39
|
+
50
|
|
40
|
+
${dxfRound((rotation / Math.PI) * 180.0)}
|
|
41
|
+
1
|
|
42
|
+
${text}
|
|
43
|
+
`;
|
|
44
|
+
}
|
|
@@ -6,22 +6,21 @@ export function dxfEncPolyline(
|
|
|
6
6
|
points: ReadonlyArray<Vec3>,
|
|
7
7
|
col: DxfColor,
|
|
8
8
|
closed: boolean,
|
|
9
|
-
handleRef: Handle
|
|
9
|
+
handleRef: Handle,
|
|
10
|
+
blockRefHandle?: string
|
|
10
11
|
): string {
|
|
11
12
|
if (points.length < 2) {
|
|
12
13
|
return "";
|
|
13
14
|
}
|
|
14
15
|
|
|
15
16
|
const polylineHandle = dxfHandleNext(handleRef);
|
|
16
|
-
const vertexHandle = dxfHandleNext(handleRef);
|
|
17
17
|
const seqEndHandle = dxfHandleNext(handleRef);
|
|
18
18
|
const vertices = points
|
|
19
19
|
.map((p) => {
|
|
20
|
-
|
|
21
20
|
return ` 0
|
|
22
21
|
VERTEX
|
|
23
22
|
5
|
|
24
|
-
${
|
|
23
|
+
${dxfHandleNext(handleRef)}
|
|
25
24
|
330
|
|
26
25
|
${polylineHandle}
|
|
27
26
|
100
|
|
@@ -50,7 +49,7 @@ POLYLINE
|
|
|
50
49
|
5
|
|
51
50
|
${polylineHandle}
|
|
52
51
|
330
|
|
53
|
-
${DXF_MODEL_SPACE_HANDLE}
|
|
52
|
+
${blockRefHandle ?? DXF_MODEL_SPACE_HANDLE}
|
|
54
53
|
100
|
|
55
54
|
AcDbEntity
|
|
56
55
|
8
|
|
@@ -2,24 +2,25 @@ import type { Vec3 } from "../../../abstract-3d.js";
|
|
|
2
2
|
import { dxfColor, type DxfColor } from "./dxf-color.js";
|
|
3
3
|
import { DXF_MODEL_SPACE_HANDLE, dxfHandleNext, dxfRound, type Handle } from "./dxf-common.js";
|
|
4
4
|
|
|
5
|
-
export const
|
|
5
|
+
export const dxfEncSolid = (
|
|
6
6
|
vec1: Vec3,
|
|
7
7
|
vec2: Vec3,
|
|
8
8
|
vec3: Vec3,
|
|
9
9
|
vec4: Vec3,
|
|
10
10
|
col: DxfColor,
|
|
11
|
-
handleRef: Handle
|
|
11
|
+
handleRef: Handle,
|
|
12
|
+
blockRefHandle?: string
|
|
12
13
|
): string => ` 0
|
|
13
|
-
|
|
14
|
+
SOLID
|
|
14
15
|
5
|
|
15
16
|
${dxfHandleNext(handleRef)}
|
|
16
17
|
330
|
|
17
|
-
${DXF_MODEL_SPACE_HANDLE}
|
|
18
|
+
${blockRefHandle ?? DXF_MODEL_SPACE_HANDLE}
|
|
18
19
|
100
|
|
19
20
|
AcDbEntity
|
|
20
21
|
${dxfColor(col)}
|
|
21
22
|
100
|
|
22
|
-
|
|
23
|
+
AcDbTrace
|
|
23
24
|
10
|
|
24
25
|
${dxfRound(vec1.x)}
|
|
25
26
|
20
|
|
@@ -1,12 +1,23 @@
|
|
|
1
1
|
import type { Vec3 } from "../../../abstract-3d.js";
|
|
2
2
|
import type { DxfColor } from "./dxf-color.js";
|
|
3
3
|
import type { Handle } from "./dxf-common.js";
|
|
4
|
-
import {
|
|
4
|
+
import { dxfEnc3DFace } from "./dxf-3dface.js";
|
|
5
|
+
import { dxfEncSolid } from "./dxf-solid.js";
|
|
5
6
|
|
|
6
|
-
export const
|
|
7
|
+
export const dxfEnc3DFaceTriangle = (
|
|
7
8
|
vec1: Vec3,
|
|
8
9
|
vec2: Vec3,
|
|
9
10
|
vec3: Vec3,
|
|
10
11
|
col: DxfColor,
|
|
11
|
-
handleRef: Handle
|
|
12
|
-
|
|
12
|
+
handleRef: Handle,
|
|
13
|
+
blockRefHandle?: string
|
|
14
|
+
): string => dxfEnc3DFace(vec1, vec2, vec3, vec3, col, handleRef, blockRefHandle);
|
|
15
|
+
|
|
16
|
+
export const dxfEncSolidTriangle = (
|
|
17
|
+
vec1: Vec3,
|
|
18
|
+
vec2: Vec3,
|
|
19
|
+
vec3: Vec3,
|
|
20
|
+
col: DxfColor,
|
|
21
|
+
handleRef: Handle,
|
|
22
|
+
blockRefHandle?: string
|
|
23
|
+
): string => dxfEncSolid(vec1, vec2, vec3, vec3, col, handleRef, blockRefHandle);
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
vec3Zero,
|
|
10
10
|
} from "../../../abstract-3d.js";
|
|
11
11
|
import type { Handle } from "../dxf-encoding/dxf-common.js";
|
|
12
|
-
import {
|
|
12
|
+
import { dxfEnc3DFace } from "../dxf-encoding/dxf-3dface.js";
|
|
13
13
|
|
|
14
14
|
export function dxfBox(b: Box, m: Material, parentPos: Vec3, parentRot: Vec3, handleRef: Handle): string {
|
|
15
15
|
const pos = vec3TransRot(b.pos, parentPos, parentRot);
|
|
@@ -26,11 +26,11 @@ export function dxfBox(b: Box, m: Material, parentPos: Vec3, parentRot: Vec3, ha
|
|
|
26
26
|
const v7 = vec3tr3(half.x, half.y, -half.z);
|
|
27
27
|
const v8 = vec3tr3(-half.x, half.y, -half.z);
|
|
28
28
|
return (
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
29
|
+
dxfEnc3DFace(v1, v2, v3, v4, m.normal, handleRef) + // front
|
|
30
|
+
dxfEnc3DFace(v5, v6, v7, v8, m.normal, handleRef) + // Back
|
|
31
|
+
dxfEnc3DFace(v5, v1, v4, v8, m.normal, handleRef) + // Left
|
|
32
|
+
dxfEnc3DFace(v6, v2, v3, v7, m.normal, handleRef) + // Right
|
|
33
|
+
dxfEnc3DFace(v8, v7, v3, v4, m.normal, handleRef) + // Top
|
|
34
|
+
dxfEnc3DFace(v5, v6, v2, v1, m.normal, handleRef) // Bottom
|
|
35
35
|
);
|
|
36
36
|
}
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
vec3Zero,
|
|
9
9
|
} from "../../../abstract-3d.js";
|
|
10
10
|
import type { Handle } from "../dxf-encoding/dxf-common.js";
|
|
11
|
-
import {
|
|
11
|
+
import { dxfEnc3DFaceTriangle } from "../dxf-encoding/dxf-triangle.js";
|
|
12
12
|
|
|
13
13
|
export function dxfCone(
|
|
14
14
|
c: Cone,
|
|
@@ -37,8 +37,8 @@ export function dxfCone(
|
|
|
37
37
|
if (i !== 0) {
|
|
38
38
|
const prevBot = botVec3Array[i - 1]!;
|
|
39
39
|
dxfString +=
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
dxfEnc3DFaceTriangle(botPos, prevBot, currBot, m.normal, handleRef) +
|
|
41
|
+
dxfEnc3DFaceTriangle(currBot, prevBot, topPos, m.normal, handleRef);
|
|
42
42
|
}
|
|
43
43
|
currentAngle += angleStep;
|
|
44
44
|
}
|
|
@@ -10,8 +10,8 @@ import {
|
|
|
10
10
|
vec3Zero,
|
|
11
11
|
} from "../../../abstract-3d.js";
|
|
12
12
|
import type { Handle } from "../dxf-encoding/dxf-common.js";
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
13
|
+
import { dxfEnc3DFace } from "../dxf-encoding/dxf-3dface.js";
|
|
14
|
+
import { dxfEnc3DFaceTriangle } from "../dxf-encoding/dxf-triangle.js";
|
|
15
15
|
import { dxfPlane } from "./dxf-plane.js";
|
|
16
16
|
|
|
17
17
|
export function dxfCylinder(
|
|
@@ -47,10 +47,10 @@ export function dxfCylinder(
|
|
|
47
47
|
if (i !== 0 && prevBot && prevTop) {
|
|
48
48
|
if (!c.open) {
|
|
49
49
|
dxfString +=
|
|
50
|
-
|
|
51
|
-
|
|
50
|
+
dxfEnc3DFaceTriangle(botPos, prevBot, currBot, m.normal, handleRef) +
|
|
51
|
+
dxfEnc3DFaceTriangle(topPos, prevTop, currTop, m.normal, handleRef);
|
|
52
52
|
}
|
|
53
|
-
dxfString +=
|
|
53
|
+
dxfString += dxfEnc3DFace(currBot, prevBot, prevTop, currTop, m.normal, handleRef);
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
prevBot = currBot;
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
import { type Dimension, dimensionIsOfTypeMesh, type Vec3, vec3Length, vec3Sub, vec3TransRot } from "../../../abstract-3d.js";
|
|
2
2
|
import type { Handle } from "../dxf-encoding/dxf-common.js";
|
|
3
|
-
import { dxfEncDimension } from "../dxf-encoding/dxf-dimension.js";
|
|
3
|
+
import { type DxfDimensionDefinition, dxfEncDimension } from "../dxf-encoding/dxf-dimension.js";
|
|
4
4
|
|
|
5
|
-
export function dxfDimension(dimension: Dimension, parentPos: Vec3, parentRot: Vec3, handleRef: Handle):
|
|
5
|
+
export function dxfDimension(dimension: Dimension, parentPos: Vec3, parentRot: Vec3, handleRef: Handle): DxfDimensionDefinition {
|
|
6
6
|
if(dimensionIsOfTypeMesh(dimension)) {
|
|
7
|
-
return
|
|
7
|
+
return {
|
|
8
|
+
block: "",
|
|
9
|
+
entity: "",
|
|
10
|
+
blockRecord: "",
|
|
11
|
+
};
|
|
8
12
|
}
|
|
9
13
|
const ms = vec3TransRot(dimension.measurementStart, parentPos, parentRot);
|
|
10
14
|
const me = vec3TransRot(dimension.measurementEnd, parentPos, parentRot);
|
|
@@ -9,14 +9,14 @@ import {
|
|
|
9
9
|
vec3Zero,
|
|
10
10
|
} from "../../../abstract-3d.js";
|
|
11
11
|
import type { Handle } from "../dxf-encoding/dxf-common.js";
|
|
12
|
-
import {
|
|
12
|
+
import { dxfEnc3DFace } from "../dxf-encoding/dxf-3dface.js";
|
|
13
13
|
|
|
14
14
|
export function dxfPlane(p: Plane, m: Material, parentPos: Vec3, parentRot: Vec3, handleRef: Handle): string {
|
|
15
15
|
const half = vec2Scale(p.size, 0.5);
|
|
16
16
|
const pos = vec3TransRot(p.pos, parentPos, parentRot);
|
|
17
17
|
const rot = vec3RotCombine(parentRot, p.rot ?? vec3Zero);
|
|
18
18
|
const vec3tr = (x: number, y: number): Vec3 => vec3TransRot(vec3(x, y, 0), pos, rot);
|
|
19
|
-
return
|
|
19
|
+
return dxfEnc3DFace(
|
|
20
20
|
vec3tr(-half.x, -half.y),
|
|
21
21
|
vec3tr(half.x, -half.y),
|
|
22
22
|
vec3tr(half.x, half.y),
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type Polygon, type Material, type Vec3, vec3RotCombine, vec3TransRot, vec3Zero } from "../../../abstract-3d.js";
|
|
2
2
|
import type { Handle } from "../dxf-encoding/dxf-common.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { dxfEnc3DFace } from "../dxf-encoding/dxf-3dface.js";
|
|
4
|
+
import { dxfEnc3DFaceTriangle } from "../dxf-encoding/dxf-triangle.js";
|
|
5
5
|
|
|
6
6
|
const QUAD_STRIDE = 4;
|
|
7
7
|
const TRIANGLE_STRIDE = 3;
|
|
@@ -19,7 +19,7 @@ export function dxfPolygon(p: Polygon, m: Material, parentPos: Vec3, parentRot:
|
|
|
19
19
|
const vec3 = points[i + 2];
|
|
20
20
|
const vec4 = points[i + 3];
|
|
21
21
|
if(vec1 && vec2 && vec3 && vec4) {
|
|
22
|
-
polygonString +=
|
|
22
|
+
polygonString += dxfEnc3DFace(
|
|
23
23
|
vec1,
|
|
24
24
|
vec2,
|
|
25
25
|
vec3,
|
|
@@ -39,7 +39,7 @@ export function dxfPolygon(p: Polygon, m: Material, parentPos: Vec3, parentRot:
|
|
|
39
39
|
const vec2 = points[i - 1];
|
|
40
40
|
const vec3 = points[i - 2];
|
|
41
41
|
if(vec1 && vec2 && vec3) {
|
|
42
|
-
polygonString +=
|
|
42
|
+
polygonString += dxfEnc3DFaceTriangle(vec3, vec2, vec1, col, handleRef);
|
|
43
43
|
}
|
|
44
44
|
break;
|
|
45
45
|
}
|
|
@@ -48,7 +48,7 @@ export function dxfPolygon(p: Polygon, m: Material, parentPos: Vec3, parentRot:
|
|
|
48
48
|
const vec2 = points[i - 1];
|
|
49
49
|
const vec3 = points[i + 1];
|
|
50
50
|
if(vec1 && vec2 && vec3) {
|
|
51
|
-
polygonString +=
|
|
51
|
+
polygonString += dxfEnc3DFaceTriangle(
|
|
52
52
|
vec2,
|
|
53
53
|
vec1,
|
|
54
54
|
vec3,
|
|
@@ -63,7 +63,7 @@ export function dxfPolygon(p: Polygon, m: Material, parentPos: Vec3, parentRot:
|
|
|
63
63
|
const vec2 = points[i + 1];
|
|
64
64
|
const vec3 = points[i + 2];
|
|
65
65
|
if(vec1 && vec2 && vec3) {
|
|
66
|
-
polygonString +=
|
|
66
|
+
polygonString += dxfEnc3DFaceTriangle(
|
|
67
67
|
vec1,
|
|
68
68
|
vec2,
|
|
69
69
|
vec3,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type Shape, type Material, type Vec3, vec3TransRot, vec3RotCombine, vec3Zero, vec3 } from "../../../abstract-3d.js";
|
|
2
2
|
import type { Handle } from "../dxf-encoding/dxf-common.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { dxfEnc3DFace } from "../dxf-encoding/dxf-3dface.js";
|
|
4
|
+
import { dxfEnc3DFaceTriangle } from "../dxf-encoding/dxf-triangle.js";
|
|
5
5
|
|
|
6
6
|
const QUAD_STRIDE = 4;
|
|
7
7
|
const TRIANGLE_STRIDE = 3;
|
|
@@ -19,7 +19,7 @@ export function dxfPolygon(s: Shape, m: Material, parentPos: Vec3, parentRot: Ve
|
|
|
19
19
|
const p3 = points[i + 2];
|
|
20
20
|
const p4 = points[i + 3];
|
|
21
21
|
if(p1 && p2 && p3 && p4) {
|
|
22
|
-
polygonString +=
|
|
22
|
+
polygonString += dxfEnc3DFace(p1, p2, p3, p4, m.normal, handleRef);
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
}
|
|
@@ -32,7 +32,7 @@ export function dxfPolygon(s: Shape, m: Material, parentPos: Vec3, parentRot: Ve
|
|
|
32
32
|
const p2 = points[i - 1];
|
|
33
33
|
const p3 = points[i];
|
|
34
34
|
if(p1 && p2 && p3) {
|
|
35
|
-
polygonString +=
|
|
35
|
+
polygonString += dxfEnc3DFaceTriangle(p1, p2, p3, m.normal, handleRef);
|
|
36
36
|
}
|
|
37
37
|
break;
|
|
38
38
|
}
|
|
@@ -41,7 +41,7 @@ export function dxfPolygon(s: Shape, m: Material, parentPos: Vec3, parentRot: Ve
|
|
|
41
41
|
const p2 = points[i];
|
|
42
42
|
const p3 = points[i + 1];
|
|
43
43
|
if(p1 && p2 && p3) {
|
|
44
|
-
polygonString +=
|
|
44
|
+
polygonString += dxfEnc3DFaceTriangle(p1, p2, p3, m.normal, handleRef);
|
|
45
45
|
}
|
|
46
46
|
break;
|
|
47
47
|
}
|
|
@@ -50,7 +50,7 @@ export function dxfPolygon(s: Shape, m: Material, parentPos: Vec3, parentRot: Ve
|
|
|
50
50
|
const p2 = points[i + 1];
|
|
51
51
|
const p3 = points[i + 2];
|
|
52
52
|
if(p1 && p2 && p3) {
|
|
53
|
-
polygonString +=
|
|
53
|
+
polygonString += dxfEnc3DFaceTriangle(p1, p2, p3, m.normal, handleRef);
|
|
54
54
|
}
|
|
55
55
|
break;
|
|
56
56
|
}
|
package/src/renderers/dxf/dxf.ts
CHANGED
|
@@ -31,6 +31,7 @@ import { dxfImage } from "./dxf-geometries/dxf-image.js";
|
|
|
31
31
|
import { dxfText } from "./dxf-geometries/dxf-text.js";
|
|
32
32
|
import { dxfEncLine } from "./dxf-encoding/dxf-line.js";
|
|
33
33
|
import { dxfDimension } from "./dxf-geometries/dxf-dimension.js";
|
|
34
|
+
import { DxfDimensionDefinition } from "./dxf-encoding/dxf-dimension.js";
|
|
34
35
|
|
|
35
36
|
export type DxfOptions = {
|
|
36
37
|
readonly view: View;
|
|
@@ -49,7 +50,12 @@ export type DxfScene = {
|
|
|
49
50
|
|
|
50
51
|
export function renderScenes(scenes: ReadonlyArray<DxfScene>, baseOptions?: Optional<DxfScenesOptionsBase>): string {
|
|
51
52
|
let allGroups = "";
|
|
52
|
-
let allDimensions =
|
|
53
|
+
let allDimensions: DxfDimensionDefinition = {
|
|
54
|
+
block: "",
|
|
55
|
+
entity: "",
|
|
56
|
+
blockRecord: "",
|
|
57
|
+
};
|
|
58
|
+
|
|
53
59
|
const allBounds = Array<Bounds3>();
|
|
54
60
|
const handle = dxfHandleInit();
|
|
55
61
|
const originOffset = originOffsetFromScenes(scenes, baseOptions?.origin ?? "Center");
|
|
@@ -61,7 +67,11 @@ export function renderScenes(scenes: ReadonlyArray<DxfScene>, baseOptions?: Opti
|
|
|
61
67
|
handle
|
|
62
68
|
);
|
|
63
69
|
allGroups += groups;
|
|
64
|
-
allDimensions
|
|
70
|
+
allDimensions = {
|
|
71
|
+
entity: allDimensions.entity + dimensions.entity,
|
|
72
|
+
block: allDimensions.block + dimensions.block,
|
|
73
|
+
blockRecord: allDimensions.blockRecord + dimensions.blockRecord
|
|
74
|
+
};
|
|
65
75
|
allBounds.push(bounds3FromPosAndSize(center, size));
|
|
66
76
|
}
|
|
67
77
|
const bounds = bounds3Merge(...allBounds);
|
|
@@ -80,7 +90,7 @@ const renderInternal = (
|
|
|
80
90
|
options: DxfOptions,
|
|
81
91
|
offset: Vec3,
|
|
82
92
|
handleRef: Handle
|
|
83
|
-
): { readonly groups: string; readonly dimensions:
|
|
93
|
+
): { readonly groups: string; readonly dimensions: DxfDimensionDefinition; readonly size: Vec3; readonly center: Vec3 } => {
|
|
84
94
|
const unitRot = vec3RotCombine(rotationForCameraPos(options.view), scene.rotation_deprecated ?? vec3Zero);
|
|
85
95
|
const unitCenter = scene.center_deprecated ?? vec3Zero;
|
|
86
96
|
const [size] = sizeBoundsForCameraPos(scene.size_deprecated, unitCenter, unitRot);
|
|
@@ -170,13 +180,18 @@ function dxfGroup(g: Group, parentPos: Vec3, parentRot: Vec3, options: DxfOption
|
|
|
170
180
|
return dxf;
|
|
171
181
|
}
|
|
172
182
|
|
|
173
|
-
function dxfDimensions(d: Dimensions | undefined, parentPos: Vec3, parentRot: Vec3, visibleViews: Record<string, boolean>, options: DxfOptions, handleRef: Handle):
|
|
183
|
+
function dxfDimensions(d: Dimensions | undefined, parentPos: Vec3, parentRot: Vec3, visibleViews: Record<string, boolean>, options: DxfOptions, handleRef: Handle): DxfDimensionDefinition {
|
|
174
184
|
if(!d || !options.showDimensions) {
|
|
175
|
-
return
|
|
185
|
+
return {
|
|
186
|
+
entity: "",
|
|
187
|
+
block: "",
|
|
188
|
+
blockRecord: ""
|
|
189
|
+
};
|
|
176
190
|
}
|
|
177
191
|
return d.dimensions
|
|
178
192
|
.filter((d) => d.views?.[0] && visibleViews[d.views[0]] === true)
|
|
179
|
-
.map((d) => dxfDimension(d, parentPos, parentRot, handleRef))
|
|
193
|
+
.map((d) => dxfDimension(d, parentPos, parentRot, handleRef))
|
|
194
|
+
.reduce<DxfDimensionDefinition>((prev, curr) => ({ block: prev.block + curr.block, entity: prev.entity + curr.entity, blockRecord: prev.blockRecord + curr.blockRecord }), {block: "", entity: "", blockRecord: ""});
|
|
180
195
|
}
|
|
181
196
|
|
|
182
197
|
function optionsDef(options: Optional<DxfOptions> | undefined): DxfOptions {
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import type { Vec3 } from "../../../abstract-3d.js";
|
|
2
|
-
import { type DxfColor } from "./dxf-color.js";
|
|
3
|
-
import { type Handle } from "./dxf-common.js";
|
|
4
|
-
export declare const dxfEncQuad: (vec1: Vec3, vec2: Vec3, vec3: Vec3, vec4: Vec3, col: DxfColor, handleRef: Handle) => string;
|
|
5
|
-
//# sourceMappingURL=dxf-quad.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dxf-quad.d.ts","sourceRoot":"","sources":["../../../../src/renderers/dxf/dxf-encoding/dxf-quad.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAY,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAmD,KAAK,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE/F,eAAO,MAAM,UAAU,GACrB,MAAM,IAAI,EACV,MAAM,IAAI,EACV,MAAM,IAAI,EACV,MAAM,IAAI,EACV,KAAK,QAAQ,EACb,WAAW,MAAM,KAChB,MAmCF,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dxf-quad.js","sourceRoot":"","sources":["../../../../src/renderers/dxf/dxf-encoding/dxf-quad.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAiB,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,aAAa,EAAE,QAAQ,EAAe,MAAM,iBAAiB,CAAC;AAE/F,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,IAAU,EACV,IAAU,EACV,IAAU,EACV,IAAU,EACV,GAAa,EACb,SAAiB,EACT,EAAE,CAAC;;;EAGX,aAAa,CAAC,SAAS,CAAC;;EAExB,sBAAsB;;;EAGtB,QAAQ,CAAC,GAAG,CAAC;;;;EAIb,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;;EAEhB,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;;EAEhB,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;;EAEhB,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;;EAEhB,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;;EAEhB,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;;EAEhB,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;;EAEhB,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;;EAEhB,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;;EAEhB,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;;EAEhB,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;;EAEhB,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;CACjB,CAAC"}
|