abstract-3d 2.7.29 → 2.7.32

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 (208) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/lib/abstract-3d.d.ts +1 -1
  3. package/lib/abstract-3d.d.ts.map +1 -1
  4. package/lib/abstract-3d.js +20 -12
  5. package/lib/abstract-3d.js.map +1 -1
  6. package/lib/renderers/dxf/dxf-encoding/dxf-3dface.d.ts.map +1 -1
  7. package/lib/renderers/dxf/dxf-encoding/dxf-dimension.d.ts +1 -1
  8. package/lib/renderers/dxf/dxf-encoding/dxf-dimension.d.ts.map +1 -1
  9. package/lib/renderers/dxf/dxf-encoding/dxf-dimension.js +3 -3
  10. package/lib/renderers/dxf/dxf-encoding/dxf-dimension.js.map +1 -1
  11. package/lib/renderers/dxf/dxf-encoding/dxf-footer.d.ts.map +1 -1
  12. package/lib/renderers/dxf/dxf-encoding/dxf-header.d.ts.map +1 -1
  13. package/lib/renderers/dxf/dxf-encoding/dxf-header.js.map +1 -1
  14. package/lib/renderers/dxf/dxf-encoding/dxf-lwpolyline.d.ts.map +1 -1
  15. package/lib/renderers/dxf/dxf-encoding/dxf-lwpolyline.js.map +1 -1
  16. package/lib/renderers/dxf/dxf-encoding/dxf-mtext.js.map +1 -1
  17. package/lib/renderers/dxf/dxf-encoding/dxf-solid.d.ts.map +1 -1
  18. package/lib/renderers/dxf/dxf-encoding/dxf-triangle.d.ts.map +1 -1
  19. package/lib/renderers/dxf/dxf-geometries/dxf-image.d.ts +1 -1
  20. package/lib/renderers/dxf/dxf-geometries/dxf-image.d.ts.map +1 -1
  21. package/lib/renderers/dxf/dxf-geometries/dxf-image.js +1 -1
  22. package/lib/renderers/dxf/dxf-geometries/dxf-image.js.map +1 -1
  23. package/lib/renderers/dxf/dxf-geometries/dxf-polygon.js.map +1 -1
  24. package/lib/renderers/dxf/dxf-geometries/dxf-shape.js.map +1 -1
  25. package/lib/renderers/dxf/dxf.d.ts.map +1 -1
  26. package/lib/renderers/dxf/dxf.js +9 -5
  27. package/lib/renderers/dxf/dxf.js.map +1 -1
  28. package/lib/renderers/react/react-camera.d.ts +2 -2
  29. package/lib/renderers/react/react-camera.d.ts.map +1 -1
  30. package/lib/renderers/react/react-camera.js +3 -5
  31. package/lib/renderers/react/react-camera.js.map +1 -1
  32. package/lib/renderers/react/react-dimension.d.ts +2 -2
  33. package/lib/renderers/react/react-dimension.d.ts.map +1 -1
  34. package/lib/renderers/react/react-dimension.js +3 -3
  35. package/lib/renderers/react/react-dimension.js.map +1 -1
  36. package/lib/renderers/react/react-group.d.ts +4 -4
  37. package/lib/renderers/react/react-group.d.ts.map +1 -1
  38. package/lib/renderers/react/react-group.js.map +1 -1
  39. package/lib/renderers/react/react-hotspot.d.ts +2 -2
  40. package/lib/renderers/react/react-hotspot.d.ts.map +1 -1
  41. package/lib/renderers/react/react-hotspot.js +1 -1
  42. package/lib/renderers/react/react-hotspot.js.map +1 -1
  43. package/lib/renderers/react/react-image-material.d.ts +2 -2
  44. package/lib/renderers/react/react-image-material.d.ts.map +1 -1
  45. package/lib/renderers/react/react-image-material.js +1 -0
  46. package/lib/renderers/react/react-image-material.js.map +1 -1
  47. package/lib/renderers/react/react-material.d.ts +1 -1
  48. package/lib/renderers/react/react-material.d.ts.map +1 -1
  49. package/lib/renderers/react/react-material.js +1 -0
  50. package/lib/renderers/react/react-material.js.map +1 -1
  51. package/lib/renderers/react/react-mesh.d.ts +1 -1
  52. package/lib/renderers/react/react-mesh.d.ts.map +1 -1
  53. package/lib/renderers/react/react-mesh.js +4 -12
  54. package/lib/renderers/react/react-mesh.js.map +1 -1
  55. package/lib/renderers/react/react-scene.d.ts +5 -5
  56. package/lib/renderers/react/react-scene.d.ts.map +1 -1
  57. package/lib/renderers/react/react-scene.js +1 -0
  58. package/lib/renderers/react/react-scene.js.map +1 -1
  59. package/lib/renderers/react/react-types.d.ts +1 -1
  60. package/lib/renderers/react/react-types.d.ts.map +1 -1
  61. package/lib/renderers/react/react.d.ts +5 -5
  62. package/lib/renderers/react/react.d.ts.map +1 -1
  63. package/lib/renderers/react/react.js +1 -1
  64. package/lib/renderers/react/react.js.map +1 -1
  65. package/lib/renderers/step/step-encoding.d.ts +1 -1
  66. package/lib/renderers/step/step-encoding.d.ts.map +1 -1
  67. package/lib/renderers/step/step-encoding.js.map +1 -1
  68. package/lib/renderers/step/step-geometries/step-box.d.ts +2 -2
  69. package/lib/renderers/step/step-geometries/step-box.d.ts.map +1 -1
  70. package/lib/renderers/step/step-geometries/step-box.js.map +1 -1
  71. package/lib/renderers/step/step-geometries/step-cone.d.ts +2 -2
  72. package/lib/renderers/step/step-geometries/step-cone.d.ts.map +1 -1
  73. package/lib/renderers/step/step-geometries/step-cone.js +0 -1
  74. package/lib/renderers/step/step-geometries/step-cone.js.map +1 -1
  75. package/lib/renderers/step/step-geometries/step-cylinder.d.ts +2 -2
  76. package/lib/renderers/step/step-geometries/step-cylinder.d.ts.map +1 -1
  77. package/lib/renderers/step/step-geometries/step-cylinder.js +8 -23
  78. package/lib/renderers/step/step-geometries/step-cylinder.js.map +1 -1
  79. package/lib/renderers/step/step-geometries/step-plane.d.ts +2 -2
  80. package/lib/renderers/step/step-geometries/step-plane.d.ts.map +1 -1
  81. package/lib/renderers/step/step-geometries/step-plane.js +1 -1
  82. package/lib/renderers/step/step-geometries/step-plane.js.map +1 -1
  83. package/lib/renderers/step/step.d.ts +1 -1
  84. package/lib/renderers/step/step.d.ts.map +1 -1
  85. package/lib/renderers/step/step.js +1 -1
  86. package/lib/renderers/step/step.js.map +1 -1
  87. package/lib/renderers/stl/stl-encoding.d.ts +1 -1
  88. package/lib/renderers/stl/stl-encoding.d.ts.map +1 -1
  89. package/lib/renderers/stl/stl-encoding.js.map +1 -1
  90. package/lib/renderers/stl/stl-geometries/stl-box.d.ts +1 -1
  91. package/lib/renderers/stl/stl-geometries/stl-box.d.ts.map +1 -1
  92. package/lib/renderers/stl/stl-geometries/stl-box.js.map +1 -1
  93. package/lib/renderers/stl/stl-geometries/stl-cone.d.ts +1 -1
  94. package/lib/renderers/stl/stl-geometries/stl-cone.d.ts.map +1 -1
  95. package/lib/renderers/stl/stl-geometries/stl-cone.js.map +1 -1
  96. package/lib/renderers/stl/stl-geometries/stl-cylinder.d.ts +1 -1
  97. package/lib/renderers/stl/stl-geometries/stl-cylinder.d.ts.map +1 -1
  98. package/lib/renderers/stl/stl-geometries/stl-cylinder.js +1 -1
  99. package/lib/renderers/stl/stl-geometries/stl-cylinder.js.map +1 -1
  100. package/lib/renderers/stl/stl-geometries/stl-plane.d.ts +1 -1
  101. package/lib/renderers/stl/stl-geometries/stl-plane.d.ts.map +1 -1
  102. package/lib/renderers/stl/stl-geometries/stl-plane.js +1 -1
  103. package/lib/renderers/stl/stl-geometries/stl-plane.js.map +1 -1
  104. package/lib/renderers/stl/stl-geometries/stl-polygon.d.ts +1 -1
  105. package/lib/renderers/stl/stl-geometries/stl-polygon.d.ts.map +1 -1
  106. package/lib/renderers/stl/stl-geometries/stl-polygon.js.map +1 -1
  107. package/lib/renderers/stl/stl-geometries/stl-shape.d.ts +1 -1
  108. package/lib/renderers/stl/stl-geometries/stl-shape.d.ts.map +1 -1
  109. package/lib/renderers/stl/stl-geometries/stl-shape.js.map +1 -1
  110. package/lib/renderers/stl/stl.d.ts +1 -1
  111. package/lib/renderers/stl/stl.d.ts.map +1 -1
  112. package/lib/renderers/stl/stl.js.map +1 -1
  113. package/lib/renderers/svg/index.js +1 -0
  114. package/lib/renderers/svg/index.js.map +1 -1
  115. package/lib/renderers/svg/svg-encoding.d.ts +3 -3
  116. package/lib/renderers/svg/svg-encoding.d.ts.map +1 -1
  117. package/lib/renderers/svg/svg-encoding.js +6 -15
  118. package/lib/renderers/svg/svg-encoding.js.map +1 -1
  119. package/lib/renderers/svg/svg-geometries/shared.d.ts +1 -1
  120. package/lib/renderers/svg/svg-geometries/shared.d.ts.map +1 -1
  121. package/lib/renderers/svg/svg-geometries/shared.js.map +1 -1
  122. package/lib/renderers/svg/svg-geometries/svg-box.d.ts +2 -2
  123. package/lib/renderers/svg/svg-geometries/svg-box.d.ts.map +1 -1
  124. package/lib/renderers/svg/svg-geometries/svg-box.js +1 -1
  125. package/lib/renderers/svg/svg-geometries/svg-box.js.map +1 -1
  126. package/lib/renderers/svg/svg-geometries/svg-cone.d.ts +2 -2
  127. package/lib/renderers/svg/svg-geometries/svg-cone.d.ts.map +1 -1
  128. package/lib/renderers/svg/svg-geometries/svg-cone.js +1 -1
  129. package/lib/renderers/svg/svg-geometries/svg-cone.js.map +1 -1
  130. package/lib/renderers/svg/svg-geometries/svg-cylinder.d.ts +2 -2
  131. package/lib/renderers/svg/svg-geometries/svg-cylinder.d.ts.map +1 -1
  132. package/lib/renderers/svg/svg-geometries/svg-cylinder.js +1 -1
  133. package/lib/renderers/svg/svg-geometries/svg-cylinder.js.map +1 -1
  134. package/lib/renderers/svg/svg-geometries/svg-image.d.ts +2 -2
  135. package/lib/renderers/svg/svg-geometries/svg-image.d.ts.map +1 -1
  136. package/lib/renderers/svg/svg-geometries/svg-image.js +1 -1
  137. package/lib/renderers/svg/svg-geometries/svg-image.js.map +1 -1
  138. package/lib/renderers/svg/svg-geometries/svg-line.d.ts +2 -2
  139. package/lib/renderers/svg/svg-geometries/svg-line.d.ts.map +1 -1
  140. package/lib/renderers/svg/svg-geometries/svg-line.js.map +1 -1
  141. package/lib/renderers/svg/svg-geometries/svg-plane.d.ts +2 -2
  142. package/lib/renderers/svg/svg-geometries/svg-plane.d.ts.map +1 -1
  143. package/lib/renderers/svg/svg-geometries/svg-plane.js +1 -1
  144. package/lib/renderers/svg/svg-geometries/svg-plane.js.map +1 -1
  145. package/lib/renderers/svg/svg-geometries/svg-polygon.d.ts +2 -2
  146. package/lib/renderers/svg/svg-geometries/svg-polygon.d.ts.map +1 -1
  147. package/lib/renderers/svg/svg-geometries/svg-polygon.js +1 -1
  148. package/lib/renderers/svg/svg-geometries/svg-polygon.js.map +1 -1
  149. package/lib/renderers/svg/svg-geometries/svg-shape.d.ts +2 -2
  150. package/lib/renderers/svg/svg-geometries/svg-shape.d.ts.map +1 -1
  151. package/lib/renderers/svg/svg-geometries/svg-shape.js +1 -1
  152. package/lib/renderers/svg/svg-geometries/svg-shape.js.map +1 -1
  153. package/lib/renderers/svg/svg-geometries/svg-text.d.ts +2 -2
  154. package/lib/renderers/svg/svg-geometries/svg-text.d.ts.map +1 -1
  155. package/lib/renderers/svg/svg-geometries/svg-text.js.map +1 -1
  156. package/lib/renderers/svg/svg.d.ts +3 -3
  157. package/lib/renderers/svg/svg.d.ts.map +1 -1
  158. package/lib/renderers/svg/svg.js.map +1 -1
  159. package/lib/utils.d.ts +1 -1
  160. package/lib/utils.d.ts.map +1 -1
  161. package/lib/utils.js +0 -1
  162. package/lib/utils.js.map +1 -1
  163. package/package.json +3 -3
  164. package/src/abstract-3d.ts +91 -91
  165. package/src/custom_typings/react-three-fiber.d.ts +1 -1
  166. package/src/renderers/dxf/dxf-encoding/dxf-dimension.ts +57 -13
  167. package/src/renderers/dxf/dxf-encoding/dxf-lwpolyline.ts +1 -1
  168. package/src/renderers/dxf/dxf-geometries/dxf-image.ts +9 -9
  169. package/src/renderers/dxf/dxf.ts +67 -16
  170. package/src/renderers/react/react-camera.tsx +3 -4
  171. package/src/renderers/react/react-dimension.tsx +5 -5
  172. package/src/renderers/react/react-group.tsx +6 -4
  173. package/src/renderers/react/react-hotspot.tsx +3 -2
  174. package/src/renderers/react/react-image-material.tsx +3 -2
  175. package/src/renderers/react/react-material.tsx +1 -1
  176. package/src/renderers/react/react-mesh.tsx +28 -39
  177. package/src/renderers/react/react-scene.tsx +6 -5
  178. package/src/renderers/react/react-types.ts +1 -1
  179. package/src/renderers/react/react.tsx +7 -6
  180. package/src/renderers/step/step-encoding.ts +43 -44
  181. package/src/renderers/step/step-geometries/step-box.ts +3 -8
  182. package/src/renderers/step/step-geometries/step-cone.ts +3 -14
  183. package/src/renderers/step/step-geometries/step-cylinder.ts +49 -251
  184. package/src/renderers/step/step-geometries/step-plane.ts +4 -11
  185. package/src/renderers/step/step.ts +3 -19
  186. package/src/renderers/stl/stl-encoding.ts +2 -1
  187. package/src/renderers/stl/stl-geometries/stl-box.ts +2 -1
  188. package/src/renderers/stl/stl-geometries/stl-cone.ts +2 -1
  189. package/src/renderers/stl/stl-geometries/stl-cylinder.ts +3 -2
  190. package/src/renderers/stl/stl-geometries/stl-plane.ts +2 -10
  191. package/src/renderers/stl/stl-geometries/stl-polygon.ts +2 -1
  192. package/src/renderers/stl/stl-geometries/stl-shape.ts +2 -1
  193. package/src/renderers/stl/stl.ts +2 -1
  194. package/src/renderers/svg/svg-encoding.ts +7 -31
  195. package/src/renderers/svg/svg-geometries/shared.ts +2 -1
  196. package/src/renderers/svg/svg-geometries/svg-box.ts +4 -13
  197. package/src/renderers/svg/svg-geometries/svg-cone.ts +4 -13
  198. package/src/renderers/svg/svg-geometries/svg-cylinder.ts +4 -13
  199. package/src/renderers/svg/svg-geometries/svg-image.ts +6 -12
  200. package/src/renderers/svg/svg-geometries/svg-line.ts +4 -2
  201. package/src/renderers/svg/svg-geometries/svg-plane.ts +4 -14
  202. package/src/renderers/svg/svg-geometries/svg-polygon.ts +4 -11
  203. package/src/renderers/svg/svg-geometries/svg-shape.ts +4 -12
  204. package/src/renderers/svg/svg-geometries/svg-text.ts +6 -8
  205. package/src/renderers/svg/svg.ts +13 -17
  206. package/src/utils.ts +22 -27
  207. package/src/.DS_Store +0 -0
  208. package/src/renderers/.DS_Store +0 -0
