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.
Files changed (81) hide show
  1. package/lib/abstract-3d.d.ts +1 -0
  2. package/lib/abstract-3d.d.ts.map +1 -1
  3. package/lib/abstract-3d.js +30 -15
  4. package/lib/abstract-3d.js.map +1 -1
  5. package/lib/renderers/dxf/dxf-encoding/dxf-3dface.d.ts +5 -0
  6. package/lib/renderers/dxf/dxf-encoding/dxf-3dface.d.ts.map +1 -0
  7. package/lib/renderers/dxf/dxf-encoding/{dxf-quad.js → dxf-3dface.js} +3 -3
  8. package/lib/renderers/dxf/dxf-encoding/dxf-3dface.js.map +1 -0
  9. package/lib/renderers/dxf/dxf-encoding/dxf-common.d.ts +3 -1
  10. package/lib/renderers/dxf/dxf-encoding/dxf-common.d.ts.map +1 -1
  11. package/lib/renderers/dxf/dxf-encoding/dxf-common.js +2 -1
  12. package/lib/renderers/dxf/dxf-encoding/dxf-common.js.map +1 -1
  13. package/lib/renderers/dxf/dxf-encoding/dxf-dimension.d.ts +7 -2
  14. package/lib/renderers/dxf/dxf-encoding/dxf-dimension.d.ts.map +1 -1
  15. package/lib/renderers/dxf/dxf-encoding/dxf-dimension.js +107 -4
  16. package/lib/renderers/dxf/dxf-encoding/dxf-dimension.js.map +1 -1
  17. package/lib/renderers/dxf/dxf-encoding/dxf-header.d.ts +1 -1
  18. package/lib/renderers/dxf/dxf-encoding/dxf-header.d.ts.map +1 -1
  19. package/lib/renderers/dxf/dxf-encoding/dxf-header.js +8 -8
  20. package/lib/renderers/dxf/dxf-encoding/dxf-header.js.map +1 -1
  21. package/lib/renderers/dxf/dxf-encoding/dxf-line.d.ts +1 -1
  22. package/lib/renderers/dxf/dxf-encoding/dxf-line.d.ts.map +1 -1
  23. package/lib/renderers/dxf/dxf-encoding/dxf-line.js +2 -2
  24. package/lib/renderers/dxf/dxf-encoding/dxf-line.js.map +1 -1
  25. package/lib/renderers/dxf/dxf-encoding/dxf-mtext.d.ts +15 -0
  26. package/lib/renderers/dxf/dxf-encoding/dxf-mtext.d.ts.map +1 -0
  27. package/lib/renderers/dxf/dxf-encoding/dxf-mtext.js +44 -0
  28. package/lib/renderers/dxf/dxf-encoding/dxf-mtext.js.map +1 -0
  29. package/lib/renderers/dxf/dxf-encoding/dxf-polyline.d.ts +1 -1
  30. package/lib/renderers/dxf/dxf-encoding/dxf-polyline.d.ts.map +1 -1
  31. package/lib/renderers/dxf/dxf-encoding/dxf-polyline.js +3 -4
  32. package/lib/renderers/dxf/dxf-encoding/dxf-polyline.js.map +1 -1
  33. package/lib/renderers/dxf/dxf-encoding/dxf-solid.d.ts +5 -0
  34. package/lib/renderers/dxf/dxf-encoding/dxf-solid.d.ts.map +1 -0
  35. package/lib/renderers/dxf/dxf-encoding/dxf-solid.js +39 -0
  36. package/lib/renderers/dxf/dxf-encoding/dxf-solid.js.map +1 -0
  37. package/lib/renderers/dxf/dxf-encoding/dxf-triangle.d.ts +2 -1
  38. package/lib/renderers/dxf/dxf-encoding/dxf-triangle.d.ts.map +1 -1
  39. package/lib/renderers/dxf/dxf-encoding/dxf-triangle.js +4 -2
  40. package/lib/renderers/dxf/dxf-encoding/dxf-triangle.js.map +1 -1
  41. package/lib/renderers/dxf/dxf-geometries/dxf-box.js +7 -7
  42. package/lib/renderers/dxf/dxf-geometries/dxf-box.js.map +1 -1
  43. package/lib/renderers/dxf/dxf-geometries/dxf-cone.js +3 -3
  44. package/lib/renderers/dxf/dxf-geometries/dxf-cone.js.map +1 -1
  45. package/lib/renderers/dxf/dxf-geometries/dxf-cylinder.js +5 -5
  46. package/lib/renderers/dxf/dxf-geometries/dxf-cylinder.js.map +1 -1
  47. package/lib/renderers/dxf/dxf-geometries/dxf-dimension.d.ts +2 -1
  48. package/lib/renderers/dxf/dxf-geometries/dxf-dimension.d.ts.map +1 -1
  49. package/lib/renderers/dxf/dxf-geometries/dxf-dimension.js +5 -1
  50. package/lib/renderers/dxf/dxf-geometries/dxf-dimension.js.map +1 -1
  51. package/lib/renderers/dxf/dxf-geometries/dxf-plane.js +2 -2
  52. package/lib/renderers/dxf/dxf-geometries/dxf-plane.js.map +1 -1
  53. package/lib/renderers/dxf/dxf-geometries/dxf-polygon.js +6 -6
  54. package/lib/renderers/dxf/dxf-geometries/dxf-polygon.js.map +1 -1
  55. package/lib/renderers/dxf/dxf-geometries/dxf-shape.js +6 -6
  56. package/lib/renderers/dxf/dxf-geometries/dxf-shape.js.map +1 -1
  57. package/lib/renderers/dxf/dxf.d.ts.map +1 -1
  58. package/lib/renderers/dxf/dxf.js +17 -4
  59. package/lib/renderers/dxf/dxf.js.map +1 -1
  60. package/package.json +2 -2
  61. package/src/abstract-3d.ts +40 -16
  62. package/src/renderers/dxf/dxf-encoding/dxf-3dface.ts +48 -0
  63. package/src/renderers/dxf/dxf-encoding/dxf-common.ts +4 -2
  64. package/src/renderers/dxf/dxf-encoding/dxf-dimension.ts +147 -6
  65. package/src/renderers/dxf/dxf-encoding/dxf-header.ts +8 -8
  66. package/src/renderers/dxf/dxf-encoding/dxf-line.ts +3 -2
  67. package/src/renderers/dxf/dxf-encoding/dxf-mtext.ts +44 -0
  68. package/src/renderers/dxf/dxf-encoding/dxf-polyline.ts +4 -5
  69. package/src/renderers/dxf/dxf-encoding/{dxf-quad.ts → dxf-solid.ts} +6 -5
  70. package/src/renderers/dxf/dxf-encoding/dxf-triangle.ts +15 -4
  71. package/src/renderers/dxf/dxf-geometries/dxf-box.ts +7 -7
  72. package/src/renderers/dxf/dxf-geometries/dxf-cone.ts +3 -3
  73. package/src/renderers/dxf/dxf-geometries/dxf-cylinder.ts +5 -5
  74. package/src/renderers/dxf/dxf-geometries/dxf-dimension.ts +7 -3
  75. package/src/renderers/dxf/dxf-geometries/dxf-plane.ts +2 -2
  76. package/src/renderers/dxf/dxf-geometries/dxf-polygon.ts +6 -6
  77. package/src/renderers/dxf/dxf-geometries/dxf-shape.ts +6 -6
  78. package/src/renderers/dxf/dxf.ts +21 -6
  79. package/lib/renderers/dxf/dxf-encoding/dxf-quad.d.ts +0 -5
  80. package/lib/renderers/dxf/dxf-encoding/dxf-quad.d.ts.map +0 -1
  81. 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
