okgeometry-api 1.21.0 → 1.22.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.
@@ -321,6 +321,15 @@ export function build_nurbs_curve(degree: number, coords: Float64Array, closed:
321
321
  */
322
322
  export function chamfer_polycurve(coords: Float64Array, distance: number): Float64Array;
323
323
 
324
+ /**
325
+ * Chamfer polyline corners with closed support and optional corner
326
+ * selection. `coords` is a flat point list (closed inputs without the
327
+ * duplicate seam point); `corner_indices` empty = all eligible corners.
328
+ * Returns the flat chamfered point list (closed outputs again without the
329
+ * seam duplicate), or empty on failure (see `geometry_last_error`).
330
+ */
331
+ export function chamfer_polyline_corners(coords: Float64Array, closed: boolean, distance: number, corner_indices: Float64Array): Float64Array;
332
+
324
333
  /**
325
334
  * Get the circumference of a circle.
326
335
  */
@@ -432,6 +441,12 @@ export function extrude_polyline(coords: Float64Array, dx: number, dy: number, d
432
441
  */
433
442
  export function fillet_polycurve(coords: Float64Array, radius: number, nx: number, ny: number, nz: number): Float64Array;
434
443
 
444
+ /**
445
+ * Human-readable reason for the most recent empty result returned by the
446
+ * offset/chamfer exports below. Cleared at the start of each such call.
447
+ */
448
+ export function geometry_last_error(): string;
449
+
435
450
  /**
436
451
  * Get the length of a line segment.
437
452
  */
@@ -662,6 +677,16 @@ export function mesh_build_render_buffers(vertex_count: number, buffer: Float64A
662
677
  */
663
678
  export function mesh_chamfer_all_edges(mesh_type: string, params: Float64Array, offset: number): Float64Array;
664
679
 
680
+ /**
681
+ * Chamfer feature edges of a closed solid. `edges` is a flat buffer of
682
+ * segment endpoint pairs [ax,ay,az,bx,by,bz, ...]; each picked segment
683
+ * expands to its full feature-edge chain (straight box edges, tessellated
684
+ * rims). `distance` is the setback along each adjacent face.
685
+ * Returns a standard mesh buffer, or empty on failure (see
686
+ * `geometry_last_error`).
687
+ */
688
+ export function mesh_chamfer_edges(vertex_count: number, buffer: Float64Array, edges: Float64Array, distance: number): Float64Array;
689
+
665
690
  /**
666
691
  * Clip a polyline against a closed mesh volume (boolean intersection for curves).
667
692
  *
@@ -1113,6 +1138,14 @@ export function nurbs_curve_curve_intersect(data_a: Float64Array, data_b: Float6
1113
1138
  */
1114
1139
  export function nurbs_curve_curve_intersect_params(curve_a_data: Float64Array, curve_b_data: Float64Array): Float64Array;
1115
1140
 
1141
+ /**
1142
+ * Offset a planar NURBS curve by `distance` within the plane with normal
1143
+ * (nx, ny, nz), refit to `tolerance`. Input/output use the standard curve
1144
+ * buffer format [degree, n, cps(xyz)..., weights..., knots...].
1145
+ * Returns an empty buffer on failure (see `geometry_last_error`).
1146
+ */
1147
+ export function nurbs_curve_offset(data: Float64Array, distance: number, nx: number, ny: number, nz: number, tolerance: number): Float64Array;
1148
+
1116
1149
  /**
1117
1150
  * Intersect a NURBS curve with a plane.
1118
1151
  * Input: same curve format as sample_nurbs_curve + plane normal (nx,ny,nz) and d.
@@ -1215,6 +1248,13 @@ export function nurbs_surface_iso_curve(data: Float64Array, t: number, u_dir: bo
1215
1248
  */
1216
1249
  export function nurbs_surface_normal(data: Float64Array, u: number, v: number): Float64Array;
1217
1250
 
1251
+ /**
1252
+ * Offset a NURBS surface by `distance` along its normal field, refit to
1253
+ * `tolerance`. Input/output use the standard surface buffer format.
1254
+ * Returns an empty buffer on failure (see `geometry_last_error`).
1255
+ */
1256
+ export function nurbs_surface_offset(data: Float64Array, distance: number, tolerance: number): Float64Array;
1257
+
1218
1258
  /**
1219
1259
  * Intersect a NURBS surface with a plane.
1220
1260
  * Input: same surface format as tessellate_nurbs_surface, then plane (nx,ny,nz,d) appended.
@@ -1554,6 +1594,7 @@ export interface InitOutput {
1554
1594
  readonly brep_volume_area: (a: number, b: number, c: number) => [number, number];
1555
1595
  readonly build_nurbs_curve: (a: number, b: number, c: number, d: number) => [number, number];
1556
1596
  readonly chamfer_polycurve: (a: number, b: number, c: number) => [number, number];
1597
+ readonly chamfer_polyline_corners: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
1557
1598
  readonly circle_length: (a: number) => number;
1558
1599
  readonly circle_point_at: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => [number, number];
1559
1600
  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 +1609,7 @@ export interface InitOutput {
1568
1609
  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
1610
  readonly extrude_polyline: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
1570
1611
  readonly fillet_polycurve: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
1612
+ readonly geometry_last_error: () => [number, number];
1571
1613
  readonly line_length: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
1572
1614
  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
1615
  readonly line_point_at: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
@@ -1609,6 +1651,7 @@ export interface InitOutput {
1609
1651
  readonly mesh_build_coplanar_connected_face_groups: (a: number, b: number, c: number) => [number, number];
1610
1652
  readonly mesh_build_render_buffers: (a: number, b: number, c: number, d: number) => [number, number];
1611
1653
  readonly mesh_chamfer_all_edges: (a: number, b: number, c: number, d: number, e: number) => [number, number];
1654
+ readonly mesh_chamfer_edges: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
1612
1655
  readonly mesh_clip_polyline: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
1613
1656
  readonly mesh_clip_polyline_by_sheet: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
1614
1657
  readonly mesh_compute_planar_curve_normal: (a: number, b: number, c: number) => [number, number];
@@ -1673,6 +1716,7 @@ export interface InitOutput {
1673
1716
  readonly mesh_voxel_remesh: (a: number, b: number, c: number, d: number, e: number) => [number, number];
1674
1717
  readonly nurbs_curve_curve_intersect: (a: number, b: number, c: number, d: number) => [number, number];
1675
1718
  readonly nurbs_curve_curve_intersect_params: (a: number, b: number, c: number, d: number) => [number, number];
1719
+ readonly nurbs_curve_offset: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
1676
1720
  readonly nurbs_curve_plane_intersect: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
1677
1721
  readonly nurbs_curve_split_at_params: (a: number, b: number, c: number, d: number, e: number) => [number, number];
1678
1722
  readonly nurbs_curve_surface_intersect_exact: (a: number, b: number, c: number, d: number) => [number, number];
@@ -1686,6 +1730,7 @@ export interface InitOutput {
1686
1730
  readonly nurbs_surface_insert_knot: (a: number, b: number, c: number, d: number, e: number) => [number, number];
1687
1731
  readonly nurbs_surface_iso_curve: (a: number, b: number, c: number, d: number) => [number, number];
1688
1732
  readonly nurbs_surface_normal: (a: number, b: number, c: number, d: number) => [number, number];
1733
+ readonly nurbs_surface_offset: (a: number, b: number, c: number, d: number) => [number, number];
1689
1734
  readonly nurbs_surface_plane_intersect: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
1690
1735
  readonly nurbs_surface_primitive: (a: number, b: number, c: number, d: number) => [number, number];
1691
1736
  readonly nurbs_surface_revolve: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => [number, number];
@@ -839,6 +839,29 @@ export function chamfer_polycurve(coords, distance) {
839
839
  return v2;
840
840
  }
841
841
 
842
+ /**
843
+ * Chamfer polyline corners with closed support and optional corner
844
+ * selection. `coords` is a flat point list (closed inputs without the
845
+ * duplicate seam point); `corner_indices` empty = all eligible corners.
846
+ * Returns the flat chamfered point list (closed outputs again without the
847
+ * seam duplicate), or empty on failure (see `geometry_last_error`).
848
+ * @param {Float64Array} coords
849
+ * @param {boolean} closed
850
+ * @param {number} distance
851
+ * @param {Float64Array} corner_indices
852
+ * @returns {Float64Array}
853
+ */
854
+ export function chamfer_polyline_corners(coords, closed, distance, corner_indices) {
855
+ const ptr0 = passArrayF64ToWasm0(coords, wasm.__wbindgen_malloc);
856
+ const len0 = WASM_VECTOR_LEN;
857
+ const ptr1 = passArrayF64ToWasm0(corner_indices, wasm.__wbindgen_malloc);
858
+ const len1 = WASM_VECTOR_LEN;
859
+ const ret = wasm.chamfer_polyline_corners(ptr0, len0, closed, distance, ptr1, len1);
860
+ var v3 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
861
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
862
+ return v3;
863
+ }
864
+
842
865
  /**
843
866
  * Get the circumference of a circle.
844
867
  * @param {number} radius
@@ -1131,6 +1154,24 @@ export function fillet_polycurve(coords, radius, nx, ny, nz) {
1131
1154
  return v2;
1132
1155
  }
1133
1156
 
1157
+ /**
1158
+ * Human-readable reason for the most recent empty result returned by the
1159
+ * offset/chamfer exports below. Cleared at the start of each such call.
1160
+ * @returns {string}
1161
+ */
1162
+ export function geometry_last_error() {
1163
+ let deferred1_0;
1164
+ let deferred1_1;
1165
+ try {
1166
+ const ret = wasm.geometry_last_error();
1167
+ deferred1_0 = ret[0];
1168
+ deferred1_1 = ret[1];
1169
+ return getStringFromWasm0(ret[0], ret[1]);
1170
+ } finally {
1171
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
1172
+ }
1173
+ }
1174
+
1134
1175
  /**
1135
1176
  * Get the length of a line segment.
1136
1177
  * @param {number} x1
@@ -2077,6 +2118,30 @@ export function mesh_chamfer_all_edges(mesh_type, params, offset) {
2077
2118
  return v3;
2078
2119
  }
2079
2120
 
2121
+ /**
2122
+ * Chamfer feature edges of a closed solid. `edges` is a flat buffer of
2123
+ * segment endpoint pairs [ax,ay,az,bx,by,bz, ...]; each picked segment
2124
+ * expands to its full feature-edge chain (straight box edges, tessellated
2125
+ * rims). `distance` is the setback along each adjacent face.
2126
+ * Returns a standard mesh buffer, or empty on failure (see
2127
+ * `geometry_last_error`).
2128
+ * @param {number} vertex_count
2129
+ * @param {Float64Array} buffer
2130
+ * @param {Float64Array} edges
2131
+ * @param {number} distance
2132
+ * @returns {Float64Array}
2133
+ */
2134
+ export function mesh_chamfer_edges(vertex_count, buffer, edges, distance) {
2135
+ const ptr0 = passArrayF64ToWasm0(buffer, wasm.__wbindgen_malloc);
2136
+ const len0 = WASM_VECTOR_LEN;
2137
+ const ptr1 = passArrayF64ToWasm0(edges, wasm.__wbindgen_malloc);
2138
+ const len1 = WASM_VECTOR_LEN;
2139
+ const ret = wasm.mesh_chamfer_edges(vertex_count, ptr0, len0, ptr1, len1, distance);
2140
+ var v3 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
2141
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
2142
+ return v3;
2143
+ }
2144
+
2080
2145
  /**
2081
2146
  * Clip a polyline against a closed mesh volume (boolean intersection for curves).
2082
2147
  *
@@ -3368,6 +3433,28 @@ export function nurbs_curve_curve_intersect_params(curve_a_data, curve_b_data) {
3368
3433
  return v3;
3369
3434
  }
3370
3435
 
3436
+ /**
3437
+ * Offset a planar NURBS curve by `distance` within the plane with normal
3438
+ * (nx, ny, nz), refit to `tolerance`. Input/output use the standard curve
3439
+ * buffer format [degree, n, cps(xyz)..., weights..., knots...].
3440
+ * Returns an empty buffer on failure (see `geometry_last_error`).
3441
+ * @param {Float64Array} data
3442
+ * @param {number} distance
3443
+ * @param {number} nx
3444
+ * @param {number} ny
3445
+ * @param {number} nz
3446
+ * @param {number} tolerance
3447
+ * @returns {Float64Array}
3448
+ */
3449
+ export function nurbs_curve_offset(data, distance, nx, ny, nz, tolerance) {
3450
+ const ptr0 = passArrayF64ToWasm0(data, wasm.__wbindgen_malloc);
3451
+ const len0 = WASM_VECTOR_LEN;
3452
+ const ret = wasm.nurbs_curve_offset(ptr0, len0, distance, nx, ny, nz, tolerance);
3453
+ var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
3454
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
3455
+ return v2;
3456
+ }
3457
+
3371
3458
  /**
3372
3459
  * Intersect a NURBS curve with a plane.
3373
3460
  * Input: same curve format as sample_nurbs_curve + plane normal (nx,ny,nz) and d.
@@ -3623,6 +3710,24 @@ export function nurbs_surface_normal(data, u, v) {
3623
3710
  return v2;
3624
3711
  }
3625
3712
 
3713
+ /**
3714
+ * Offset a NURBS surface by `distance` along its normal field, refit to
3715
+ * `tolerance`. Input/output use the standard surface buffer format.
3716
+ * Returns an empty buffer on failure (see `geometry_last_error`).
3717
+ * @param {Float64Array} data
3718
+ * @param {number} distance
3719
+ * @param {number} tolerance
3720
+ * @returns {Float64Array}
3721
+ */
3722
+ export function nurbs_surface_offset(data, distance, tolerance) {
3723
+ const ptr0 = passArrayF64ToWasm0(data, wasm.__wbindgen_malloc);
3724
+ const len0 = WASM_VECTOR_LEN;
3725
+ const ret = wasm.nurbs_surface_offset(ptr0, len0, distance, tolerance);
3726
+ var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
3727
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
3728
+ return v2;
3729
+ }
3730
+
3626
3731
  /**
3627
3732
  * Intersect a NURBS surface with a plane.
3628
3733
  * Input: same surface format as tessellate_nurbs_surface, then plane (nx,ny,nz,d) appended.