@@ -1,6 +1,13 @@
1
- import { dimensionMeshifyAlignedDimension, type Material, type Vec3, DimensionAligned, View, vec3RotCombine, vec3, vec3Cross } from "../../../abstract-3d.js";
1
+ import { dimensionMeshifyAlignedDimension } from "../../../abstract-3d.js";
2
+ import type { DimensionAligned, View, Material, Vec3 } from "../../../abstract-3d.js";
2
3
  import { type DxfColor, dxfColor } from "./dxf-color.js";
3
- import { DXF_BLOCK_RECORD_TABLE_HANDLE, DXF_MODEL_SPACE_HANDLE, dxfHandleNext, dxfRound, type Handle } from "./dxf-common.js";
4
+ import {
5
+ DXF_BLOCK_RECORD_TABLE_HANDLE,
6
+ DXF_MODEL_SPACE_HANDLE,
7
+ dxfHandleNext,
8
+ dxfRound,
9
+ type Handle,
10
+ } from "./dxf-common.js";
4
11
  import { dxfEncLine } from "./dxf-line.js";
5
12
  import { DxfMTextAttachment, dxfEncMText, encodeDxfFormattedText } from "./dxf-mtext.js";
6
13
  import { dxfEncSolidTriangle } from "./dxf-triangle.js";
