okgeometry-api 1.21.0 → 1.23.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.
@@ -298,6 +298,16 @@ export function brep_validate(json: string, tolerance: number): string;
298
298
  */
299
299
  export function brep_volume_area(json: string, tolerance: number): Float64Array;
300
300
 
301
+ /**
302
+ * Wireframe of the whole BREP in ONE crossing: per face, `u_count` +
303
+ * `v_count` iso-parametric curves at evenly spaced INTERIOR normalized
304
+ * parameters, clipped to each face's trimmed region. The body JSON is
305
+ * parsed ONCE for the entire sweep. Same packing as
306
+ * `brep_face_iso_curves_trimmed_normalized`; faces that fail to evaluate
307
+ * are skipped atomically.
308
+ */
309
+ export function brep_wireframe_curves(json: string, u_count: number, v_count: number): Float64Array;
310
+
301
311
  /**
302
312
  * Build a NURBS curve from raw control points with kernel-managed knots and weights.
303
313
  *
@@ -321,6 +331,15 @@ export function build_nurbs_curve(degree: number, coords: Float64Array, closed:
321
331
  */
322
332
  export function chamfer_polycurve(coords: Float64Array, distance: number): Float64Array;
323
333
 
334
+ /**
335
+ * Chamfer polyline corners with closed support and optional corner
336
+ * selection. `coords` is a flat point list (closed inputs without the
337
+ * duplicate seam point); `corner_indices` empty = all eligible corners.
338
+ * Returns the flat chamfered point list (closed outputs again without the
339
+ * seam duplicate), or empty on failure (see `geometry_last_error`).
340
+ */
341
+ export function chamfer_polyline_corners(coords: Float64Array, closed: boolean, distance: number, corner_indices: Float64Array): Float64Array;
342
+
324
343
  /**
325
344
  * Get the circumference of a circle.
326
345
  */
