abstract-3d 1.6.4 → 1.6.6

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 (53) hide show
  1. package/lib/abstract-3d.d.ts +1 -1
  2. package/lib/abstract-3d.d.ts.map +1 -1
  3. package/lib/abstract-3d.js +4 -4
  4. package/lib/abstract-3d.js.map +1 -1
  5. package/lib/renderers/dxf/color.d.ts +2 -0
  6. package/lib/renderers/dxf/color.d.ts.map +1 -1
  7. package/lib/renderers/dxf/color.js +3 -0
  8. package/lib/renderers/dxf/color.js.map +1 -1
  9. package/lib/renderers/dxf/dxf-encoding.d.ts +8 -8
  10. package/lib/renderers/dxf/dxf-encoding.d.ts.map +1 -1
  11. package/lib/renderers/dxf/dxf-encoding.js +36 -112
  12. package/lib/renderers/dxf/dxf-encoding.js.map +1 -1
  13. package/lib/renderers/dxf/dxf-geometries/dxf-box.d.ts.map +1 -1
  14. package/lib/renderers/dxf/dxf-geometries/dxf-box.js +7 -8
  15. package/lib/renderers/dxf/dxf-geometries/dxf-box.js.map +1 -1
  16. package/lib/renderers/dxf/dxf-geometries/dxf-cone.d.ts.map +1 -1
  17. package/lib/renderers/dxf/dxf-geometries/dxf-cone.js +7 -8
  18. package/lib/renderers/dxf/dxf-geometries/dxf-cone.js.map +1 -1
  19. package/lib/renderers/dxf/dxf-geometries/dxf-cylinder.d.ts.map +1 -1
  20. package/lib/renderers/dxf/dxf-geometries/dxf-cylinder.js +13 -16
  21. package/lib/renderers/dxf/dxf-geometries/dxf-cylinder.js.map +1 -1
  22. package/lib/renderers/dxf/dxf-geometries/dxf-image.d.ts.map +1 -1
  23. package/lib/renderers/dxf/dxf-geometries/dxf-image.js +12 -79
  24. package/lib/renderers/dxf/dxf-geometries/dxf-image.js.map +1 -1
  25. package/lib/renderers/dxf/dxf-geometries/dxf-plane.d.ts.map +1 -1
  26. package/lib/renderers/dxf/dxf-geometries/dxf-plane.js +2 -2
  27. package/lib/renderers/dxf/dxf-geometries/dxf-plane.js.map +1 -1
  28. package/lib/renderers/dxf/dxf-geometries/dxf-polygon.d.ts.map +1 -1
  29. package/lib/renderers/dxf/dxf-geometries/dxf-polygon.js +5 -5
  30. package/lib/renderers/dxf/dxf-geometries/dxf-polygon.js.map +1 -1
  31. package/lib/renderers/dxf/dxf-geometries/dxf-shape.d.ts.map +1 -1
  32. package/lib/renderers/dxf/dxf-geometries/dxf-shape.js +37 -13
  33. package/lib/renderers/dxf/dxf-geometries/dxf-shape.js.map +1 -1
  34. package/lib/renderers/dxf/dxf.d.ts.map +1 -1
  35. package/lib/renderers/dxf/dxf.js +9 -9
  36. package/lib/renderers/dxf/dxf.js.map +1 -1
  37. package/lib/renderers/svg/svg.js +4 -3
  38. package/lib/renderers/svg/svg.js.map +1 -1
  39. package/package.json +3 -3
  40. package/src/abstract-3d.ts +8 -8
  41. package/src/renderers/dxf/color.ts +5 -0
  42. package/src/renderers/dxf/dxf-encoding.ts +49 -124
  43. package/src/renderers/dxf/dxf-geometries/dxf-box.ts +7 -9
  44. package/src/renderers/dxf/dxf-geometries/dxf-cone.ts +7 -9
  45. package/src/renderers/dxf/dxf-geometries/dxf-cylinder.ts +15 -18
  46. package/src/renderers/dxf/dxf-geometries/dxf-image.ts +27 -97
  47. package/src/renderers/dxf/dxf-geometries/dxf-plane.ts +2 -3
  48. package/src/renderers/dxf/dxf-geometries/dxf-polygon.ts +5 -8
  49. package/src/renderers/dxf/dxf-geometries/dxf-shape.ts +37 -14
  50. package/src/renderers/dxf/dxf.ts +28 -22
  51. package/src/renderers/svg/svg.ts +5 -7
  52. package/src/.DS_Store +0 -0
  53. package/src/renderers/.DS_Store +0 -0
