@snaptrude/plugin-core 0.9.1 → 0.9.2

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.
package/api-manifest.json CHANGED
@@ -715,6 +715,18 @@
715
715
  "argsType": "Vec3Handle",
716
716
  "resultType": "ArcHandle"
717
717
  },
718
+ {
719
+ "path": "core.geom.create.brepFromChamfer",
720
+ "namespace": "core.geom.create",
721
+ "summary": "Bevels the given straight edges of a solid with a symmetric planar cut. Host API call — returns a new {@linkcode BrepHandle}; the input brep is read-only.",
722
+ "examplePrompts": [
723
+ "Bevel these edges by 100mm",
724
+ "Chamfer the top edges of the plinth",
725
+ "Cut a 45-degree flat along the corners of this mass\n\n# Example\n```ts\nconst brep = await snaptrude.core.geom.create.brepFromExtrusion(contour, { x: 0, y: 1, z: 0 }, 3)\nconst edges = await snaptrude.core.geom.query.brep.listEdges(brep)\nconst beveled = await snaptrude.core.geom.create.brepFromChamfer(brep, [edges[0]], 0.1)\n```"
726
+ ],
727
+ "argsType": "BrepHandle",
728
+ "resultType": "BrepHandle"
729
+ },
718
730
  {
719
731
  "path": "core.geom.create.brepFromExtrusion",
720
732
  "namespace": "core.geom.create",
@@ -739,6 +751,18 @@
739
751
  "argsType": "Vec3Components[][]",
740
752
  "resultType": "BrepHandle"
741
753
  },
