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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dxf-dimension.js","sourceRoot":"","sources":["../../../../src/renderers/dxf/dxf-geometries/dxf-dimension.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,qBAAqB,EAAa,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE9H,OAAO,
|
|
1
|
+
{"version":3,"file":"dxf-dimension.js","sourceRoot":"","sources":["../../../../src/renderers/dxf/dxf-geometries/dxf-dimension.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,qBAAqB,EAAa,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE9H,OAAO,EAA+B,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAEhG,MAAM,UAAU,YAAY,CAAC,SAAoB,EAAE,SAAe,EAAE,SAAe,EAAE,SAAiB;IACpG,IAAG,qBAAqB,CAAC,SAAS,CAAC,EAAE,CAAC;QACpC,OAAO;YACL,KAAK,EAAE,EAAE;YACT,MAAM,EAAE,EAAE;YACV,WAAW,EAAE,EAAE;SAChB,CAAC;IACJ,CAAC;IACD,MAAM,EAAE,GAAG,YAAY,CAAC,SAAS,CAAC,gBAAgB,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IAC1E,MAAM,EAAE,GAAG,YAAY,CAAC,SAAS,CAAC,cAAc,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACxE,MAAM,EAAE,GAAG,YAAY,CAAC,SAAS,CAAC,YAAY,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACtE,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC;IAChE,OAAO,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;AACzD,CAAC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { vec2Scale, vec3, vec3TransRot, vec3RotCombine, vec3Zero, } from "../../../abstract-3d.js";
|
|
2
|
-
import {
|
|
2
|
+
import { dxfEnc3DFace } from "../dxf-encoding/dxf-3dface.js";
|
|
3
3
|
export function dxfPlane(p, m, parentPos, parentRot, handleRef) {
|
|
4
4
|
const half = vec2Scale(p.size, 0.5);
|
|
5
5
|
const pos = vec3TransRot(p.pos, parentPos, parentRot);
|
|
6
6
|
const rot = vec3RotCombine(parentRot, p.rot ?? vec3Zero);
|
|
7
7
|
const vec3tr = (x, y) => vec3TransRot(vec3(x, y, 0), pos, rot);
|
|
8
|
-
return
|
|
8
|
+
return dxfEnc3DFace(vec3tr(-half.x, -half.y), vec3tr(half.x, -half.y), vec3tr(half.x, half.y), vec3tr(-half.x, half.y), m.normal, handleRef);
|
|
9
9
|
}
|
|
10
10
|
//# sourceMappingURL=dxf-plane.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dxf-plane.js","sourceRoot":"","sources":["../../../../src/renderers/dxf/dxf-geometries/dxf-plane.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,SAAS,EACT,IAAI,EACJ,YAAY,EACZ,cAAc,EACd,QAAQ,GACT,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"dxf-plane.js","sourceRoot":"","sources":["../../../../src/renderers/dxf/dxf-geometries/dxf-plane.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,SAAS,EACT,IAAI,EACJ,YAAY,EACZ,cAAc,EACd,QAAQ,GACT,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAE7D,MAAM,UAAU,QAAQ,CAAC,CAAQ,EAAE,CAAW,EAAE,SAAe,EAAE,SAAe,EAAE,SAAiB;IACjG,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACpC,MAAM,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACtD,MAAM,GAAG,GAAG,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC,GAAG,IAAI,QAAQ,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,CAAS,EAAQ,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACrF,OAAO,YAAY,CACjB,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EACxB,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EACvB,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EACtB,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EACvB,CAAC,CAAC,MAAM,EACR,SAAS,CACV,CAAC;AACJ,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { vec3RotCombine, vec3TransRot, vec3Zero } from "../../../abstract-3d.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { dxfEnc3DFace } from "../dxf-encoding/dxf-3dface.js";
|
|
3
|
+
import { dxfEnc3DFaceTriangle } from "../dxf-encoding/dxf-triangle.js";
|
|
4
4
|
const QUAD_STRIDE = 4;
|
|
5
5
|
const TRIANGLE_STRIDE = 3;
|
|
6
6
|
export function dxfPolygon(p, m, parentPos, parentRot, handleRef) {
|
|
@@ -16,7 +16,7 @@ export function dxfPolygon(p, m, parentPos, parentRot, handleRef) {
|
|
|
16
16
|
const vec3 = points[i + 2];
|
|
17
17
|
const vec4 = points[i + 3];
|
|
18
18
|
if (vec1 && vec2 && vec3 && vec4) {
|
|
19
|
-
polygonString +=
|
|
19
|
+
polygonString += dxfEnc3DFace(vec1, vec2, vec3, vec4, col, handleRef);
|
|
20
20
|
}
|
|
21
21
|
i += QUAD_STRIDE;
|
|
22
22
|
}
|
|
@@ -28,7 +28,7 @@ export function dxfPolygon(p, m, parentPos, parentRot, handleRef) {
|
|
|
28
28
|
const vec2 = points[i - 1];
|
|
29
29
|
const vec3 = points[i - 2];
|
|
30
30
|
if (vec1 && vec2 && vec3) {
|
|
31
|
-
polygonString +=
|
|
31
|
+
polygonString += dxfEnc3DFaceTriangle(vec3, vec2, vec1, col, handleRef);
|
|
32
32
|
}
|
|
33
33
|
break;
|
|
34
34
|
}
|
|
@@ -37,7 +37,7 @@ export function dxfPolygon(p, m, parentPos, parentRot, handleRef) {
|
|
|
37
37
|
const vec2 = points[i - 1];
|
|
38
38
|
const vec3 = points[i + 1];
|
|
39
39
|
if (vec1 && vec2 && vec3) {
|
|
40
|
-
polygonString +=
|
|
40
|
+
polygonString += dxfEnc3DFaceTriangle(vec2, vec1, vec3, col, handleRef);
|
|
41
41
|
}
|
|
42
42
|
break;
|
|
43
43
|
}
|
|
@@ -46,7 +46,7 @@ export function dxfPolygon(p, m, parentPos, parentRot, handleRef) {
|
|
|
46
46
|
const vec2 = points[i + 1];
|
|
47
47
|
const vec3 = points[i + 2];
|
|
48
48
|
if (vec1 && vec2 && vec3) {
|
|
49
|
-
polygonString +=
|
|
49
|
+
polygonString += dxfEnc3DFaceTriangle(vec1, vec2, vec3, col, handleRef);
|
|
50
50
|
}
|
|
51
51
|
break;
|
|
52
52
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dxf-polygon.js","sourceRoot":"","sources":["../../../../src/renderers/dxf/dxf-geometries/dxf-polygon.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0C,cAAc,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAEzH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"dxf-polygon.js","sourceRoot":"","sources":["../../../../src/renderers/dxf/dxf-geometries/dxf-polygon.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { vec3TransRot, vec3RotCombine, vec3Zero, vec3 } from "../../../abstract-3d.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { dxfEnc3DFace } from "../dxf-encoding/dxf-3dface.js";
|
|
3
|
+
import { dxfEnc3DFaceTriangle } from "../dxf-encoding/dxf-triangle.js";
|
|
4
4
|
const QUAD_STRIDE = 4;
|
|
5
5
|
const TRIANGLE_STRIDE = 3;
|
|
6
6
|
export function dxfPolygon(s, m, parentPos, parentRot, handleRef) {
|
|
@@ -16,7 +16,7 @@ export function dxfPolygon(s, m, parentPos, parentRot, handleRef) {
|
|
|
16
16
|
const p3 = points[i + 2];
|
|
17
17
|
const p4 = points[i + 3];
|
|
18
18
|
if (p1 && p2 && p3 && p4) {
|
|
19
|
-
polygonString +=
|
|
19
|
+
polygonString += dxfEnc3DFace(p1, p2, p3, p4, m.normal, handleRef);
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
}
|
|
@@ -28,7 +28,7 @@ export function dxfPolygon(s, m, parentPos, parentRot, handleRef) {
|
|
|
28
28
|
const p2 = points[i - 1];
|
|
29
29
|
const p3 = points[i];
|
|
30
30
|
if (p1 && p2 && p3) {
|
|
31
|
-
polygonString +=
|
|
31
|
+
polygonString += dxfEnc3DFaceTriangle(p1, p2, p3, m.normal, handleRef);
|
|
32
32
|
}
|
|
33
33
|
break;
|
|
34
34
|
}
|
|
@@ -37,7 +37,7 @@ export function dxfPolygon(s, m, parentPos, parentRot, handleRef) {
|
|
|
37
37
|
const p2 = points[i];
|
|
38
38
|
const p3 = points[i + 1];
|
|
39
39
|
if (p1 && p2 && p3) {
|
|
40
|
-
polygonString +=
|
|
40
|
+
polygonString += dxfEnc3DFaceTriangle(p1, p2, p3, m.normal, handleRef);
|
|
41
41
|
}
|
|
42
42
|
break;
|
|
43
43
|
}
|
|
@@ -46,7 +46,7 @@ export function dxfPolygon(s, m, parentPos, parentRot, handleRef) {
|
|
|
46
46
|
const p2 = points[i + 1];
|
|
47
47
|
const p3 = points[i + 2];
|
|
48
48
|
if (p1 && p2 && p3) {
|
|
49
|
-
polygonString +=
|
|
49
|
+
polygonString += dxfEnc3DFaceTriangle(p1, p2, p3, m.normal, handleRef);
|
|
50
50
|
}
|
|
51
51
|
break;
|
|
52
52
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dxf-shape.js","sourceRoot":"","sources":["../../../../src/renderers/dxf/dxf-geometries/dxf-shape.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwC,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAE7H,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"dxf-shape.js","sourceRoot":"","sources":["../../../../src/renderers/dxf/dxf-geometries/dxf-shape.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dxf.d.ts","sourceRoot":"","sources":["../../../src/renderers/dxf/dxf.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,KAAK,EACV,KAAK,IAAI,EACT,KAAK,IAAI,EAeV,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAA6B,KAAK,SAAS,EAAwC,MAAM,8BAA8B,CAAC;AAC/H,OAAO,EAAE,KAAK,QAAQ,EAAyB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"dxf.d.ts","sourceRoot":"","sources":["../../../src/renderers/dxf/dxf.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,KAAK,EACV,KAAK,IAAI,EACT,KAAK,IAAI,EAeV,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAA6B,KAAK,SAAS,EAAwC,MAAM,8BAA8B,CAAC;AAC/H,OAAO,EAAE,KAAK,QAAQ,EAAyB,MAAM,gBAAgB,CAAC;AAYtE,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG;IAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;CAAE,CAAC;AAEvH,MAAM,MAAM,QAAQ,GAAG;IACrB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;IACxC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;CACpB,CAAC;AAEF,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,oBAAoB,CAAC,GAAG,MAAM,CA4BlH;AAED,eAAO,MAAM,MAAM,GAAI,OAAO,KAAK,EAAE,UAAU,QAAQ,CAAC,UAAU,CAAC,KAAG,MAKrE,CAAC;AAyHF,eAAO,MAAM,SAAS,GAAI,OAAO,KAAK,EAAE,UAAU,QAAQ,CAAC,UAAU,CAAC,KAAG,MAiBxE,CAAC"}
|
package/lib/renderers/dxf/dxf.js
CHANGED
|
@@ -10,14 +10,22 @@ import { dxfImage } from "./dxf-geometries/dxf-image.js";
|
|
|
10
10
|
import { dxfDimension } from "./dxf-geometries/dxf-dimension.js";
|
|
11
11
|
export function renderScenes(scenes, baseOptions) {
|
|
12
12
|
let allGroups = "";
|
|
13
|
-
let allDimensions =
|
|
13
|
+
let allDimensions = {
|
|
14
|
+
block: "",
|
|
15
|
+
entity: "",
|
|
16
|
+
blockRecord: "",
|
|
17
|
+
};
|
|
14
18
|
const allBounds = Array();
|
|
15
19
|
const handle = dxfHandleInit();
|
|
16
20
|
const originOffset = originOffsetFromScenes(scenes, baseOptions?.origin ?? "Center");
|
|
17
21
|
for (const view of scenes) {
|
|
18
22
|
const { groups, dimensions, size, center } = renderInternal(view.scene, optionsDef({ ...baseOptions, ...view.options, origin: "Center" }), vec3Add(view.pos, originOffset), handle);
|
|
19
23
|
allGroups += groups;
|
|
20
|
-
allDimensions
|
|
24
|
+
allDimensions = {
|
|
25
|
+
entity: allDimensions.entity + dimensions.entity,
|
|
26
|
+
block: allDimensions.block + dimensions.block,
|
|
27
|
+
blockRecord: allDimensions.blockRecord + dimensions.blockRecord
|
|
28
|
+
};
|
|
21
29
|
allBounds.push(bounds3FromPosAndSize(center, size));
|
|
22
30
|
}
|
|
23
31
|
const bounds = bounds3Merge(...allBounds);
|
|
@@ -111,11 +119,16 @@ function dxfGroup(g, parentPos, parentRot, options, handleRef) {
|
|
|
111
119
|
}
|
|
112
120
|
function dxfDimensions(d, parentPos, parentRot, visibleViews, options, handleRef) {
|
|
113
121
|
if (!d || !options.showDimensions) {
|
|
114
|
-
return
|
|
122
|
+
return {
|
|
123
|
+
entity: "",
|
|
124
|
+
block: "",
|
|
125
|
+
blockRecord: ""
|
|
126
|
+
};
|
|
115
127
|
}
|
|
116
128
|
return d.dimensions
|
|
117
129
|
.filter((d) => d.views?.[0] && visibleViews[d.views[0]] === true)
|
|
118
|
-
.map((d) => dxfDimension(d, parentPos, parentRot, handleRef))
|
|
130
|
+
.map((d) => dxfDimension(d, parentPos, parentRot, handleRef))
|
|
131
|
+
.reduce((prev, curr) => ({ block: prev.block + curr.block, entity: prev.entity + curr.entity, blockRecord: prev.blockRecord + curr.blockRecord }), { block: "", entity: "", blockRecord: "" });
|
|
119
132
|
}
|
|
120
133
|
function optionsDef(options) {
|
|
121
134
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dxf.js","sourceRoot":"","sources":["../../../src/renderers/dxf/dxf.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,aAAa,EACb,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,WAAW,EACX,KAAK,EACL,oBAAoB,EACpB,sBAAsB,EACtB,IAAI,EACJ,OAAO,EACP,cAAc,EACd,OAAO,EACP,YAAY,EACZ,QAAQ,EACT,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,yBAAyB,EAA+B,QAAQ,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC/H,OAAO,EAAiB,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAGzD,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"dxf.js","sourceRoot":"","sources":["../../../src/renderers/dxf/dxf.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "abstract-3d",
|
|
3
|
-
"version": "2.7.
|
|
3
|
+
"version": "2.7.13",
|
|
4
4
|
"description": "Abstract 3D",
|
|
5
5
|
"author": "Divid AB <info@divid.se>",
|
|
6
6
|
"repository": "https://github.com/dividab/abstract-visuals/tree/master/packages/abstract-3d",
|
|
@@ -65,5 +65,5 @@
|
|
|
65
65
|
"@types/three": "^0.180.0",
|
|
66
66
|
"react": "^19.2.6"
|
|
67
67
|
},
|
|
68
|
-
"gitHead": "
|
|
68
|
+
"gitHead": "4ea0c3cdcdd8b229a67e147ba8d3d0b30a3e4690"
|
|
69
69
|
}
|
package/src/abstract-3d.ts
CHANGED
|
@@ -1041,11 +1041,14 @@ export function dimensionIsOfTypeMesh(dimension: Dimension): dimension is Dimens
|
|
|
1041
1041
|
return "meshes" in dimension;
|
|
1042
1042
|
}
|
|
1043
1043
|
|
|
1044
|
-
export function
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1044
|
+
export function dimensionMeshifyAlignedDimension(
|
|
1045
|
+
dimension: DimensionAligned,
|
|
1046
|
+
sceneRotation: Vec3,
|
|
1047
|
+
onCreateLine: (start: Vec3, end: Vec3, norm: Vec3, thickness: number, mat: Material) => void,
|
|
1048
|
+
onCreateText: (pos: Vec3, measurement: string, fontSize: number, mat: Material, rot: Vec3) => void,
|
|
1049
|
+
onCreatePolygon: (p1: Vec3, p2: Vec3, p3: Vec3, mat: Material) => void,
|
|
1050
|
+
dimensionsMaterial?: Material,
|
|
1051
|
+
): void {
|
|
1049
1052
|
const defaultMaterial = { normal: "rgb(0, 0, 0)", opacity: 1.0, roughness: 1.0, metalness: 0.0 };
|
|
1050
1053
|
const material = dimension.material ?? (dimensionsMaterial ?? defaultMaterial);
|
|
1051
1054
|
const fontGlyphWidthRatio = 0.4815;
|
|
@@ -1084,8 +1087,8 @@ export function dimensionConvertToTypeMesh(dimension: Dimension, sceneRotation:
|
|
|
1084
1087
|
const leDisplaced = vec3Add(me, offsetDisplaced);
|
|
1085
1088
|
const lcDisplaced = vec3Scale(vec3Add(lsDisplaced, leDisplaced), 0.5);
|
|
1086
1089
|
|
|
1087
|
-
|
|
1088
|
-
|
|
1090
|
+
onCreateLine(ms, ls, basis.normal, lineThickness, material);
|
|
1091
|
+
onCreateLine(me, le, basis.normal, lineThickness, material);
|
|
1089
1092
|
|
|
1090
1093
|
const rotatedDirBetweenLines = vec3TransRot(
|
|
1091
1094
|
dirBetweenLines,
|
|
@@ -1113,7 +1116,7 @@ export function dimensionConvertToTypeMesh(dimension: Dimension, sceneRotation:
|
|
|
1113
1116
|
textDir,
|
|
1114
1117
|
basis.normal
|
|
1115
1118
|
);
|
|
1116
|
-
|
|
1119
|
+
onCreateText(lcDisplaced, measurement, textSize, material, textRot)
|
|
1117
1120
|
|
|
1118
1121
|
if(measurementLength > textThreshold) {
|
|
1119
1122
|
const textWidth = Math.max(...measurementRows.map((t) => t.length)) * (textSize * fontGlyphWidthRatio);
|
|
@@ -1128,8 +1131,8 @@ export function dimensionConvertToTypeMesh(dimension: Dimension, sceneRotation:
|
|
|
1128
1131
|
vec3Scale(lineDir, halfTextWidth)
|
|
1129
1132
|
);
|
|
1130
1133
|
|
|
1131
|
-
|
|
1132
|
-
|
|
1134
|
+
onCreateLine(lsDisplaced, leftEnd, basis.normal, lineThickness, material);
|
|
1135
|
+
onCreateLine(rightStart, leDisplaced, basis.normal, lineThickness, material);
|
|
1133
1136
|
|
|
1134
1137
|
//arrows
|
|
1135
1138
|
const arrowBaseStart = vec3Add(lsDisplaced, vec3Scale(lineDir, arrowLength));
|
|
@@ -1140,17 +1143,38 @@ export function dimensionConvertToTypeMesh(dimension: Dimension, sceneRotation:
|
|
|
1140
1143
|
const arrowBaseEnd2 = vec3Add(arrowBaseEnd, vec3Scale(dirBetweenLines, -arrowHalfBase));
|
|
1141
1144
|
|
|
1142
1145
|
//the winding order needs to be correct according to the normal
|
|
1143
|
-
const polygonFacing = (a: Vec3, b: Vec3, c: Vec3):
|
|
1146
|
+
const polygonFacing = (a: Vec3, b: Vec3, c: Vec3): void => {
|
|
1144
1147
|
const ab = vec3Sub(b, a);
|
|
1145
1148
|
const ac = vec3Sub(c, a);
|
|
1146
1149
|
const triangleNormal = vec3Cross(ab, ac);
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
+
|
|
1151
|
+
if(vec3Dot(triangleNormal, basis.normal) >= 0) {
|
|
1152
|
+
onCreatePolygon(a, b, c, material);
|
|
1153
|
+
} else {
|
|
1154
|
+
onCreatePolygon(a, c, b, material);
|
|
1155
|
+
}
|
|
1150
1156
|
};
|
|
1151
|
-
|
|
1152
|
-
|
|
1157
|
+
polygonFacing(lsDisplaced, arrowBaseStart2, arrowBaseStart1);
|
|
1158
|
+
polygonFacing(leDisplaced, arrowBaseEnd1, arrowBaseEnd2);
|
|
1159
|
+
}
|
|
1160
|
+
}
|
|
1161
|
+
|
|
1162
|
+
export function dimensionConvertToTypeMesh(dimension: Dimension, sceneRotation: Vec3, dimensionsMaterial?: Material): DimensionMesh {
|
|
1163
|
+
if(dimensionIsOfTypeMesh(dimension)) {
|
|
1164
|
+
return dimension;
|
|
1153
1165
|
}
|
|
1166
|
+
const meshes: Array<Mesh> = [];
|
|
1167
|
+
|
|
1168
|
+
const onCreateLine = (start: Vec3, end: Vec3, norm: Vec3, thickness: number, mat: Material): void => {
|
|
1169
|
+
meshes.push(culledLine(start, end, norm, thickness, mat));
|
|
1170
|
+
};
|
|
1171
|
+
const onCreateText = (pos: Vec3, measurement: string, fontSize: number, mat: Material, rot: Vec3): void => {
|
|
1172
|
+
meshes.push(text(pos, measurement, fontSize, mat, rot))
|
|
1173
|
+
};
|
|
1174
|
+
const onCreatePolygon = (p1: Vec3, p2: Vec3, p3: Vec3, mat: Material): void => {
|
|
1175
|
+
meshes.push(polygon([p1, p2, p3], mat));
|
|
1176
|
+
};
|
|
1177
|
+
dimensionMeshifyAlignedDimension(dimension, sceneRotation, onCreateLine, onCreateText, onCreatePolygon, dimensionsMaterial);
|
|
1154
1178
|
|
|
1155
1179
|
return {
|
|
1156
1180
|
meshes,
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { Vec3 } from "../../../abstract-3d.js";
|
|
2
|
+
import { type DxfColor, dxfColor } from "./dxf-color.js";
|
|
3
|
+
import { DXF_MODEL_SPACE_HANDLE, dxfHandleNext, dxfRound, type Handle } from "./dxf-common.js";
|
|
4
|
+
|
|
5
|
+
export const dxfEnc3DFace = (
|
|
6
|
+
vec1: Vec3,
|
|
7
|
+
vec2: Vec3,
|
|
8
|
+
vec3: Vec3,
|
|
9
|
+
vec4: Vec3,
|
|
10
|
+
col: DxfColor,
|
|
11
|
+
handleRef: Handle,
|
|
12
|
+
blockRefHandle?: string
|
|
13
|
+
): string => ` 0
|
|
14
|
+
3DFACE
|
|
15
|
+
5
|
|
16
|
+
${dxfHandleNext(handleRef)}
|
|
17
|
+
330
|
|
18
|
+
${blockRefHandle ?? DXF_MODEL_SPACE_HANDLE}
|
|
19
|
+
100
|
|
20
|
+
AcDbEntity
|
|
21
|
+
${dxfColor(col)}
|
|
22
|
+
100
|
|
23
|
+
AcDbFace
|
|
24
|
+
10
|
|
25
|
+
${dxfRound(vec1.x)}
|
|
26
|
+
20
|
|
27
|
+
${dxfRound(vec1.y)}
|
|
28
|
+
30
|
|
29
|
+
${dxfRound(vec1.z)}
|
|
30
|
+
11
|
|
31
|
+
${dxfRound(vec2.x)}
|
|
32
|
+
21
|
|
33
|
+
${dxfRound(vec2.y)}
|
|
34
|
+
31
|
|
35
|
+
${dxfRound(vec2.z)}
|
|
36
|
+
12
|
|
37
|
+
${dxfRound(vec3.x)}
|
|
38
|
+
22
|
|
39
|
+
${dxfRound(vec3.y)}
|
|
40
|
+
32
|
|
41
|
+
${dxfRound(vec3.z)}
|
|
42
|
+
13
|
|
43
|
+
${dxfRound(vec4.x)}
|
|
44
|
+
23
|
|
45
|
+
${dxfRound(vec4.y)}
|
|
46
|
+
33
|
|
47
|
+
${dxfRound(vec4.z)}
|
|
48
|
+
`;
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { generateUUID } from "three/src/math/MathUtils.js";
|
|
2
2
|
import type { Bounds3, Vec3 } from "../../../abstract-3d.js";
|
|
3
|
+
import type { DxfDimensionDefinition } from "./dxf-dimension.js";
|
|
3
4
|
import { dxfEncFooter } from "./dxf-footer.js";
|
|
4
5
|
import { dxfEncHeader } from "./dxf-header.js";
|
|
5
6
|
|
|
6
7
|
export const DEFAULT_CIRCLE_SIDE_COUNT = 16;
|
|
7
8
|
export const DXF_DEFAULT_HANDLE = 0x1000;
|
|
8
9
|
export const DXF_MODEL_SPACE_HANDLE = "1D";
|
|
10
|
+
export const DXF_BLOCK_RECORD_HANDLE = "1";
|
|
9
11
|
|
|
10
12
|
export type DxfOrigin = "BottomLeftFront" | "Center" | "SameAsScene";
|
|
11
13
|
export type Handle = { handle: number };
|
|
@@ -25,7 +27,7 @@ export function dxfRound(n: number): number {
|
|
|
25
27
|
return Math.round((n + Number.EPSILON) * 10 ** d) / 10 ** d;
|
|
26
28
|
}
|
|
27
29
|
|
|
28
|
-
export function dxfBuild(groups: string, dimensions:
|
|
30
|
+
export function dxfBuild(groups: string, dimensions: DxfDimensionDefinition, bounds: Bounds3, size: Vec3, center: Vec3): string {
|
|
29
31
|
const id = generateUUID();
|
|
30
|
-
return dxfEncHeader(bounds, center, id, size) + groups + dimensions + dxfEncFooter(id);
|
|
32
|
+
return dxfEncHeader(bounds, center, id, size, dimensions.block, dimensions.blockRecord) + groups + dimensions.entity + dxfEncFooter(id);
|
|
31
33
|
}
|
|
@@ -1,6 +1,15 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { dimensionMeshifyAlignedDimension, type Material, vec3Zero, type Vec3 } from "../../../abstract-3d.js";
|
|
2
2
|
import { type DxfColor, dxfColor } from "./dxf-color.js";
|
|
3
|
-
import { DXF_MODEL_SPACE_HANDLE, dxfHandleNext, dxfRound, type Handle } from "./dxf-common.js";
|
|
3
|
+
import { DXF_BLOCK_RECORD_HANDLE, DXF_MODEL_SPACE_HANDLE, dxfHandleNext, dxfRound, type Handle } from "./dxf-common.js";
|
|
4
|
+
import { dxfEncLine } from "./dxf-line.js";
|
|
5
|
+
import { DxfMTextAttachment, dxfEncMText } from "./dxf-mtext.js";
|
|
6
|
+
import { dxfEncSolidTriangle } from "./dxf-triangle.js";
|
|
7
|
+
|
|
8
|
+
export type DxfDimensionDefinition = {
|
|
9
|
+
readonly entity: string;
|
|
10
|
+
readonly block: string;
|
|
11
|
+
readonly blockRecord: string;
|
|
12
|
+
};
|
|
4
13
|
|
|
5
14
|
export function dxfEncDimension(
|
|
6
15
|
measurementStart: Vec3,
|
|
@@ -9,8 +18,25 @@ export function dxfEncDimension(
|
|
|
9
18
|
text: string,
|
|
10
19
|
col: DxfColor,
|
|
11
20
|
handleRef: Handle
|
|
12
|
-
):
|
|
21
|
+
): DxfDimensionDefinition {
|
|
22
|
+
const blockRecordHandle = dxfHandleNext(handleRef);
|
|
23
|
+
const blockName = `*D${blockRecordHandle}`;
|
|
24
|
+
return {
|
|
25
|
+
entity: dxfEncodeDimensionEntity(blockName, measurementStart, measurementEnd, linePosition, text, col, handleRef),
|
|
26
|
+
block: dxfEncodeDimensionBlock(blockName, blockRecordHandle, measurementStart, measurementEnd, linePosition, text, col, handleRef),
|
|
27
|
+
blockRecord: dxfEncodeDimensionBlockRecord(blockName, blockRecordHandle)
|
|
28
|
+
};
|
|
29
|
+
}
|
|
13
30
|
|
|
31
|
+
function dxfEncodeDimensionEntity(
|
|
32
|
+
blockName: string,
|
|
33
|
+
measurementStart: Vec3,
|
|
34
|
+
measurementEnd: Vec3,
|
|
35
|
+
linePosition: Vec3,
|
|
36
|
+
text: string,
|
|
37
|
+
col: DxfColor,
|
|
38
|
+
handleRef: Handle
|
|
39
|
+
): string {
|
|
14
40
|
return `0
|
|
15
41
|
DIMENSION
|
|
16
42
|
5
|
|
@@ -24,20 +50,38 @@ AcDbEntity
|
|
|
24
50
|
${dxfColor(col)}
|
|
25
51
|
100
|
|
26
52
|
AcDbDimension
|
|
27
|
-
|
|
28
|
-
|
|
53
|
+
2
|
|
54
|
+
${blockName}
|
|
29
55
|
10
|
|
30
|
-
${dxfRound(
|
|
56
|
+
${dxfRound(measurementEnd.x)}
|
|
31
57
|
20
|
|
32
58
|
${dxfRound(linePosition.y)}
|
|
33
59
|
30
|
|
34
60
|
${dxfRound(linePosition.z)}
|
|
61
|
+
11
|
|
62
|
+
${dxfRound(linePosition.x)}
|
|
63
|
+
21
|
|
64
|
+
${dxfRound(linePosition.y)}
|
|
65
|
+
31
|
|
66
|
+
${dxfRound(linePosition.z)}
|
|
35
67
|
70
|
|
36
68
|
33
|
|
37
69
|
1
|
|
38
70
|
${encodeDxfFormattedText(text)}
|
|
71
|
+
71
|
|
72
|
+
5
|
|
73
|
+
72
|
|
74
|
+
0
|
|
39
75
|
3
|
|
40
76
|
Standard
|
|
77
|
+
53
|
|
78
|
+
0
|
|
79
|
+
210
|
|
80
|
+
0
|
|
81
|
+
220
|
|
82
|
+
0
|
|
83
|
+
230
|
|
84
|
+
1
|
|
41
85
|
100
|
|
42
86
|
AcDbAlignedDimension
|
|
43
87
|
13
|
|
@@ -55,6 +99,103 @@ ${dxfRound(measurementEnd.z)}
|
|
|
55
99
|
`;
|
|
56
100
|
}
|
|
57
101
|
|
|
102
|
+
function dxfEncodeDimensionBlockRecord(
|
|
103
|
+
blockName: string,
|
|
104
|
+
blockRecordHandle: string,
|
|
105
|
+
): string {
|
|
106
|
+
return `0
|
|
107
|
+
BLOCK_RECORD
|
|
108
|
+
5
|
|
109
|
+
${blockRecordHandle}
|
|
110
|
+
330
|
|
111
|
+
${DXF_BLOCK_RECORD_HANDLE}
|
|
112
|
+
100
|
|
113
|
+
AcDbSymbolTableRecord
|
|
114
|
+
100
|
|
115
|
+
AcDbBlockTableRecord
|
|
116
|
+
2
|
|
117
|
+
${blockName}
|
|
118
|
+
`;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
function dxfEncodeDimensionBlock(
|
|
122
|
+
blockName: string,
|
|
123
|
+
blockRecordHandle: string,
|
|
124
|
+
measurementStart: Vec3,
|
|
125
|
+
measurementEnd: Vec3,
|
|
126
|
+
linePosition: Vec3,
|
|
127
|
+
text: string,
|
|
128
|
+
col: DxfColor,
|
|
129
|
+
handleRef: Handle
|
|
130
|
+
): string {
|
|
131
|
+
return `0
|
|
132
|
+
BLOCK
|
|
133
|
+
5
|
|
134
|
+
${dxfHandleNext(handleRef)}
|
|
135
|
+
330
|
|
136
|
+
${blockRecordHandle}
|
|
137
|
+
100
|
|
138
|
+
AcDbEntity
|
|
139
|
+
8
|
|
140
|
+
0
|
|
141
|
+
100
|
|
142
|
+
AcDbBlockBegin
|
|
143
|
+
2
|
|
144
|
+
${blockName}
|
|
145
|
+
70
|
|
146
|
+
1
|
|
147
|
+
10
|
|
148
|
+
0.0
|
|
149
|
+
20
|
|
150
|
+
0.0
|
|
151
|
+
30
|
|
152
|
+
0.0
|
|
153
|
+
3
|
|
154
|
+
${blockName}
|
|
155
|
+
1
|
|
156
|
+
|
|
157
|
+
${dxfEncodeDimensionGeometry(blockRecordHandle, measurementStart, measurementEnd, linePosition, text, col, handleRef)}0
|
|
158
|
+
ENDBLK
|
|
159
|
+
5
|
|
160
|
+
${dxfHandleNext(handleRef)}
|
|
161
|
+
330
|
|
162
|
+
${blockRecordHandle}
|
|
163
|
+
100
|
|
164
|
+
AcDbEntity
|
|
165
|
+
67
|
|
166
|
+
1
|
|
167
|
+
8
|
|
168
|
+
0
|
|
169
|
+
100
|
|
170
|
+
AcDbBlockEnd
|
|
171
|
+
`;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
function dxfEncodeDimensionGeometry(
|
|
175
|
+
blockRecordHandle: string,
|
|
176
|
+
measurementStart: Vec3,
|
|
177
|
+
measurementEnd: Vec3,
|
|
178
|
+
linePosition: Vec3,
|
|
179
|
+
text: string,
|
|
180
|
+
col: DxfColor,
|
|
181
|
+
handleRef: Handle
|
|
182
|
+
): string {
|
|
183
|
+
let entities = "";
|
|
184
|
+
|
|
185
|
+
const onCreateLine = (start: Vec3, end: Vec3, _norm: Vec3, _thickness: number, _mat: Material): void => {
|
|
186
|
+
entities += dxfEncLine(start, end, col, handleRef, blockRecordHandle);
|
|
187
|
+
};
|
|
188
|
+
const onCreateText = (pos: Vec3, measurement: string, fontSize: number, _mat: Material, rot: Vec3): void => {
|
|
189
|
+
entities += dxfEncMText(pos, measurement, rot.z, fontSize, handleRef, DxfMTextAttachment.MiddleCenter, blockRecordHandle);
|
|
190
|
+
};
|
|
191
|
+
const onCreatePolygon = (p1: Vec3, p2: Vec3, p3: Vec3, _mat: Material): void => {
|
|
192
|
+
entities += dxfEncSolidTriangle(p1, p2, p3, col, handleRef, blockRecordHandle);
|
|
193
|
+
};
|
|
194
|
+
|
|
195
|
+
dimensionMeshifyAlignedDimension({linePosition, measurementEnd, measurementStart, text}, vec3Zero, onCreateLine, onCreateText, onCreatePolygon);
|
|
196
|
+
return entities;
|
|
197
|
+
}
|
|
198
|
+
|
|
58
199
|
export function encodeDxfFormattedText(text: string): string {
|
|
59
200
|
return text.replace(/\r\n|\r|\n/g, "\\P");
|
|
60
201
|
}
|