@@ -1,30 +1,54 @@
1
1
  import { vec3TransRot, vec3RotCombine, vec3Zero, vec3 } from "../../../abstract-3d.js";
2
- import { dxf3DFACE } from "../dxf-encoding.js";
3
- const chunkSize = 4;
2
+ import { dxfQuad, dxfTriangle } from "../dxf-encoding.js";
3
+ const QUAD_STRIDE = 4;
4
+ const TRIANGLE_STRIDE = 3;
4
5
  export function dxfPolygon(s, m, parentPos, parentRot, handleRef) {
5
6
  let polygonString = "";
6
7
  const pos = vec3TransRot(s.pos, parentPos, parentRot);
7
8
  const rot = vec3RotCombine(parentRot, s.rot ?? vec3Zero);
8
9
  const points = s.points.map((p) => vec3TransRot(vec3(p.x, p.y, 0), pos, rot));
9
- const mat = m.normal;
10
10
  let i = 0;
11
- if (points.length >= chunkSize) {
12
- for (i; i < points.length; i += chunkSize) {
13
- polygonString += dxf3DFACE(points[i], points[i + 1], points[i + 2], points[i + 3], mat, handleRef);
11
+ if (points.length >= QUAD_STRIDE) {
12
+ for (i; i < points.length; i += QUAD_STRIDE) {
13
+ const p1 = points[i];
14
+ const p2 = points[i + 1];
15
+ const p3 = points[i + 2];
16
+ const p4 = points[i + 3];
17
+ if (p1 && p2 && p3 && p4) {
18
+ polygonString += dxfQuad(p1, p2, p3, p4, m.normal, handleRef);
19
+ }
14
20
  }
15
21
  }
16
- if (i <= points.length && chunkSize - 1 <= points.length) {
22
+ if (i <= points.length && TRIANGLE_STRIDE <= points.length) {
17
23
  const lastArrayLength = points.length - i;
18
24
  switch (lastArrayLength) {
19
- case 1:
20
- polygonString += dxf3DFACE(points[i - 2], points[i - 1], points[i], points[i], mat, handleRef);
25
+ case 1: {
26
+ const p1 = points[i - 2];
27
+ const p2 = points[i - 1];
28
+ const p3 = points[i];
29
+ if (p1 && p2 && p3) {
30
+ polygonString += dxfTriangle(p1, p2, p3, m.normal, handleRef);
31
+ }
21
32
  break;
22
- case 2:
23
- polygonString += dxf3DFACE(points[i - 1], points[i], points[i + 1], points[i + 1], mat, handleRef);
33
+ }
34
+ case 2: {
35
+ const p1 = points[i - 1];
36
+ const p2 = points[i];
37
+ const p3 = points[i + 1];
38
+ if (p1 && p2 && p3) {
39
+ polygonString += dxfTriangle(p1, p2, p3, m.normal, handleRef);
40
+ }
24
41
  break;
25
- case 3:
26
- polygonString += dxf3DFACE(points[i], points[i + 1], points[i + 2], points[i + 2], mat, handleRef);
42
+ }
43
+ case 3: {
44
+ const p1 = points[i];
45
+ const p2 = points[i + 1];
46
+ const p3 = points[i + 2];
47
+ if (p1 && p2 && p3) {
48
+ polygonString += dxfTriangle(p1, p2, p3, m.normal, handleRef);
49
+ }
27
50
  break;
51
+ }
28
52
  default:
29
53
  break;
30
54
  }
@@ -1 +1 @@
1
- {"version":3,"file":"dxf-shape.js","sourceRoot":"","sources":["../../../../src/renderers/dxf/dxf-geometries/dxf-shape.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAE9G,OAAO,EAAE,SAAS,EAAU,MAAM,oBAAoB,CAAC;AAEvD,MAAM,SAAS,GAAG,CAAC,CAAC;AAEpB,MAAM,UAAU,UAAU,CAAC,CAAQ,EAAE,CAAW,EAAE,SAAe,EAAE,SAAe,EAAE,SAAiB;IACnG,IAAI,aAAa,GAAG,EAAE,CAAC;IACvB,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,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAC9E,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC;IACrB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,MAAM,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;QAC/B,KAAK,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC;YAC1C,aAAa,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAE,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAE,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAE,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAE,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;QACzG,CAAC;IACH,CAAC;IAED,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM,IAAI,SAAS,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QACzD,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QAC1C,QAAQ,eAAe,EAAE,CAAC;YACxB,KAAK,CAAC;gBACJ,aAAa,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAE,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAE,EAAE,MAAM,CAAC,CAAC,CAAE,EAAE,MAAM,CAAC,CAAC,CAAE,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;gBACnG,MAAM;YACR,KAAK,CAAC;gBACJ,aAAa,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAE,EAAE,MAAM,CAAC,CAAC,CAAE,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAE,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAE,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;gBACvG,MAAM;YACR,KAAK,CAAC;gBACJ,aAAa,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAE,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAE,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAE,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAE,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;gBACvG,MAAM;YACR;gBACE,MAAM;QACV,CAAC;IACH,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC"}
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,EACL,KAAK,EACL,IAAI,EAIJ,IAAI,EAcL,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAwB,SAAS,EAAU,MAAM,mBAAmB,CAAC;AAM5E,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAKxC,MAAM,MAAM,UAAU,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjH,MAAM,MAAM,QAAQ,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAA;CAAE,CAAC;AAE9G,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,MAAM,CAiBxG;AAED,eAAO,MAAM,MAAM,GAAI,OAAO,KAAK,EAAE,UAAU,QAAQ,CAAC,UAAU,CAAC,KAAG,MAKrE,CAAC;AAyGF,eAAO,MAAM,SAAS,GAAI,OAAO,KAAK,EAAE,UAAU,QAAQ,CAAC,UAAU,CAAC,KAAG,MAyBxE,CAAC"}
1
+ {"version":3,"file":"dxf.d.ts","sourceRoot":"","sources":["../../../src/renderers/dxf/dxf.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,IAAI,EAIJ,IAAI,EAeL,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAmD,SAAS,EAAU,MAAM,mBAAmB,CAAC;AAMvG,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAGxC,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;CACpC,CAAC;AAEF,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,UAAU,CAAC,GAAG,MAAM,CAiBxG;AAED,eAAO,MAAM,MAAM,GAAI,OAAO,KAAK,EAAE,UAAU,QAAQ,CAAC,UAAU,CAAC,KAAG,MAKrE,CAAC;AAsGF,eAAO,MAAM,SAAS,GAAI,OAAO,KAAK,EAAE,UAAU,QAAQ,CAAC,UAAU,CAAC,KAAG,MA2BxE,CAAC"}
@@ -1,12 +1,11 @@
1
- import { vec3RotCombine, vec3Zero, vec3TransRot, group, bounds3ToSize, vec3, rotationForCameraPos, bounds3FromPosAndSize, bounds3Merge, bounds3Center, vec3Add, sizeCenterBoundsForCameraPos, boundsScene, vec3Sub, } from "../../abstract-3d.js";
2
- import { dxf, dxfHandleCreate } from "./dxf-encoding.js";
1
+ import { vec3RotCombine, vec3Zero, vec3TransRot, group, bounds3ToSize, vec3, rotationForCameraPos, bounds3FromPosAndSize, bounds3Merge, bounds3Center, vec3Add, sizeBoundsForCameraPos, boundsScene, vec3Sub, vec3Rot, } from "../../abstract-3d.js";
2
+ import { DEFAULT_CIRCLE_SIDE_COUNT, dxf, dxfHandleCreate } from "./dxf-encoding.js";
3
3
  import { dxfPlane } from "./dxf-geometries/dxf-plane.js";
4
4
  import { dxfBox } from "./dxf-geometries/dxf-box.js";
5
5
  import { dxfCylinder } from "./dxf-geometries/dxf-cylinder.js";
6
6
  import { dxfCone } from "./dxf-geometries/dxf-cone.js";
7
7
  import { dxfPolygon } from "./dxf-geometries/dxf-polygon.js";
8
8
  import { dxfImage } from "./dxf-geometries/dxf-image.js";
9
- const DEFAULT_CYLINDER_SIDE_COUNT = 18;
10
9
  export function renderScenes(scenes, baseOptions) {
11
10
  let allGroups = "";
12
11
  const allBounds = Array();
@@ -28,10 +27,11 @@ export const render = (scene, options) => {
28
27
  };
29
28
  const renderInternal = (scene, options, offset, handleRef) => {
30
29
  const unitRot = vec3RotCombine(rotationForCameraPos(options.view), scene.rotation_deprecated ?? vec3Zero);
31
- const [size, center] = sizeCenterBoundsForCameraPos(scene.size_deprecated, scene.center_deprecated ?? vec3Zero, unitRot);
32
- const bounds = bounds3FromPosAndSize(center, size);
30
+ const rotatedCenter = vec3Rot(scene.center_deprecated ?? vec3Zero, vec3Zero, scene.rotation_deprecated ?? vec3Zero);
31
+ const [size] = sizeBoundsForCameraPos(scene.size_deprecated, rotatedCenter, unitRot);
32
+ const bounds = bounds3FromPosAndSize(rotatedCenter, size);
33
33
  const dxfOriginOffset = originOffsetFromBounds(bounds, options.origin);
34
- const pos = vec3NegateY(vec3Add(center, vec3Add(offset, dxfOriginOffset)));
34
+ const pos = vec3NegateY(vec3Add(rotatedCenter, vec3Add(offset, dxfOriginOffset)));
35
35
  return {
36
36
  groups: scene.groups.reduce((a, c) => a + dxfGroup(c, pos, unitRot, options, handleRef), ""),
37
37
  size,
@@ -42,7 +42,7 @@ function vec3NegateY(vec) {
42
42
  return {
43
43
  x: vec.x,
44
44
  y: -vec.y,
45
- z: vec.z
45
+ z: vec.z,
46
46
  };
47
47
  }
48
48
  function originOffsetFromScenes(scenes, origin) {
@@ -107,7 +107,7 @@ function optionsDef(options) {
107
107
  return {
108
108
  view: options?.view ?? "front",
109
109
  origin: options?.origin ?? "BottomLeftFront",
110
- cylinderSideCount: DEFAULT_CYLINDER_SIDE_COUNT,
110
+ cylinderSideCount: DEFAULT_CIRCLE_SIDE_COUNT,
111
111
  };
112
112
  }
113
113
  // This is the original
@@ -127,7 +127,7 @@ export const renderOld = (scene, options) => {
127
127
  x: bounds.min.x + offset.x,
128
128
  y: bounds.min.y + offset.y,
129
129
  z: bounds.min.z + offset.z,
130
- }
130
+ },
131
131
  };
132
132
  const bounds2 = bounds3FromPosAndSize(offset, scene.size_deprecated);
133
133
  const groupRoot = group([], offset, vec3Zero, scene.groups);
@@ -1 +1 @@
1
- {"version":3,"file":"dxf.js","sourceRoot":"","sources":["../../../src/renderers/dxf/dxf.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dxf.js","sourceRoot":"","sources":["../../../src/renderers/dxf/dxf.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { exhaustiveCheck } from "ts-exhaustive-check";
2
- import { vec2, vec3Rot, vec3Zero, vec3RotCombine, vec3, vec3TransRot, rotationForCameraPos, sizeCenterBoundsForCameraPos, bounds2FromPosAndSize, bounds2ToSize, bounds2Merge, vec2Zero, vec3Flip, } from "../../abstract-3d.js";
2
+ import { vec2, vec3Rot, vec3Zero, vec3RotCombine, vec3, vec3TransRot, rotationForCameraPos, sizeBoundsForCameraPos, bounds2FromPosAndSize, bounds2ToSize, bounds2Merge, vec2Zero, vec3Flip, } from "../../abstract-3d.js";
3
3
  import { box } from "./svg-geometries/svg-box.js";
4
4
  import { cylinder } from "./svg-geometries/svg-cylinder.js";
5
5
  import { line } from "./svg-geometries/svg-line.js";
@@ -42,11 +42,12 @@ function renderInternal(scene, options, offset) {
42
42
  };
43
43
  const baseRot = vec3RotCombine(rotationForCameraPos(opts.view), scene.rotation_deprecated ?? vec3Zero);
44
44
  const unitRot = opts.rotation ? vec3RotCombine(vec3(0, 0, (opts.rotation * Math.PI) / 180), baseRot) : baseRot;
45
- const [unitSize, unitCenter] = sizeCenterBoundsForCameraPos(scene.size_deprecated, scene.center_deprecated ?? vec3Zero, unitRot);
45
+ const rotatedCenter = vec3Rot(scene.center_deprecated ?? vec3Zero, vec3Zero, scene.rotation_deprecated ?? vec3Zero);
46
+ const [unitSize] = sizeBoundsForCameraPos(scene.size_deprecated, rotatedCenter, unitRot);
46
47
  const svgSize = vec2(unitSize.x + 1.5 * opts.stroke_thickness, unitSize.y + 1.5 * opts.stroke_thickness);
47
48
  const svgCenter = vec2(offset.x + opts.stroke_thickness * 0.75, offset.y + opts.stroke_thickness * 0.75);
48
49
  const point = (x, y) => vec2(svgCenter.x + x, svgCenter.y - y);
49
- const unitCenterFlipped = vec3Flip(unitCenter);
50
+ const unitCenterFlipped = vec3Flip(rotatedCenter);
50
51
  const elements = Array();
51
52
  for (const g of scene.groups) {
52
53
  elements.push(...svgGroup(g, unitCenterFlipped, unitRot, point, opts));
@@ -1 +1 @@
1
- {"version":3,"file":"svg.js","sourceRoot":"","sources":["../../../src/renderers/svg/svg.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"svg.js","sourceRoot":"","sources":["../../../src/renderers/svg/svg.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "abstract-3d",
3
- "version": "1.6.4",
3
+ "version": "1.6.6",
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",
@@ -22,7 +22,7 @@
22
22
  "@react-three/drei": "^10.7.6",
23
23
  "@react-three/fiber": "^9.4.0",
24
24
  "@react-three/postprocessing": "3.0.4",
25
- "abstract-image": "^13.0.30",
25
+ "abstract-image": "^13.0.34",
26
26
  "suspend-react": "^0.1.3",
27
27
  "three": "^0.180.0",
28
28
  "ts-exhaustive-check": "^1.0.0"
@@ -36,5 +36,5 @@
36
36
  "@types/three": "^0.180.0",
37
37
  "react": "^19.0.0"
38
38
  },
39
- "gitHead": "d256968c1d2e7ca2b71e6a699e9c60ae70778005"
39
+ "gitHead": "dbb606e3c3087cff172929e1724d888d5cfa42ef"
40
40
  }
@@ -73,9 +73,9 @@ export type Image = {
73
73
  readonly rot?: Vec3;
74
74
  readonly size: Vec2;
75
75
  readonly image: {
76
- readonly type: "AbstractImage",
77
- readonly image: AbstractImage,
78
- }
76
+ readonly type: "AbstractImage";
77
+ readonly image: AbstractImage;
78
+ };
79
79
  };
80
80
 
81
81
  export type Cylinder = {
@@ -733,7 +733,7 @@ export const image = (
733
733
  material: Material,
734
734
  image: Image["image"],
735
735
  pos: Vec3 = vec3Zero,
736
- rot: Vec3 = vec3Zero,
736
+ rot: Vec3 = vec3Zero
737
737
  ): Mesh => ({
738
738
  material,
739
739
  geometry: {
@@ -742,7 +742,7 @@ export const image = (
742
742
  pos,
743
743
  size,
744
744
  rot,
745
- }
745
+ },
746
746
  });
747
747
 
748
748
  export const roundHole = (pos: Vec2, radius: number): Hole => ({ type: "RoundHole", pos, radius });
@@ -840,9 +840,9 @@ export const splineCurve = (points: ReadonlyArray<Vec3>): SplineCurve => ({ type
840
840
 
841
841
  // -- Camera
842
842
 
843
- export function sizeCenterBoundsForCameraPos(size: Vec3, center: Vec3, rotation: Vec3): readonly [Vec3, Vec3, Bounds3] {
843
+ export function sizeBoundsForCameraPos(size: Vec3, center: Vec3, rotation: Vec3): readonly [Vec3, Bounds3] {
844
844
  if (isZero(rotation.x) && isZero(rotation.y) && isZero(rotation.z)) {
845
- return [size, center, bounds3FromPosAndSize(center, size)];
845
+ return [size, bounds3FromPosAndSize(center, size)];
846
846
  }
847
847
 
848
848
  const half = vec3Scale(size, 0.5);
@@ -858,7 +858,7 @@ export function sizeCenterBoundsForCameraPos(size: Vec3, center: Vec3, rotation:
858
858
  const v8 = vec3Rot(vec3(min.x, max.y, min.z), center, rotation);
859
859
  const bounds = bounds3FromVec3Array([v1, v2, v3, v4, v5, v6, v7, v8]);
860
860
 
861
- return [bounds3ToSize(bounds), bounds3Center(bounds), bounds];
861
+ return [bounds3ToSize(bounds), bounds];
862
862
  }
863
863
 
864
864
  export function rotationForCameraPos(view: View): Vec3 {
@@ -1,3 +1,4 @@
1
+ import { Color } from "abstract-image";
1
2
  import { Vec3, vec3, vec3DistSquared } from "../../abstract-3d.js";
2
3
 
3
4
  export function colorToInteger(color: string): number {
@@ -10,6 +11,10 @@ export function colorToInteger(color: string): number {
10
11
  return colorAsInt;
11
12
  }
12
13
 
14
+ export function colorHexFromAbstractImageColor(color: Color): string {
15
+ return `rgba(${color.r}, ${color.g}, ${color.b}, ${color.a})`
16
+ }
17
+
13
18
  export function color(colorNormal: string | undefined): number {
14
19
  const ERROR_COLOR = 6; //magenta
15
20
  const ACI_COLOR_COUNT = 256;
@@ -1,21 +1,23 @@
1
1
  /* eslint-disable max-lines */
2
- import { Bounds3, Vec3 } from "../../abstract-3d.js";
3
2
  import { generateUUID } from "three/src/math/MathUtils.js";
3
+ import { Bounds3, Vec3, vec3Add, vec3Scale } from "../../abstract-3d.js";
4
4
  import { colorToInteger } from "./color.js";
5
5
 
6
- const DXF_DEFAULT_HANDLE: number = 0x1000;
7
- const DXF_MODEL_SPACE_HANDLE: string = (0x1D).toString(16);
6
+ export const DEFAULT_CIRCLE_SIDE_COUNT = 16;
7
+ const DXF_MAKER = "DXF Generated from Divid Abstract 3D";
8
+ const DXF_STANDARD = "AC1015";
9
+ const DXF_DEFAULT_HANDLE = 0x1000;
10
+ const DXF_MODEL_SPACE_HANDLE = "1D";
8
11
 
9
12
  export type DxfOrigin = "BottomLeftFront" | "Center";
10
13
  export type DxfDynamicColor = 7; // this color becomes white on a black background and black on a white background (therefore theme/dxf viewer dependent)
14
+ export type Handle = { handle: number };
11
15
 
12
16
  export function dxf(groups: string, bounds: Bounds3, size: Vec3, center: Vec3): string {
13
17
  const id = generateUUID();
14
18
  return dxfHeader(bounds, center, id, size) + groups + dxfFooter(id);
15
19
  }
16
20
 
17
- export type Handle = { handle: number };
18
-
19
21
  export function dxfHandleCreate(): Handle {
20
22
  return {
21
23
  handle: DXF_DEFAULT_HANDLE,
@@ -31,7 +33,7 @@ function dxfRound(n: number): number {
31
33
  return Math.round((n + Number.EPSILON) * 10 ** d) / 10 ** d;
32
34
  }
33
35
 
34
- export const dxf3DFACE = (
36
+ export const dxfQuad = (
35
37
  vec1: Vec3,
36
38
  vec2: Vec3,
37
39
  vec3: Vec3,
@@ -83,122 +85,45 @@ ${dxfRound(vec4.y)}
83
85
  ${dxfRound(vec4.z)}
84
86
  `;
85
87
 
86
- export const dxfPOLYLINE = (vertices: readonly Vec3[], color: string): string =>
87
- ` 0
88
- POLYLINE
89
- 8
90
- A3D
91
- 62
92
- ${color}
93
- 66
94
- 1${vertices.map(
95
- (v) =>
96
- `
97
- 0
98
- VERTEX
99
- 8
100
- A3D
101
- 10
102
- ${dxfRound(v.x)}
103
- 20
104
- ${dxfRound(v.y)}
105
- 30
106
- ${dxfRound(v.z)}`
107
- )}
108
- 0
109
- SEQEND
110
- `;
111
-
112
- export const dxfText = (pos: Vec3, fontSize: number, text: string, color: string): string =>
113
- ` 0
114
- Text
115
- 8
116
- A3D
117
- 62
118
- ${color}
119
- 10
120
- ${dxfRound(pos.x)}
121
- 20
122
- ${dxfRound(pos.y)}
123
- 30
124
- ${dxfRound(pos.z)}
125
- 11
126
- ${dxfRound(pos.x)}
127
- 21
128
- ${dxfRound(pos.y)}
129
- 31
130
- ${dxfRound(pos.z)}
131
- 40
132
- ${fontSize}
133
- 1
134
- ${text}
135
- `;
88
+ export const dxfTriangle = (
89
+ vec1: Vec3,
90
+ vec2: Vec3,
91
+ vec3: Vec3,
92
+ col: string | DxfDynamicColor,
93
+ handleRef: Handle
94
+ ): string => dxfQuad(vec1, vec2, vec3, vec3, col, handleRef);
136
95
 
137
- export const dxf3DLine = (start: Vec3, end: Vec3, color: string, handleRef: Handle): string =>
138
- ` 0
139
- LINE
140
- 5
141
- ${dxfHandle(handleRef)}
142
- 100
143
- AcDbEntity
144
- 8
145
- A3D
146
- 100
147
- AcDbLine
148
- 10
149
- ${dxfRound(start.x)}
150
- 20
151
- ${dxfRound(start.y)}
152
- 30
153
- ${dxfRound(start.z)}
154
- 11
155
- ${dxfRound(end.x)}
156
- 21
157
- ${dxfRound(end.y)}
158
- 31
159
- ${dxfRound(end.z)}
160
- `;
96
+ export function dxfPolyline(
97
+ points: ReadonlyArray<Vec3>,
98
+ col: string | DxfDynamicColor,
99
+ closed: boolean,
100
+ handleRef: Handle
101
+ ): string {
102
+ let dxf = "";
103
+ for(let i = 0; i < points.length; i++) {
104
+ const p1 = points[i];
105
+ const p2 = points[i+1];
106
+ if(p1 && p2) {
107
+ dxf += dxfLine(p1, p2, col, handleRef);
108
+ }
109
+ }
110
+ if(closed) {
111
+ const start = points[0];
112
+ const end = points[points.length - 1];
113
+ if(start && end) {
114
+ dxf += dxfLine(start, end, col, handleRef);
115
+ }
116
+ }
117
+ return dxf;
118
+ }
161
119
 
162
- export const dxf3DEllipse = (center: Vec3, major: Vec3, minor: Vec3, color: string, handleRef: Handle): string =>
163
- ` 0
164
- ELLIPSE
165
- 5
166
- ${dxfHandle(handleRef)}
167
- 100
168
- AcDbEntity
169
- 8
170
- A3D
171
- 100
172
- AcDbEllipse
173
- 10
174
- ${dxfRound(center.x)}
175
- 20
176
- ${dxfRound(center.y)}
177
- 30
178
- ${dxfRound(center.z)}
179
- 11
180
- ${dxfRound(major.x - center.x)}
181
- 21
182
- ${dxfRound(major.y - center.y)}
183
- 31
184
- ${dxfRound(major.z - center.z)}
185
- 40
186
- 1
187
- 41
188
- 0.0
189
- 42
190
- 6.2831
191
- 210
192
- 0
193
- 220
194
- 1
195
- 230
196
- 0
197
- `;
120
+ export function dxfLine(vecStart: Vec3, vecEnd: Vec3, col: string | DxfDynamicColor, handleRef: Handle): string {
121
+ return dxfQuad(vecStart, vecStart, vecEnd, vecEnd, col, handleRef);
122
+ }
198
123
 
199
- export const dxfHeader = (bounds: Bounds3, center: Vec3, groupId: string, size: Vec3): string =>
124
+ export const dxfHeader = (bounds: Bounds3, center: Vec3, blockId: string, size: Vec3): string =>
200
125
  ` 999
201
- DXF Generated from Divid Abstract 3D
126
+ ${DXF_MAKER}
202
127
  0
203
128
  SECTION
204
129
  2
@@ -206,7 +131,7 @@ HEADER
206
131
  9
207
132
  $ACADVER
208
133
  1
209
- AC1015
134
+ ${DXF_STANDARD}
210
135
  9
211
136
  $ACADMAINTVER
212
137
  70
@@ -1716,7 +1641,7 @@ AcDbSymbolTableRecord
1716
1641
  100
1717
1642
  AcDbBlockTableRecord
1718
1643
  2
1719
- ${groupId}
1644
+ ${blockId}
1720
1645
  340
1721
1646
  0
1722
1647
  102
@@ -1826,7 +1751,7 @@ A3D
1826
1751
  100
1827
1752
  AcDbBlockBegin
1828
1753
  2
1829
- ${groupId}
1754
+ ${blockId}
1830
1755
  70
1831
1756
  0
1832
1757
  10
@@ -1836,12 +1761,12 @@ ${groupId}
1836
1761
  30
1837
1762
  0.0
1838
1763
  3
1839
- ${groupId}
1764
+ ${blockId}
1840
1765
  1
1841
1766
 
1842
1767
  `;
1843
1768
 
1844
- export const dxfFooter = (groupId: string): string => ` 0
1769
+ export const dxfFooter = (blockId: string): string => ` 0
1845
1770
  ENDBLK
1846
1771
  5
1847
1772
  AA2
@@ -1874,7 +1799,7 @@ Continuous
1874
1799
  100
1875
1800
  AcDbBlockReference
1876
1801
  2
1877
- ${groupId}
1802
+ ${blockId}
1878
1803
  10
1879
1804
  0.0
1880
1805
  20
@@ -1,6 +1,5 @@
1
1
  import { Box, Material, Vec3, vec3TransRot, vec3RotCombine, vec3Zero, vec3Scale, vec3 } from "../../../abstract-3d.js";
2
- import { color } from "../color.js";
3
- import { dxf3DFACE, Handle } from "../dxf-encoding.js";
2
+ import { dxfQuad, Handle } from "../dxf-encoding.js";
4
3
 
5
4
  export function dxfBox(b: Box, m: Material, parentPos: Vec3, parentRot: Vec3, handleRef: Handle): string {
6
5
  const pos = vec3TransRot(b.pos, parentPos, parentRot);
@@ -16,13 +15,12 @@ export function dxfBox(b: Box, m: Material, parentPos: Vec3, parentRot: Vec3, ha
16
15
  const v6 = vec3tr3(half.x, -half.y, -half.z);
17
16
  const v7 = vec3tr3(half.x, half.y, -half.z);
18
17
  const v8 = vec3tr3(-half.x, half.y, -half.z);
19
- const mat = m.normal;
20
18
  return (
21
- dxf3DFACE(v1, v2, v3, v4, mat, handleRef) + // front
22
- dxf3DFACE(v5, v6, v7, v8, mat, handleRef) + // Back
23
- dxf3DFACE(v5, v1, v4, v8, mat, handleRef) + // Left
24
- dxf3DFACE(v6, v2, v3, v7, mat, handleRef) + // Right
25
- dxf3DFACE(v8, v7, v3, v4, mat, handleRef) + // Top
26
- dxf3DFACE(v5, v6, v2, v1, mat, handleRef) // Bottom
19
+ dxfQuad(v1, v2, v3, v4, m.normal, handleRef) + // front
20
+ dxfQuad(v5, v6, v7, v8, m.normal, handleRef) + // Back
21
+ dxfQuad(v5, v1, v4, v8, m.normal, handleRef) + // Left
22
+ dxfQuad(v6, v2, v3, v7, m.normal, handleRef) + // Right
23
+ dxfQuad(v8, v7, v3, v4, m.normal, handleRef) + // Top
24
+ dxfQuad(v5, v6, v2, v1, m.normal, handleRef) // Bottom
27
25
  );
28
26
  }
@@ -1,6 +1,5 @@
1
1
  import { Cone, Material, Vec3, vec3TransRot, vec3RotCombine, vec3Zero, vec3 } from "../../../abstract-3d.js";
2
- import { color } from "../color.js";
3
- import { dxf3DFACE, Handle } from "../dxf-encoding.js";
2
+ import { dxfTriangle, Handle } from "../dxf-encoding.js";
4
3
 
5
4
  export function dxfCone(
6
5
  c: Cone,
@@ -13,25 +12,24 @@ export function dxfCone(
13
12
  let dxfString = "";
14
13
  const pos = vec3TransRot(c.pos, parentPos, parentRot);
15
14
  const rot = vec3RotCombine(parentRot, c.rot ?? vec3Zero);
16
- const vec3tr2 = (x: number, y: number, z: number): Vec3 => vec3TransRot(vec3(x, y, z), pos, rot);
17
- const mat = m.normal;
15
+ const vec3tr = (x: number, y: number, z: number): Vec3 => vec3TransRot(vec3(x, y, z), pos, rot);
18
16
  const angleStep = (2 * Math.PI) / sides;
19
17
  let currentAngle = 0;
20
18
 
21
19
  const half = c.length / 2;
22
- const botPos = vec3tr2(0, -half, 0);
23
- const topPos = vec3tr2(0, half, 0);
20
+ const botPos = vec3tr(0, -half, 0);
21
+ const topPos = vec3tr(0, half, 0);
24
22
 
25
23
  const botVec3Array = Array<Vec3>();
26
24
  for (let i = 0; i <= sides; i++) {
27
- const currBot = vec3tr2(Math.sin(currentAngle) * c.radius, -half, Math.cos(currentAngle) * c.radius);
25
+ const currBot = vec3tr(Math.sin(currentAngle) * c.radius, -half, Math.cos(currentAngle) * c.radius);
28
26
  botVec3Array.push(currBot);
29
27
 
30
28
  if (i !== 0) {
31
29
  const prevBot = botVec3Array[i - 1]!;
32
30
  dxfString +=
33
- dxf3DFACE(botPos, prevBot, currBot, currBot, mat, handleRef) +
34
- dxf3DFACE(currBot, prevBot, topPos, topPos, mat, handleRef);
31
+ dxfTriangle(botPos, prevBot, currBot, m.normal, handleRef) +
32
+ dxfTriangle(currBot, prevBot, topPos, m.normal, handleRef);
35
33
  }
36
34
  currentAngle += angleStep;
37
35
  }