okgeometry-api 1.11.1 → 1.15.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.
@@ -20,23 +20,95 @@ export function arc_point_at(cx: number, cy: number, cz: number, nx: number, ny:
20
20
  */
21
21
  export function brep_boolean_op(a_json: string, b_json: string, op: string, tolerance: number): string;
22
22
 
23
+ /**
24
+ * Boolean-intersection clip of an exact NURBS curve against a CLOSED solid
25
+ * BREP: the curve is split exactly (knot insertion) at every boundary
26
+ * crossing and each piece is classified by containment. Every returned
27
+ * piece lies exactly on the input curve; closed curves merge the run
28
+ * spanning the parameter seam (same convention as `mesh_clip_polyline`).
29
+ *
30
+ * Packing: `[insideCount, (bufLen, curveData…)·insideCount,
31
+ * outsideCount, (bufLen, curveData…)·outsideCount]` — two concatenated
32
+ * multi-curve packings, inside pieces first. Returns an empty buffer on
33
+ * failure (malformed input, or a BREP that is not a closed solid).
34
+ */
35
+ export function brep_clip_curve_op(curve_data: Float64Array, brep_json: string): Float64Array;
36
+
37
+ /**
38
+ * Closest BREP face to a 3D point. Returns [faceIndex, u, v, distance,
39
+ * isNurbs] ((u, v) in the surface's KNOT domain) or empty on failure.
40
+ */
41
+ export function brep_closest_face(json: string, x: number, y: number, z: number): Float64Array;
42
+
43
+ /**
44
+ * Find all points where a NURBS curve pierces a BREP's faces: per face, the
45
+ * curve is intersected with the EXACT surface and kept only when the hit
46
+ * lies INSIDE the face's trimmed region; crossings on shared edges are
47
+ * deduplicated (smallest face index kept).
48
+ *
49
+ * `curve_data` is the standard NURBS curve encoding. Hits are sorted by
50
+ * curve parameter (normalized [0, 1]); (u, v) are in the face's OWN
51
+ * parameter space (knot domain for NURBS faces, plane-frame coordinates for
52
+ * planar faces).
53
+ *
54
+ * Packing: `[count, (x, y, z, curveParam, faceIndex, u, v)·count]`.
55
+ * Returns an empty buffer on malformed input.
56
+ */
57
+ export function brep_curve_intersection_op(brep_json: string, curve_data: Float64Array): Float64Array;
58
+
23
59
  /**
24
60
  * All BREP edges as polylines: [num_polylines, n1, x,y,z..., n2, ...].
25
61
  */
26
62
  export function brep_edges(json: string, tolerance: number): Float64Array;
27
63
 
64
+ /**
65
+ * Extract one face as a standalone single-face TRIMMED sheet BREP (trim
66
+ * loops, pcurves, edges and vertices preserved). Returns JSON, empty on
67
+ * failure.
68
+ */
69
+ export function brep_extract_face(json: string, face_index: number): string;
70
+
71
+ /**
72
+ * ALL faces as standalone single-face trimmed sheet BREPs, in one crossing
73
+ * (the source JSON is parsed once). Returns a JSON ARRAY aligned with face
74
+ * indices; faces that fail to extract are `null`.
75
+ */
76
+ export function brep_extract_faces(json: string): string;
77
+
28
78
  /**
29
79
  * Extrude a profile curve into a BREP (closed profile → capped solid,
30
80
  * open profile → sheet). Returns JSON.
31
81
  */
32
82
  export function brep_extrude_curve(curve_data: Float64Array, dx: number, dy: number, dz: number, height: number): string;
33
83
 
84
+ /**
85
+ * Exact (u, v) of a point on a specific BREP face (closest-point Newton for
86
+ * NURBS, frame projection for planes). Returns [u, v, distance, isNurbs].
87
+ */
88
+ export function brep_face_closest_uv(json: string, face_index: number, x: number, y: number, z: number): Float64Array;
89
+
34
90
  /**
35
91
  * Iso-parametric curve of a NURBS face's backing surface (untrimmed).
36
92
  * Returns curve data, or empty for planar faces.
37
93
  */
38
94
  export function brep_face_iso_curve(json: string, face_index: number, t: number, u_dir: boolean): Float64Array;
39
95
 
96
+ /**
97
+ * Exact isocurve(s) of a BREP face at KNOT-domain parameter `t`, CLIPPED to
98
+ * the face's trimmed region. `u_dir = true` runs along u at fixed v = t.
99
+ * Line pieces (planar faces) are encoded as degree-1 NURBS.
100
+ * Packing: [curveCount, (bufLen, curveData…)·curveCount] where curveData is
101
+ * the standard NURBS curve encoding.
102
+ */
103
+ export function brep_face_iso_curves_trimmed(json: string, face_index: number, t: number, u_dir: boolean): Float64Array;
104
+
105
+ /**
106
+ * Like `brep_face_iso_curves_trimmed`, but `t` is NORMALIZED [0, 1] across
107
+ * the face's trim extent in the fixed direction — callers don't need the
108
+ * surface knot domain. Same packing.
109
+ */
110
+ export function brep_face_iso_curves_trimmed_normalized(json: string, face_index: number, t: number, u_dir: boolean): Float64Array;
111
+
40
112
  /**
41
113
  * Geometric backing of a face.
42
114
  * Returns [0, ox,oy,oz, ux,uy,uz, vx,vy,vz] for planes,
@@ -44,22 +116,79 @@ export function brep_face_iso_curve(json: string, face_index: number, t: number,
44
116
  */
45
117
  export function brep_face_surface(json: string, face_index: number): Float64Array;
46
118
 
119
+ /**
120
+ * Underlying surface of a face CROPPED to its trim extent, ALWAYS as a NURBS
121
+ * surface (planar faces become exact degree-1 patches). Returns surface
122
+ * data, empty on failure.
123
+ */
124
+ export function brep_face_surface_cropped(json: string, face_index: number): Float64Array;
125
+
126
+ /**
127
+ * Batch variant of `brep_face_surface_cropped` for all faces in one
128
+ * crossing. Packing: [faceCount, (bufLen, surfaceData…)·faceCount], aligned
129
+ * with face indices — a face that fails to crop gets bufLen 0.
130
+ */
131
+ export function brep_face_surfaces_cropped(json: string): Float64Array;
132
+
47
133
  /**
48
134
  * Tessellate a single BREP face. Returns the standard mesh buffer.
49
135
  */
50
136
  export function brep_face_tessellate(json: string, face_index: number, tolerance: number): Float64Array;
51
137
 
138
+ /**
139
+ * UV bounding box of a face's trim loops in surface parameter space:
140
+ * [u_min, u_max, v_min, v_max]. Empty on failure.
141
+ */
142
+ export function brep_face_trim_bounds(json: string, face_index: number): Float64Array;
143
+
144
+ /**
145
+ * Convert a closed manifold triangle mesh into a planar-face BREP.
146
+ * `normal_angle_tol_deg` ≤ 0 selects the default (≈0.057°); `max_faces` 0 =
147
+ * default guard (4096). Returns BREP JSON or {"error": ...}.
148
+ */
149
+ export function brep_from_mesh_buffer(vertex_count: number, buffer: Float64Array, normal_angle_tol_deg: number, max_faces: number): string;
150
+
52
151
  /**
53
152
  * BREP structure summary: [face_count, edge_count, vertex_count, is_closed].
54
153
  */
55
154
  export function brep_info(json: string): Float64Array;
56
155
 
156
+ /**
157
+ * TRIM-EXACT intersection curves between two BREPs (solids OR sheets): the
158
+ * parametric boolean's SSI → clip → convergence stages run and the fitted 3D
159
+ * intersection edges come back WITHOUT classification/assembly.
160
+ *
161
+ * A closed intersection loop may come back as several contiguous pieces
162
+ * (split at surface seams and face-boundary crossings); the pieces chain
163
+ * end-to-end exactly. Coincident (overlapping) face pairs contribute no
164
+ * curves.
165
+ *
166
+ * Packing: `[curveCount, (bufLen, curveData…)·curveCount]` (standard NURBS
167
+ * curve encoding). Returns an EMPTY buffer on failure (invalid BREP JSON or
168
+ * a pipeline error) — distinguishable from `[0]`, which means the operands
169
+ * genuinely do not intersect.
170
+ */
171
+ export function brep_intersection_curves_op(a_json: string, b_json: string, tolerance: number): Float64Array;
172
+
57
173
  /**
58
174
  * Loft through profile curves into a BREP.
59
175
  * Input: [num_curves, curve1_data..., curve2_data...]. Returns JSON.
60
176
  */
61
177
  export function brep_loft_curves(data: Float64Array): string;
62
178
 
179
+ /**
180
+ * Intersection curves between a BREP and a triangle mesh.
181
+ *
182
+ * TESSELLATION-BASED (documented approximation): the BREP is tessellated at
183
+ * `tolerance` (pass `<= 0` for the deterministic auto display tolerance)
184
+ * and intersected with the mesh via BVH-pruned tri-tri crossing + chaining.
185
+ *
186
+ * Mesh input is the standard `[vertexCount, positions..., indices...]`
187
+ * buffer. Returns the standard polyline group packing
188
+ * `[num_polylines, n1, x,y,z,..., n2, x,y,z,...]`; empty on failure.
189
+ */
190
+ export function brep_mesh_intersection_curves_op(brep_json: string, vertex_count: number, mesh_buffer: Float64Array, tolerance: number): Float64Array;
191
+
63
192
  /**
64
193
  * BREP primitives.
65
194
  * kind: "box" [minx,miny,minz, maxx,maxy,maxz]
@@ -81,12 +210,30 @@ export function brep_revolve_curve(curve_data: Float64Array, ox: number, oy: num
81
210
  */
82
211
  export function brep_sheet_from_surface(surface_data: Float64Array): string;
83
212
 
213
+ /**
214
+ * Split a closed solid BREP by a sheet BREP into BOTH capped halves.
215
+ * Returns {"negative": <brep|null>, "positive": <brep|null>} or {"error":...}.
216
+ * Sides follow the sheet normal (negative = behind it), matching
217
+ * `mesh_solid_split_by_surface`.
218
+ */
219
+ export function brep_split_solid_by_sheet_op(solid_json: string, sheet_json: string, tolerance: number): string;
220
+
84
221
  /**
85
222
  * Tessellate a BREP into the standard mesh buffer
86
223
  * [vertexCount, positions..., indices...]. Crack-free across shared edges.
87
224
  */
88
225
  export function brep_tessellate(json: string, tolerance: number): Float64Array;
89
226
 
227
+ /**
228
+ * Tessellate a BREP with per-face triangle ranges for face-level picking.
229
+ * `tolerance <= 0` selects the deterministic auto display tolerance (from the
230
+ * BREP's own extent), so triangle indices from a previously produced
231
+ * auto-tolerance display mesh stay valid across calls.
232
+ * Packing: [vertexCount, indexCount, rangeCount,
233
+ * positions(3·vc), indices(ic), (face, firstTri, triCount)·rc].
234
+ */
235
+ export function brep_tessellate_with_face_ranges(json: string, tolerance: number): Float64Array;
236
+
90
237
  /**
91
238
  * Apply a row-major 4x4 matrix to a BREP. Returns transformed JSON.
92
239
  */
@@ -428,6 +575,22 @@ export function mesh_chamfer_all_edges(mesh_type: string, params: Float64Array,
428
575
  */
429
576
  export function mesh_clip_polyline(vertex_count: number, buffer: Float64Array, points: Float64Array, closed: boolean): Float64Array;
430
577
 
578
+ /**
579
+ * Clip a polyline by an OPEN oriented sheet: split it at every sheet
580
+ * crossing and classify each piece by the SIGNED SIDE of the sheet. This is
581
+ * side classification, NOT containment (unlike `mesh_clip_polyline`, which
582
+ * requires a closed volume): pieces far from the sheet still classify by
583
+ * the nearest facet's normal. `inside` = the positive side, in FRONT of the
584
+ * sheet normal; `outside` = behind it. The sheet may be any non-empty
585
+ * triangle mesh, open or closed; its stored winding defines the normals.
586
+ *
587
+ * Returns two concatenated polyline buffers — inside pieces first, then
588
+ * outside pieces — each encoded as `[num_polylines, n1, x,y,z,..., ...]`
589
+ * (identical packing to `mesh_clip_polyline`). Returns an empty buffer on
590
+ * failure (degenerate polyline/sheet).
591
+ */
592
+ export function mesh_clip_polyline_by_sheet(vertex_count: number, buffer: Float64Array, points: Float64Array, closed: boolean): Float64Array;
593
+
431
594
  /**
432
595
  * Compute planar curve normal from ordered points.
433
596
  */
@@ -544,6 +707,19 @@ export function mesh_get_edge_vertex_pairs(vertex_count: number, buffer: Float64
544
707
  */
545
708
  export function mesh_get_face_area(vertex_count: number, buffer: Float64Array, face_index: number): number;
546
709
 
710
+ /**
711
+ * Boundary loops of the coplanar connected face group containing `face_index`.
712
+ *
713
+ * Boundary edges are the directed triangle edges whose reversed twin is not
714
+ * present within the group; chaining them preserves the group's winding.
715
+ * Consecutive collinear points (T-junction subdivisions) are collapsed so
716
+ * consumers receive clean polygon corners.
717
+ *
718
+ * Output format: [loopCount, (pointCount, x, y, z, ...) per loop].
719
+ * Loops are implicitly closed (last point connects back to the first).
720
+ */
721
+ export function mesh_get_face_boundary_loops(vertex_count: number, buffer: Float64Array, face_index: number): Float64Array;
722
+
547
723
  /**
548
724
  * Face centroid as [x, y, z].
549
725
  */
@@ -634,6 +810,22 @@ export function mesh_planar_face_evaluate(vertex_count: number, buffer: Float64A
634
810
  */
635
811
  export function mesh_plane_intersect(vertex_count: number, buffer: Float64Array, nx: number, ny: number, nz: number, d: number): Float64Array;
636
812
 
813
+ /**
814
+ * Compute all transversal crossing points of a polyline with a triangle
815
+ * mesh. Works on OPEN meshes (sheets) — the mesh is NOT required to be a
816
+ * closed volume, unlike `mesh_clip_polyline`.
817
+ *
818
+ * `points` is a flat [x,y,z, ...] vertex list; `closed` marks a closed loop
819
+ * (segment `i` runs `points[i] → points[(i+1) % n]`; open polylines have
820
+ * n−1 segments, closed ones n).
821
+ *
822
+ * Packing: `[count, (x, y, z, segmentIndex, segmentT, triangleIndex)·count]`,
823
+ * sorted by (segmentIndex, segmentT). Shared-edge/vertex crossings dedupe to
824
+ * one hit (smallest triangle index kept); coplanar sliding overlaps yield no
825
+ * hits. Returns an empty buffer on failure (degenerate polyline/mesh).
826
+ */
827
+ export function mesh_polyline_intersection_points(vertex_count: number, buffer: Float64Array, points: Float64Array, closed: boolean): Float64Array;
828
+
637
829
  /**
638
830
  * Shift closed boolean cutter curve and adjust height.
639
831
  * Returns [height, epsilon, pointCount, x,y,z,...]
@@ -681,6 +873,28 @@ export function mesh_solid_split_by_surface(vertex_count_a: number, buffer_a: Fl
681
873
 
682
874
  export function mesh_solid_split_plane(vertex_count: number, buffer: Float64Array, nx: number, ny: number, nz: number, d: number, operation: string): Float64Array;
683
875
 
876
+ /**
877
+ * One-shot production path: closed manifold triangle mesh ÷ NURBS surface →
878
+ * both halves as exact capped BREPs, in a single WASM crossing (mesh→BREP
879
+ * conversion, sheet construction and the parametric split all run kernel-side).
880
+ * Returns {"negative": <brep|null>, "positive": <brep|null>} or {"error":...}.
881
+ */
882
+ export function mesh_split_by_surface_to_brep(vertex_count: number, buffer: Float64Array, surface_data: Float64Array, tolerance: number, normal_angle_tol_deg: number, max_faces: number): string;
883
+
884
+ /**
885
+ * Intersect a polyline with a triangle mesh (open sheets allowed) and split
886
+ * it into pieces at every crossing. Hit points become the shared endpoints
887
+ * of adjacent pieces; a closed loop is opened at the first hit (N hits → N
888
+ * pieces), an open polyline yields N + 1 pieces. With no crossings the
889
+ * original polyline comes back as one piece.
890
+ *
891
+ * Packing: a single flat polyline-group buffer
892
+ * `[num_polylines, n1, x,y,z,..., n2, x,y,z,...]` (same group encoding as
893
+ * `mesh_clip_polyline`, but ONE list — pieces are not classified). Returns
894
+ * an empty buffer on failure.
895
+ */
896
+ export function mesh_split_polyline(vertex_count: number, buffer: Float64Array, points: Float64Array, closed: boolean): Float64Array;
897
+
684
898
  /**
685
899
  * Trim an OPEN host surface by all closed cutter meshes in one WASM call.
686
900
  *
@@ -727,6 +941,20 @@ export function mesh_translate(vertex_count: number, buffer: Float64Array, dx: n
727
941
  */
728
942
  export function nurbs_curve_curve_intersect(data_a: Float64Array, data_b: Float64Array): Float64Array;
729
943
 
944
+ /**
945
+ * Find all intersections between two NURBS curves, with exact parameters.
946
+ *
947
+ * Inputs are standard NURBS curve encodings
948
+ * `[degree, num_cp, cp_xyz..., weights..., knots...]` (the same format
949
+ * consumed by `sample_nurbs_curve` / produced by `build_nurbs_curve`).
950
+ *
951
+ * Packing: `[count, (x, y, z, paramA, paramB)·count]`. Parameters are
952
+ * normalized to [0, 1]; results are sorted by `paramA`. Coincident
953
+ * (overlapping) curve runs yield NO points (identical curves return
954
+ * `[0]`). Returns an empty buffer on malformed input.
955
+ */
956
+ export function nurbs_curve_curve_intersect_params(curve_a_data: Float64Array, curve_b_data: Float64Array): Float64Array;
957
+
730
958
  /**
731
959
  * Intersect a NURBS curve with a plane.
732
960
  * Input: same curve format as sample_nurbs_curve + plane normal (nx,ny,nz) and d.
@@ -734,6 +962,43 @@ export function nurbs_curve_curve_intersect(data_a: Float64Array, data_b: Float6
734
962
  */
735
963
  export function nurbs_curve_plane_intersect(data: Float64Array, nx: number, ny: number, nz: number, d: number): Float64Array;
736
964
 
965
+ /**
966
+ * Split a NURBS curve at multiple normalized parameters t ∈ [0, 1].
967
+ *
968
+ * Splitting is exact (knot insertion), so every returned piece lies exactly
969
+ * on the input curve. Parameters are sorted/deduplicated/clamped internally;
970
+ * closed curves are opened at the FIRST parameter (N interior parameters →
971
+ * N pieces), open curves yield N + 1 pieces. With no valid parameters the
972
+ * (clamped) curve comes back as the single piece.
973
+ *
974
+ * `closed_hint` is an explicit topology override: `> 0` forces closed
975
+ * (seam-rejoin) semantics, `0` forces open semantics (an open curve whose
976
+ * endpoints merely coincide keeps N + 1 pieces), `< 0` infers closedness
977
+ * geometrically from the endpoint distance (the historical behavior).
978
+ *
979
+ * Packing: `[curveCount, (bufLen, curveData…)·curveCount]` where curveData
980
+ * is the standard NURBS curve encoding (same multi-curve packing as
981
+ * `brep_face_iso_curves_trimmed`). Returns an empty buffer on malformed
982
+ * input.
983
+ */
984
+ export function nurbs_curve_split_at_params(curve_data: Float64Array, params: Float64Array, closed_hint: number): Float64Array;
985
+
986
+ /**
987
+ * Find all isolated intersections of a NURBS curve with a NURBS surface,
988
+ * with exact parameters.
989
+ *
990
+ * `curve_data` is the standard NURBS curve encoding; `surface_data` is the
991
+ * standard NURBS surface encoding `[degree_u, degree_v, num_u, num_v,
992
+ * cp(flat)..., weights..., knots_u..., knots_v...]` (same as
993
+ * `nurbs_surface_evaluate`).
994
+ *
995
+ * Packing: `[count, (x, y, z, t, u, v)·count]`. All parameters are
996
+ * normalized to [0, 1]; results are sorted by `t`. Curve segments lying ON
997
+ * the surface (coincident runs) yield no points. Returns an empty buffer on
998
+ * malformed input.
999
+ */
1000
+ export function nurbs_curve_surface_intersect_exact(curve_data: Float64Array, surface_data: Float64Array): Float64Array;
1001
+
737
1002
  /**
738
1003
  * Closest point on the surface to (x, y, z).
739
1004
  * Returns [u, v, px, py, pz] with u, v normalized to [0,1].
@@ -829,6 +1094,24 @@ export function nurbs_surface_split(data: Float64Array, u_dir: boolean, t: numbe
829
1094
  */
830
1095
  export function nurbs_surface_surface_intersect(data_a: Float64Array, data_b: Float64Array, tess: number): Float64Array;
831
1096
 
1097
+ /**
1098
+ * EXACT intersection curves of two FULL (untrimmed) NURBS surfaces: the
1099
+ * parametric boolean's SSI pipeline (seeded tri-tri, chaining, tangent-plane
1100
+ * relaxation) fitted to tolerance-verified interpolating NURBS curves —
1101
+ * unlike `nurbs_surface_surface_intersect`, which returns tessellated
1102
+ * polylines.
1103
+ *
1104
+ * Inputs are standard NURBS surface encodings; `tolerance` is absolute
1105
+ * (floored relative to the combined model scale kernel-side). Closed loops
1106
+ * come back as ONE closed curve; coincident (overlapping) surfaces yield no
1107
+ * curves (their overlap is a 2D region).
1108
+ *
1109
+ * Packing: `[curveCount, (bufLen, curveData…)·curveCount]` where curveData
1110
+ * is the standard NURBS curve encoding. Returns an empty buffer on
1111
+ * malformed input.
1112
+ */
1113
+ export function nurbs_surface_surface_intersect_curves(surf_a_data: Float64Array, surf_b_data: Float64Array, tolerance: number): Float64Array;
1114
+
832
1115
  /**
833
1116
  * Curvature-adaptive tessellation against a chordal tolerance.
834
1117
  * Returns the standard mesh buffer [vertexCount, positions..., indices...].
@@ -970,17 +1253,33 @@ export interface InitOutput {
970
1253
  readonly arc_length: (a: number, b: number, c: number) => number;
971
1254
  readonly arc_point_at: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => [number, number];
972
1255
  readonly brep_boolean_op: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
1256
+ readonly brep_clip_curve_op: (a: number, b: number, c: number, d: number) => [number, number];
1257
+ readonly brep_closest_face: (a: number, b: number, c: number, d: number, e: number) => [number, number];
1258
+ readonly brep_curve_intersection_op: (a: number, b: number, c: number, d: number) => [number, number];
973
1259
  readonly brep_edges: (a: number, b: number, c: number) => [number, number];
1260
+ readonly brep_extract_face: (a: number, b: number, c: number) => [number, number];
1261
+ readonly brep_extract_faces: (a: number, b: number) => [number, number];
974
1262
  readonly brep_extrude_curve: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
1263
+ readonly brep_face_closest_uv: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
975
1264
  readonly brep_face_iso_curve: (a: number, b: number, c: number, d: number, e: number) => [number, number];
1265
+ readonly brep_face_iso_curves_trimmed: (a: number, b: number, c: number, d: number, e: number) => [number, number];
1266
+ readonly brep_face_iso_curves_trimmed_normalized: (a: number, b: number, c: number, d: number, e: number) => [number, number];
976
1267
  readonly brep_face_surface: (a: number, b: number, c: number) => [number, number];
1268
+ readonly brep_face_surface_cropped: (a: number, b: number, c: number) => [number, number];
1269
+ readonly brep_face_surfaces_cropped: (a: number, b: number) => [number, number];
977
1270
  readonly brep_face_tessellate: (a: number, b: number, c: number, d: number) => [number, number];
1271
+ readonly brep_face_trim_bounds: (a: number, b: number, c: number) => [number, number];
1272
+ readonly brep_from_mesh_buffer: (a: number, b: number, c: number, d: number, e: number) => [number, number];
978
1273
  readonly brep_info: (a: number, b: number) => [number, number];
1274
+ readonly brep_intersection_curves_op: (a: number, b: number, c: number, d: number, e: number) => [number, number];
979
1275
  readonly brep_loft_curves: (a: number, b: number) => [number, number];
1276
+ readonly brep_mesh_intersection_curves_op: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
980
1277
  readonly brep_primitive: (a: number, b: number, c: number, d: number) => [number, number];
981
1278
  readonly brep_revolve_curve: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => [number, number];
982
1279
  readonly brep_sheet_from_surface: (a: number, b: number) => [number, number];
1280
+ readonly brep_split_solid_by_sheet_op: (a: number, b: number, c: number, d: number, e: number) => [number, number];
983
1281
  readonly brep_tessellate: (a: number, b: number, c: number) => [number, number];
1282
+ readonly brep_tessellate_with_face_ranges: (a: number, b: number, c: number) => [number, number];
984
1283
  readonly brep_transform: (a: number, b: number, c: number, d: number) => [number, number];
985
1284
  readonly brep_validate: (a: number, b: number, c: number) => [number, number];
986
1285
  readonly brep_volume_area: (a: number, b: number, c: number) => [number, number];
@@ -1039,6 +1338,7 @@ export interface InitOutput {
1039
1338
  readonly mesh_build_render_buffers: (a: number, b: number, c: number, d: number) => [number, number];
1040
1339
  readonly mesh_chamfer_all_edges: (a: number, b: number, c: number, d: number, e: number) => [number, number];
1041
1340
  readonly mesh_clip_polyline: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
1341
+ readonly mesh_clip_polyline_by_sheet: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
1042
1342
  readonly mesh_compute_planar_curve_normal: (a: number, b: number, c: number) => [number, number];
1043
1343
  readonly mesh_contains_point: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
1044
1344
  readonly mesh_create_box: (a: number, b: number, c: number) => [number, number];
@@ -1060,6 +1360,7 @@ export interface InitOutput {
1060
1360
  readonly mesh_get_coplanar_face_region: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number, n: number, o: number) => [number, number];
1061
1361
  readonly mesh_get_edge_vertex_pairs: (a: number, b: number, c: number) => [number, number];
1062
1362
  readonly mesh_get_face_area: (a: number, b: number, c: number, d: number) => number;
1363
+ readonly mesh_get_face_boundary_loops: (a: number, b: number, c: number, d: number) => [number, number];
1063
1364
  readonly mesh_get_face_centroid: (a: number, b: number, c: number, d: number) => [number, number];
1064
1365
  readonly mesh_get_face_normal: (a: number, b: number, c: number, d: number) => [number, number];
1065
1366
  readonly mesh_get_smooth_face_group: (a: number, b: number, c: number, d: number, e: number) => [number, number];
@@ -1075,6 +1376,7 @@ export interface InitOutput {
1075
1376
  readonly mesh_patch_from_points: (a: number, b: number) => [number, number];
1076
1377
  readonly mesh_planar_face_evaluate: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
1077
1378
  readonly mesh_plane_intersect: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
1379
+ readonly mesh_polyline_intersection_points: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
1078
1380
  readonly mesh_prepare_boolean_cutter_curve: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
1079
1381
  readonly mesh_raycast: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => [number, number];
1080
1382
  readonly mesh_raycast_all: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => [number, number];
@@ -1083,6 +1385,8 @@ export interface InitOutput {
1083
1385
  readonly mesh_scale: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
1084
1386
  readonly mesh_solid_split_by_surface: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => [number, number];
1085
1387
  readonly mesh_solid_split_plane: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => [number, number];
1388
+ readonly mesh_split_by_surface_to_brep: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => [number, number];
1389
+ readonly mesh_split_polyline: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
1086
1390
  readonly mesh_surface_difference_all: (a: number, b: number, c: number, d: number) => [number, number];
1087
1391
  readonly mesh_surface_split: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => [number, number];
1088
1392
  readonly mesh_surface_split_plane: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => [number, number];
@@ -1090,7 +1394,10 @@ export interface InitOutput {
1090
1394
  readonly mesh_topology_metrics_raw: (a: number, b: number, c: number) => [number, number];
1091
1395
  readonly mesh_translate: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
1092
1396
  readonly nurbs_curve_curve_intersect: (a: number, b: number, c: number, d: number) => [number, number];
1397
+ readonly nurbs_curve_curve_intersect_params: (a: number, b: number, c: number, d: number) => [number, number];
1093
1398
  readonly nurbs_curve_plane_intersect: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
1399
+ readonly nurbs_curve_split_at_params: (a: number, b: number, c: number, d: number, e: number) => [number, number];
1400
+ readonly nurbs_curve_surface_intersect_exact: (a: number, b: number, c: number, d: number) => [number, number];
1094
1401
  readonly nurbs_surface_closest_point: (a: number, b: number, c: number, d: number, e: number) => [number, number];
1095
1402
  readonly nurbs_surface_curvature: (a: number, b: number, c: number, d: number) => [number, number];
1096
1403
  readonly nurbs_surface_derivatives: (a: number, b: number, c: number, d: number) => [number, number];
@@ -1107,6 +1414,7 @@ export interface InitOutput {
1107
1414
  readonly nurbs_surface_ruled: (a: number, b: number, c: number, d: number) => [number, number];
1108
1415
  readonly nurbs_surface_split: (a: number, b: number, c: number, d: number) => [number, number];
1109
1416
  readonly nurbs_surface_surface_intersect: (a: number, b: number, c: number, d: number, e: number) => [number, number];
1417
+ readonly nurbs_surface_surface_intersect_curves: (a: number, b: number, c: number, d: number, e: number) => [number, number];
1110
1418
  readonly nurbs_surface_tessellate_adaptive: (a: number, b: number, c: number, d: number) => [number, number];
1111
1419
  readonly nurbs_surface_tessellate_render: (a: number, b: number, c: number, d: number, e: number) => [number, number];
1112
1420
  readonly offset_polycurve: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];