@@ -26,8 +33,20 @@ export function dxfEncDimension(
26
33
  const blockName = `*D${blockRecordHandle}`;
27
34
  return {
28
35
  entity: dxfEncodeDimensionEntity(blockName, measurementStart, measurementEnd, linePosition, text, col, handleRef),
29
- block: dxfEncodeDimensionBlock(blockName, blockRecordHandle, measurementStart, measurementEnd, linePosition, text, col, sceneRotation, viewRotation, views, handleRef),
30
- blockRecord: dxfEncodeDimensionBlockRecord(blockName, blockRecordHandle)
36
+ block: dxfEncodeDimensionBlock(
37
+ blockName,
38
+ blockRecordHandle,
39
+ measurementStart,
40
+ measurementEnd,
41
+ linePosition,
42
+ text,
43
+ col,
44
+ sceneRotation,
45
+ viewRotation,
46
+ views,
47
+ handleRef
48
+ ),
49
+ blockRecord: dxfEncodeDimensionBlockRecord(blockName, blockRecordHandle),
31
50
  };
32
51
  }
33
52
 
@@ -88,10 +107,7 @@ ${dxfRound(measurementEnd.z)}
88
107
  `;
89
108
  }
90
109
 
91
- function dxfEncodeDimensionBlockRecord(
92
- blockName: string,
93
- blockRecordHandle: string,
94
- ): string {
110
+ function dxfEncodeDimensionBlockRecord(blockName: string, blockRecordHandle: string): string {
95
111
  return `0