754
+ {
755
+ "path": "core.geom.create.brepFromFillet",
756
+ "namespace": "core.geom.create",
757
+ "summary": "Rounds the given straight edges of a solid with a constant radius. Host API call — returns a new {@linkcode BrepHandle}; the input brep is read-only.",
758
+ "examplePrompts": [
759
+ "Round the edges of this mass",
760
+ "Fillet the corners of the podium with a 0.5m radius",
761
+ "Soften the vertical edges of this tower\n\n# Example\n```ts\nconst brep = await snaptrude.core.geom.create.brepFromExtrusion(contour, { x: 0, y: 1, z: 0 }, 3)\nconst edges = await snaptrude.core.geom.query.brep.listEdges(brep)\nconst rounded = await snaptrude.core.geom.create.brepFromFillet(brep, [edges[0]], 0.3)\n```"
762
+ ],
763
+ "argsType": "BrepHandle",
764
+ "resultType": "BrepHandle"
765
+ },
742
766
  {
743
767
  "path": "core.geom.create.brepFromIntersection",
744
768
  "namespace": "core.geom.create",
@@ -754,11 +778,12 @@
754
778
  {
755
779
  "path": "core.geom.create.brepFromLoft",
756
780
  "namespace": "core.geom.create",
757
- "summary": "Create a closed solid **B-rep** by lofting between a bottom and a top contour. Host API call — returns a {@linkcode BrepHandle}. Both contours must have the same number of edges (and matching hole counts); side faces connect corresponding edges by authored index. Corresponding edges must stay coplanar — a twisted loft would produce non-planar side faces and is rejected. The contours are copied — the input handles are never mutated.",
781
+ "summary": "Create a closed solid **B-rep** by lofting between a bottom and a top contour, optionally through intermediate cross-sections. Host API call — returns a {@linkcode BrepHandle}. All sections must have the same number of edges; side faces connect corresponding edges by authored index. Corresponding edges must stay coplanar segment to segment (matching hole counts allowed in the two-section form) — a twisted loft would produce non-planar side faces and is rejected. With intermediates the loft is a chain of ruled segments folded into one solid: sections must be planar and hole-free, ordered bottom → intermediates → top. The contours are copied — the input handles are never mutated.",
758
782
  "examplePrompts": [
759
783
  "Make a tapered tower from these two outlines",
760
784
  "Loft between a large base and a smaller top",
761
- "Create a frustum from two squares\n\n# Example\n```ts\n// A square frustum: 4m base lofted to a 2m top, 3m up\nconst base = await snaptrude.core.geom.create.profileRect(4, 4)\nconst top = await snaptrude.core.geom.create.profileRect(2, 2, await snaptrude.core.math.vec3.new(0, 3, 0))\nconst brep = await snaptrude.core.geom.create.brepFromLoft(\nawait snaptrude.core.geom.create.contourFromProfile(base),\nawait snaptrude.core.geom.create.contourFromProfile(top),\n)\nconst faceCount = await snaptrude.core.geom.query.brep.getFaceCount(brep) // 6\n```"
785
+ "Create a frustum from two squares",
786
+ "Loft the tower through these three floor outlines\n\n# Example\n```ts\n// A square frustum: 4m base lofted to a 2m top, 3m up\nconst base = await snaptrude.core.geom.create.profileRect(4, 4)\nconst top = await snaptrude.core.geom.create.profileRect(2, 2, await snaptrude.core.math.vec3.new(0, 3, 0))\nconst brep = await snaptrude.core.geom.create.brepFromLoft(\nawait snaptrude.core.geom.create.contourFromProfile(base),\nawait snaptrude.core.geom.create.contourFromProfile(top),\n)\nconst faceCount = await snaptrude.core.geom.query.brep.getFaceCount(brep) // 6\n```"
762
787
  ],
763
788
  "argsType": "ContourHandle",
764
789
  "resultType": "BrepHandle"
@@ -775,6 +800,42 @@
775
800
  "argsType": "Vec3Components[]",
776
801
  "resultType": "BrepHandle"
777
802
  },
803
+ {
804
+ "path": "core.geom.create.brepFromOffset",
805
+ "namespace": "core.geom.create",
806
+ "summary": "Grows or shrinks a solid by offsetting every face — positive distance moves faces outward, negative moves them inward. Host API call — returns a new {@linkcode BrepHandle}; the input brep is read-only.",
807
+ "examplePrompts": [
808
+ "Grow this solid by 0.5m in every direction",
809
+ "Shrink this mass by 200mm",
810
+ "Offset the building envelope outward by 1m\n\n# Example\n```ts\nconst brep = await snaptrude.core.geom.create.brepFromExtrusion(contour, { x: 0, y: 1, z: 0 }, 3)\nconst grown = await snaptrude.core.geom.create.brepFromOffset(brep, 0.5)\n```"
811
+ ],
812
+ "argsType": "BrepHandle",
813
+ "resultType": "BrepHandle"
814
+ },
815
+ {
816
+ "path": "core.geom.create.brepFromRevolution",
817
+ "namespace": "core.geom.create",
818
+ "summary": "Revolves a planar profile about an axis to make a solid of revolution — a full turn by default. Host API call — returns a new {@linkcode BrepHandle}; the input contour is read-only. Holes in the profile are allowed. Profile segments must stay parallel or perpendicular to the axis — inclined or arc segments would revolve into surfaces Snaptrude cannot represent.",
819
+ "examplePrompts": [
820
+ "Create a dome from this section",
821
+ "Revolve this profile 360 degrees around the vertical axis",
822
+ "Build a rotunda by revolving this wall section\n\n# Example\n```ts\n// A cylinder: revolve a 2m-wide, 3m-tall rectangle about the Y axis at its edge\nconst rect = await snaptrude.core.geom.create.profileFromLinePoints([\nawait snaptrude.core.math.vec3.new(0, 0, 0),\nawait snaptrude.core.math.vec3.new(2, 0, 0),\nawait snaptrude.core.math.vec3.new(2, 3, 0),\nawait snaptrude.core.math.vec3.new(0, 3, 0),\n])\nconst profile = await snaptrude.core.geom.create.contourFromProfile(rect)\nconst cylinder = await snaptrude.core.geom.create.brepFromRevolution(\nprofile,\n{ x: 0, y: 0, z: 0 },\n{ x: 0, y: 1, z: 0 },\n)\n```"
823
+ ],
824
+ "argsType": "ContourHandle",
825
+ "resultType": "BrepHandle"
826
+ },
827
+ {
828
+ "path": "core.geom.create.brepFromShell",
829
+ "namespace": "core.geom.create",
830
+ "summary": "Hollows a solid into constant-thickness walls, removing the given faces as openings. Host API call — returns a new {@linkcode BrepHandle}; the input brep is read-only. The outer surface is kept and the walls grow inward.",
831
+ "examplePrompts": [
832
+ "Hollow this mass into 200mm walls",
833
+ "Shell this form with the top face open",
834
+ "Turn this solid tower into a tube open at both ends\n\n# Example\n```ts\nconst brep = await snaptrude.core.geom.create.brepFromExtrusion(contour, { x: 0, y: 1, z: 0 }, 3)\nconst faces = await snaptrude.core.geom.query.brep.listFaces(brep)\nconst hollow = await snaptrude.core.geom.create.brepFromShell(brep, [faces[0]], 0.2)\n```"
835
+ ],
836
+ "argsType": "BrepHandle",
837
+ "resultType": "BrepHandle"
838
+ },
778
839
  {
779
840
  "path": "core.geom.create.brepFromSubtraction",
780
841
  "namespace": "core.geom.create",
@@ -787,6 +848,18 @@
787
848
  "argsType": "BrepHandle",
788
849
  "resultType": "BrepHandle"
789
850
  },
851
+ {
852
+ "path": "core.geom.create.brepFromSweep",
853
+ "namespace": "core.geom.create",
854
+ "summary": "Sweeps a planar profile along an open polyline path, with mitred corners at each bend. Host API call — returns a new {@linkcode BrepHandle}; the input contour is read-only. The profile must be hole-free and must not lie in a plane containing the first path segment's direction.",
855
+ "examplePrompts": [
856
+ "Sweep this profile along the corridor path",
857
+ "Extrude the railing section along this route",
858
+ "Run a duct profile through these points\n\n# Example\n```ts\nconst rect = await snaptrude.core.geom.create.profileRect(0.4, 0.4)\nconst profile = await snaptrude.core.geom.create.contourFromProfile(rect)\n// profileRect lies in the XZ plane, so the path must START out of that\n// plane (here: straight up), then it can run horizontally.\nconst duct = await snaptrude.core.geom.create.brepFromSweep(profile, [\n{ x: 0, y: 0, z: 0 },\n{ x: 0, y: 2.8, z: 0 },\n{ x: 10, y: 2.8, z: 0 },\n])\n```"
859
+ ],
860
+ "argsType": "ContourHandle",
861
+ "resultType": "BrepHandle"
862
+ },
790
863
  {
791
864
  "path": "core.geom.create.brepFromUnion",
792
865
  "namespace": "core.geom.create",
@@ -799,6 +872,18 @@
799
872
  "argsType": "BrepHandle",
800
873
  "resultType": "BrepHandle"
801
874
  },
875
+ {
876
+ "path": "core.geom.create.brepsFromSplit",
877
+ "namespace": "core.geom.create",
878
+ "summary": "Cuts a solid by an infinite plane and returns one brep per resulting piece — a single piece if the plane misses the solid. Host API call — returns new {@linkcode BrepHandle}s; the input brep is read-only. The plane is defined by a point on it and its normal direction.",
879
+ "examplePrompts": [
880
+ "Cut this building at 12m height",
881
+ "Split the tower from the podium with a horizontal plane",
882
+ "Slice this mass along a vertical plane\n\n# Example\n```ts\nconst pieces = await snaptrude.core.geom.create.brepsFromSplit(\ntowerBrep,\n{ x: 0, y: 12, z: 0 },\n{ x: 0, y: 1, z: 0 },\n)\nconsole.log(\"pieces:\", pieces.length)\n```"
883
+ ],
884
+ "argsType": "BrepHandle",
885
+ "resultType": "BrepHandle[]"
886
+ },
802
887
  {
803
888
  "path": "core.geom.create.circle",
804
889
  "namespace": "core.geom.create",
@@ -961,6 +1046,18 @@
961
1046
  "argsType": "BrepHandle",
962
1047
  "resultType": "Vec3Components"
963
1048
  },
1049
+ {
1050
+ "path": "core.geom.query.brep.getDistance",
1051
+ "namespace": "core.geom.query.brep",
1052
+ "summary": "Measures the minimum distance between two solids, with the closest witness point on each. Touching or overlapping solids report a distance of 0 with contact points.",
1053
+ "examplePrompts": [
1054
+ "What is the clearance between these two masses?",
1055
+ "How far apart are the tower and the neighbouring building?",
1056
+ "Find the closest points between these two solids\n\n# Example\n```ts\nconst [a, b] = await snaptrude.design.query.listMasses()\nconst brepA = await snaptrude.design.query.geometry.getBrep(a)\nconst brepB = await snaptrude.design.query.geometry.getBrep(b)\nif (brepA && brepB) {\nconst { distance, pointA, pointB } = await snaptrude.core.geom.query.brep.getDistance(brepA, brepB)\nconsole.log(\"clearance:\", distance)\n}\n```"
1057
+ ],
1058
+ "argsType": "BrepHandle",
1059
+ "resultType": "{ distance: number; pointA: Vec3Components; pointB: Vec3Components }"
1060
+ },
964
1061
  {
965
1062
  "path": "core.geom.query.brep.getEdge",
966
1063
  "namespace": "core.geom.query.brep",
@@ -2753,7 +2850,7 @@
2753
2850
  {
2754
2851
  "path": "core.io.terrain.replaceMesh",
2755
2852
  "namespace": "core.io.terrain",
2756
- "summary": "Replace the terrain surface with a caller-supplied triangle mesh. Undoable (one step), and the replacement persists with the project.",
2853
+ "summary": "Replace the terrain surface with a caller-supplied triangle mesh. Undoable (one step), and the replacement persists with the project. The returned promise resolves only after the surface is fully applied and recorded — it is safe to toggle terrain resolution or read the surface back the moment it resolves.",
2757
2854
  "examplePrompts": [
2758
2855
  "Replace the terrain with this surveyed mesh",
2759
2856
  "Flatten a building pad into the site surface",
@@ -1,6 +1,6 @@
1
1
  import * as z from "zod";
2
2
  import { PluginApiReturn } from "../../../../types";
3
- import { Vec3Handle, LineHandle, ArcHandle, CircleHandle, CurveHandle, ProfileHandle, ContourHandle, BrepHandle, Vec3Components } from "../../../../handles";
3
+ import { Vec3Handle, LineHandle, ArcHandle, CircleHandle, CurveHandle, ProfileHandle, ContourHandle, BrepHandle, FaceHandle, EdgeHandle, Vec3Components } from "../../../../handles";
4
4
  /**
5
5
  * Curve creation — construct new geometric curves from point handles (all-handle
6
6
  * model, §11).
@@ -231,25 +231,36 @@ export declare abstract class PluginGeomCreateApi {
231
231
  abstract brepFromExtrusion(contour: ContourHandle, direction: Vec3Components, amount: number): PluginApiReturn<BrepHandle>;
232
232
  /**
233
233
  * Create a closed solid **B-rep** by lofting between a bottom and a top
234
- * contour. Host API call — returns a {@linkcode BrepHandle}. Both contours
235
- * must have the same number of edges (and matching hole counts); side faces
236
- * connect corresponding edges by authored index. Corresponding edges must
237
- * stay coplanar a twisted loft would produce non-planar side faces and is
238
- * rejected. The contours are copiedthe input handles are never mutated.
234
+ * contour, optionally through intermediate cross-sections. Host API call —
235
+ * returns a {@linkcode BrepHandle}. All sections must have the same number
236
+ * of edges; side faces connect corresponding edges by authored index.
237
+ * Corresponding edges must stay coplanar segment to segment (matching hole
238
+ * counts allowed in the two-section form) a twisted loft would produce
239
+ * non-planar side faces and is rejected. With intermediates the loft is a
240
+ * chain of ruled segments folded into one solid: sections must be planar
241
+ * and hole-free, ordered bottom → intermediates → top. The contours are
242
+ * copied — the input handles are never mutated.
239
243
  *
240
244
  * Inspect the result via `core.geom.query.brep.*`, or commit it to the scene
241
245
  * with `design.create.massFromBrep`.
242
246
  *
243
247
  * @param bottomContour The bottom cross-section
244
- * @param topContour The top cross-section (same edge and hole counts as the bottom)
248
+ * @param topContour The top cross-section (same edge count as the bottom)
249
+ * @param intermediateContours Optional in-between cross-sections, ordered
250
+ * bottom to top (hole-free, same edge count as the bottom and top)
245
251
  * @returns The new solid as a {@linkcode BrepHandle}
246
- * @throws if the contours are coincident, their edge or hole counts differ,
247
- * a side face between corresponding edges would be non-planar, or the
248
- * contours cannot be lofted into a valid solid
252
+ * @throws VALIDATION if the contours are coincident, their edge or hole
253
+ * counts differ, any section has holes when intermediates are present
254
+ * (multi-section lofts take hole-free sections), a section is non-planar,
255
+ * or a side face between corresponding edges would be non-planar (a
256
+ * twisted section pair — the error names the offending sections)
257
+ * @throws OPERATION_FAILED if the lofted segments cannot be joined into a
258
+ * valid solid
249
259
  *
250
260
  * @examplePrompt Make a tapered tower from these two outlines
251
261
  * @examplePrompt Loft between a large base and a smaller top
252
262
  * @examplePrompt Create a frustum from two squares
263
+ * @examplePrompt Loft the tower through these three floor outlines
253
264
  *
254
265
  * # Example
255
266
  * ```ts
@@ -263,7 +274,7 @@ export declare abstract class PluginGeomCreateApi {
263
274
  * const faceCount = await snaptrude.core.geom.query.brep.getFaceCount(brep) // 6
264
275
  * ```
265
276
  */
266
- abstract brepFromLoft(bottomContour: ContourHandle, topContour: ContourHandle): PluginApiReturn<BrepHandle>;
277
+ abstract brepFromLoft(bottomContour: ContourHandle, topContour: ContourHandle, intermediateContours?: ContourHandle[]): PluginApiReturn<BrepHandle>;
267
278
  /**
268
279
  * Create a closed solid **B-rep** from indexed mesh data: a vertex position
269
280
  * array plus face loops of indices into it. Host API call — returns a
@@ -389,6 +400,265 @@ export declare abstract class PluginGeomCreateApi {
389
400
  * ```
390
401
  */
391
402
  abstract brepFromIntersection(a: BrepHandle, b: BrepHandle): PluginApiReturn<BrepHandle>;
403
+ /**
404
+ * Rounds the given straight edges of a solid with a constant radius. Host
405
+ * API call — returns a new {@linkcode BrepHandle}; the input brep is
406
+ * read-only.
407
+ *
408
+ * v1 fillets straight edges only, and no two filleted edges may share a
409
+ * vertex — corner blends produce spherical patches Snaptrude cannot
410
+ * represent. Runs on the OpenCascade kernel (the first kernel call loads a
411
+ * wasm of tens of MB — expect a pause of seconds).
412
+ *
413
+ * Inspect the result via `core.geom.query.brep.*`, or commit it to the scene
414
+ * with `design.create.massFromBrep`.
415
+ *
416
+ * @param brep The solid whose edges to round
417
+ * @param edges The straight edges to fillet (≥1, all on `brep`, no two sharing a vertex)
418
+ * @param radius Fillet radius (positive, finite)
419
+ * @returns The filleted solid as a new {@linkcode BrepHandle}
420
+ * @throws VALIDATION if `edges` is empty, `radius` is not a positive finite
421
+ * number, an edge is not on `brep`, an edge is an arc (v1 fillets straight
422
+ * edges only), or two edges share a vertex (fillet non-adjacent edges)
423
+ * @throws OPERATION_FAILED if the kernel cannot build the fillet (the radius
424
+ * likely exceeds the adjacent face size — reduce it) or the result
425
+ * contains curved surfaces Snaptrude cannot represent
426
+ *
427
+ * @examplePrompt Round the edges of this mass
428
+ * @examplePrompt Fillet the corners of the podium with a 0.5m radius
429
+ * @examplePrompt Soften the vertical edges of this tower
430
+ *
431
+ * # Example
432
+ * ```ts
433
+ * const brep = await snaptrude.core.geom.create.brepFromExtrusion(contour, { x: 0, y: 1, z: 0 }, 3)
434
+ * const edges = await snaptrude.core.geom.query.brep.listEdges(brep)
435
+ * const rounded = await snaptrude.core.geom.create.brepFromFillet(brep, [edges[0]], 0.3)
436
+ * ```
437
+ */
438
+ abstract brepFromFillet(brep: BrepHandle, edges: EdgeHandle[], radius: number): PluginApiReturn<BrepHandle>;
439
+ /**
440
+ * Grows or shrinks a solid by offsetting every face — positive distance
441
+ * moves faces outward, negative moves them inward. Host API call — returns
442
+ * a new {@linkcode BrepHandle}; the input brep is read-only.
443
+ *
444
+ * Runs on the OpenCascade kernel (the first kernel call loads a wasm of
445
+ * tens of MB — expect a pause of seconds).
446
+ *
447
+ * Inspect the result via `core.geom.query.brep.*`, or commit it to the scene
448
+ * with `design.create.massFromBrep`.
449
+ *
450
+ * @param brep The solid to offset
451
+ * @param distance Offset distance (finite, non-zero; positive grows, negative shrinks)
452
+ * @returns The offset solid as a new {@linkcode BrepHandle}
453
+ * @throws VALIDATION if `distance` is not finite, is too small to offset
454
+ * anything, or an inward distance consumes the solid entirely
455
+ * @throws OPERATION_FAILED if the kernel cannot build the offset or the
456
+ * result contains curved surfaces Snaptrude cannot represent
457
+ *
458
+ * @examplePrompt Grow this solid by 0.5m in every direction
459
+ * @examplePrompt Shrink this mass by 200mm
460
+ * @examplePrompt Offset the building envelope outward by 1m
461
+ *
462
+ * # Example
463
+ * ```ts
464
+ * const brep = await snaptrude.core.geom.create.brepFromExtrusion(contour, { x: 0, y: 1, z: 0 }, 3)
465
+ * const grown = await snaptrude.core.geom.create.brepFromOffset(brep, 0.5)
466
+ * ```
467
+ */
468
+ abstract brepFromOffset(brep: BrepHandle, distance: number): PluginApiReturn<BrepHandle>;
469
+ /**
470
+ * Hollows a solid into constant-thickness walls, removing the given faces
471
+ * as openings. Host API call — returns a new {@linkcode BrepHandle}; the
472
+ * input brep is read-only. The outer surface is kept and the walls grow
473
+ * inward.
474
+ *
475
+ * Runs on the OpenCascade kernel (the first kernel call loads a wasm of
476
+ * tens of MB — expect a pause of seconds).
477
+ *
478
+ * Inspect the result via `core.geom.query.brep.*`, or commit it to the scene
479
+ * with `design.create.massFromBrep`.
480
+ *
481
+ * @param brep The solid to hollow
482
+ * @param openFaces The faces to remove as openings (≥1, all on `brep`)
483
+ * @param thickness Wall thickness (positive, finite, smaller than half the solid's smallest span)
484
+ * @returns The hollowed solid as a new {@linkcode BrepHandle}
485
+ * @throws VALIDATION if `openFaces` is empty, a face is not on `brep`,
486
+ * `thickness` is not a positive finite number, or the thickness is too
487
+ * large (it must be smaller than half the solid's smallest span)
488
+ * @throws OPERATION_FAILED if the kernel cannot build the shell or the
489
+ * result contains curved surfaces Snaptrude cannot represent
490
+ *
491
+ * @examplePrompt Hollow this mass into 200mm walls
492
+ * @examplePrompt Shell this form with the top face open
493
+ * @examplePrompt Turn this solid tower into a tube open at both ends
494
+ *
495
+ * # Example
496
+ * ```ts
497
+ * const brep = await snaptrude.core.geom.create.brepFromExtrusion(contour, { x: 0, y: 1, z: 0 }, 3)
498
+ * const faces = await snaptrude.core.geom.query.brep.listFaces(brep)
499
+ * const hollow = await snaptrude.core.geom.create.brepFromShell(brep, [faces[0]], 0.2)
500
+ * ```
501
+ */
502
+ abstract brepFromShell(brep: BrepHandle, openFaces: FaceHandle[], thickness: number): PluginApiReturn<BrepHandle>;
503
+ /**
504
+ * Cuts a solid by an infinite plane and returns one brep per resulting
505
+ * piece — a single piece if the plane misses the solid. Host API call —
506
+ * returns new {@linkcode BrepHandle}s; the input brep is read-only. The
507
+ * plane is defined by a point on it and its normal direction.
508
+ *
509
+ * Runs on the OpenCascade kernel (the first kernel call loads a wasm of
510
+ * tens of MB — expect a pause of seconds).
511
+ *
512
+ * Inspect each result via `core.geom.query.brep.*`, or commit them to the
513
+ * scene with `design.create.massFromBrep`.
514
+ *
515
+ * @param brep The solid to split
516
+ * @param planeOrigin A point on the cutting plane as plain `{x, y, z}` components
517
+ * @param planeNormal The plane normal as plain `{x, y, z}` components (non-zero)
518
+ * @returns The resulting pieces as {@linkcode BrepHandle}`[]` (one per solid)
519
+ * @throws VALIDATION if `planeNormal` is zero-length or the origin/normal
520
+ * components are not finite
521
+ * @throws OPERATION_FAILED if the kernel cannot split the solid
522
+ *
523
+ * @examplePrompt Cut this building at 12m height
524
+ * @examplePrompt Split the tower from the podium with a horizontal plane
525
+ * @examplePrompt Slice this mass along a vertical plane
526
+ *
527
+ * # Example
528
+ * ```ts
529
+ * const pieces = await snaptrude.core.geom.create.brepsFromSplit(
530
+ * towerBrep,
531
+ * { x: 0, y: 12, z: 0 },
532
+ * { x: 0, y: 1, z: 0 },
533
+ * )
534
+ * console.log("pieces:", pieces.length)
535
+ * ```
536
+ */
537
+ abstract brepsFromSplit(brep: BrepHandle, planeOrigin: Vec3Components, planeNormal: Vec3Components): PluginApiReturn<BrepHandle[]>;
538
+ /**
539
+ * Bevels the given straight edges of a solid with a symmetric planar cut.
540
+ * Host API call — returns a new {@linkcode BrepHandle}; the input brep is
541
+ * read-only.
542
+ *
543
+ * v1 chamfers straight edges only, and no two chamfered edges may share a
544
+ * vertex. Runs on the OpenCascade kernel (the first kernel call loads a
545
+ * wasm of tens of MB — expect a pause of seconds).
546
+ *
547
+ * Inspect the result via `core.geom.query.brep.*`, or commit it to the scene
548
+ * with `design.create.massFromBrep`.
549
+ *
550
+ * @param brep The solid whose edges to bevel
551
+ * @param edges The straight edges to chamfer (≥1, all on `brep`, no two sharing a vertex)
552
+ * @param distance Chamfer distance from the edge on each adjacent face (positive, finite)
553
+ * @returns The chamfered solid as a new {@linkcode BrepHandle}
554
+ * @throws VALIDATION if `edges` is empty, `distance` is not a positive
555
+ * finite number, an edge is not on `brep`, an edge is an arc (v1 chamfers
556
+ * straight edges only), or two edges share a vertex (chamfer non-adjacent
557
+ * edges)
558
+ * @throws OPERATION_FAILED if the kernel cannot build the chamfer (the
559
+ * distance likely exceeds the adjacent face size — reduce it)
560
+ *
561
+ * @examplePrompt Bevel these edges by 100mm
562
+ * @examplePrompt Chamfer the top edges of the plinth
563
+ * @examplePrompt Cut a 45-degree flat along the corners of this mass
564
+ *
565
+ * # Example
566
+ * ```ts
567
+ * const brep = await snaptrude.core.geom.create.brepFromExtrusion(contour, { x: 0, y: 1, z: 0 }, 3)
568
+ * const edges = await snaptrude.core.geom.query.brep.listEdges(brep)
569
+ * const beveled = await snaptrude.core.geom.create.brepFromChamfer(brep, [edges[0]], 0.1)
570
+ * ```
571
+ */
572
+ abstract brepFromChamfer(brep: BrepHandle, edges: EdgeHandle[], distance: number): PluginApiReturn<BrepHandle>;
573
+ /**
574
+ * Sweeps a planar profile along an open polyline path, with mitred corners
575
+ * at each bend. Host API call — returns a new {@linkcode BrepHandle}; the
576
+ * input contour is read-only. The profile must be hole-free and must not
577
+ * lie in a plane containing the first path segment's direction.
578
+ *
579
+ * Runs on the OpenCascade kernel (the first kernel call loads a wasm of
580
+ * tens of MB — expect a pause of seconds).
581
+ *
582
+ * Inspect the result via `core.geom.query.brep.*`, or commit it to the scene
583
+ * with `design.create.massFromBrep`.
584
+ *
585
+ * @param profile The cross-section to sweep (hole-free contour)
586
+ * @param path The polyline path as plain `{x, y, z}` points (≥2, open — first ≠ last)
587
+ * @returns The swept solid as a new {@linkcode BrepHandle}
588
+ * @throws VALIDATION if the profile has holes, the path has fewer than 2
589
+ * points, consecutive path points coincide, the path is closed (open
590
+ * paths only in v1), a coordinate is not finite, or the profile plane
591
+ * contains the first path segment's direction (degenerate sweep)
592
+ * @throws OPERATION_FAILED if the kernel cannot sweep the profile into a
593
+ * valid solid or a transition patch is a curved surface Snaptrude cannot
594
+ * represent
595
+ *
596
+ * @examplePrompt Sweep this profile along the corridor path
597
+ * @examplePrompt Extrude the railing section along this route
598
+ * @examplePrompt Run a duct profile through these points
599
+ *
600
+ * # Example
601
+ * ```ts
602
+ * const rect = await snaptrude.core.geom.create.profileRect(0.4, 0.4)
603
+ * const profile = await snaptrude.core.geom.create.contourFromProfile(rect)
604
+ * // profileRect lies in the XZ plane, so the path must START out of that
605
+ * // plane (here: straight up), then it can run horizontally.
606
+ * const duct = await snaptrude.core.geom.create.brepFromSweep(profile, [
607
+ * { x: 0, y: 0, z: 0 },
608
+ * { x: 0, y: 2.8, z: 0 },
609
+ * { x: 10, y: 2.8, z: 0 },
610
+ * ])
611
+ * ```
612
+ */
613
+ abstract brepFromSweep(profile: ContourHandle, path: Vec3Components[]): PluginApiReturn<BrepHandle>;
614
+ /**
615
+ * Revolves a planar profile about an axis to make a solid of revolution — a
616
+ * full turn by default. Host API call — returns a new
617
+ * {@linkcode BrepHandle}; the input contour is read-only. Holes in the
618
+ * profile are allowed. Profile segments must stay parallel or perpendicular
619
+ * to the axis — inclined or arc segments would revolve into surfaces
620
+ * Snaptrude cannot represent.
621
+ *
622
+ * Runs on the OpenCascade kernel (the first kernel call loads a wasm of
623
+ * tens of MB — expect a pause of seconds).
624
+ *
625
+ * Inspect the result via `core.geom.query.brep.*`, or commit it to the scene
626
+ * with `design.create.massFromBrep`.
627
+ *
628
+ * @param profile The cross-section to revolve (planar contour, holes allowed)
629
+ * @param axisOrigin A point on the revolution axis as plain `{x, y, z}` components
630
+ * @param axisDirection The axis direction as plain `{x, y, z}` components (non-zero)
631
+ * @param angleInDegrees Optional revolution angle in degrees (0 < angle ≤ 360; default 360)
632
+ * @returns The revolved solid as a new {@linkcode BrepHandle}
633
+ * @throws VALIDATION if `axisDirection` is zero-length, `angleInDegrees` is
634
+ * not in (0, 360], the axis passes through the profile interior, or a
635
+ * coordinate is not finite
636
+ * @throws OPERATION_FAILED if the kernel cannot revolve the profile or the
637
+ * result contains curved surfaces Snaptrude cannot represent (keep
638
+ * profile segments parallel or perpendicular to the axis)
639
+ *
640
+ * @examplePrompt Create a dome from this section
641
+ * @examplePrompt Revolve this profile 360 degrees around the vertical axis
642
+ * @examplePrompt Build a rotunda by revolving this wall section
643
+ *
644
+ * # Example
645
+ * ```ts
646
+ * // A cylinder: revolve a 2m-wide, 3m-tall rectangle about the Y axis at its edge
647
+ * const rect = await snaptrude.core.geom.create.profileFromLinePoints([
648
+ * await snaptrude.core.math.vec3.new(0, 0, 0),
649
+ * await snaptrude.core.math.vec3.new(2, 0, 0),
650
+ * await snaptrude.core.math.vec3.new(2, 3, 0),
651
+ * await snaptrude.core.math.vec3.new(0, 3, 0),
652
+ * ])
653
+ * const profile = await snaptrude.core.geom.create.contourFromProfile(rect)
654
+ * const cylinder = await snaptrude.core.geom.create.brepFromRevolution(
655
+ * profile,
656
+ * { x: 0, y: 0, z: 0 },
657
+ * { x: 0, y: 1, z: 0 },
658
+ * )
659
+ * ```
660
+ */
661
+ abstract brepFromRevolution(profile: ContourHandle, axisOrigin: Vec3Components, axisDirection: Vec3Components, angleInDegrees?: number): PluginApiReturn<BrepHandle>;
392
662
  }
393
663
  /**
394
664
  * Arguments for {@linkcode PluginGeomCreateApi.line}.
@@ -522,10 +792,12 @@ export type PluginGeomCreateBrepFromExtrusionArgs = z.infer<typeof PluginGeomCre
522
792
  * |---|---|---|
523
793
  * | `bottomContour` | {@linkcode ContourHandle} | The bottom cross-section |
524
794
  * | `topContour` | {@linkcode ContourHandle} | The top cross-section |
795
+ * | `intermediateContours` | {@linkcode ContourHandle}`[]`? | Optional in-between cross-sections, ordered bottom to top |
525
796
  */
526
797
  export declare const PluginGeomCreateBrepFromLoftArgs: z.ZodObject<{
527
798
  bottomContour: z.ZodPipe<z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodString>, z.ZodTransform<import("../../../..").Handle<"contour">, string>>;
528
799
  topContour: z.ZodPipe<z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodString>, z.ZodTransform<import("../../../..").Handle<"contour">, string>>;
800
+ intermediateContours: z.ZodOptional<z.ZodArray<z.ZodPipe<z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodString>, z.ZodTransform<import("../../../..").Handle<"contour">, string>>>>;
529
801
  }, z.core.$strip>;
530
802
  export type PluginGeomCreateBrepFromLoftArgs = z.infer<typeof PluginGeomCreateBrepFromLoftArgs>;
531
803
  /**
@@ -561,4 +833,127 @@ export declare const PluginGeomCreateBrepBooleanArgs: z.ZodObject<{
561
833
  b: z.ZodPipe<z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodString>, z.ZodTransform<import("../../../..").Handle<"brep">, string>>;
562
834
  }, z.core.$strip>;
563
835
  export type PluginGeomCreateBrepBooleanArgs = z.infer<typeof PluginGeomCreateBrepBooleanArgs>;
836
+ /**
837
+ * Arguments for {@linkcode PluginGeomCreateApi.brepFromFillet}.
838
+ *
839
+ * | Property | Type | Description |
840
+ * |---|---|---|
841
+ * | `brep` | {@linkcode BrepHandle} | The solid whose edges to round |
842
+ * | `edges` | {@linkcode EdgeHandle}`[]` | The straight edges to fillet (≥1) |
843
+ * | `radius` | `number` | Fillet radius (positive, finite) |
844
+ */
845
+ export declare const PluginGeomCreateBrepFromFilletArgs: z.ZodObject<{
846
+ brep: z.ZodPipe<z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodString>, z.ZodTransform<import("../../../..").Handle<"brep">, string>>;
847
+ edges: z.ZodArray<z.ZodPipe<z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodString>, z.ZodTransform<import("../../../..").Handle<"edge">, string>>>;
848
+ radius: z.ZodNumber;
849
+ }, z.core.$strip>;
850
+ export type PluginGeomCreateBrepFromFilletArgs = z.infer<typeof PluginGeomCreateBrepFromFilletArgs>;
851
+ /**
852
+ * Arguments for {@linkcode PluginGeomCreateApi.brepFromOffset}.
853
+ *
854
+ * | Property | Type | Description |
855
+ * |---|---|---|
856
+ * | `brep` | {@linkcode BrepHandle} | The solid to offset |
857
+ * | `distance` | `number` | Offset distance (finite, non-zero; positive grows, negative shrinks) |
858
+ */
859
+ export declare const PluginGeomCreateBrepFromOffsetArgs: z.ZodObject<{
860
+ brep: z.ZodPipe<z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodString>, z.ZodTransform<import("../../../..").Handle<"brep">, string>>;
861
+ distance: z.ZodNumber;
862
+ }, z.core.$strip>;
863
+ export type PluginGeomCreateBrepFromOffsetArgs = z.infer<typeof PluginGeomCreateBrepFromOffsetArgs>;
864
+ /**
865
+ * Arguments for {@linkcode PluginGeomCreateApi.brepFromShell}.
866
+ *
867
+ * | Property | Type | Description |
868
+ * |---|---|---|
869
+ * | `brep` | {@linkcode BrepHandle} | The solid to hollow |
870
+ * | `openFaces` | {@linkcode FaceHandle}`[]` | The faces to remove as openings (≥1) |
871
+ * | `thickness` | `number` | Wall thickness (positive, finite) |
872
+ */
873
+ export declare const PluginGeomCreateBrepFromShellArgs: z.ZodObject<{
874
+ brep: z.ZodPipe<z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodString>, z.ZodTransform<import("../../../..").Handle<"brep">, string>>;
875
+ openFaces: z.ZodArray<z.ZodPipe<z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodString>, z.ZodTransform<import("../../../..").Handle<"face">, string>>>;
876
+ thickness: z.ZodNumber;
877
+ }, z.core.$strip>;
878
+ export type PluginGeomCreateBrepFromShellArgs = z.infer<typeof PluginGeomCreateBrepFromShellArgs>;
879
+ /**
880
+ * Arguments for {@linkcode PluginGeomCreateApi.brepsFromSplit}.
881
+ *
882
+ * | Property | Type | Description |
883
+ * |---|---|---|
884
+ * | `brep` | {@linkcode BrepHandle} | The solid to split |
885
+ * | `planeOrigin` | {@linkcode Vec3Components} | A point on the cutting plane (finite components) |
886
+ * | `planeNormal` | {@linkcode Vec3Components} | The plane normal (non-zero, finite components) |
887
+ */
888
+ export declare const PluginGeomCreateBrepsFromSplitArgs: z.ZodObject<{
889
+ brep: z.ZodPipe<z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodString>, z.ZodTransform<import("../../../..").Handle<"brep">, string>>;
890
+ planeOrigin: z.ZodObject<{
891
+ x: z.ZodNumber;
892
+ y: z.ZodNumber;
893
+ z: z.ZodNumber;
894
+ }, z.core.$strip>;
895
+ planeNormal: z.ZodObject<{
896
+ x: z.ZodNumber;
897
+ y: z.ZodNumber;
898
+ z: z.ZodNumber;
899
+ }, z.core.$strip>;
900
+ }, z.core.$strip>;
901
+ export type PluginGeomCreateBrepsFromSplitArgs = z.infer<typeof PluginGeomCreateBrepsFromSplitArgs>;
902
+ /**
903
+ * Arguments for {@linkcode PluginGeomCreateApi.brepFromChamfer}.
904
+ *
905
+ * | Property | Type | Description |
906
+ * |---|---|---|
907
+ * | `brep` | {@linkcode BrepHandle} | The solid whose edges to bevel |
908
+ * | `edges` | {@linkcode EdgeHandle}`[]` | The straight edges to chamfer (≥1) |
909
+ * | `distance` | `number` | Chamfer distance from the edge on each adjacent face (positive, finite) |
910
+ */
911
+ export declare const PluginGeomCreateBrepFromChamferArgs: z.ZodObject<{
912
+ brep: z.ZodPipe<z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodString>, z.ZodTransform<import("../../../..").Handle<"brep">, string>>;
913
+ edges: z.ZodArray<z.ZodPipe<z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodString>, z.ZodTransform<import("../../../..").Handle<"edge">, string>>>;
914
+ distance: z.ZodNumber;
915
+ }, z.core.$strip>;
916
+ export type PluginGeomCreateBrepFromChamferArgs = z.infer<typeof PluginGeomCreateBrepFromChamferArgs>;
917
+ /**
918
+ * Arguments for {@linkcode PluginGeomCreateApi.brepFromSweep}.
919
+ *
920
+ * | Property | Type | Description |
921
+ * |---|---|---|
922
+ * | `profile` | {@linkcode ContourHandle} | The cross-section to sweep (hole-free) |
923
+ * | `path` | {@linkcode Vec3Components}`[]` | The open polyline path (≥2 points, finite components) |
924
+ */
925
+ export declare const PluginGeomCreateBrepFromSweepArgs: z.ZodObject<{
926
+ profile: z.ZodPipe<z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodString>, z.ZodTransform<import("../../../..").Handle<"contour">, string>>;
927
+ path: z.ZodArray<z.ZodObject<{
928
+ x: z.ZodNumber;
929
+ y: z.ZodNumber;
930
+ z: z.ZodNumber;
931
+ }, z.core.$strip>>;
932
+ }, z.core.$strip>;
933
+ export type PluginGeomCreateBrepFromSweepArgs = z.infer<typeof PluginGeomCreateBrepFromSweepArgs>;
934
+ /**
935
+ * Arguments for {@linkcode PluginGeomCreateApi.brepFromRevolution}.
936
+ *
937
+ * | Property | Type | Description |
938
+ * |---|---|---|
939
+ * | `profile` | {@linkcode ContourHandle} | The cross-section to revolve (holes allowed) |
940
+ * | `axisOrigin` | {@linkcode Vec3Components} | A point on the revolution axis (finite components) |
941
+ * | `axisDirection` | {@linkcode Vec3Components} | The axis direction (non-zero, finite components) |
942
+ * | `angleInDegrees` | `number`? | Revolution angle in degrees (0 < angle ≤ 360; default 360) |
943
+ */
944
+ export declare const PluginGeomCreateBrepFromRevolutionArgs: z.ZodObject<{
945
+ profile: z.ZodPipe<z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodString>, z.ZodTransform<import("../../../..").Handle<"contour">, string>>;
946
+ axisOrigin: z.ZodObject<{
947
+ x: z.ZodNumber;
948
+ y: z.ZodNumber;
949
+ z: z.ZodNumber;
950
+ }, z.core.$strip>;
951
+ axisDirection: z.ZodObject<{
952
+ x: z.ZodNumber;
953
+ y: z.ZodNumber;
954
+ z: z.ZodNumber;
955
+ }, z.core.$strip>;
956
+ angleInDegrees: z.ZodOptional<z.ZodNumber>;
957
+ }, z.core.$strip>;
958
+ export type PluginGeomCreateBrepFromRevolutionArgs = z.infer<typeof PluginGeomCreateBrepFromRevolutionArgs>;
564
959
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/api/core/geom/create/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAE5J;;;;;;;;;;GAUG;AACH,8BAAsB,mBAAmB;;IAGvC;;;;;;;;;;;;;;;OAeG;aACa,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,GAAG,eAAe,CAAC,UAAU,CAAC;IAE/F;;;;;;;;;;;;;;;;;OAiBG;aACa,GAAG,CACjB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,UAAU,EACpB,WAAW,EAAE,UAAU,EACvB,IAAI,EAAE,UAAU,GACf,eAAe,CAAC,SAAS,CAAC;IAE7B;;;;;;;;;;;;;;;;;OAiBG;aACa,MAAM,CACpB,WAAW,EAAE,UAAU,EACvB,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,MAAM,GACb,eAAe,CAAC,YAAY,CAAC;IAEhC;;;;;;;;;;;;;;OAcG;aACa,qBAAqB,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,eAAe,CAAC,aAAa,CAAC;IAE3F;;;;;;;;;;;;;OAaG;aACa,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,eAAe,CAAC,aAAa,CAAC;IAExF;;;;;;;;;;;;;;;;;;;;;;OAsBG;aACa,WAAW,CACzB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,UAAU,GAClB,eAAe,CAAC,aAAa,CAAC;IAEjC;;;;;;;;;OASG;aACa,kBAAkB,CAAC,KAAK,EAAE,aAAa,GAAG,eAAe,CAAC,aAAa,CAAC;IAExF;;;;;;;;;;;;;;;OAeG;aACa,mBAAmB,CACjC,KAAK,EAAE,aAAa,EACpB,KAAK,CAAC,EAAE,aAAa,EAAE,GACtB,eAAe,CAAC,aAAa,CAAC;IAEjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2CG;aACa,aAAa,CAAC,KAAK,EAAE,cAAc,EAAE,EAAE,GAAG,eAAe,CAAC,UAAU,CAAC;IAErF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;aACa,iBAAiB,CAC/B,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,cAAc,EACzB,MAAM,EAAE,MAAM,GACb,eAAe,CAAC,UAAU,CAAC;IAE9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;aACa,YAAY,CAC1B,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,aAAa,GACxB,eAAe,CAAC,UAAU,CAAC;IAE9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAsCG;aACa,YAAY,CAC1B,SAAS,EAAE,cAAc,EAAE,EAC3B,KAAK,EAAE,MAAM,EAAE,EAAE,GAChB,eAAe,CAAC,UAAU,CAAC;IAE9B;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;aACa,aAAa,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,GAAG,eAAe,CAAC,UAAU,CAAC;IAExF;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;aACa,mBAAmB,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,GAAG,eAAe,CAAC,UAAU,CAAC;IAE9F;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;aACa,oBAAoB,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,GAAG,eAAe,CAAC,UAAU,CAAC;CAChG;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB;;;iBAGnC,CAAA;AAEF,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAE/E;;;;;;;;;GASG;AACH,eAAO,MAAM,uBAAuB;;;;;iBAKlC,CAAA;AAEF,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAE7E;;;;;;;;GAQG;AACH,eAAO,MAAM,0BAA0B;;;;iBAIrC,CAAA;AAEF,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAA;AAEnF;;;;;;GAMG;AACH,eAAO,MAAM,yCAAyC;;iBAEpD,CAAA;AAEF,MAAM,MAAM,yCAAyC,GAAG,CAAC,CAAC,KAAK,CAC7D,OAAO,yCAAyC,CACjD,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,qCAAqC;;iBAEhD,CAAA;AAEF,MAAM,MAAM,qCAAqC,GAAG,CAAC,CAAC,KAAK,CACzD,OAAO,qCAAqC,CAC7C,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,sCAAsC;;iBAEjD,CAAA;AAEF,MAAM,MAAM,sCAAsC,GAAG,CAAC,CAAC,KAAK,CAC1D,OAAO,sCAAsC,CAC9C,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,uCAAuC;;;iBAGlD,CAAA;AAEF,MAAM,MAAM,uCAAuC,GAAG,CAAC,CAAC,KAAK,CAC3D,OAAO,uCAAuC,CAC/C,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,iCAAiC;;;;;;iBAE5C,CAAA;AAEF,MAAM,MAAM,iCAAiC,GAAG,CAAC,CAAC,KAAK,CACrD,OAAO,iCAAiC,CACzC,CAAA;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,qCAAqC;;;;;;;;iBAWhD,CAAA;AAEF,MAAM,MAAM,qCAAqC,GAAG,CAAC,CAAC,KAAK,CACzD,OAAO,qCAAqC,CAC7C,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,gCAAgC;;;iBAG3C,CAAA;AAEF,MAAM,MAAM,gCAAgC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gCAAgC,CAAC,CAAA;AAE/F;;;;;;;GAOG;AACH,eAAO,MAAM,gCAAgC;;;;;;;iBAG3C,CAAA;AAEF,MAAM,MAAM,gCAAgC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gCAAgC,CAAC,CAAA;AAE/F;;;;;;;;;;GAUG;AACH,eAAO,MAAM,+BAA+B;;;iBAG1C,CAAA;AAEF,MAAM,MAAM,+BAA+B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/api/core/geom/create/index.ts"],"names":[],"mappings":"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"}