@@ -432,6 +451,12 @@ export function extrude_polyline(coords: Float64Array, dx: number, dy: number, d
432
451
  */
433
452
  export function fillet_polycurve(coords: Float64Array, radius: number, nx: number, ny: number, nz: number): Float64Array;
434
453
 
454
+ /**
455
+ * Human-readable reason for the most recent empty result returned by the
456
+ * offset/chamfer exports below. Cleared at the start of each such call.
457
+ */
458
+ export function geometry_last_error(): string;
459
+
435
460
  /**
436
461
  * Get the length of a line segment.
437
462
  */
@@ -662,6 +687,16 @@ export function mesh_build_render_buffers(vertex_count: number, buffer: Float64A
662
687
  */
663
688
  export function mesh_chamfer_all_edges(mesh_type: string, params: Float64Array, offset: number): Float64Array;
664
689
 
690
+ /**
691
+ * Chamfer feature edges of a closed solid. `edges` is a flat buffer of
692
+ * segment endpoint pairs [ax,ay,az,bx,by,bz, ...]; each picked segment
693
+ * expands to its full feature-edge chain (straight box edges, tessellated
694
+ * rims). `distance` is the setback along each adjacent face.
695
+ * Returns a standard mesh buffer, or empty on failure (see
696
+ * `geometry_last_error`).
697
+ */
698
+ export function mesh_chamfer_edges(vertex_count: number, buffer: Float64Array, edges: Float64Array, distance: number): Float64Array;
699
+
665
700
  /**
666
701
  * Clip a polyline against a closed mesh volume (boolean intersection for curves).
667
702
  *
@@ -1113,6 +1148,14 @@ export function nurbs_curve_curve_intersect(data_a: Float64Array, data_b: Float6
1113
1148
  */
1114
1149
  export function nurbs_curve_curve_intersect_params(curve_a_data: Float64Array, curve_b_data: Float64Array): Float64Array;
1115
1150
 
1151
+ /**
1152
+ * Offset a planar NURBS curve by `distance` within the plane with normal
1153
+ * (nx, ny, nz), refit to `tolerance`. Input/output use the standard curve
1154
+ * buffer format [degree, n, cps(xyz)..., weights..., knots...].
1155
+ * Returns an empty buffer on failure (see `geometry_last_error`).
1156
+ */
1157
+ export function nurbs_curve_offset(data: Float64Array, distance: number, nx: number, ny: number, nz: number, tolerance: number): Float64Array;
1158
+
1116
1159
  /**
1117
1160
  * Intersect a NURBS curve with a plane.
1118
1161
  * Input: same curve format as sample_nurbs_curve + plane normal (nx,ny,nz) and d.
@@ -1215,6 +1258,13 @@ export function nurbs_surface_iso_curve(data: Float64Array, t: number, u_dir: bo
1215
1258
  */
1216
1259
  export function nurbs_surface_normal(data: Float64Array, u: number, v: number): Float64Array;
1217
1260
 
1261
+ /**
1262
+ * Offset a NURBS surface by `distance` along its normal field, refit to
1263
+ * `tolerance`. Input/output use the standard surface buffer format.
1264
+ * Returns an empty buffer on failure (see `geometry_last_error`).
1265
+ */
1266
+ export function nurbs_surface_offset(data: Float64Array, distance: number, tolerance: number): Float64Array;
1267
+
1218
1268
  /**
1219
1269
  * Intersect a NURBS surface with a plane.
1220
1270
  * Input: same surface format as tessellate_nurbs_surface, then plane (nx,ny,nz,d) appended.
@@ -1552,8 +1602,10 @@ export interface InitOutput {
1552
1602
  readonly brep_transform: (a: number, b: number, c: number, d: number) => [number, number];
1553
1603
  readonly brep_validate: (a: number, b: number, c: number) => [number, number];
1554
1604
  readonly brep_volume_area: (a: number, b: number, c: number) => [number, number];
1605
+ readonly brep_wireframe_curves: (a: number, b: number, c: number, d: number) => [number, number];
1555
1606
  readonly build_nurbs_curve: (a: number, b: number, c: number, d: number) => [number, number];
1556
1607
  readonly chamfer_polycurve: (a: number, b: number, c: number) => [number, number];
1608
+ readonly chamfer_polyline_corners: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
1557
1609
  readonly circle_length: (a: number) => number;
1558
1610
  readonly circle_point_at: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => [number, number];
1559
1611
  readonly create_arc: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => [number, number];
@@ -1568,6 +1620,7 @@ export interface InitOutput {
1568
1620
  readonly extrude_line: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => [number, number];
1569
1621
  readonly extrude_polyline: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
1570
1622
  readonly fillet_polycurve: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
1623
+ readonly geometry_last_error: () => [number, number];
1571
1624
  readonly line_length: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
1572
1625
  readonly line_offset: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => [number, number];
1573
1626
  readonly line_point_at: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
@@ -1609,6 +1662,7 @@ export interface InitOutput {
1609
1662
  readonly mesh_build_coplanar_connected_face_groups: (a: number, b: number, c: number) => [number, number];
1610
1663
  readonly mesh_build_render_buffers: (a: number, b: number, c: number, d: number) => [number, number];
1611
1664
  readonly mesh_chamfer_all_edges: (a: number, b: number, c: number, d: number, e: number) => [number, number];
1665
+ readonly mesh_chamfer_edges: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
1612
1666
  readonly mesh_clip_polyline: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
1613
1667
  readonly mesh_clip_polyline_by_sheet: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
1614
1668
  readonly mesh_compute_planar_curve_normal: (a: number, b: number, c: number) => [number, number];
@@ -1673,6 +1727,7 @@ export interface InitOutput {
1673
1727
  readonly mesh_voxel_remesh: (a: number, b: number, c: number, d: number, e: number) => [number, number];
1674
1728
  readonly nurbs_curve_curve_intersect: (a: number, b: number, c: number, d: number) => [number, number];
1675
1729
  readonly nurbs_curve_curve_intersect_params: (a: number, b: number, c: number, d: number) => [number, number];
1730
+ readonly nurbs_curve_offset: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
1676
1731
  readonly nurbs_curve_plane_intersect: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
1677
1732
  readonly nurbs_curve_split_at_params: (a: number, b: number, c: number, d: number, e: number) => [number, number];
1678
1733
  readonly nurbs_curve_surface_intersect_exact: (a: number, b: number, c: number, d: number) => [number, number];
@@ -1686,6 +1741,7 @@ export interface InitOutput {
1686
1741
  readonly nurbs_surface_insert_knot: (a: number, b: number, c: number, d: number, e: number) => [number, number];
1687
1742
  readonly nurbs_surface_iso_curve: (a: number, b: number, c: number, d: number) => [number, number];
1688
1743
  readonly nurbs_surface_normal: (a: number, b: number, c: number, d: number) => [number, number];
1744
+ readonly nurbs_surface_offset: (a: number, b: number, c: number, d: number) => [number, number];
1689
1745
  readonly nurbs_surface_plane_intersect: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
1690
1746
  readonly nurbs_surface_primitive: (a: number, b: number, c: number, d: number) => [number, number];
1691
1747
  readonly nurbs_surface_revolve: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => [number, number];
@@ -795,6 +795,27 @@ export function brep_volume_area(json, tolerance) {
795
795
  return v2;
796
796
  }
797
797
 
798
+ /**
799
+ * Wireframe of the whole BREP in ONE crossing: per face, `u_count` +
800
+ * `v_count` iso-parametric curves at evenly spaced INTERIOR normalized
801
+ * parameters, clipped to each face's trimmed region. The body JSON is
802
+ * parsed ONCE for the entire sweep. Same packing as
803
+ * `brep_face_iso_curves_trimmed_normalized`; faces that fail to evaluate
804
+ * are skipped atomically.
805
+ * @param {string} json
806
+ * @param {number} u_count
807
+ * @param {number} v_count
808
+ * @returns {Float64Array}
809
+ */
810
+ export function brep_wireframe_curves(json, u_count, v_count) {
811
+ const ptr0 = passStringToWasm0(json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
812
+ const len0 = WASM_VECTOR_LEN;
813
+ const ret = wasm.brep_wireframe_curves(ptr0, len0, u_count, v_count);
814
+ var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
815
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
816
+ return v2;
817
+ }
818
+
798
819
  /**
799
820
  * Build a NURBS curve from raw control points with kernel-managed knots and weights.
800
821
  *
@@ -839,6 +860,29 @@ export function chamfer_polycurve(coords, distance) {
839
860
  return v2;
840
861
  }
841
862
 
863
+ /**
864
+ * Chamfer polyline corners with closed support and optional corner
865
+ * selection. `coords` is a flat point list (closed inputs without the
866
+ * duplicate seam point); `corner_indices` empty = all eligible corners.
867
+ * Returns the flat chamfered point list (closed outputs again without the
868
+ * seam duplicate), or empty on failure (see `geometry_last_error`).
869
+ * @param {Float64Array} coords
870
+ * @param {boolean} closed
871
+ * @param {number} distance
872
+ * @param {Float64Array} corner_indices
873
+ * @returns {Float64Array}
874
+ */
875
+ export function chamfer_polyline_corners(coords, closed, distance, corner_indices) {
876
+ const ptr0 = passArrayF64ToWasm0(coords, wasm.__wbindgen_malloc);
877
+ const len0 = WASM_VECTOR_LEN;
878
+ const ptr1 = passArrayF64ToWasm0(corner_indices, wasm.__wbindgen_malloc);
879
+ const len1 = WASM_VECTOR_LEN;
880
+ const ret = wasm.chamfer_polyline_corners(ptr0, len0, closed, distance, ptr1, len1);
881
+ var v3 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
882
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
883
+ return v3;
884
+ }
885
+
842
886
  /**
843
887
  * Get the circumference of a circle.
844
888
  * @param {number} radius
@@ -1131,6 +1175,24 @@ export function fillet_polycurve(coords, radius, nx, ny, nz) {
1131
1175
  return v2;
1132
1176
  }
1133
1177
 
1178
+ /**
1179
+ * Human-readable reason for the most recent empty result returned by the
1180
+ * offset/chamfer exports below. Cleared at the start of each such call.
1181
+ * @returns {string}
1182
+ */
1183
+ export function geometry_last_error() {
1184
+ let deferred1_0;
1185
+ let deferred1_1;
1186
+ try {
1187
+ const ret = wasm.geometry_last_error();
1188
+ deferred1_0 = ret[0];
1189
+ deferred1_1 = ret[1];
1190
+ return getStringFromWasm0(ret[0], ret[1]);
1191
+ } finally {
1192
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
1193
+ }
1194
+ }
1195
+
1134
1196
  /**
1135
1197
  * Get the length of a line segment.
1136
1198
  * @param {number} x1
@@ -2077,6 +2139,30 @@ export function mesh_chamfer_all_edges(mesh_type, params, offset) {
2077
2139
  return v3;
2078
2140
  }
2079
2141
 
2142
+ /**
2143
+ * Chamfer feature edges of a closed solid. `edges` is a flat buffer of
2144
+ * segment endpoint pairs [ax,ay,az,bx,by,bz, ...]; each picked segment
2145
+ * expands to its full feature-edge chain (straight box edges, tessellated
2146
+ * rims). `distance` is the setback along each adjacent face.
2147
+ * Returns a standard mesh buffer, or empty on failure (see
2148
+ * `geometry_last_error`).
2149
+ * @param {number} vertex_count
2150
+ * @param {Float64Array} buffer
2151
+ * @param {Float64Array} edges
2152
+ * @param {number} distance
2153
+ * @returns {Float64Array}
2154
+ */
2155
+ export function mesh_chamfer_edges(vertex_count, buffer, edges, distance) {
2156
+ const ptr0 = passArrayF64ToWasm0(buffer, wasm.__wbindgen_malloc);
2157
+ const len0 = WASM_VECTOR_LEN;
2158
+ const ptr1 = passArrayF64ToWasm0(edges, wasm.__wbindgen_malloc);
2159
+ const len1 = WASM_VECTOR_LEN;
2160
+ const ret = wasm.mesh_chamfer_edges(vertex_count, ptr0, len0, ptr1, len1, distance);
2161
+ var v3 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
2162
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
2163
+ return v3;
2164
+ }
2165
+
2080
2166
  /**
2081
2167
  * Clip a polyline against a closed mesh volume (boolean intersection for curves).
2082
2168
  *
@@ -3368,6 +3454,28 @@ export function nurbs_curve_curve_intersect_params(curve_a_data, curve_b_data) {
3368
3454
  return v3;
3369
3455
  }
3370
3456
 
3457
+ /**
3458
+ * Offset a planar NURBS curve by `distance` within the plane with normal
3459
+ * (nx, ny, nz), refit to `tolerance`. Input/output use the standard curve
3460
+ * buffer format [degree, n, cps(xyz)..., weights..., knots...].
3461
+ * Returns an empty buffer on failure (see `geometry_last_error`).
3462
+ * @param {Float64Array} data
3463
+ * @param {number} distance
3464
+ * @param {number} nx
3465
+ * @param {number} ny
3466
+ * @param {number} nz
3467
+ * @param {number} tolerance
3468
+ * @returns {Float64Array}
3469
+ */
3470
+ export function nurbs_curve_offset(data, distance, nx, ny, nz, tolerance) {
3471
+ const ptr0 = passArrayF64ToWasm0(data, wasm.__wbindgen_malloc);
3472
+ const len0 = WASM_VECTOR_LEN;
3473
+ const ret = wasm.nurbs_curve_offset(ptr0, len0, distance, nx, ny, nz, tolerance);
3474
+ var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
3475
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
3476
+ return v2;
3477
+ }
3478
+
3371
3479
  /**
3372
3480
  * Intersect a NURBS curve with a plane.
3373
3481
  * Input: same curve format as sample_nurbs_curve + plane normal (nx,ny,nz) and d.
@@ -3623,6 +3731,24 @@ export function nurbs_surface_normal(data, u, v) {
3623
3731
  return v2;
3624
3732
  }
3625
3733
 
3734
+ /**
3735
+ * Offset a NURBS surface by `distance` along its normal field, refit to
3736
+ * `tolerance`. Input/output use the standard surface buffer format.
3737
+ * Returns an empty buffer on failure (see `geometry_last_error`).
3738
+ * @param {Float64Array} data
3739
+ * @param {number} distance
3740
+ * @param {number} tolerance
3741
+ * @returns {Float64Array}
3742
+ */
3743
+ export function nurbs_surface_offset(data, distance, tolerance) {
3744
+ const ptr0 = passArrayF64ToWasm0(data, wasm.__wbindgen_malloc);
3745
+ const len0 = WASM_VECTOR_LEN;
3746
+ const ret = wasm.nurbs_surface_offset(ptr0, len0, distance, tolerance);
3747
+ var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
3748
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
3749
+ return v2;
3750
+ }
3751
+
3626
3752
  /**
3627
3753
  * Intersect a NURBS surface with a plane.
3628
3754
  * Input: same surface format as tessellate_nurbs_surface, then plane (nx,ny,nz,d) appended.