opengeometry 2.0.18 → 3.0.0

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 (156) hide show
  1. package/LICENSE.md +373 -0
  2. package/README.md +187 -128
  3. package/body-registry-MbAD6Hyq.js +3159 -0
  4. package/body-registry-MbAD6Hyq.js.map +1 -0
  5. package/index.d.ts +18 -115
  6. package/index.js +1170 -11758
  7. package/index.js.map +1 -1
  8. package/opengeometry/pkg/opengeometry.d.ts +144 -1304
  9. package/opengeometry/pkg/opengeometry.js +1316 -5806
  10. package/opengeometry/pkg/opengeometry_bg.wasm +0 -0
  11. package/opengeometry/pkg/opengeometry_bg.wasm.d.ts +62 -458
  12. package/opengeometry_bg.wasm +0 -0
  13. package/opengeometry_bg.wasm.d.ts +62 -458
  14. package/package.json +54 -34
  15. package/src/bodies/body-factory.d.ts +3 -0
  16. package/src/bodies/body-options.d.ts +19 -0
  17. package/src/bodies/body-placement.d.ts +10 -0
  18. package/src/bodies/body-registry.d.ts +3 -0
  19. package/src/bodies/body.d.ts +71 -0
  20. package/src/bodies/display-clone.d.ts +10 -0
  21. package/src/bodies/node-methods.d.ts +30 -0
  22. package/src/bodies/sheet.d.ts +14 -0
  23. package/src/bodies/solid.d.ts +23 -0
  24. package/src/bodies/system-assembly.d.ts +26 -0
  25. package/src/bodies/wire.d.ts +14 -0
  26. package/src/constants/index.d.ts +4 -0
  27. package/src/constants/operations.d.ts +58 -0
  28. package/src/constants/primitives.d.ts +69 -0
  29. package/src/constants/regions.d.ts +1 -0
  30. package/src/constants/transforms.d.ts +4 -0
  31. package/src/dto/boolean-report.d.ts +24 -0
  32. package/src/dto/bounds.d.ts +1 -0
  33. package/src/dto/brep.d.ts +99 -0
  34. package/src/dto/change-set.d.ts +13 -0
  35. package/src/dto/creation.d.ts +3 -0
  36. package/src/dto/display-buffers.d.ts +14 -0
  37. package/src/dto/events.d.ts +2 -0
  38. package/src/{export/analytic-ifc.d.ts → dto/ifc-body.d.ts} +16 -18
  39. package/src/dto/mark-stats.d.ts +4 -0
  40. package/src/dto/measure.d.ts +16 -0
  41. package/src/dto/mirror.d.ts +4 -0
  42. package/src/dto/node-info.d.ts +11 -0
  43. package/src/dto/pick-result.d.ts +6 -0
  44. package/src/dto/placement.d.ts +6 -0
  45. package/src/dto/primitives.d.ts +77 -0
  46. package/src/dto/regions.d.ts +42 -0
  47. package/src/dto/step-export.d.ts +42 -0
  48. package/src/errors.d.ts +20 -0
  49. package/src/export/export-step.d.ts +10 -0
  50. package/src/export/ifc-body.d.ts +4 -0
  51. package/src/kernel/kernel-errors.d.ts +5 -0
  52. package/src/kernel/kernel-loader.d.ts +5 -0
  53. package/src/kernel/kernel-session.d.ts +2 -0
  54. package/src/limits.d.ts +12 -0
  55. package/src/marks/limbo.d.ts +6 -0
  56. package/src/marks/og-mark.d.ts +10 -0
  57. package/src/marks/transaction.d.ts +3 -0
  58. package/src/opengeometry.d.ts +69 -0
  59. package/src/operations/offsets.d.ts +5 -0
  60. package/src/operations/regions.d.ts +4 -0
  61. package/src/picking/pick-targets.d.ts +6 -0
  62. package/src/picking/resolve-hit.d.ts +3 -0
  63. package/src/rendering/deferred.d.ts +7 -0
  64. package/src/rendering/geometry/geometry-scheduler.d.ts +12 -0
  65. package/src/rendering/geometry/host-group.d.ts +10 -0
  66. package/src/rendering/geometry/render-pass.d.ts +8 -0
  67. package/src/rendering/geometry/settle.d.ts +10 -0
  68. package/src/rendering/inline-backend.d.ts +14 -0
  69. package/src/rendering/lod/body-size.d.ts +11 -0
  70. package/src/rendering/lod/camera-observer.d.ts +2 -0
  71. package/src/rendering/lod/deflection.d.ts +2 -0
  72. package/src/rendering/lod/display-bounds.d.ts +4 -0
  73. package/src/rendering/lod/displayed.d.ts +7 -0
  74. package/src/rendering/lod/host-drawn.d.ts +5 -0
  75. package/src/rendering/lod/host-groups.d.ts +28 -0
  76. package/src/rendering/lod/lod-controller.d.ts +75 -0
  77. package/src/rendering/lod/screen-metrics.d.ts +2 -0
  78. package/src/rendering/materials/material-pool.d.ts +12 -0
  79. package/src/rendering/materials/ref-counted-pool.d.ts +12 -0
  80. package/src/rendering/provider.d.ts +19 -0
  81. package/src/rendering/records/geometry-record.d.ts +21 -0
  82. package/src/rendering/records/record-pool.d.ts +29 -0
  83. package/src/rendering/records/validate-display-buffers.d.ts +2 -0
  84. package/src/rendering/tessellation-worker.d.ts +1 -0
  85. package/src/rendering/worker/job-queue.d.ts +8 -0
  86. package/src/rendering/worker/message-guards.d.ts +9 -0
  87. package/src/rendering/worker/snapshot-cache.d.ts +10 -0
  88. package/src/rendering/worker-backend.d.ts +44 -0
  89. package/src/rendering/worker-protocol.d.ts +52 -0
  90. package/src/runtime/create-runtime.d.ts +7 -0
  91. package/src/runtime/event-bus.d.ts +3 -0
  92. package/src/runtime/reset.d.ts +1 -0
  93. package/src/runtime/runtime-state.d.ts +68 -0
  94. package/src/testing/internals.d.ts +18 -0
  95. package/src/world-graph/codec.d.ts +45 -0
  96. package/src/world-graph/world-graph-client.d.ts +13 -0
  97. package/tessellation-worker.js +634 -0
  98. package/tessellation-worker.js.map +1 -0
  99. package/testing.d.ts +1 -0
  100. package/testing.js +87 -0
  101. package/testing.js.map +1 -0
  102. package/analytic-worker.js +0 -90
  103. package/src/base-types.d.ts +0 -13
  104. package/src/editor/freeform.d.ts +0 -91
  105. package/src/editor/index.d.ts +0 -6
  106. package/src/editor/parametric.d.ts +0 -15
  107. package/src/editor/types.d.ts +0 -223
  108. package/src/examples/booleans.d.ts +0 -24
  109. package/src/examples/editor-modes.d.ts +0 -20
  110. package/src/examples/index.d.ts +0 -11
  111. package/src/examples/offset-ring-variable.d.ts +0 -13
  112. package/src/examples/offset.d.ts +0 -18
  113. package/src/examples/primitives.d.ts +0 -16
  114. package/src/examples/ribbon-from-offsets.d.ts +0 -33
  115. package/src/examples/shapes.d.ts +0 -20
  116. package/src/examples/sweep.d.ts +0 -9
  117. package/src/freeform/geometry.d.ts +0 -82
  118. package/src/freeform/index.d.ts +0 -5
  119. package/src/freeform/types.d.ts +0 -36
  120. package/src/markup/spotMarker.d.ts +0 -4
  121. package/src/operations/analytic-errors.d.ts +0 -8
  122. package/src/operations/boolean-regions.d.ts +0 -20
  123. package/src/operations/boolean.d.ts +0 -16
  124. package/src/operations/editor/freeform.d.ts +0 -1
  125. package/src/operations/editor/index.d.ts +0 -1
  126. package/src/operations/editor/parametric.d.ts +0 -1
  127. package/src/operations/editor/types.d.ts +0 -1
  128. package/src/operations/extrude.d.ts +0 -9
  129. package/src/operations/index.d.ts +0 -9
  130. package/src/operations/loft.d.ts +0 -13
  131. package/src/operations/offset-regions.d.ts +0 -76
  132. package/src/primitives/analytic-curve.d.ts +0 -42
  133. package/src/primitives/arc.d.ts +0 -36
  134. package/src/primitives/curve.d.ts +0 -64
  135. package/src/primitives/elliptical_arc.d.ts +0 -38
  136. package/src/primitives/index.d.ts +0 -9
  137. package/src/primitives/line.d.ts +0 -77
  138. package/src/primitives/polyline.d.ts +0 -78
  139. package/src/primitives/rectangle.d.ts +0 -72
  140. package/src/rendering/analytic-lod.d.ts +0 -32
  141. package/src/rendering/analytic-tessellation.d.ts +0 -32
  142. package/src/shapes/analytic-pattern.d.ts +0 -36
  143. package/src/shapes/analytic-solid.d.ts +0 -304
  144. package/src/shapes/cuboid.d.ts +0 -62
  145. package/src/shapes/cylinder.d.ts +0 -36
  146. package/src/shapes/index.d.ts +0 -11
  147. package/src/shapes/opening.d.ts +0 -31
  148. package/src/shapes/outline-utils.d.ts +0 -35
  149. package/src/shapes/polygon.d.ts +0 -102
  150. package/src/shapes/solid.d.ts +0 -108
  151. package/src/shapes/sphere.d.ts +0 -27
  152. package/src/shapes/sweep.d.ts +0 -76
  153. package/src/shapes/wedge.d.ts +0 -75
  154. package/src/utils/event.d.ts +0 -29
  155. package/src/utils/randomizer.d.ts +0 -1
  156. package/src/world/world-graph.d.ts +0 -112