96
112
  BLOCK_RECORD
97
113
  5
@@ -146,7 +162,18 @@ ${blockName}
146
162
  ${blockName}
147
163
  1
148
164
 
149
- ${dxfEncodeDimensionGeometry(blockRecordHandle, measurementStart, measurementEnd, linePosition, text, col, sceneRotation, viewRotation, views, handleRef)}0
165
+ ${dxfEncodeDimensionGeometry(
166
+ blockRecordHandle,
167
+ measurementStart,
168
+ measurementEnd,
169
+ linePosition,
170
+ text,
171
+ col,
172
+ sceneRotation,
173
+ viewRotation,
174
+ views,
175
+ handleRef
176
+ )}0
150
177
  ENDBLK
151
178
  5
152
179
  ${dxfHandleNext(handleRef)}
@@ -180,8 +207,25 @@ function dxfEncodeDimensionGeometry(
180
207
  const onCreateLine = (start: Vec3, end: Vec3, _norm: Vec3, _thickness: number, _mat: Material): void => {
181
208
  entities += dxfEncLine(start, end, col, handleRef, blockRecordHandle);
182
209
  };
183
- const onCreateText = (pos: Vec3, measurement: string, fontSize: number, _mat: Material, _rot: Vec3, dir: Vec3, norm: Vec3): void => {
184
- entities += dxfEncMText(pos, measurement, dir, norm, fontSize, handleRef, DxfMTextAttachment.MiddleCenter, blockRecordHandle);
210
+ const onCreateText = (
211
+ pos: Vec3,
212
+ measurement: string,
213
+ fontSize: number,
214
+ _mat: Material,
215
+ _rot: Vec3,
216
+ dir: Vec3,
217
+ norm: Vec3
218
+ ): void => {
219
+ entities += dxfEncMText(
220
+ pos,
221
+ measurement,
222
+ dir,
223
+ norm,
224
+ fontSize,
225
+ handleRef,
226
+ DxfMTextAttachment.MiddleCenter,
227
+ blockRecordHandle
228
+ );
185
229
  };
186
230
  const onCreatePolygon = (p1: Vec3, p2: Vec3, p3: Vec3, _mat: Material): void => {
187
231
  entities += dxfEncSolidTriangle(p1, p2, p3, col, handleRef, blockRecordHandle);
@@ -191,8 +235,8 @@ function dxfEncodeDimensionGeometry(
191
235
  measurementStart,
192
236
  measurementEnd,
193
237
  text,
194
- views
238
+ views,
195
239
  };
196
240
  dimensionMeshifyAlignedDimension(dimension, sceneRotation, viewRotation, onCreateLine, onCreateText, onCreatePolygon);
197
241
  return entities;
198
- }
242
+ }
@@ -1,6 +1,6 @@
1
1
  import { vec3, vec3Cross, vec3Dot, vec3Length, vec3Normalize, vec3Sub, type Vec3 } from "../../../abstract-3d.js";
2
2
  import { type DxfColor, dxfColor } from "./dxf-color.js";
3
- import { DXF_MODEL_SPACE_HANDLE, dxfHandleNext, dxfOCSXYAxis, dxfRound, type Handle } from "./dxf-common.js";
3
+ import { DXF_MODEL_SPACE_HANDLE, dxfHandleNext, dxfOCSXYAxis, type Handle } from "./dxf-common.js";
4
4
 
5
5
  type LwPolylinePlane = {
6
6
  readonly pos: Vec3;
@@ -1,19 +1,19 @@
1
- import type { AbstractImage, Color, Component } from "abstract-image";
1
+ import { DEFAULT_CIRCLE_SIDE_COUNT, type Handle } from "../dxf-encoding/dxf-common.js";
2
+ import { dxfEncLine } from "../dxf-encoding/dxf-line.js";
3
+ import { dxfEncLwPolyline } from "../dxf-encoding/dxf-lwpolyline.js";
4
+ import type { AbstractImage, Component } from "abstract-image";
5
+ import type { DxfDynamicColor } from "../dxf-encoding/dxf-color.js";
2
6
  import {
3
7
  type ImageMesh,
4
8
  type Vec3,
5
9
  vec2Scale,
6
- vec3TransRot,
7
- vec3RotCombine,
8
- vec3Zero,
9
10
  vec3,
10
- vec3Rot,
11
11
  vec3Add,
12
+ vec3Rot,
13
+ vec3RotCombine,
14
+ vec3TransRot,
15
+ vec3Zero,
12
16
  } from "../../../abstract-3d.js";
13
- import { DEFAULT_CIRCLE_SIDE_COUNT, type Handle } from "../dxf-encoding/dxf-common.js";
14
- import { DxfDynamicColor } from "../dxf-encoding/dxf-color.js";
15
- import { dxfEncLine } from "../dxf-encoding/dxf-line.js";
16
- import { dxfEncLwPolyline } from "../dxf-encoding/dxf-lwpolyline.js";
17
17
 
18
18
  export function dxfImage(i: ImageMesh, parentPos: Vec3, parentRot: Vec3, handleRef: Handle): string {
19
19
  const half = vec2Scale(i.size, 0.5);
@@ -18,9 +18,15 @@ import {
18
18
  vec3RotCombine,
19
19
  vec3Sub,
20
20
  vec3TransRot,
21
- vec3Zero
21
+ vec3Zero,
22
22
  } from "../../abstract-3d.js";
23
- import { DEFAULT_CIRCLE_SIDE_COUNT, type DxfOrigin, type Handle, dxfBuild, dxfHandleInit } from "./dxf-encoding/dxf-common.js";
23
+ import {
24
+ DEFAULT_CIRCLE_SIDE_COUNT,
25
+ type DxfOrigin,
26
+ type Handle,
27
+ dxfBuild,
28
+ dxfHandleInit,
29
+ } from "./dxf-encoding/dxf-common.js";
24
30
  import { type Optional, calculateVisibleViews } from "../../utils.js";
25
31
  import { dxfPlane } from "./dxf-geometries/dxf-plane.js";
26
32
  import { dxfBox } from "./dxf-geometries/dxf-box.js";
@@ -29,7 +35,7 @@ import { dxfCone } from "./dxf-geometries/dxf-cone.js";
29
35
  import { dxfPolygon } from "./dxf-geometries/dxf-polygon.js";
30
36
  import { dxfImage } from "./dxf-geometries/dxf-image.js";
31
37
  import { dxfDimension } from "./dxf-geometries/dxf-dimension.js";
32
- import { DxfDimensionDefinition } from "./dxf-encoding/dxf-dimension.js";
38
+ import type { DxfDimensionDefinition } from "./dxf-encoding/dxf-dimension.js";
33
39
 
34
40
  export type DxfOptions = {
35
41
  readonly view: View;
@@ -68,7 +74,7 @@ export function renderScenes(scenes: ReadonlyArray<DxfScene>, baseOptions?: Opti
68
74
  allDimensions = {
69
75
  entity: allDimensions.entity + dimensions.entity,
70
76
  block: allDimensions.block + dimensions.block,
71
- blockRecord: allDimensions.blockRecord + dimensions.blockRecord
77
+ blockRecord: allDimensions.blockRecord + dimensions.blockRecord,
72
78
  };
73
79
  allBounds.push(bounds3FromPosAndSize(center, size));
74
80
  }
@@ -88,7 +94,12 @@ const renderInternal = (
88
94
  options: DxfOptions,
89
95
  offset: Vec3,
90
96
  handleRef: Handle
91
- ): { readonly groups: string; readonly dimensions: DxfDimensionDefinition; readonly size: Vec3; readonly center: Vec3 } => {
97
+ ): {
98
+ readonly groups: string;
99
+ readonly dimensions: DxfDimensionDefinition;
100
+ readonly size: Vec3;
101
+ readonly center: Vec3;
102
+ } => {
92
103
  const viewRotation = rotationForCameraPos(options.view);
93
104
  const unitRot = vec3RotCombine(viewRotation, scene.rotation_deprecated ?? vec3Zero);
94
105
  const unitCenter = scene.center_deprecated ?? vec3Zero;
@@ -100,7 +111,16 @@ const renderInternal = (
100
111
  const visibleViews = calculateVisibleViews(options.view, scene.rotation_deprecated);
101
112
  return {
102
113
  groups: scene.groups.reduce((a, c) => a + dxfGroup(c, pos, unitRot, options, handleRef), ""),
103
- dimensions: dxfDimensions(scene.dimensions_deprecated, pos, unitRot, scene.rotation_deprecated ?? vec3Zero, viewRotation, visibleViews, options, handleRef),
114
+ dimensions: dxfDimensions(
115
+ scene.dimensions_deprecated,
116
+ pos,
117
+ unitRot,
118
+ scene.rotation_deprecated ?? vec3Zero,
119
+ viewRotation,
120
+ visibleViews,
121
+ options,
122
+ handleRef
123
+ ),
104
124
  size,
105
125
  center: pos,
106
126
  };
@@ -178,18 +198,34 @@ function dxfGroup(g: Group, parentPos: Vec3, parentRot: Vec3, options: DxfOption
178
198
  return dxf;
179
199
  }
180
200
 
181
- function dxfDimensions(d: Dimensions | undefined, parentPos: Vec3, parentRot: Vec3, sceneRotation: Vec3, viewRotation: Vec3, visibleViews: Record<string, boolean>, options: DxfOptions, handleRef: Handle): DxfDimensionDefinition {
182
- if(!d || !options.showDimensions) {
183
- return {
184
- entity: "",
185
- block: "",
186
- blockRecord: ""
187
- };
201
+ function dxfDimensions(
202
+ d: Dimensions | undefined,
203
+ parentPos: Vec3,
204
+ parentRot: Vec3,
205
+ sceneRotation: Vec3,
206
+ viewRotation: Vec3,
207
+ visibleViews: Record<string, boolean>,
208
+ options: DxfOptions,
209
+ handleRef: Handle
210
+ ): DxfDimensionDefinition {
211
+ if (!d || !options.showDimensions) {
212
+ return {
213
+ entity: "",
214
+ block: "",
215
+ blockRecord: "",
216
+ };
188
217
  }
189
218
  return d.dimensions
190
219
  .filter((d) => d.views?.[0] && visibleViews[d.views[0]] === true)
191
220
  .map((d) => dxfDimension(d, parentPos, parentRot, sceneRotation, viewRotation, handleRef))
192
- .reduce<DxfDimensionDefinition>((prev, curr) => ({ block: prev.block + curr.block, entity: prev.entity + curr.entity, blockRecord: prev.blockRecord + curr.blockRecord }), {block: "", entity: "", blockRecord: ""});
221
+ .reduce<DxfDimensionDefinition>(
222
+ (prev, curr) => ({
223
+ block: prev.block + curr.block,
224
+ entity: prev.entity + curr.entity,
225
+ blockRecord: prev.blockRecord + curr.blockRecord,
226
+ }),
227
+ { block: "", entity: "", blockRecord: "" }
228
+ );
193
229
  }
194
230
 
195
231
  function optionsDef(options: Optional<DxfOptions> | undefined): DxfOptions {
@@ -218,6 +254,21 @@ export const renderOld = (scene: Scene, options?: Optional<DxfOptions>): string
218
254
  const bounds2 = bounds3FromPosAndSize(offset, scene.size_deprecated);
219
255
  const groupRoot = group([], offset, vec3Zero, scene.groups);
220
256
  const handleRef = dxfHandleInit();
221
- const dimensions = dxfDimensions(scene.dimensions_deprecated, dimensionsPos, unitRot, scene.rotation_deprecated ?? vec3Zero, viewRotation, visibleViews, opts, handleRef);
222
- return dxfBuild(dxfGroup(groupRoot, center, unitRot, opts, handleRef), dimensions, bounds2, scene.size_deprecated, center);
257
+ const dimensions = dxfDimensions(
258
+ scene.dimensions_deprecated,
259
+ dimensionsPos,
260
+ unitRot,
261
+ scene.rotation_deprecated ?? vec3Zero,
262
+ viewRotation,
263
+ visibleViews,
264
+ opts,
265
+ handleRef
266
+ );
267
+ return dxfBuild(
268
+ dxfGroup(groupRoot, center, unitRot, opts, handleRef),
269
+ dimensions,
270
+ bounds2,
271
+ scene.size_deprecated,
272
+ center
273
+ );
223
274
  };
@@ -1,5 +1,3 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- /* eslint-disable @typescript-eslint/no-unused-vars */
3
1
  import React, { useLayoutEffect, useRef, useState } from "react";
4
2
  import {
5
3
  type GizmoHelperProps,
@@ -14,7 +12,8 @@ import {
14
12
  import { type ThreeEvent, useThree } from "@react-three/fiber";
15
13
  import { exhaustiveCheck } from "ts-exhaustive-check";
16
14
  import { Vector3 } from "three";
17
- import { View, Scene, Vec3, vec3 } from "../../abstract-3d.js";
15
+ import type { View, Scene, Vec3 } from "../../abstract-3d.js";
16
+ import { vec3 } from "../../abstract-3d.js";
18
17
 
19
18
  export type Camera = A3dPerspectiveCamera | A3dOrthographicCamera;
20
19
  export type CameraType = Camera["type"];
@@ -46,7 +45,7 @@ type Viewcube = { readonly type: "Viewcube"; readonly viewcubeProps: GenericProp
46
45
  type Viewport = { readonly type: "Viewport"; readonly viewportProps: GizmoViewportProps };
47
46
 
48
47
  export function ReactCamera({
49
- useAnimations,
48
+ useAnimations: _useAnimations,
50
49
  camera,
51
50
  view,
52
51
  scene,
@@ -1,7 +1,6 @@
1
- import { useFrame } from "@react-three/fiber";
2
1
  import React from "react";
3
- import type { Group, Line } from "three";
4
- import { Dimensions, Vec3, Dimension, vec3TransRot, vec3Flip, Mesh, dimensionConvertToTypeMesh, vec3Zero, Material, DimensionAligned, vec3, View, DimensionMesh } from "../../abstract-3d.js";
2
+ import type { Dimensions, Vec3, Dimension, Mesh, Material } from "../../abstract-3d.js";
3
+ import { dimensionConvertToTypeMesh, vec3Zero } from "../../abstract-3d.js";
5
4
  import { ReactMaterial } from "./react-material.js";
6
5
  import { ReactMesh } from "./react-mesh.js";
7
6
 
@@ -46,7 +45,6 @@ export function ReactDimension({
46
45
  visible,
47
46
  children,
48
47
  sceneRotation,
49
- _sceneCenter
50
48
  }: {
51
49
  readonly dimension: Dimension;
52
50
  readonly material: Material;
@@ -60,7 +58,9 @@ export function ReactDimension({
60
58
  <group position={[dim.pos.x, dim.pos.y, dim.pos.z]} rotation={[dim.rot.x, dim.rot.y, dim.rot.z]}>
61
59
  <DimensionMeshes meshes={dim.meshes}>{children}</DimensionMeshes>
62
60
  </group>
63
- ) : <></>;
61
+ ) : (
62
+ <></>
63
+ );
64
64
  }
65
65
 
66
66
  const DimensionMeshes = React.memo(
@@ -1,12 +1,14 @@
1
1
  import React from "react";
2
- import { ThreeEvent, useFrame } from "@react-three/fiber";
2
+ import type { ThreeEvent } from "@react-three/fiber";
3
+ import { useFrame } from "@react-three/fiber";
3
4
  import type { Group } from "three";
4
- import { Group as Group_1 } from "../../abstract-3d.js";
5
- import { MaterialState, ReactMaterial } from "./react-material.js";
5
+ import type { Group as Group_1 } from "../../abstract-3d.js";
6
+ import type { MaterialState } from "./react-material.js";
7
+ import { ReactMaterial } from "./react-material.js";
6
8
  import { ReactMesh } from "./react-mesh.js";
7
9
  import { ImageMaterial } from "./react-image-material.js";
8
10
  import { Html } from "@react-three/drei";
9
- import { ReactPopover } from "./react-types.js";
11
+ import type { ReactPopover } from "./react-types.js";
10
12
 
11
13
  export function ReactGroup({
12
14
  g,
@@ -1,9 +1,10 @@
1
1
  import React from "react";
2
2
  import { Html } from "@react-three/drei";
3
- import { Box, HotSpot, vec3Scale, vec3Zero } from "../../abstract-3d.js";
3
+ import type { Box, HotSpot } from "../../abstract-3d.js";
4
+ import { vec3Scale, vec3Zero } from "../../abstract-3d.js";
4
5
  import { ReactMesh } from "./react-mesh.js";
5
6
  import { ReactMaterial } from "./react-material.js";
6
- import { ThreeEvent } from "@react-three/fiber";
7
+ import type { ThreeEvent } from "@react-three/fiber";
7
8
 
8
9
  export interface HotSpotInfo {
9
10
  readonly replaceId: string;
@@ -2,8 +2,9 @@ import React from "react";
2
2
  import { suspend } from "suspend-react";
3
3
  import { createSVG } from "abstract-image";
4
4
  import { CanvasTexture, DoubleSide, PlaneGeometry, SRGBColorSpace, type Texture, TextureLoader } from "three";
5
- import { Material, Image as A3dImage } from "../../abstract-3d.js";
6
- import { ERROR_IMG_KEY, getColor, materialDefaults, MaterialState, selectMat } from "./react-material.js";
5
+ import type { Material, Image as A3dImage } from "../../abstract-3d.js";
6
+ import type { MaterialState } from "./react-material.js";
7
+ import { ERROR_IMG_KEY, getColor, materialDefaults, selectMat } from "./react-material.js";
7
8
 
8
9
  export const planeGeometry = new PlaneGeometry();
9
10
 
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
2
  import { BackSide, DoubleSide, FrontSide, type MaterialParameters } from "three";
3
- import { Material } from "../../abstract-3d.js";
3
+ import type { Material } from "../../abstract-3d.js";
4
4
  import { shade } from "../../utils.js";
5
5
 
6
6
  const decreasedOpacity = 0.125;
@@ -23,19 +23,21 @@ import {
23
23
  Vector2,
24
24
  Vector3,
25
25
  } from "three";
26
- import {
26
+ import type {
27
27
  Mesh,
28
28
  Box,
29
29
  Plane,
30
- vec2Scale,
31
30
  Shape as Shape_1,
32
31
  Cylinder,
33
- vec2Sub,
34
- vec2Add,
35
32
  Polygon as A3dPolygon,
36
33
  Tube as A3dTube,
37
34
  CircleCurve as A3dCircleCurve,
38
35
  Hole,
36
+ } from "../../abstract-3d.js";
37
+ import {
38
+ vec2Scale,
39
+ vec2Sub,
40
+ vec2Add,
39
41
  isZero,
40
42
  vec3Scale,
41
43
  vec3,
@@ -46,8 +48,7 @@ import {
46
48
  equals,
47
49
  } from "../../abstract-3d.js";
48
50
  import { exhaustiveCheck } from "ts-exhaustive-check";
49
- import { ImageMaterial, planeGeometry } from "./react-image-material.js";
50
- import { MaterialState } from "./react-material.js";
51
+ import { planeGeometry } from "./react-image-material.js";
51
52
 
52
53
  extend({
53
54
  SphereGeometry,
@@ -86,23 +87,9 @@ export function ReactMesh({
86
87
  const culledLineGeometry = useMemo(() => {
87
88
  const g = new BufferGeometry();
88
89
 
89
- g.setAttribute(
90
- "position",
91
- new Float32BufferAttribute(
92
- [
93
- 0, -1, 0,
94
- 0, 1, 0,
95
- 1, -1, 0,
96
- 1, 1, 0,
97
- ],
98
- 3
99
- )
100
- );
90
+ g.setAttribute("position", new Float32BufferAttribute([0, -1, 0, 0, 1, 0, 1, -1, 0, 1, 1, 0], 3));
101
91
 
102
- g.setIndex([
103
- 0, 2, 1,
104
- 2, 3, 1,
105
- ]);
92
+ g.setIndex([0, 2, 1, 2, 3, 1]);
106
93
 
107
94
  return g;
108
95
  }, []);
@@ -302,22 +289,24 @@ export function ReactMesh({
302
289
  const { start, end, normal, thickness } = mesh.geometry;
303
290
  const color = mesh.material.normal;
304
291
 
305
- return <mesh geometry={culledLineGeometry} frustumCulled={false}>
306
- <shaderMaterial
307
- side={FrontSide}
308
- uniforms={{
309
- lineStart: { value: new Vector3(start.x, start.y, start.z) },
310
- lineEnd: { value: new Vector3(end.x, end.y, end.z) },
311
- lineNormal: { value: new Vector3(normal.x, normal.y, normal.z) },
312
- thickness: { value: thickness },
313
- viewport: { value: new Vector2(size.width, size.height) },
314
- nearPlane: { value: camera.near },
315
- color: { value: new Color(color) },
316
- }}
317
- vertexShader={culledLineVertexShader}
318
- fragmentShader={culledLineFragmentShader}
319
- />
320
- </mesh>;
292
+ return (
293
+ <mesh geometry={culledLineGeometry} frustumCulled={false}>
294
+ <shaderMaterial
295
+ side={FrontSide}
296
+ uniforms={{
297
+ lineStart: { value: new Vector3(start.x, start.y, start.z) },
298
+ lineEnd: { value: new Vector3(end.x, end.y, end.z) },
299
+ lineNormal: { value: new Vector3(normal.x, normal.y, normal.z) },
300
+ thickness: { value: thickness },
301
+ viewport: { value: new Vector2(size.width, size.height) },
302
+ nearPlane: { value: camera.near },
303
+ color: { value: new Color(color) },
304
+ }}
305
+ vertexShader={culledLineVertexShader}
306
+ fragmentShader={culledLineFragmentShader}
307
+ />
308
+ </mesh>
309
+ );
321
310
  }
322
311
  case "Polygon":
323
312
  return <Polygon polygon={mesh.geometry}>{children}</Polygon>;
@@ -655,4 +644,4 @@ const culledLineFragmentShader = `
655
644
  void main() {
656
645
  gl_FragColor = vec4(color, 1.0);
657
646
  }
658
- `;
647
+ `;
@@ -1,12 +1,13 @@
1
1
  import React from "react";
2
- import { Scene, Group } from "../../abstract-3d.js";
3
- import { HotSpotInfo, ReactHotSpots } from "./react-hotspot.js";
2
+ import type { Scene, Group } from "../../abstract-3d.js";
3
+ import type { HotSpotInfo } from "./react-hotspot.js";
4
+ import { ReactHotSpots } from "./react-hotspot.js";
4
5
  import { ReactDimensions } from "./react-dimension.js";
5
6
  import { ReactGroup } from "./react-group.js";
6
- import { MaterialState } from "./react-material.js";
7
+ import type { MaterialState } from "./react-material.js";
7
8
  import { Html } from "@react-three/drei";
8
- import { ThreeEvent } from "@react-three/fiber";
9
- import { ReactPopover } from "./react-types.js";
9
+ import type { ThreeEvent } from "@react-three/fiber";
10
+ import type { ReactPopover } from "./react-types.js";
10
11
 
11
12
  export type SceneMouseEvent = ThreeEvent<MouseEvent>;
12
13
 
@@ -1,4 +1,4 @@
1
- import { Vec3 } from "../../abstract-3d.js";
1
+ import type { Vec3 } from "../../abstract-3d.js";
2
2
 
3
3
  export interface ReactPopover {
4
4
  readonly id: string;
@@ -1,13 +1,14 @@
1
1
  import React, { memo } from "react";
2
2
  import { Canvas, type CanvasProps, type ThreeEvent } from "@react-three/fiber";
3
- import { Html, Stats, type OrbitControlsProps } from "@react-three/drei";
3
+ import { Html, type OrbitControlsProps } from "@react-three/drei";
4
4
  import { EffectComposer, N8AO } from "@react-three/postprocessing";
5
5
  import { ReactScene } from "./react-scene.js";
6
- import { Scene, View, Group, Vec3 } from "../../abstract-3d.js";
7
- import { ReactCamera, ControlsHelper, Camera, BufferZones } from "./react-camera.js";
8
- import { HotSpotInfo } from "./react-hotspot.js";
9
- import { MaterialState } from "./react-material.js";
10
- import { ReactPopover } from "./react-types.js";
6
+ import type { Scene, View, Group } from "../../abstract-3d.js";
7
+ import type { ControlsHelper, Camera, BufferZones } from "./react-camera.js";
8
+ import { ReactCamera } from "./react-camera.js";
9
+ import type { HotSpotInfo } from "./react-hotspot.js";
10
+ import type { MaterialState } from "./react-material.js";
11
+ import type { ReactPopover } from "./react-types.js";
11
12
 
12
13
  type ReactProps = {
13
14
  readonly scene: Scene | undefined; // undefined to allow for simple early loadign the js when lazy loading the React3Js renderer