- 1
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
- 1
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
- 1
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
- 0
1523
+ ${dimBlockRecords}0
1524
1524
  BLOCK_RECORD
1525
1525
  5
1526
1526
  2D
1527
1527
  330
1528
- 1
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
- 0
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
- ${vertexHandle}
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 dxfEncQuad = (
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
- 3DFACE
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
- AcDbFace
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 { dxfEncQuad } from "./dxf-quad.js";
4
+ import { dxfEnc3DFace } from "./dxf-3dface.js";
5
+ import { dxfEncSolid } from "./dxf-solid.js";
5
6
 
6
- export const dxfEncTriangle = (
7
+ export const dxfEnc3DFaceTriangle = (
7
8
  vec1: Vec3,
8
9
  vec2: Vec3,
9
10
  vec3: Vec3,
10
11
  col: DxfColor,
11
- handleRef: Handle
12
- ): string => dxfEncQuad(vec1, vec2, vec3, vec3, col, handleRef);
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 { dxfEncQuad } from "../dxf-encoding/dxf-quad.js";
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
- dxfEncQuad(v1, v2, v3, v4, m.normal, handleRef) + // front
30
- dxfEncQuad(v5, v6, v7, v8, m.normal, handleRef) + // Back
31
- dxfEncQuad(v5, v1, v4, v8, m.normal, handleRef) + // Left
32
- dxfEncQuad(v6, v2, v3, v7, m.normal, handleRef) + // Right
33
- dxfEncQuad(v8, v7, v3, v4, m.normal, handleRef) + // Top
34
- dxfEncQuad(v5, v6, v2, v1, m.normal, handleRef) // Bottom
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 { dxfEncTriangle } from "../dxf-encoding/dxf-triangle.js";
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
- dxfEncTriangle(botPos, prevBot, currBot, m.normal, handleRef) +
41
- dxfEncTriangle(currBot, prevBot, topPos, m.normal, handleRef);
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 { dxfEncQuad } from "../dxf-encoding/dxf-quad.js";
14
- import { dxfEncTriangle } from "../dxf-encoding/dxf-triangle.js";
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
- dxfEncTriangle(botPos, prevBot, currBot, m.normal, handleRef) +
51
- dxfEncTriangle(topPos, prevTop, currTop, m.normal, handleRef);
50
+ dxfEnc3DFaceTriangle(botPos, prevBot, currBot, m.normal, handleRef) +
51
+ dxfEnc3DFaceTriangle(topPos, prevTop, currTop, m.normal, handleRef);
52
52
  }
53
- dxfString += dxfEncQuad(currBot, prevBot, prevTop, currTop, m.normal, handleRef);
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): string {
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 { dxfEncQuad } from "../dxf-encoding/dxf-quad.js";
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 dxfEncQuad(
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 { dxfEncQuad } from "../dxf-encoding/dxf-quad.js";
4
- import { dxfEncTriangle } from "../dxf-encoding/dxf-triangle.js";
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 += dxfEncQuad(
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 += dxfEncTriangle(vec3, vec2, vec1, col, handleRef);
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 += dxfEncTriangle(
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 += dxfEncTriangle(
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 { dxfEncQuad } from "../dxf-encoding/dxf-quad.js";
4
- import { dxfEncTriangle } from "../dxf-encoding/dxf-triangle.js";
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 += dxfEncQuad(p1, p2, p3, p4, m.normal, handleRef);
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 += dxfEncTriangle(p1, p2, p3, m.normal, handleRef);
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 += dxfEncTriangle(p1, p2, p3, m.normal, handleRef);
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 += dxfEncTriangle(p1, p2, p3, m.normal, handleRef);
53
+ polygonString += dxfEnc3DFaceTriangle(p1, p2, p3, m.normal, handleRef);
54
54
  }
55
55
  break;
56
56
  }
@@ -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 += dimensions;
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: string; readonly size: Vec3; readonly center: Vec3 } => {
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): string {
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)).join("");
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"}