@@ -1,304 +0,0 @@
1
- import * as THREE from "three";
2
- import { type AnalyticTessellationData } from "../rendering/analytic-tessellation.js";
3
- import { AnalyticExchangeBodyV2 } from "../export/analytic-ifc.js";
4
- export interface AnalyticFrame {
5
- origin: [number, number, number];
6
- x: [number, number, number];
7
- y: [number, number, number];
8
- z: [number, number, number];
9
- }
10
- export interface AnalyticAccuracy {
11
- geometric: number;
12
- intersection: number;
13
- tessellation: number;
14
- exchange: number;
15
- }
16
- export interface AnalyticAnnularSectorOpening {
17
- id: string;
18
- angle: number;
19
- width: number;
20
- bottom: number;
21
- height: number;
22
- }
23
- export type AnalyticProfileEdge = {
24
- kind: "line";
25
- from: [number, number];
26
- to: [number, number];
27
- } | {
28
- kind: "arc";
29
- center: [number, number];
30
- radius: number;
31
- startAngle: number;
32
- sweepAngle: number;
33
- };
34
- export type AnalyticPolygonLoftAlignment = "auto" | {
35
- upperStartIndex: number;
36
- reverseUpper?: boolean;
37
- };
38
- export interface AnalyticProjectionCamera {
39
- position: {
40
- x: number;
41
- y: number;
42
- z: number;
43
- };
44
- target: {
45
- x: number;
46
- y: number;
47
- z: number;
48
- };
49
- up: {
50
- x: number;
51
- y: number;
52
- z: number;
53
- };
54
- near: number;
55
- projection_mode: "Orthographic" | "Perspective";
56
- }
57
- export interface AnalyticProjectionHlr {
58
- hide_hidden_edges: boolean;
59
- }
60
- interface AnalyticOptions {
61
- ogid?: string;
62
- frame?: AnalyticFrame;
63
- accuracy?: AnalyticAccuracy;
64
- deflection?: number;
65
- color?: THREE.ColorRepresentation;
66
- }
67
- export type AnalyticPrimitiveOptions = AnalyticOptions & ({
68
- kind: "cuboid";
69
- width: number;
70
- depth: number;
71
- height: number;
72
- } | {
73
- kind: "linearExtrusion";
74
- outer: [number, number][];
75
- holes: [number, number][][];
76
- height: number;
77
- } | {
78
- kind: "arcEdgedExtrusion";
79
- outer: AnalyticProfileEdge[];
80
- holes?: AnalyticProfileEdge[][];
81
- height: number;
82
- } | {
83
- kind: "polygonLoft";
84
- lower: [number, number, number][];
85
- upper: [number, number, number][];
86
- alignment?: AnalyticPolygonLoftAlignment;
87
- } | {
88
- kind: "boxWithArchedOpening";
89
- width: number;
90
- depth: number;
91
- height: number;
92
- opening: {
93
- id: string;
94
- station: number;
95
- width: number;
96
- bottom: number;
97
- height: number;
98
- };
99
- } | {
100
- kind: "planarPolyhedron";
101
- vertices: [number, number, number][];
102
- faces: number[][];
103
- } | {
104
- kind: "cylinder" | "cone";
105
- radius: number;
106
- height: number;
107
- } | {
108
- kind: "cylinderSector";
109
- radius: number;
110
- height: number;
111
- startAngle: number;
112
- sweepAngle: number;
113
- } | {
114
- kind: "sphere";
115
- radius: number;
116
- } | {
117
- kind: "frustum";
118
- lowerRadius: number;
119
- upperRadius: number;
120
- height: number;
121
- } | {
122
- kind: "torus";
123
- majorRadius: number;
124
- minorRadius: number;
125
- } | {
126
- kind: "annularSectorExtrusion";
127
- radius: number;
128
- thickness: number;
129
- height: number;
130
- startAngle: number;
131
- sweepAngle: number;
132
- } | {
133
- kind: "annularSectorExtrusionWithOpenings";
134
- radius: number;
135
- thickness: number;
136
- height: number;
137
- startAngle: number;
138
- sweepAngle: number;
139
- openings: AnalyticAnnularSectorOpening[];
140
- } | {
141
- kind: "annularSectorExtrusionWithArchedOpening";
142
- radius: number;
143
- thickness: number;
144
- height: number;
145
- startAngle: number;
146
- sweepAngle: number;
147
- opening: AnalyticAnnularSectorOpening;
148
- } | {
149
- kind: "coaxialCircleLoft";
150
- lowerRadius: number;
151
- upperRadius: number;
152
- height: number;
153
- } | {
154
- kind: "revolvedRectangle";
155
- innerRadius: number;
156
- outerRadius: number;
157
- height: number;
158
- } | {
159
- kind: "chamferedCuboid";
160
- width: number;
161
- depth: number;
162
- height: number;
163
- chamfer: number;
164
- } | {
165
- kind: "filletedCylinder";
166
- radius: number;
167
- height: number;
168
- filletRadius: number;
169
- });
170
- export type AnalyticBooleanOp = "union" | "intersection" | "subtraction";
171
- export type AnalyticPointClassification = "inside" | "outside" | "boundary" | "unknown";
172
- export interface AnalyticBooleanReport {
173
- operation: AnalyticBooleanOp;
174
- quality: {
175
- kind: "Analytic";
176
- };
177
- contacts: [number, number, number][];
178
- coincident: boolean;
179
- face_mappings: {
180
- source: {
181
- entity: string;
182
- body: string;
183
- key: string;
184
- face: number;
185
- };
186
- result_faces: number[];
187
- }[];
188
- }
189
- export interface AnalyticBrepOptions extends Omit<AnalyticOptions, "ogid" | "frame" | "accuracy"> {
190
- kind: "brep";
191
- serialized: string;
192
- }
193
- export interface AnalyticTessellationStats {
194
- requestedDeflection: number;
195
- achievedDeflection: number;
196
- triangleCount: number;
197
- faceCount: number;
198
- revision: bigint;
199
- }
200
- export interface AnalyticTessellationOptions {
201
- maxTriangles?: number;
202
- }
203
- export interface AnalyticStepExport {
204
- text: string;
205
- report: {
206
- schema_version: 2;
207
- revision: string;
208
- length_unit: "metre" | "millimetre";
209
- quality: {
210
- kind: string;
211
- };
212
- faces: number;
213
- edges: number;
214
- solids: number;
215
- cavity_shells: number;
216
- collapsed_chart_uses: number;
217
- geometric_tolerance: number;
218
- exchange_error_bound: number;
219
- validation_level: string;
220
- };
221
- }
222
- export interface AnalyticStlExport {
223
- bytes: Uint8Array;
224
- report: {
225
- schema_version: 2;
226
- revision: string;
227
- triangle_count: number;
228
- requested_deflection: number;
229
- achieved_deflection: number;
230
- float32_encoding_error: number;
231
- quality: "tessellated_from_analytic_brep";
232
- };
233
- }
234
- export declare class AnalyticSolid extends THREE.Group {
235
- readonly ogid: string;
236
- readonly surface: THREE.Mesh<THREE.BufferGeometry, THREE.MeshStandardMaterial>;
237
- readonly featureOutline: THREE.LineSegments<THREE.BufferGeometry, THREE.LineBasicMaterial>;
238
- private kernel;
239
- private triangleFaces;
240
- private outlineEdges;
241
- private disposed;
242
- private lastDeflection;
243
- private booleanReport?;
244
- get report(): AnalyticBooleanReport | undefined;
245
- get isDisposed(): boolean;
246
- get modelRevision(): bigint;
247
- get deflection(): number;
248
- get color(): THREE.Color;
249
- set color(value: THREE.ColorRepresentation);
250
- get outline(): boolean;
251
- set outline(value: boolean);
252
- constructor(options: AnalyticPrimitiveOptions | AnalyticBrepOptions);
253
- static fromBrep(serialized: string, options?: Omit<AnalyticBrepOptions, "kind" | "serialized">): AnalyticSolid;
254
- boolean(other: AnalyticSolid, operation: AnalyticBooleanOp, options?: {
255
- deflection?: number;
256
- color?: THREE.ColorRepresentation;
257
- }): AnalyticSolid;
258
- union(other: AnalyticSolid, options?: {
259
- deflection?: number;
260
- color?: THREE.ColorRepresentation;
261
- }): AnalyticSolid;
262
- intersection(other: AnalyticSolid, options?: {
263
- deflection?: number;
264
- color?: THREE.ColorRepresentation;
265
- }): AnalyticSolid;
266
- subtract(cutters: AnalyticSolid[], options?: {
267
- deflection?: number;
268
- color?: THREE.ColorRepresentation;
269
- }): AnalyticSolid;
270
- shell(thickness: number, options?: {
271
- deflection?: number;
272
- color?: THREE.ColorRepresentation;
273
- }): AnalyticSolid;
274
- getBrepSerialized(): string;
275
- getBrepData(): Record<string, unknown>;
276
- /** Rebuilds authored analytic geometry while preserving the wrapper and placement. */
277
- protected replaceDefinition(options: AnalyticPrimitiveOptions): AnalyticTessellationStats;
278
- getWorldBrepSerialized(): string;
279
- prepareIfcExchange(): AnalyticExchangeBodyV2;
280
- exportIfc(): {
281
- text: string;
282
- report: AnalyticExchangeBodyV2;
283
- };
284
- /** Exports world placement and authored metre geometry, converted once to the selected STEP unit. */
285
- exportStep(lengthUnit?: "metre" | "millimetre"): AnalyticStepExport;
286
- /** Exports a binary STL tessellated from the placed analytic BRep at an explicit error budget. */
287
- exportStl(deflection?: number): AnalyticStlExport;
288
- faceIdForTriangle(triangle: number): number | undefined;
289
- edgeIdForOutlineSegment(segment: number): number | undefined;
290
- /** Evaluates the oriented support normal at a projected model-space point; this does not classify trim membership. */
291
- normalAtFace(faceId: number, modelPoint: THREE.Vector3): THREE.Vector3;
292
- /** Classifies a world-space point against the regularized material represented by this solid. */
293
- classifyPoint(worldPoint: THREE.Vector3): AnalyticPointClassification;
294
- projectTo2DLines(camera: AnalyticProjectionCamera, hlr: AnalyticProjectionHlr, deflection?: number): string;
295
- getModelBounds(): THREE.Box3;
296
- retessellate(deflection: number): AnalyticTessellationStats;
297
- tessellate(deflection: number, options?: AnalyticTessellationOptions): AnalyticTessellationData;
298
- /** Applies a transient worker mesh only when it still matches this authored model revision. */
299
- applyTessellation(result: AnalyticTessellationData, deflection: number): AnalyticTessellationStats;
300
- dispose(): void;
301
- private checkActive;
302
- private worldKernel;
303
- }
304
- export {};
@@ -1,62 +0,0 @@
1
- import { Vector3 } from "../../opengeometry/pkg/opengeometry.js";
2
- import * as THREE from "three";
3
- import { AnalyticSolid, type AnalyticAccuracy } from "./analytic-solid.js";
4
- export interface CuboidPlacementOptions {
5
- translation?: Vector3;
6
- rotation?: Vector3;
7
- scale?: Vector3;
8
- }
9
- export interface ICuboidOptions extends CuboidPlacementOptions {
10
- ogid?: string;
11
- center?: Vector3;
12
- width?: number;
13
- height?: number;
14
- depth?: number;
15
- color?: THREE.ColorRepresentation;
16
- deflection?: number;
17
- accuracy?: AnalyticAccuracy;
18
- }
19
- export type CuboidConfigUpdate = Partial<Omit<ICuboidOptions, "ogid" | "translation" | "rotation" | "scale">>;
20
- export type CuboidPlacementUpdate = CuboidPlacementOptions;
21
- interface NormalizedCuboidOptions {
22
- ogid?: string;
23
- center: Vector3;
24
- width: number;
25
- height: number;
26
- depth: number;
27
- color: THREE.ColorRepresentation;
28
- deflection: number;
29
- accuracy?: AnalyticAccuracy;
30
- translation: Vector3;
31
- rotation: Vector3;
32
- scale: Vector3;
33
- }
34
- /** Authoritative six-plane BRep with transient tessellation. */
35
- export declare class Cuboid extends AnalyticSolid {
36
- options: NormalizedCuboidOptions;
37
- constructor(options?: ICuboidOptions);
38
- set width(value: number);
39
- get width(): number;
40
- set height(value: number);
41
- get height(): number;
42
- set depth(value: number);
43
- get depth(): number;
44
- set color(value: THREE.ColorRepresentation);
45
- get color(): THREE.Color;
46
- setConfig(update: CuboidConfigUpdate): void;
47
- getConfig(): Readonly<NormalizedCuboidOptions>;
48
- setPlacement(update: CuboidPlacementUpdate): void;
49
- setTransform(translation: Vector3, rotation: Vector3, scale: Vector3): void;
50
- setTranslation(translation: Vector3): void;
51
- setRotation(rotation: Vector3): void;
52
- setScale(scale: Vector3): void;
53
- getPlacement(): Required<CuboidPlacementOptions>;
54
- getAnchor(): Vector3;
55
- getEditCapabilities(): import("../editor.js").ParametricEditCapabilities;
56
- canConvertToFreeform(): false;
57
- toFreeform(): never;
58
- cleanGeometry(): void;
59
- discardGeometry(): void;
60
- private applyPlacement;
61
- }
62
- export {};
@@ -1,36 +0,0 @@
1
- import { Vector3 } from "../../opengeometry/pkg/opengeometry.js";
2
- import * as THREE from "three";
3
- import { AnalyticSolid, type AnalyticAccuracy } from "./analytic-solid.js";
4
- export interface ICylinderOptions {
5
- ogid?: string;
6
- center?: Vector3;
7
- radius?: number;
8
- height?: number;
9
- startAngle?: number;
10
- sweepAngle?: number;
11
- deflection?: number;
12
- accuracy?: AnalyticAccuracy;
13
- color?: THREE.ColorRepresentation;
14
- }
15
- interface NormalizedCylinderOptions {
16
- ogid?: string;
17
- center: Vector3;
18
- radius: number;
19
- height: number;
20
- startAngle: number;
21
- sweepAngle: number;
22
- deflection: number;
23
- accuracy?: AnalyticAccuracy;
24
- color: THREE.ColorRepresentation;
25
- }
26
- /** Authoritative Plane/Cylinder BRep with transient deflection tessellation. */
27
- export declare class Cylinder extends AnalyticSolid {
28
- readonly options: Readonly<NormalizedCylinderOptions>;
29
- constructor(options?: ICylinderOptions);
30
- get radius(): number;
31
- get height(): number;
32
- get startAngle(): number;
33
- get sweepAngle(): number;
34
- getAnchor(): THREE.Vector3;
35
- }
36
- export {};
@@ -1,11 +0,0 @@
1
- /**
2
- * High-level 3D shape wrappers backed by the OpenGeometry kernel.
3
- */
4
- export * from './polygon.js';
5
- export * from './solid.js';
6
- export * from './cylinder.js';
7
- export * from './cuboid.js';
8
- export * from './opening.js';
9
- export * from './sphere.js';
10
- export * from './wedge.js';
11
- export * from './sweep.js';
@@ -1,31 +0,0 @@
1
- import { Vector3 } from "../../opengeometry/pkg/opengeometry.js";
2
- import * as THREE from "three";
3
- import { AnalyticSolid, type AnalyticAccuracy } from "./analytic-solid.js";
4
- import { Cuboid, type CuboidConfigUpdate, type CuboidPlacementOptions } from "./cuboid.js";
5
- export interface IOpeningOptions extends CuboidPlacementOptions {
6
- ogid?: string;
7
- center?: Vector3;
8
- width?: number;
9
- height?: number;
10
- depth?: number;
11
- color?: THREE.ColorRepresentation;
12
- deflection?: number;
13
- accuracy?: AnalyticAccuracy;
14
- }
15
- export type OpeningPlacementOptions = CuboidPlacementOptions;
16
- export type OpeningConfigUpdate = CuboidConfigUpdate;
17
- export type OpeningPlacementUpdate = OpeningPlacementOptions;
18
- /** Strict BRep v2 subtractive box. */
19
- export declare class Opening extends Cuboid {
20
- constructor(options?: IOpeningOptions);
21
- get dimensions(): {
22
- width: number;
23
- height: number;
24
- depth: number;
25
- };
26
- getEditCapabilities(): import("../editor.js").ParametricEditCapabilities;
27
- subtractFrom(host: AnalyticSolid, options?: {
28
- deflection?: number;
29
- color?: THREE.ColorRepresentation;
30
- }): AnalyticSolid;
31
- }
@@ -1,35 +0,0 @@
1
- import * as THREE from "three";
2
- import { LineSegments2 } from "three/examples/jsm/lines/LineSegments2.js";
3
- /**
4
- * Outline mesh variants used by shape wrappers.
5
- */
6
- export type ShapeOutlineMesh = THREE.LineSegments | LineSegments2;
7
- /**
8
- * Options for building a shape outline mesh.
9
- */
10
- export interface ShapeOutlineMeshOptions {
11
- positions: number[];
12
- color?: number;
13
- fatOutlines?: boolean;
14
- outlineWidth?: number;
15
- }
16
- /**
17
- * Clamps outline width inputs to the supported positive finite range.
18
- */
19
- export declare function sanitizeOutlineWidth(width?: number): number;
20
- /**
21
- * Creates either a thin or fat outline mesh from line segment positions.
22
- */
23
- export declare function createShapeOutlineMesh({ positions, color, fatOutlines, outlineWidth, }: ShapeOutlineMeshOptions): ShapeOutlineMesh;
24
- /**
25
- * Disposes the geometry and material owned by an outline mesh.
26
- */
27
- export declare function disposeShapeOutlineMesh(mesh: ShapeOutlineMesh | null): void;
28
- /**
29
- * Updates the color of an existing outline mesh in place.
30
- */
31
- export declare function setShapeOutlineColor(mesh: ShapeOutlineMesh | null, color: number): void;
32
- /**
33
- * Reads the current outline color, falling back when no outline exists.
34
- */
35
- export declare function getShapeOutlineColor(mesh: ShapeOutlineMesh | null, fallback?: number): number;
@@ -1,102 +0,0 @@
1
- import * as THREE from "three";
2
- import { OGPolygon, Vector3 } from "../../opengeometry/pkg/opengeometry.js";
3
- import { Solid } from "./solid.js";
4
- import { type PolygonLoftOptions } from "../operations/loft.js";
5
- /**
6
- * Construction options for a planar polygon.
7
- */
8
- export interface IPolygonOptions {
9
- ogid?: string;
10
- vertices: Vector3[];
11
- holes?: Vector3[][];
12
- color: number;
13
- fatOutlines?: boolean;
14
- outlineWidth?: number;
15
- translation?: Vector3;
16
- rotation?: Vector3;
17
- scale?: Vector3;
18
- }
19
- export interface PolygonPlacementOptions {
20
- translation?: Vector3;
21
- rotation?: Vector3;
22
- scale?: Vector3;
23
- }
24
- /**
25
- * Partial polygon config updates that regenerate the profile when geometry changes.
26
- */
27
- export type PolygonConfigUpdate = Partial<Omit<IPolygonOptions, "translation" | "rotation" | "scale">>;
28
- /**
29
- * Placement updates accepted by `Polygon`.
30
- */
31
- export type PolygonPlacementUpdate = PolygonPlacementOptions;
32
- /**
33
- * Planar polygon mesh with support for holes, booleans, and extrusion to `Solid`.
34
- */
35
- export declare class Polygon extends THREE.Mesh {
36
- #private;
37
- ogid: string;
38
- options: IPolygonOptions;
39
- polygon: OGPolygon;
40
- private _outlineEnabled;
41
- private _fatOutlines;
42
- private _outlineWidth;
43
- private _outlineColor;
44
- set color(color: number);
45
- get color(): number;
46
- constructor(options?: IPolygonOptions);
47
- validateOptions(): void;
48
- setConfig(options: PolygonConfigUpdate): void;
49
- getConfig(): IPolygonOptions;
50
- getAnchor(): Vector3;
51
- setAnchor(anchor: Vector3): void;
52
- resetAnchor(): void;
53
- setPlacement(placement: PolygonPlacementUpdate): void;
54
- setTransform(translation: Vector3, rotation: Vector3, scale: Vector3): void;
55
- setTranslation(translation: Vector3): void;
56
- setRotation(rotation: Vector3): void;
57
- setScale(scale: Vector3): void;
58
- getPlacement(): import("../editor.js").ParametricPlacement;
59
- /**
60
- * Returns the editing capability payload advertised by parametric wrappers.
61
- */
62
- getEditCapabilities(): import("../editor.js").ParametricEditCapabilities;
63
- /**
64
- * Polygon always supports conversion into the freeform editing wrapper.
65
- */
66
- canConvertToFreeform(): boolean;
67
- /**
68
- * Returns a freeform wrapper for direct BRep editing of this polygon.
69
- */
70
- toFreeform(id?: string): import("../freeform.js").FreeformGeometry;
71
- cleanGeometry(): void;
72
- generateGeometry(): void;
73
- addVertices(vertices: Vector3[]): void;
74
- addHole(holeVertices: Vector3[]): void;
75
- /**
76
- * Builds a kernel-backed `Solid` by extruding this polygon face by `height`.
77
- *
78
- * This is the recommended public path when a browser CAD or AEC workflow
79
- * starts from a planar profile and needs a boolean-ready solid.
80
- */
81
- extrude(height: number): Solid;
82
- /** Builds a capped analytic ruled loft from this profile to `other`. */
83
- loftTo(other: Polygon, options?: PolygonLoftOptions): import("./analytic-solid.js").AnalyticSolid;
84
- /**
85
- * Returns the serialized BRep payload for this polygon.
86
- */
87
- getBrepData(): string | null;
88
- private worldProfilePoints;
89
- set outlineColor(color: number);
90
- get outlineColor(): number;
91
- set outline(enable: boolean);
92
- get outline(): boolean;
93
- set fatOutlines(value: boolean);
94
- get fatOutlines(): boolean;
95
- set outlineWidth(value: number);
96
- get outlineWidth(): number;
97
- disposeGeometryMaterial(): void;
98
- private clearOutlineMesh;
99
- dispose(): void;
100
- private writePositionsToGeometry;
101
- private disposeResources;
102
- }
@@ -1,108 +0,0 @@
1
- import { Vector3 } from "../../opengeometry/pkg/opengeometry.js";
2
- import * as THREE from "three";
3
- import { type FreeformGeometry } from "../freeform.js";
4
- import type { FreeformSource } from "../freeform/types.js";
5
- /**
6
- * Construction options for a generic BRep-backed solid.
7
- */
8
- export interface ISolidOptions {
9
- ogid?: string;
10
- brep: FreeformSource;
11
- color: number;
12
- fatOutlines?: boolean;
13
- outlineWidth?: number;
14
- anchor?: Vector3;
15
- translation?: Vector3;
16
- rotation?: Vector3;
17
- scale?: Vector3;
18
- }
19
- /**
20
- * Placement updates accepted by `Solid`.
21
- */
22
- export interface SolidPlacementOptions {
23
- translation?: Vector3;
24
- rotation?: Vector3;
25
- scale?: Vector3;
26
- }
27
- /**
28
- * Additional options accepted when creating a `Solid` through face extrusion.
29
- */
30
- export interface ExtrudeSolidOptions extends Omit<ISolidOptions, "brep" | "ogid" | "anchor" | "translation" | "rotation" | "scale"> {
31
- ogid?: string;
32
- anchor?: Vector3;
33
- translation?: Vector3;
34
- rotation?: Vector3;
35
- scale?: Vector3;
36
- }
37
- /**
38
- * Generic renderable BRep-backed solid used for extrusion outputs and other
39
- * kernel results that are not dedicated parametric shapes.
40
- */
41
- export declare class Solid extends THREE.Mesh {
42
- #private;
43
- ogid: string;
44
- options: ISolidOptions;
45
- private solid;
46
- private _outlineEnabled;
47
- private _fatOutlines;
48
- private _outlineWidth;
49
- private _outlineColor;
50
- set color(color: number);
51
- get color(): number;
52
- constructor(options: ISolidOptions);
53
- /**
54
- * Extrudes a face-like BRep source and wraps the result as a renderable solid.
55
- *
56
- * Prefer `polygon.extrude(height)` when the source is already a `Polygon`.
57
- */
58
- static extrude(source: FreeformSource, height: number, options: ExtrudeSolidOptions): Solid;
59
- /**
60
- * Returns the current placement values as cloned vectors.
61
- */
62
- getPlacement(): import("../editor.js").ParametricPlacement;
63
- /**
64
- * Applies translation, rotation, and scale updates to the wrapped BRep.
65
- */
66
- setPlacement(placement: SolidPlacementOptions): void;
67
- setTransform(translation: Vector3, rotation: Vector3, scale: Vector3): void;
68
- setTranslation(translation: Vector3): void;
69
- setRotation(rotation: Vector3): void;
70
- setScale(scale: Vector3): void;
71
- getAnchor(): Vector3;
72
- setAnchor(anchor: Vector3): void;
73
- /**
74
- * Solid is always convertible back to the freeform editing wrapper.
75
- */
76
- canConvertToFreeform(): boolean;
77
- /**
78
- * Returns a freeform wrapper for direct editing of this solid's BRep.
79
- */
80
- toFreeform(id?: string): FreeformGeometry;
81
- /**
82
- * Returns the world-space serialized BRep payload for this solid.
83
- */
84
- getBrepSerialized(): string;
85
- /**
86
- * Returns the local-space serialized BRep payload for this solid.
87
- */
88
- getLocalBrepSerialized(): string;
89
- /**
90
- * Returns the parsed world-space BRep object for this solid.
91
- */
92
- getBrepData(): any;
93
- /**
94
- * Rebuilds the visible mesh and outline from the current freeform geometry.
95
- */
96
- generateGeometry(): void;
97
- set outlineColor(color: number);
98
- get outlineColor(): number;
99
- set outline(enable: boolean);
100
- get outline(): boolean;
101
- set fatOutlines(value: boolean);
102
- get fatOutlines(): boolean;
103
- set outlineWidth(value: number);
104
- get outlineWidth(): number;
105
- clearOutlineMesh(): void;
106
- private getPlacementTransform;
107
- private writePositionsToGeometry;
108
- }