diff --git a/README.md b/README.md index 07472c9d..0895827a 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,7 @@ npm run dev ## Build It With an AI Agent -Bitbybit has 1901 functions across three CAD kernels - more than any model remembers, so an agent working from memory invents plausible names that do not exist. Give it the **[Bitbybit CAD MCP](https://learn.bitbybit.dev/learn/using-ai-with-bitbybit/mcp/bitbybit-mcp)** instead and it looks up the exact signature, defaults, return type and examples for the version you have installed. It is free and needs no account: +Bitbybit has 1919 functions across three CAD kernels - more than any model remembers, so an agent working from memory invents plausible names that do not exist. Give it the **[Bitbybit CAD MCP](https://learn.bitbybit.dev/learn/using-ai-with-bitbybit/mcp/bitbybit-mcp)** instead and it looks up the exact signature, defaults, return type and examples for the version you have installed. It is free and needs no account: ```bash claude mcp add --transport http bitbybit https://mcp.bitbybit.dev/mcp diff --git a/docs/api/openapi-docs/bitbybit-cad-cloud-api.info.mdx b/docs/api/openapi-docs/bitbybit-cad-cloud-api.info.mdx index 7322e646..b399d7cd 100644 --- a/docs/api/openapi-docs/bitbybit-cad-cloud-api.info.mdx +++ b/docs/api/openapi-docs/bitbybit-cad-cloud-api.info.mdx @@ -16,7 +16,7 @@ import Export from "@theme/ApiExplorer/Export"; diff --git a/docs/api/openapi-docs/cad-execute-a-chained-pipeline.api.mdx b/docs/api/openapi-docs/cad-execute-a-chained-pipeline.api.mdx index a13a3ccc..f2444cfb 100644 --- a/docs/api/openapi-docs/cad-execute-a-chained-pipeline.api.mdx +++ b/docs/api/openapi-docs/cad-execute-a-chained-pipeline.api.mdx @@ -5,7 +5,7 @@ description: "Runs multiple operations sequentially. Use '$ref:N' in params to r sidebar_label: "CAD - execute a chained pipeline" hide_title: true hide_table_of_contents: true -api: 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 +api: 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 sidebar_class_name: "post api-method" info_path: api/open/bitbybit-cad-cloud-api custom_edit_url: null @@ -64,46 +64,5 @@ Runs multiple operations sequentially. Use '$ref:N' in params to reference step -{/* static-reference:generated */} -## Reference - -`POST /api/v1/cad/pipeline` - -Runs multiple operations sequentially. Use '$ref:N' in params to reference step N's result. - -### Request body - -Content type: `application/json` (required) - -| Field | Type | Required | Description | -|---|---|---|---| -| `steps` | array of object | yes | Ordered list of CAD operations executed sequentially. Later steps can reference earlier results using '$ref:N' syntax. Supports map and choice control-flow steps. | -| `inputFiles` | array of object | no | References to previously uploaded files. Use '$file:N' in step params to inject file contents (optionally '$file:N:<format>:<codec>' to pick a read format and/or decompress - see PipelineStep.params). | -| `inputFiles[].fileId` | string | yes | ID of a previously uploaded file (from POST /files/upload) | -| `inputFiles[].role` | string | yes | Role identifier for the file (e.g. 'step-model', 'coordinates-csv') | -| `outputs` | object | no | Controls which output formats are generated for pipeline results. Supports additional formats (json, csv, stl, 3mf) beyond standard model outputs. | -| `outputs.formats` | array of object | yes | Output formats to generate. Supports standard CAD formats (step, stpz, gltf, decomposed-mesh) plus pipeline-specific formats (json, csv, stl, 3mf). | -| `outputs.meshPrecision` | number | no | Mesh tessellation precision (lower = finer). Range: [0.0001, 10] | -| `outputs.gltfMeshPrecision` | number | no | Mesh tessellation precision (lower = finer). Range: [0.0001, 10] | -| `outputs.adjustYtoZ` | boolean | no | Convert from Y-up to Z-up coordinate system in the output. Useful for software that expects Z-up. | -| `outputs.includePipelineInMetadata` | boolean | no | Include the full pipeline definition in metadata.json. Defaults to true. Set to false to exclude it for smaller metadata. | - -### Responses - -| Status | Description | -|---|---| -| `202` | Task accepted | -| `400` | Validation error | -| `500` | Server error | - -### Example request - -```bash -curl -X POST "https://api.bitbybit.dev/api/v1/cad/pipeline" \ - -H "x-api-key: YOUR_API_KEY" \ - -H "Content-Type: application/json" \ - -d '{ ... }' -``` - -Authentication: send your key in the `x-api-key` header. The full machine-readable specification is at [openapi.json](https://learn.bitbybit.dev/openapi.json). + \ No newline at end of file diff --git a/docs/api/openapi-docs/cad-execute-a-single-operation.api.mdx b/docs/api/openapi-docs/cad-execute-a-single-operation.api.mdx index 088ed214..caeeb31d 100644 --- a/docs/api/openapi-docs/cad-execute-a-single-operation.api.mdx +++ b/docs/api/openapi-docs/cad-execute-a-single-operation.api.mdx @@ -5,7 +5,7 @@ description: "Runs a single CAD operation by its fully-qualified identifier." sidebar_label: "CAD - execute a single operation" hide_title: true hide_table_of_contents: true -api: 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 +api: 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 sidebar_class_name: "post api-method" info_path: api/open/bitbybit-cad-cloud-api custom_edit_url: null @@ -64,38 +64,5 @@ Runs a single CAD operation by its fully-qualified identifier. -{/* static-reference:generated */} -## Reference - -`POST /api/v1/cad/execute` - -Runs a single CAD operation by its fully-qualified identifier. - -### Request body - -Content type: `application/json` (required) - -| Field | Type | Required | Description | -|---|---|---|---| -| `operation` | string | yes | Fully-qualified CAD operation identifier (e.g. 'occt.shapes.solid.createBox', 'manifold.primitives.cube', 'jscad.booleans.union'). Supports OCCT, Manifold, JSCAD, and vector/math operations. | -| `params` | object | no | Operation-specific parameters - varies by operation. See model definitions for available parameters. | - -### Responses - -| Status | Description | -|---|---| -| `202` | Task accepted | -| `400` | Validation error | -| `500` | Server error | - -### Example request - -```bash -curl -X POST "https://api.bitbybit.dev/api/v1/cad/execute" \ - -H "x-api-key: YOUR_API_KEY" \ - -H "Content-Type: application/json" \ - -d '{ ... }' -``` - -Authentication: send your key in the `x-api-key` header. The full machine-readable specification is at [openapi.json](https://learn.bitbybit.dev/openapi.json). + \ No newline at end of file diff --git a/docs/api/openapi-docs/cad-execute-compound-parallel-operations.api.mdx b/docs/api/openapi-docs/cad-execute-compound-parallel-operations.api.mdx index 8c0fb2d9..5aae1a11 100644 --- a/docs/api/openapi-docs/cad-execute-compound-parallel-operations.api.mdx +++ b/docs/api/openapi-docs/cad-execute-compound-parallel-operations.api.mdx @@ -5,7 +5,7 @@ description: "Runs several independent CAD operations in parallel as one compoun sidebar_label: "CAD - execute compound (parallel) operations" hide_title: true hide_table_of_contents: true -api: eJztWW1vG7kR/isDfrFcrGQlzeEQ9ZPOcXpqk7NhO4eihnGgliOJMZfc8EW2agjof+g/7C8pZrgrrSUlOV+LAkWjT9pdLjmvzzwz+yiinAcxuhGn4zdwXqOXUTsbxG0hFIbS65quxUhcJhsg4BK9NKCtwhqtQhuBXnSbF0FbqKWXxqABGcBZhNJVtUtWQZThbgBnslxASNP+5i3QAfAByxRRAV3GAO7egrQKau9UKjFsbip3b42TSk4NgseQTCwgOEgBIS50gPsFWogL7EqlHFgXIUtNRyAJ4eICPfRh5jxICPgpoS2RNvCYV4SINZTOhlRh4E1rj0vtEmt2FMClWKdYNKcjlAupLSqodY1GWwS0qnbaRtA2RJRqAJcYk7cBXg5fwr2OC5BPLQRa/QFqZwzoyCZoNc7no++T8XhlJa2eYYhZZx15I4MRw0AUwpNCIf7g1EqMHvlSe1RiFH3CQpTORrSRHsm6NrpkW518DOTvRxHKBVaS/sVVjWIk3PQjllEUovZk2agx0NPW252VU+cMSiv4jBDbA58G1PsUIkwR6Bn0Iei5lYZsLCPoiFWAsHDJKFpTe1diCKjIF2XyHm00K7EuBK+koyttJ/n/i0JU8qG9GA6LVizpvVyJzjtfVmwTPp2lIXpt56Kg496hnccFn/dUs7fJmFX/U5JGzzSqpxkCmrKGHvgBXKW6dj4GOD89vS7gPbnTGVXAn65Ox28K9v4Sy+j8SSXjohPRA1KeTJ81eSrAJo/7ocZSz3TJOVlhRB842jlR2jBiO9o6xbfa4IHtLnGGnjIjQHSbBDArSDWFJSqY0Yv0cIqUCYoyn3fsnLY15291CJ0yUc/1xuQNuBnIz8oNvZl3FVycX13DCStykp8fk128M/jcEy+dwY6bGxNgcxoO5gM4ImDpV06hOSrgqHTOK21lxNAvw/LoWKzXRSdhb1rdG4FuCyGV0nSeNBcdI82kCXuZtvEfeUjaHfUPeI08pCMpLiZtXFA+sVQZ8d46X8l4IFgu0PfJnw0ykvKVjOCW6L1WGAYwmYGrdIyoCjYLI9kG5r28b1AdlIyScKybzV+NnYMeWu+acxuMzzPlGIK2c9OpLQzh2nZBvNdC4nG34rFRfOISuameZjXoGPu02SHbevfsdzpECuUvFN/o2jrarcNdAaZYOiplcpP9g71Y2yB6a93n2eiskaBKJuqaUqEj8A86TldT/SXasGcvyeIiPY+4kZvBsZSW64MzBhUdpJdaJWkO27WRjAviuomJUDsbMr68HL7cj+fTJ6VZliXWEZX4j5VPd/e1wkmBIOOv2IokPIyPOykqqX7ukI7Jm4xTXpZ32s45YaUxlJhzjyFQPN5pe3D7RljR7khrQ5pey3B36lK2UfOOthHn6EUh8KE0KeglvtdWV6kSoyGnev7/ejj8/sXr1y+/e/X9q+Hr13sYe+2iNGBTNUVPSdFGRYDSoyQe2SPqWaPPgaQzJWwoEUN7iDKm8MGbr1vsEo2Meonw4fId10BiZ8zGsinZgnk/1kwSCxMjcSJrfbJ8ccKSnTxmB6075uki1zOr4a/19gerP6UD9ahDAKD3+Tw6zuxA4cNBL1a/xXl/Re/6U0klp3aBcYV8+FSmBleZVHfjKlv5gNpo6ewbcS91zHc+JUycqw1/bKM1c2R6MJPa5GyWtkST/+NDzVC41wORx8DoGZar0iA7HEfQnAc9wjj606JdqTEcF5ClgJ62+e9xAVt5oCdLiiyzYi0T7XRcbHi8gl5TDOVSakM9z3EBWWrooffOgyuZESt6rdUCeimg72+ujwtotNpseH39DvChRFSojjtgSUpeZSOv2XI5/Qnm7Op8JkY3G9Pn9BPronPHGLHeM9xpVof8XKMv0UY5R+gN//n3f7wYDo/BeaA3Qc+4TVthJON68tE6OyxFfP9vCjEuY5KmMTNC1BVXyUobowOWzqoAPRYj2ajN1gecAmzrgwI0Afh1Ac7YXRWGQNrrLWg1Di2yEbgrvdcBmQI0vV+Hb/06ArRHH8ZtAO0wsztchYaV3hzNzZT4aIj1345ujxkpWgkoWHPohD3G0GBRCxSbLO3ET9eNrTX31Xse08hhCiFVlfQrlpZAfxdCPk/NOmF/lQH5Ku8l9hjjRkUugjv1rVtMOtj+XJpOcwFUuZn/vNA0LWl5yABOnY1SM4PSUUvTlKE80zBmWxgPESLWINfLS3btnmcd2Yjpx/OU+fH6+oInHC3Deo5Wn5F03Dy+bLZsONyr4XCftv0sjVaZoLex9l8hbGyMLlx8ebPSqYPt5c6oRJYLbbHvsRl7ZeDnl7t04+fxu8mb8fXk/Kdfzi4vzy8JBBq4+fohP6ZK2t0j2rcZTaLU5uC0IccEhOhTGRMVmVZAG/EhivVmFpUJy27c86MuA83y7QDaTmQ22rcSPhc5dkTVNsNh29FBtWtzOo97Dtfqq3Ca5nPCxVbRbdwy1r9hkx3OqRwgz8Y7q6RvZUa7RONq3D12Jz++O5QfV+iX6L/lxrfc+D/ODQ6BuHBKjETtAoegpIHRpnErpTrZdB+FCJw1gdlfosZRLGKsw+iE1g+mzWxjoHC533TzgIsviBkGLJPXccVbjWv9Z1yNEx19c9t9fEWJl9Ohu2hLAvkmEy8SBqXirszKip7+pT++mPTzgh1rla5GBeOLCfG/AfB1GAFPJAM1EoqaELtEHwv4HfTutVGl9Op4AGN6hQPBpbjpqrm3CLQNeCxRLzHAq+HvYfLT1Ye3byenk7Ofrn+5Oj2/OMsDJ4KWy+0HirM2UbsfFPJng4bg3jyZyG8ztTu5vtkOibcL8gh3kyq3eyPMm/bZ7fqWm92ZYxM3cfNkZHVqXGK7iUJQKGRhXgxeDYb7qKHni36NnrOHxq/NEN7rkvdiY8McbTtKHF9MOt8EeH7Wb+enmbP3rq7PLgr447vrtwUo5NCkNrrCsKC+cvPViSdd2tmCh7xNs50dGvg2ZasMK1vCRzftNKSDphrIkqtBE0mtDUSxE/dPYn5diIi+CuczKi+6xM8sPOFVfWlVn9ounT85FsLoEik3t+dS2nuNkSj5l44+vCPFGeV1JW1nTzJ9fzMnPcRHt3PJXZ8+bivlty+i/3tfRBvUpHp0UhupLYVsyhPAjPw3BKmU2y94KKSavpXx/7YQC6oSoxvx+EgZ9cGb9Zpuf0roCcpvC7GUXpMjGMmLFpIJme5wxQ0Nx0//esXFaSlNykC+w7ponJDfyG3PF9fedgoZfcgShZg2X30rZlHCy3uCQnkvRkIUItdprit871EYaeeJyZDIe9LvX3AOTck= +api: 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 sidebar_class_name: "post api-method" info_path: api/open/bitbybit-cad-cloud-api custom_edit_url: null @@ -64,44 +64,5 @@ Runs several independent CAD operations in parallel as one compound task. Each s -{/* static-reference:generated */} -## Reference - -`POST /api/v1/cad/compound` - -Runs several independent CAD operations in parallel as one compound task. Each sub-operation is executed on its own and produces its own downloadable result, so use this when the operations do not depend on each other - for a sequence where each step consumes the previous one's output, use the chained pipeline endpoint instead. Returns 202 with a compound task id; poll it and download the per-sub-task manifest when it completes. - -### Request body - -Content type: `application/json` (required) - -| Field | Type | Required | Description | -|---|---|---|---| -| `parallel` | boolean | yes | Must be true - signals that items should be processed concurrently | -| `items` | array of object | yes | List of independent CAD operations to execute in parallel. Each item becomes a sub-task. | -| `items[].operation` | string | yes | Fully-qualified CAD operation identifier. Supports OCCT, Manifold, JSCAD, and vector/math operations. | -| `items[].params` | object | no | Operation-specific parameters for this sub-task | -| `items[].inputFiles` | array of object | no | References to previously uploaded files to be used as inputs for this operation | -| `items[].inputFiles[].fileId` | string | yes | ID of a previously uploaded file (from POST /files/upload) | -| `items[].inputFiles[].role` | string | yes | Role identifier for the file (e.g. 'step-model', 'coordinates-csv') | -| `items[].outputFormats` | array of string | no | Per-item output format overrides. If omitted, the task produces raw result data. | - -### Responses - -| Status | Description | -|---|---| -| `202` | Compound task accepted | -| `400` | Validation error | -| `500` | Server error | - -### Example request - -```bash -curl -X POST "https://api.bitbybit.dev/api/v1/cad/compound" \ - -H "x-api-key: YOUR_API_KEY" \ - -H "Content-Type: application/json" \ - -d '{ ... }' -``` - -Authentication: send your key in the `x-api-key` header. The full machine-readable specification is at [openapi.json](https://learn.bitbybit.dev/openapi.json). + \ No newline at end of file diff --git a/docs/api/openapi-docs/convert-step-to-draco-compressed-gl-tf-glb-advanced-options.api.mdx b/docs/api/openapi-docs/convert-step-to-draco-compressed-gl-tf-glb-advanced-options.api.mdx index fccd0467..57fb7c91 100644 --- a/docs/api/openapi-docs/convert-step-to-draco-compressed-gl-tf-glb-advanced-options.api.mdx +++ b/docs/api/openapi-docs/convert-step-to-draco-compressed-gl-tf-glb-advanced-options.api.mdx @@ -5,7 +5,7 @@ description: "Full-control STEP → glTF conversion with Draco geometry compress sidebar_label: "Convert - STEP to Draco-compressed glTF (.glb), advanced options" hide_title: true hide_table_of_contents: true -api: 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 +api: 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 sidebar_class_name: "post api-method" info_path: api/open/bitbybit-cad-cloud-api custom_edit_url: null @@ -64,70 +64,5 @@ Full-control STEP → glTF conversion with Draco geometry compression. Combines -{/* static-reference:generated */} -## Reference - -`POST /api/v1/convert/step-to-gltf-advanced-with-draco` - -Full-control STEP → glTF conversion with Draco geometry compression. Combines fine-grained mesh, export, and coordinate options with Draco quantization controls. Requires the 'convert' API key scope. Returns 202 with a task ID. - -### Request body - -Content type: `application/json` (required) - -| Field | Type | Required | Description | -|---|---|---|---| -| `stepFileId` | string | yes | ID of the previously uploaded STEP file (returned by the file upload endpoint) | -| `options` | object | no | Fine-grained options controlling STEP → glTF conversion: tessellation quality, attribute extraction, coordinate systems, and output format. | -| `options.readColors` | boolean | no | Extract color attributes from the STEP file and apply to glTF materials | -| `options.readNames` | boolean | no | Extract product/instance names from the STEP file and apply to glTF node names | -| `options.readMaterials` | boolean | no | Extract material definitions from the STEP file | -| `options.readLayers` | boolean | no | Extract layer/group structure from the STEP file | -| `options.readProps` | boolean | no | Extract custom properties (e.g. part numbers, metadata) from the STEP file | -| `options.meshDeflection` | number | no | Mesh tessellation precision (lower = finer). Range: [0.0001, 10] | -| `options.meshAngle` | number | no | Mesh angular deflection in radians. Range: [0.01, π] | -| `options.meshParallel` | boolean | no | Enable parallel tessellation for faster processing | -| `options.meshRelative` | boolean | no | Use size-aware relative deflection per face. When true, meshDeflection is a fraction of each edge's length. Set to false for absolute deflection in model units. | -| `options.internalVerticesMode` | boolean | no | Add interior vertices for better curved face fidelity (slower, set false for speed). | -| `options.controlSurfaceDeflection` | boolean | no | Extra post-pass refining triangles that bulge beyond the deflection (slower, set false for speed). | -| `options.faceCountThreshold` | integer | no | Face count threshold for per-sub-shape meshing fallback. Default -1 means single-pass meshing of the whole compound (fastest). Set to a positive value (e.g. 100000) to fall back to per-solid meshing for very large assemblies in memory-constrained environments. | -| `options.mergeFaces` | boolean | no | Merge co-planar adjacent faces to reduce mesh complexity | -| `options.splitIndices16` | boolean | no | Split meshes so each uses 16-bit index buffers (max 65535 vertices per mesh). Improves compatibility with some renderers. | -| `options.parallelWrite` | boolean | no | Write glTF output in parallel for faster file generation | -| `options.embedTextures` | boolean | no | Embed texture data directly in the .glb file instead of referencing external URIs | -| `options.forceUVExport` | boolean | no | Generate UV coordinates even when no textures are present (useful for post-processing) | -| `options.nodeNameFormat` | `empty` \| `product` \| `instance` \| `instanceOrProduct` \| `productOrInstance` \| `productAndInstance` \| `productAndInstanceAndOcaf` | no | How node/mesh names are derived from STEP product/instance labels | -| `options.meshNameFormat` | `empty` \| `product` \| `instance` \| `instanceOrProduct` \| `productOrInstance` \| `productAndInstance` \| `productAndInstanceAndOcaf` | no | How node/mesh names are derived from STEP product/instance labels | -| `options.transformFormat` | `compact` \| `mat4` \| `trs` | no | Transform representation in glTF output | -| `options.adjustZtoY` | boolean | no | Convert from Z-up (CAD convention) to Y-up (glTF/WebGL convention) coordinate system | -| `options.scale` | number | no | Uniform scale factor. Range: [1e-6, 1000] | -| `draco` | object | no | Draco geometry compression options applied during glTF export. | -| `draco.useDraco` | boolean | no | Apply Draco geometry compression to the glTF output. Defaults to true for the *-with-draco endpoints. | -| `draco.dracoCompressionLevel` | integer | no | Draco compression level (0 = fastest/largest, 10 = slowest/smallest). Typical good default is 7. | -| `draco.dracoQuantizePositionBits` | integer | no | Quantization bits for vertex positions (higher = more precise, larger file). Typical: 14. | -| `draco.dracoQuantizeNormalBits` | integer | no | Quantization bits for normal vectors. Typical: 10. | -| `draco.dracoQuantizeTexcoordBits` | integer | no | Quantization bits for texture coordinates. Typical: 12. | -| `draco.dracoQuantizeColorBits` | integer | no | Quantization bits for vertex colors. Typical: 8. | -| `draco.dracoQuantizeGenericBits` | integer | no | Quantization bits for generic vertex attributes. Typical: 12. | -| `draco.dracoUnifiedQuantization` | boolean | no | Use unified quantization across all meshes (better when meshes share a coordinate frame). | - -### Responses - -| Status | Description | -|---|---| -| `202` | Task accepted | -| `400` | Validation error | -| `403` | Insufficient scope | -| `500` | Server error | - -### Example request - -```bash -curl -X POST "https://api.bitbybit.dev/api/v1/convert/step-to-gltf-advanced-with-draco" \ - -H "x-api-key: YOUR_API_KEY" \ - -H "Content-Type: application/json" \ - -d '{ ... }' -``` - -Authentication: send your key in the `x-api-key` header. The full machine-readable specification is at [openapi.json](https://learn.bitbybit.dev/openapi.json). + \ No newline at end of file diff --git a/docs/api/openapi-docs/convert-step-to-draco-compressed-gl-tf-glb.api.mdx b/docs/api/openapi-docs/convert-step-to-draco-compressed-gl-tf-glb.api.mdx index 908883b4..d4bc96d4 100644 --- a/docs/api/openapi-docs/convert-step-to-draco-compressed-gl-tf-glb.api.mdx +++ b/docs/api/openapi-docs/convert-step-to-draco-compressed-gl-tf-glb.api.mdx @@ -5,7 +5,7 @@ description: "STEP → glTF conversion with Draco geometry compression using a p sidebar_label: "Convert - STEP to Draco-compressed glTF (.glb)" hide_title: true hide_table_of_contents: true -api: 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 +api: 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 sidebar_class_name: "post api-method" info_path: api/open/bitbybit-cad-cloud-api custom_edit_url: null @@ -64,52 +64,5 @@ STEP → glTF conversion with Draco geometry compression using a previously uplo -{/* static-reference:generated */} -## Reference - -`POST /api/v1/convert/step-to-gltf-with-draco` - -STEP → glTF conversion with Draco geometry compression using a previously uploaded file. Requires the 'convert' API key scope. Returns 202 with a task ID. - -### Request body - -Content type: `application/json` (required) - -| Field | Type | Required | Description | -|---|---|---|---| -| `stepFileId` | string | yes | ID of the previously uploaded STEP file (returned by the file upload endpoint) | -| `meshPrecision` | number | no | Mesh tessellation precision (lower = finer). Range: [0.0001, 10] | -| `meshAngle` | number | no | Mesh angular deflection in radians. Range: [0.01, π] | -| `meshRelative` | boolean | no | Use size-aware relative deflection per face. When true, meshPrecision is a fraction of each edge's length. Set to false for absolute deflection in model units. | -| `internalVerticesMode` | boolean | no | Add interior vertices for better curved face fidelity (slower, set false for speed). | -| `controlSurfaceDeflection` | boolean | no | Extra post-pass refining triangles that bulge beyond the deflection (slower, set false for speed). | -| `draco` | object | no | Draco geometry compression options applied during glTF export. | -| `draco.useDraco` | boolean | no | Apply Draco geometry compression to the glTF output. Defaults to true for the *-with-draco endpoints. | -| `draco.dracoCompressionLevel` | integer | no | Draco compression level (0 = fastest/largest, 10 = slowest/smallest). Typical good default is 7. | -| `draco.dracoQuantizePositionBits` | integer | no | Quantization bits for vertex positions (higher = more precise, larger file). Typical: 14. | -| `draco.dracoQuantizeNormalBits` | integer | no | Quantization bits for normal vectors. Typical: 10. | -| `draco.dracoQuantizeTexcoordBits` | integer | no | Quantization bits for texture coordinates. Typical: 12. | -| `draco.dracoQuantizeColorBits` | integer | no | Quantization bits for vertex colors. Typical: 8. | -| `draco.dracoQuantizeGenericBits` | integer | no | Quantization bits for generic vertex attributes. Typical: 12. | -| `draco.dracoUnifiedQuantization` | boolean | no | Use unified quantization across all meshes (better when meshes share a coordinate frame). | - -### Responses - -| Status | Description | -|---|---| -| `202` | Task accepted | -| `400` | Validation error | -| `403` | Insufficient scope | -| `500` | Server error | - -### Example request - -```bash -curl -X POST "https://api.bitbybit.dev/api/v1/convert/step-to-gltf-with-draco" \ - -H "x-api-key: YOUR_API_KEY" \ - -H "Content-Type: application/json" \ - -d '{ ... }' -``` - -Authentication: send your key in the `x-api-key` header. The full machine-readable specification is at [openapi.json](https://learn.bitbybit.dev/openapi.json). + \ No newline at end of file diff --git a/docs/api/openapi-docs/convert-step-to-gl-tf-glb-advanced-options.api.mdx b/docs/api/openapi-docs/convert-step-to-gl-tf-glb-advanced-options.api.mdx index bff939fd..1b077858 100644 --- a/docs/api/openapi-docs/convert-step-to-gl-tf-glb-advanced-options.api.mdx +++ b/docs/api/openapi-docs/convert-step-to-gl-tf-glb-advanced-options.api.mdx @@ -5,7 +5,7 @@ description: "Full-control STEP → glTF conversion with fine-grained mesh, expo sidebar_label: "Convert - STEP to glTF (.glb), advanced options" hide_title: true hide_table_of_contents: true -api: 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 +api: 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 sidebar_class_name: "post api-method" info_path: api/open/bitbybit-cad-cloud-api custom_edit_url: null @@ -64,61 +64,5 @@ Full-control STEP → glTF conversion with fine-grained mesh, export, and coordi -{/* static-reference:generated */} -## Reference - -`POST /api/v1/convert/step-to-gltf-advanced` - -Full-control STEP → glTF conversion with fine-grained mesh, export, and coordinate options. Requires the 'convert' API key scope. Returns 202 with a task ID. - -### Request body - -Content type: `application/json` (required) - -| Field | Type | Required | Description | -|---|---|---|---| -| `stepFileId` | string | yes | ID of the previously uploaded STEP file (returned by the file upload endpoint) | -| `options` | object | no | Fine-grained options controlling STEP → glTF conversion: tessellation quality, attribute extraction, coordinate systems, and output format. | -| `options.readColors` | boolean | no | Extract color attributes from the STEP file and apply to glTF materials | -| `options.readNames` | boolean | no | Extract product/instance names from the STEP file and apply to glTF node names | -| `options.readMaterials` | boolean | no | Extract material definitions from the STEP file | -| `options.readLayers` | boolean | no | Extract layer/group structure from the STEP file | -| `options.readProps` | boolean | no | Extract custom properties (e.g. part numbers, metadata) from the STEP file | -| `options.meshDeflection` | number | no | Mesh tessellation precision (lower = finer). Range: [0.0001, 10] | -| `options.meshAngle` | number | no | Mesh angular deflection in radians. Range: [0.01, π] | -| `options.meshParallel` | boolean | no | Enable parallel tessellation for faster processing | -| `options.meshRelative` | boolean | no | Use size-aware relative deflection per face. When true, meshDeflection is a fraction of each edge's length. Set to false for absolute deflection in model units. | -| `options.internalVerticesMode` | boolean | no | Add interior vertices for better curved face fidelity (slower, set false for speed). | -| `options.controlSurfaceDeflection` | boolean | no | Extra post-pass refining triangles that bulge beyond the deflection (slower, set false for speed). | -| `options.faceCountThreshold` | integer | no | Face count threshold for per-sub-shape meshing fallback. Default -1 means single-pass meshing of the whole compound (fastest). Set to a positive value (e.g. 100000) to fall back to per-solid meshing for very large assemblies in memory-constrained environments. | -| `options.mergeFaces` | boolean | no | Merge co-planar adjacent faces to reduce mesh complexity | -| `options.splitIndices16` | boolean | no | Split meshes so each uses 16-bit index buffers (max 65535 vertices per mesh). Improves compatibility with some renderers. | -| `options.parallelWrite` | boolean | no | Write glTF output in parallel for faster file generation | -| `options.embedTextures` | boolean | no | Embed texture data directly in the .glb file instead of referencing external URIs | -| `options.forceUVExport` | boolean | no | Generate UV coordinates even when no textures are present (useful for post-processing) | -| `options.nodeNameFormat` | `empty` \| `product` \| `instance` \| `instanceOrProduct` \| `productOrInstance` \| `productAndInstance` \| `productAndInstanceAndOcaf` | no | How node/mesh names are derived from STEP product/instance labels | -| `options.meshNameFormat` | `empty` \| `product` \| `instance` \| `instanceOrProduct` \| `productOrInstance` \| `productAndInstance` \| `productAndInstanceAndOcaf` | no | How node/mesh names are derived from STEP product/instance labels | -| `options.transformFormat` | `compact` \| `mat4` \| `trs` | no | Transform representation in glTF output | -| `options.adjustZtoY` | boolean | no | Convert from Z-up (CAD convention) to Y-up (glTF/WebGL convention) coordinate system | -| `options.scale` | number | no | Uniform scale factor. Range: [1e-6, 1000] | - -### Responses - -| Status | Description | -|---|---| -| `202` | Task accepted | -| `400` | Validation error | -| `403` | Insufficient scope | -| `500` | Server error | - -### Example request - -```bash -curl -X POST "https://api.bitbybit.dev/api/v1/convert/step-to-gltf-advanced" \ - -H "x-api-key: YOUR_API_KEY" \ - -H "Content-Type: application/json" \ - -d '{ ... }' -``` - -Authentication: send your key in the `x-api-key` header. The full machine-readable specification is at [openapi.json](https://learn.bitbybit.dev/openapi.json). + \ No newline at end of file diff --git a/docs/api/openapi-docs/convert-step-to-gl-tf-glb.api.mdx b/docs/api/openapi-docs/convert-step-to-gl-tf-glb.api.mdx index fdc37efe..900f5fd2 100644 --- a/docs/api/openapi-docs/convert-step-to-gl-tf-glb.api.mdx +++ b/docs/api/openapi-docs/convert-step-to-gl-tf-glb.api.mdx @@ -5,7 +5,7 @@ description: "Simple STEP → glTF conversion using a previously uploaded file. sidebar_label: "Convert - STEP to glTF (.glb)" hide_title: true hide_table_of_contents: true -api: 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 +api: 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 sidebar_class_name: "post api-method" info_path: api/open/bitbybit-cad-cloud-api custom_edit_url: null @@ -64,43 +64,5 @@ Simple STEP → glTF conversion using a previously uploaded file. Requires the ' -{/* static-reference:generated */} -## Reference - -`POST /api/v1/convert/step-to-gltf` - -Simple STEP → glTF conversion using a previously uploaded file. Requires the 'convert' API key scope. Returns 202 with a task ID. - -### Request body - -Content type: `application/json` (required) - -| Field | Type | Required | Description | -|---|---|---|---| -| `stepFileId` | string | yes | ID of the previously uploaded STEP file (returned by the file upload endpoint) | -| `meshPrecision` | number | no | Mesh tessellation precision (lower = finer). Range: [0.0001, 10] | -| `meshAngle` | number | no | Mesh angular deflection in radians. Range: [0.01, π] | -| `meshRelative` | boolean | no | Use size-aware relative deflection per face. When true, meshPrecision is a fraction of each edge's length. Set to false for absolute deflection in model units. | -| `internalVerticesMode` | boolean | no | Add interior vertices for better curved face fidelity (slower, set false for speed). | -| `controlSurfaceDeflection` | boolean | no | Extra post-pass refining triangles that bulge beyond the deflection (slower, set false for speed). | - -### Responses - -| Status | Description | -|---|---| -| `202` | Task accepted | -| `400` | Validation error | -| `403` | Insufficient scope | -| `500` | Server error | - -### Example request - -```bash -curl -X POST "https://api.bitbybit.dev/api/v1/convert/step-to-gltf" \ - -H "x-api-key: YOUR_API_KEY" \ - -H "Content-Type: application/json" \ - -d '{ ... }' -``` - -Authentication: send your key in the `x-api-key` header. The full machine-readable specification is at [openapi.json](https://learn.bitbybit.dev/openapi.json). + \ No newline at end of file diff --git a/docs/api/openapi-docs/files-confirm-upload.api.mdx b/docs/api/openapi-docs/files-confirm-upload.api.mdx index ff65d5d4..f6971e85 100644 --- a/docs/api/openapi-docs/files-confirm-upload.api.mdx +++ b/docs/api/openapi-docs/files-confirm-upload.api.mdx @@ -5,7 +5,7 @@ description: "Confirms that the file was successfully uploaded to the pre-signed sidebar_label: "Files - confirm upload" hide_title: true hide_table_of_contents: true -api: eJy9VttuGzcQ/ZUBn5KCujh1EXjfVF9aoYktSHJRwBACihxJjHfJDS+yVWH/vRjuriVLSpMARZ+k3R3OnJk5Z4ZbFsTSs+yB3egcPZtxptBLp8ugrWEZu7RmoV3hIaxEgLBCWOgc4Ul48FFK9H4R83wDscytUKgg2GRVOux4vTSo4H78ocs4K4UTBQZ0FG7LjCiQZYy8DRXjTFO0UoQV48zhl6gdKpYFF5EzL1dYCJZtWdiUdMoHp82ScbawrhCBZSxGrVh1iJ6SguEVq2bk1JfWePTk512/Tz8nrGWdMBImaU1AE8hSlGWupSDL3mdP5ttjWHb+GWWgXJ0t0QVdB7OPezZza3MUpvbuQ50iARfhO1w15TpRiROpaIUm6IVGV3ePmraf3lHxfBAh+lPeG6xsd7zibL4JuG+tTcAlOsZZoY0uYsGyPmeFeK7/X/T7788uLt79cv7+vH9xcXaIeSBDFHnNL6//RtAGUgggsgXrUIE1iV0e3RodYWhaNE0IvlWVj8OP10AmYBfJz0s6KSqrqn3uPezI2RSmTfl12BlnQilNMUQ+2mvXQuQeDzGMMURHshCLgA5EnW8tH9Ae1uioZaoL01Zs2oOxT+BQqA3pa44QPSqqz+XgCihgIqYnmQUdctwJd4w+5uEoM/vIGsr9GPpJrXlAs8bcli8V1GZ5kAqRrc3lJKwkRlZVBO28f34sx1sbYGGj+d+UmDKuOEPnrPu2M2nV93BOyJU22KHuiXmOkLxDOswZPouiTIX5c/BheDWYDu9uP12Px3djIneB3ovldwT5PRbCHIZoT6epGITO/XGN78q68eCDizJE0lgL0AR8DqwhDvpQz51DNqdPMLyChXUQnJA1vtd4D+nXZN8i/EEOHkLVpp5k2hp40mEFxWHNKR4Io8C2+Sqcx+WSaNsmuuPoNXm9SiU7LZyaID+KWhglXIu5FdBh2FfCSBQIK6toNVqfKEgbMmM9Uere+qxHivO9bT2oql6jRppYaULWqza6nGVsFULpsx6d7M51mG/mOnQVro/INHJWRZkeaG96lNHpsEmuBqX+AzeDSCAeZvufJyTBWhj7Ri/MFellu+hXKFTaFM014K/OYDTs1AYHdZO2RAWD0RAecdOF9OwzKKzC3HOQQnHq4Rpd4PATvHnSuZLCqbddGNCRRAkb68tL20rw5AYcStRr9HDe/xmGt5P7m5vh5fD6dvppcnk3uu6m9hO9UiJNn35tipeG72VuY0LHOKOC16DPuufd/rFK9XLVKdElthqJ0FyJnJbJV0oJlmiaeU5uuzCJZWld8FDEPOhOTXWwMZQxwJvJ9HrE4bcP0xsOCqUtSkuroUC/esuh1CXm2iDgM8pIPnka0p25IKu6bD69JnUIvzESPts5lM7SnNdm2W2mr5Bp+jb9amvA+AG7XjGr4iygK/zdYoJurSV+xbCXrDrCqI60ppYUbdlcSyQt7OKSzJzGINzmX0Of9kjdJB0Vwuz5TDdf6LSrrFlgh93b7nbQf3gpbsRBA6hX5kIbqllKa9tI/YGUQ+Q6oxtbuqRzlr3cTFrFzzhb0YTIHth2S929d3lV0esvER2Jd8bZWjhN8zBJWWlP/9XpebWf7ptxo5q30F6ov4K81bqh7qxFHumJcfaIm91dv5pVvB0ABKT+OJASy7B37GjP07R5GYeju8mUVdU/VoVqIA== +api: eJy9VttuGzcQ/ZUBn5KCujh1EXjfVF9aoYktSHJRwBACihxJjHfJDS+yVWH/vRjuriVLSpMARZ+k3R3OnJk5Z4ZbFsTSs+yB3egcPZtxptBLp8ugrWEZu7RmoV3hIaxEgLBCWOgc4Ul48FFK9H4R83wDscytUKgg2GRVOux4vTSo4H78ocs4K4UTBQZ0FG7LjCiQZYy8DRXjTFO0UoQV48zhl6gdKpYFF5EzL1dYCJZtWdiUdMoHp82ScbawrhCBZSxGrVh1iJ6SguEVq2bk1JfWePTk512/Tz8nrGWdMBImaU1AE8hSlGWupSDL3mdP5ttjWHb+GWWgXJ0t0QVdB7OPezZza3MUpvbuQ50iARfhO1w15TpRiROpaIUm6IVGV3ePmraf3lHxfBAh+lPeG6xsd7zibL4JuG+tTcAlOsZZoY0uYsGyPmeFeK7/X/T7788uLt79cv7+vH9xcXaIeSBDFHnNL6//RtAGUgggsgXrUIE1iV0e3RodYWhaNE0IvlWVj8OP10AmYBfJz0s6KSqrqn3uPezI2RSmTfl12BlnQilNMUQ+2mvXQuQeDzGMMURHshCLgA5EnW8tH9Ae1uioZaoL01Zs2oOxT+BQqA3pa44QPSqqz+XgCihgIqYnmQUdctwJd4w+5uEoM/vIGsr9GPpJrXlAs8bcli8V1GZ5kAqRrc3lJKwkRlZVBO28f34sx1sbYGGj+d+UmDKuOEPnrPu2M2nV93BOyJU22KHuiXmOkLxDOswZPouiTIX5c/BheDWYDu9uP12Px3djIneB3ovldwT5PRbCHIZoT6epGITO/XGN78q68eCDizJE0lgL0AR8DqwhDvpQz51DNqdPMLyChXUQnJA1vtd4D+nXZN8i/EEOHkLVpp5k2hp40mEFxWHNKR4Io8C2+Sqcx+WSaNsmuuPoNXm9SiU7LZyaID+KWhglXIu5FdBh2FfCSBQIK6toNVqfKEgbMmM9Uere+qxHivO9bT2oql6jRppYaULWqza6nGVsFULpsx6d7M51mG/mOnQVro/INHJWRZkeaG96lNHpsEmuBqX+AzeDSCAeZvufJyTBWhj7Ri/MFellu+hXKFTaFM014K/OYDTs1AYHdZO2RAWD0RAecdOF9OwzKKzC3HOQQnHq4Rpd4PATvHnSuZLCqbddGNCRRAkb68tL20rw5AYcStRr9HDe/xmGt5P7m5vh5fD6dvppcnk3uu6m9hO9UiJNn35tipeG72VuY0LHOKOC16DPuufds2OV6uWqU6JLbDUSobkSOS2Tr5QSLNE085zcdmESy9K64KGIedCdmupgYyhjgDeT6fWIw28fpjccFEpblJZWQ4F+9ZZDqUvMtUHAZ5SRfPI0pDtzQVZ12Xx6TeoQfmMkfLZzKJ2lOa/NsttMXyHT9G361daA8QN2vWJWxVlAV/i7xQTdWkv8imEvWXWEUR1pTS0p2rK5lkha2MUlmTmNQbjNv4Y+7ZG6SToqhNnzmW6+0GlXWbPADru33e2g//BS3IiDBlCvzIU2VLOU1raR+gMph8hFfEpyZ5xlLzeTVvEzzlY0IbIHtt1Sd+9dXlX0+ktER+KdcbYWTtM8TFJW2tN/dXpe7af7Ztyo5i20F+qvIG+1bqg7a5FHemKcPeJmd9evZhVvBwABqT8OpMQy7B072vM0bV7G4ehuMmVV9Q9Z6moh sidebar_class_name: "post api-method" info_path: api/open/bitbybit-cad-cloud-api custom_edit_url: null @@ -66,32 +66,5 @@ Confirms that the file was successfully uploaded to the pre-signed URL. -{/* static-reference:generated */} -## Reference - -`POST /api/v1/files/{fileId}/confirm` - -Confirms that the file was successfully uploaded to the pre-signed URL. - -### Parameters - -| Parameter | In | Type | Required | Description | -|---|---|---|---|---| -| `fileId` | path | string | yes | File ID | - -### Responses - -| Status | Description | -|---|---| -| `200` | File confirmed | -| `404` | Not found | - -### Example request - -```bash -curl -X POST "https://api.bitbybit.dev/api/v1/files/{fileId}/confirm" \ - -H "x-api-key: YOUR_API_KEY" -``` - -Authentication: send your key in the `x-api-key` header. The full machine-readable specification is at [openapi.json](https://learn.bitbybit.dev/openapi.json). + \ No newline at end of file diff --git a/docs/api/openapi-docs/files-delete-a-file.api.mdx b/docs/api/openapi-docs/files-delete-a-file.api.mdx index e436ef64..45a64171 100644 --- a/docs/api/openapi-docs/files-delete-a-file.api.mdx +++ b/docs/api/openapi-docs/files-delete-a-file.api.mdx @@ -5,7 +5,7 @@ description: "Permanently deletes an uploaded file and the stored blob behind it sidebar_label: "Files - delete a file" hide_title: true hide_table_of_contents: true -api: eJztVk1vGzcQ/SsDnuKCkpzWJ91US26FprZgOUUBQwgocqRlzCUZfsgWBP33Yri7tiw5TXLpqSdpd4czb2bePM6OJbGObHjPrrTByBacKYwyaJ+0s2zIZhhqYdEmswWFBhNGEBayN04oVLDSBkFYBalCiMkFVLA0bglLrLRVoFMf7iodQQprXYIlQrbKWeTllLBbSCI+QMCYTYJUiQQxaWPAO21TBJGK6+IzJucjmTqz0XbdhwIahIkO8MnrgOAsmesA7tFyiA6kMAYSIXDWbOGxQgtbl8EivoAWa4SABkVEBdE5i4Gg2IKnzzjzIogaEwaq1Y5ZUSMbMkp+qhhnmkrlRaoYZwG/ZB1QsWEKGTmLssJasOGOpa2nUzEFbdeMs5ULtUhsyHLWiu2PS0/JwXTM9gtyGr2zESP5+fn8nH7esG46RIikswltIjvhvdFSkN3gcyTj3Skot/yMMlGmwXkMSTeh3MOBzdI5g8I23mNqEiTYIn2Hqw7bt/ztD0t4/3xswZlQSlMWwswOPK+EiXhcu0tnV5qqq13TRBCFNzlIhEcRIWYpMcZVNs/EprIlnQxBG5c3t4WU7BiSe2Bt0j8Gat7EhK6ZsHKhGaACgIyOEVBXb1tztt8Tkovzi9PuX7sEK5ftf9b6kuCeMwzBhW87k07hWyPwOos/hay0xV5AocTSIBTvUA5zhk+i9qU2f40+TMeju+nN9afJ7e3NLc1OjTGK9XcE+T3Xwh6H6E6XIUxCm3ha4xvf9BliClmmTFLXAbQJnxJreYIxTdXp+dvmE0zHpfEpCNnge433mG1t9h3CH6TcMVRtG9WhuXjUqYL6uOYUr2iz6/JVuMzrtbbr50RfaDohr+NSsrfnpCHIj6IWVonQYUa7QeM8Hod9NRiFAqlyig1bzSiynSo2ZAPh9WDzfkCzFge7Rrb3jLOIYdNpeg6GDVmVko/DAZ3oL3Vabpc69RVuTmg0C05lWR5IoCPKHHTaFlcjr//A7ShT8PvF4ec5DV8zEodGz5wV5WV3o1QoFAbGu/vm795oNu01BkcVk86jgtFsCg+47UN5jkOonUITOUihOHVvgyFx+AnePWqjpAjqrA8jOlLI4HJz2XZNhEhuIKBEvcEIF+e/wPR6/vHqano5nVzffZpf3swm/dJ4IlZJpO3Qr23x4HI0hkvjckHHOKOCN6Df9y/656fzqddVz2MoPLUSob17g5bFV0kJ1mgxNDQezaZ9mGfvXUgR6myS7jUkB5eTzwneze8mMw6/fbi74qBQuto7uulrjNUZB689Gm0R8AllJp+8yHJvWfaBpmyxvC47S9xaCZ/dEnxwJOi0irS6K2TR3bZfXQ0YP2LXK2btOUsY6nizmmPYaIlfMRwUq56wqiedbYYpMs6MlkhT8BKXBixoTCJs/zX02x6pm97FVAt74LNZtXrtXQmiVOi4ebuXy+f/zbHZHNvBJtkceCO0pX6XluxaebqnqafBeE87YVnDORu2u+WCs8rRhXvPdjvi48dg9nt6/SVjILlZcLYRQZN2F/FROtJ/9ba2Hnbo3W0752fQ7ZpfwdupkyU+bYTJ9MQ4e8Dtyxq8X+x5J1kEpPk4khJ9Ojh2spOQPj5L93jyYXI3Yfv9P7dVZQ4= +api: eJztVk1vGzcQ/SsDnuKCkpzWJ91US26FprZgOUUBQwgocqRlzCUZfsgWBP33Yri7tiw5TXLpqSdpd4czb2bePM6OJbGObHjPrrTByBacKYwyaJ+0s2zIZhhqYdEmswWFBhNGEBayN04oVLDSBkFYBalCiMkFVLA0bglLrLRVoFMf7iodQQprXYIlQrbKWeTllLBbSCI+QMCYTYJUiQQxaWPAO21TBJGK6+IzJucjmTqz0XbdhwIahIkO8MnrgOAsmesA7tFyiA6kMAYSIXDWbOGxQgtbl8EivoAWa4SABkVEBdE5i4Gg2IKnzzjzIogaEwaq1Y5ZUSMbMkp+qhhnmkrlRaoYZwG/ZB1QsWEKGTmLssJasOGOpa2nUzEFbdeMs5ULtUhsyHLWiu2PS0/JwXTM9gtyGr2zESP5+fn8nH7esG46RIikswltIjvhvdFSkN3gcyTj3Skot/yMMlGmwXkMSTeh3MOBzdI5g8I23mNqEiTYIn2Hqw7bt/ztD0t4/3xswZlQSlMWwswOPK+EiXhcu0tnV5qqq13TRBCFNzlIhEcRIWYpMcZVNs/EprIlnQxBG5c3t4WU7BiSe2Bt0j8Gat7EhK6ZsHKhGaACgIyOEVBXb1tztt8Tkovzi9PuX7sEK5ftf9b6kuCeMwzBhW87k07hWyPwOos/hay0xV5AocTSIBTvUA5zhk+i9qU2f40+TMeju+nN9afJ7e3NLc1OjTGK9XcE+T3Xwh6H6E6XIUxCm3ha4xvf9BliClmmTFLXAbQJnxJreYIxTdXp+dvmE0zHpfEpCNnge433mG1t9h3CH6TcMVRtG9WhuXjUqYL6uOYUr2iz6/JVuMzrtbbr50RfaDohr+NSsrfnpCHIj6IWVonQYUa7QeM8Hod9NRiFAqlyig1bzSiynSo2ZAPh9WDzfkCzFge7Rrb3jLOIYdNpeg6GDVmVko/DAZ3oL3Vabpc69RVuTmg0C05lWR5IoCPKHHTaFlcjr//A7ShT8PvF4ec5DV8zEodGz5wV5WV3o1QoFAbGu/vm795oNu01BkcVk86jgtFsCg+47UN5jkOonUITOUihOHVvgyFx+AnePWqjpAjqrA8jOlLI4HJz2XZNhEhuIKBEvcEIF+e/wPR6/vHqano5nVzffZpf3swm/dJ4IlZJpO3Qr23x4HI0hkvjckHHOKOCN6Df9y/670/nU6+rnsdQeGolQnv3Bi2Lr5ISrNFiaGg8mk37MM/eu5Ai1Nkk3WtIDi4nnxO8m99NZhx++3B3xUGhdLV3dNPXGKszDl57NNoi4BPKTD55keXesuwDTdlieV12lri1Ej67JfjgSNBpFWl1V8iiu22/uhowfsSuV8zac5Yw1PFmNcew0RK/YjgoVj1hVU862wxTZJwZLZGm4CUuDVjQmETY/mvotz1SN72LqRb2wGezavXauxJEqdBx83Yvl8//m2OzObaDTbI58EZoS/0uLdm18nRPU0+DQbNQJIpxNmx3ywVnlaML957tdsTHj8Hs9/T6S8ZAcrPgbCOCJu0u4qN0pP/qbW097NC723bOz6DbNb+Ct1MnS3zaCJPpiXH2gNuXNXi/2PNOsghI83EkJfp0cOxkJyF9fJbu8eTD5G7C9vt/ALtuZQ8= sidebar_class_name: "delete api-method" info_path: api/open/bitbybit-cad-cloud-api custom_edit_url: null @@ -66,32 +66,5 @@ Permanently deletes an uploaded file and the stored blob behind it. This cannot -{/* static-reference:generated */} -## Reference - -`DELETE /api/v1/files/{fileId}` - -Permanently deletes an uploaded file and the stored blob behind it. This cannot be undone, and any task result that still points at the blob stops resolving. Files also expire on their own, so call this only when you need the storage released sooner than that. - -### Parameters - -| Parameter | In | Type | Required | Description | -|---|---|---|---|---| -| `fileId` | path | string | yes | File ID | - -### Responses - -| Status | Description | -|---|---| -| `200` | File deleted | -| `404` | Not found | - -### Example request - -```bash -curl -X DELETE "https://api.bitbybit.dev/api/v1/files/{fileId}" \ - -H "x-api-key: YOUR_API_KEY" -``` - -Authentication: send your key in the `x-api-key` header. The full machine-readable specification is at [openapi.json](https://learn.bitbybit.dev/openapi.json). + \ No newline at end of file diff --git a/docs/api/openapi-docs/files-get-file-details.api.mdx b/docs/api/openapi-docs/files-get-file-details.api.mdx index 1ee20f57..09bab257 100644 --- a/docs/api/openapi-docs/files-get-file-details.api.mdx +++ b/docs/api/openapi-docs/files-get-file-details.api.mdx @@ -5,7 +5,7 @@ description: "Returns metadata and download URL for a single file." sidebar_label: "Files - get file details" hide_title: true hide_table_of_contents: true -api: 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 +api: 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 sidebar_class_name: "get api-method" info_path: api/open/bitbybit-cad-cloud-api custom_edit_url: null @@ -66,32 +66,5 @@ Returns metadata and download URL for a single file. -{/* static-reference:generated */} -## Reference - -`GET /api/v1/files/{fileId}` - -Returns metadata and download URL for a single file. - -### Parameters - -| Parameter | In | Type | Required | Description | -|---|---|---|---|---| -| `fileId` | path | string | yes | File ID | - -### Responses - -| Status | Description | -|---|---| -| `200` | File details | -| `404` | Not found | - -### Example request - -```bash -curl -X GET "https://api.bitbybit.dev/api/v1/files/{fileId}" \ - -H "x-api-key: YOUR_API_KEY" -``` - -Authentication: send your key in the `x-api-key` header. The full machine-readable specification is at [openapi.json](https://learn.bitbybit.dev/openapi.json). + \ No newline at end of file diff --git a/docs/api/openapi-docs/files-list-uploaded-files.api.mdx b/docs/api/openapi-docs/files-list-uploaded-files.api.mdx index fd03adf3..848c12b8 100644 --- a/docs/api/openapi-docs/files-list-uploaded-files.api.mdx +++ b/docs/api/openapi-docs/files-list-uploaded-files.api.mdx @@ -5,7 +5,7 @@ description: "Returns a paginated list of the files uploaded under your API key, sidebar_label: "Files - list uploaded files" hide_title: true hide_table_of_contents: true -api: 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 +api: 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 sidebar_class_name: "get api-method" info_path: api/open/bitbybit-cad-cloud-api custom_edit_url: null @@ -66,33 +66,5 @@ Returns a paginated list of the files uploaded under your API key, newest first, -{/* static-reference:generated */} -## Reference - -`GET /api/v1/files` - -Returns a paginated list of the files uploaded under your API key, newest first, with each file's id, original name, size, upload status and expiry. Use it to find the file id to pass to a conversion endpoint, and to check that an upload through a pre-signed URL actually completed before you reference it. - -### Parameters - -| Parameter | In | Type | Required | Description | -|---|---|---|---|---| -| `page` | query | integer | no | 1-based page number. Defaults to the first page. | -| `limit` | query | integer | no | How many files to return per page. | -| `status` | query | `pending` \| `confirmed` \| `expired` | no | Return only files in this upload state: pending (a pre-signed URL was issued but the upload has not been confirmed), confirmed (the blob is stored and usable), or expired. | - -### Responses - -| Status | Description | -|---|---| -| `200` | File list | - -### Example request - -```bash -curl -X GET "https://api.bitbybit.dev/api/v1/files" \ - -H "x-api-key: YOUR_API_KEY" -``` - -Authentication: send your key in the `x-api-key` header. The full machine-readable specification is at [openapi.json](https://learn.bitbybit.dev/openapi.json). + \ No newline at end of file diff --git a/docs/api/openapi-docs/files-request-an-upload-url.api.mdx b/docs/api/openapi-docs/files-request-an-upload-url.api.mdx index 774a6fe5..70f9d3cc 100644 --- a/docs/api/openapi-docs/files-request-an-upload-url.api.mdx +++ b/docs/api/openapi-docs/files-request-an-upload-url.api.mdx @@ -5,7 +5,7 @@ description: "Returns a pre-signed URL for uploading a file via PUT." sidebar_label: "Files - request an upload URL" hide_title: true hide_table_of_contents: true -api: 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 +api: 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 sidebar_class_name: "post api-method" info_path: api/open/bitbybit-cad-cloud-api custom_edit_url: null @@ -64,41 +64,5 @@ Returns a pre-signed URL for uploading a file via PUT. -{/* static-reference:generated */} -## Reference - -`POST /api/v1/files/upload` - -Returns a pre-signed URL for uploading a file via PUT. - -### Request body - -Content type: `application/json` (required) - -| Field | Type | Required | Description | -|---|---|---|---| -| `filename` | string | yes | Original filename including extension (e.g. 'part.step', 'model.obj'). Used for display and format detection. | -| `contentType` | string | yes | MIME type of the file (e.g. 'application/step', 'model/gltf-binary'). Must match the actual file content. | -| `bytes` | integer | yes | Exact file size in bytes. Must match the Content-Length of the subsequent PUT to the upload URL. Maximum: 1 GB. | -| `sha256` | string | no | SHA-256 hex digest of the file content. When provided, enables server-side deduplication - if an identical file was previously uploaded under this API key, the existing file is reused and no upload is needed. | - -### Responses - -| Status | Description | -|---|---| -| `200` | The same bytes were uploaded and confirmed under this key before (matched by sha256): the existing confirmed file, ready to reference. No PUT is needed. | -| `201` | Upload URL and file ID | -| `400` | Validation error | -| `500` | Server error | - -### Example request - -```bash -curl -X POST "https://api.bitbybit.dev/api/v1/files/upload" \ - -H "x-api-key: YOUR_API_KEY" \ - -H "Content-Type: application/json" \ - -d '{ ... }' -``` - -Authentication: send your key in the `x-api-key` header. The full machine-readable specification is at [openapi.json](https://learn.bitbybit.dev/openapi.json). + \ No newline at end of file diff --git a/docs/api/openapi-docs/health-status-check.api.mdx b/docs/api/openapi-docs/health-status-check.api.mdx index 1dcf8dfc..02869978 100644 --- a/docs/api/openapi-docs/health-status-check.api.mdx +++ b/docs/api/openapi-docs/health-status-check.api.mdx @@ -5,7 +5,7 @@ description: "Returns the operational status of the Bitbybit CAD Cloud API, incl sidebar_label: "Health - status check" hide_title: true hide_table_of_contents: true -api: eJzdVdtuGzcQ/ZXBPCUFtXLaoCj2TXXtRGgRC5YDFDCMgiJHWlpckiGHSgRh/z3g7sryrUX7Wr1IS83O5ZwzhwdkuUlY3+JHkpYbvBOoKaloAhvvsMZr4hxdAm4IfKAoy7m0kFhyTuDX/T+/Gl7tV4bhfPYbnFufNcwWcwHGKZu1cRtIFHdGETR9HZBOQySpjaOUKrimL9lESuA8yMwNOTaqLyUgeTAMJkHKhuXKEqx9hBzYtAStd4Z9NG4jwHqpYSWtdIoihOhXlPpCmoL1+5YcQ2r9loApcapQYCKVo+E91rd3AiOl4F2ihPUBfzw7K19P0RhQGodHgco7JsclUIZgx56n96lEHzCphlpZfvE+ENboV/ekGAWGWMBkM9Ty20cxK+8tSTdkT4w1x0ydQC35X6QaWzvFJS7ooEByuS1M+y0WkjdRatIvCb/aUZTWHoka83UCC96JZRteS/40x3x5Bb/8fPYOTu90XcG3Z1mXLh4gPIXcCZRam0Fgi0dTraVN9LzGbDE/9qgaUluIlLJlME73NLgN+HGUtE9MLTwqyZYe2FyOEz5rcICpYP7f+lpmpSglILcj68Og1seNvmjgepQdduUjsCVuvMYaN9TzK7nBGqdDjl60cUexbO0Bc7RYY8McUj2dymCq1biKlabdC2IW0eus+ofu7iT/ZdHpoJ9ZML/TfpZLzQeaZX+IAk1J0pDUFFGgk23598/JbDGfDAHPsFA+UG8FsKV9Bf1zqqH1mmwSoKQWoLzbUWQBP8Cbr8ZqJaN+W8GsvAJfDTc+c28yR3YglTQQSZHZUYL3Zz/B/NPy8+Xl/Hx+8enmr+X51eKi6hk1bu37QUbEXzcqFFgQHZp+V72vzl6M8tFsmkmguPaxLQYDQUbZEkej+lz9SLAhN1pkSVvBMofgIydos2Uz6V9m8JlDZnizvLlYCPjwx82lAE3Kt8En0tBSat4KCCaQNY6AvpHKgxeujaXJSpaoAbbUHxeTk2nvFNz7VXG+okDjNtVoUVL1FjXydcQAxTP5PJFO2XiKbbpaLwfr/pvAaR81kU5PlHfDmpQls0ZREfWpblmdaIhl3P9j6dczFjaDT9xK9yjnaMiT43103LAn5B1OPv0/v8/GfWX6xtNgpXGFxh7pw+gjt9g83PSNL9fLLR4ORVKfo+26cvwlUxxvxJ2MprRYnjpx3PxiPFvaFxNWikIR0k7aPDjFs1uw2MyDoX24uMGu+w4WR/TA +api: eJzdVdtuGzcQ/ZXBPCUFtbLboCj2TXXtRGgRC5YDFDCMgiJHWkZckiGHSgRh/z3g7sryrUX7Wr1IS83O5ZwzhwdkuUlY3+EHkpYbvBeoKaloAhvvsMYb4hxdAm4IfKAoy7m0kFhyTuDX/T+/Gl7tV4bhYvYbXFifNcwWcwHGKZu1cRtIFHdGETR9HZBOQySpjaOUKrihL9lESuA8yMwNOTaqLyUgeTAMJkHKhuXKEqx9hBzYtAStd4Z9NG4jwHqpYSWtdIoihOhXlPpCmoL1+5YcQ2r9loApcapQYCKVo+E91nf3AiOl4F2ihPUBfzw7K19P0RhQGodHgco7JsclUIZgx56nn1OJPmBSDbWy/OJ9IKzRrz6TYhQYYgGTzVDLbx/FrLy3JN2QPTHWHDN1ArXkf5FqbO0Ul7iggwLJ5bYw7bdYSN5EqUm/JPx6R1FaeyRqzNcJLHgnlm14LfnTHPPlNfzy89k5nN7puoJvz7IuXTxAeAq5Fyi1NoPAFo+mWkub6HmN2WJ+7FE1pLYQKWXLYJzuaXAb8OMoaZ+YWnhUki09sLkcJ3zW4ABTwfy/9bXMSlFKQG5H1odBrY8bfdHAzSg77MpHYEvceI01bqjnV3KDNU6HHL1o445i2doD5mixxoY5pHo6lcFUq3EVK027F8QsotdZ9Q/d/Un+y6LTQT+zYH6n/SyXmg80y/4QBZqSpCGpKaJAJ9vy75+T2WI+GQKeYaF8oN4KYEv7CvrnVEPrNdkkQEktQHm3o8gCfoA3X43VSkb9toJZeQW+Gm585t5kjuxAKmkgkiKzowTvzn6C+cflp6ur+cX88uPtX8uL68Vl1TNq3Nr3g4yIv25UKLAgOjR9Xr2rzl+M8sFsmkmguPaxLQYDQUbZEkej+lz9SLAhN1pkSVvBMofgIydos2Uz6V9m8JlDZnizvL1cCHj/x+2VAE3Kt8En0tBSat4KCCaQNY6AvpHKgxeujaXJSpaoAbbUHxeTk2nvFHz2q+J8RYHGbarRoqTqLWrk64gBimfyeSKdsvEU23S9Xg7W/TeB0z5qIp2eKO+GNSlLZo2iIupT3bI60RDLuP/H0q9nLGwGn7iV7lHO0ZAnx/vouGFPyDucfPp/fp+N+8r0jafBSuMKjT3Sh9FH7rB5uOkbX66XOzwciqQ+Rdt15fhLpjjeiDsZTWmxPHXiuPnFeLa0LyasFIUipJ20eXCKZ7dgsZkHQ3t/eYtd9x0ZpPTB sidebar_class_name: "get api-method" info_path: api/open/bitbybit-cad-cloud-api custom_edit_url: null @@ -56,25 +56,5 @@ Returns the operational status of the Bitbybit CAD Cloud API, including service -{/* static-reference:generated */} -## Reference - -`GET /health` - -Returns the operational status of the Bitbybit CAD Cloud API, including service health and readiness. Requires no authentication, so it is suitable for uptime monitoring, load balancer probes and deployment smoke tests. - -### Responses - -| Status | Description | -|---|---| -| `200` | Health status | - -### Example request - -```bash -curl -X GET "https://api.bitbybit.dev/health" \ - -H "x-api-key: YOUR_API_KEY" -``` - -Authentication: send your key in the `x-api-key` header. The full machine-readable specification is at [openapi.json](https://learn.bitbybit.dev/openapi.json). + \ No newline at end of file diff --git a/docs/api/openapi-docs/models-batch-fetch-definitions.api.mdx b/docs/api/openapi-docs/models-batch-fetch-definitions.api.mdx index c290eb48..ab928572 100644 --- a/docs/api/openapi-docs/models-batch-fetch-definitions.api.mdx +++ b/docs/api/openapi-docs/models-batch-fetch-definitions.api.mdx @@ -5,7 +5,7 @@ description: "Returns parameter schemas and defaults for the requested model nam sidebar_label: "Models - batch-fetch definitions" hide_title: true hide_table_of_contents: true -api: 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 +api: eJy9WF1vIjcU/SuWX7KpBti0+8Qbm5AWdZugJNtWitDK2BfGG4/t2h4ShPjv1bVnmGEgX+qqeQkw9vX9OOfc69nQwJaeDu/pH0aA8nSWUQGeO2mDNJoO6Q2E0mlPLHOsgACOeJ5DwTxhWhABC1aq4MnCOBJyIA7+KcEHEKRAg0SzAnyfZrR68NmINR1u4lfpQNBhcCVklBsdQAd8xKxVkjM8f/DdoxMbms7ET2FtgQ6pmX8HHmhGrTMWXJDg8Wk8Dj8UUk8CFJ4Oz7J6D3OOrWlGZXqws+WDk3pJM9z0BfQy5HR4tu0mYoS7iVlUgXlVLj0Jhiwg8BwTIbXEpSkXH6C/7JP7E+HY0ugeL+1JRk5sbjT0NPhwMjul223WysN95fwso0yIaIqpaSu6BVMeul5dxtOb4nT9MBqIcaQwDupVTvIUg++TurpsxaRicwWNKZ8RzI/PdkXOYsm50T44JnWIdQ0yKEziRXNwrPF2m8Lz1mifavLzx4/4bz+AiLu22/SHgcE8tNbMjVHAdLLuQ8IdFpmFN5hq+/f84vVVDb99ZG2fK+lb4HwMqMdSiIAkpQdBpCaj6YRYFnJfAbGNw1P0R0hvFYsOv37Ab2XBdG/hJGih1i1mR4h9nZDKGu2S5jXDf+UskJBLX9nkDliAJC0yePIAa8Jz5hgP4KQPkns8I2K0nb7nmP2f0jrdkSqGyvwuuy2hI/MI9lpjuugeP1ngqIYIs8inSillS1FpduAJ6LKIklAW87hA6gDL+KkBcop61nAwAiG6PbLyDk2+tyCp0g6YiGIAT1YxHdmHyve4K1cjOMhVZ5RPR0WhOEzDRXpAVkyVkNL4mENKZGNKemIKGQIINLarZSejCgrQIeWyfoSCa7RaE+vA41NMckxPS89Omzw/g4u6hh32dmQ6Pn1ZpY8pe336fsqbpL1P92+jBrZ0M4VMvNRLBRWd9hB2gJFGsQ9gQkdKEcY5WMRuk0LyKEPetIXdjqo11I2ihYUfK5cHfp6bwioIUB/dQlPEmicFs0cbLd3XwG5VKolpxfHOvlyqdldD9rCDBkyk5qoUUi8JU6qdZ8xmyEG6drvtVvGlAh60VdRSEGS+jo2iT8aM55G8TL463fUPMtjuh+9LzEVnQClKFaStIetRXncorqeHbuCfWeB5y9CBe+aBVp39nawqOQfvCegVKGOhThBWaN/RzsTyons3dRhpJvp0bAz6kykpktCCc8b9X1NQkquMpkNfNcaNeMtAwnguNbT6CFoncXNG4YkhaTHo0ZfJxehucn31bXxzc32DMC7Ae7Z881DSOaLeHfkQmFRHOsi1TWggPriSh9KB2DmoAzwFut1dVybicP9N1fknF6mXO8aTfy+3jSr62sN3ArPrqtQL44oEmCjKRTfneF5ksanjFTAvl0vEch1oA9wxWr2IKTvOpgSQ93rNtGCu9rlmVffYPX5ECITcCDqk1vgIQYY3MjpgVg5WZ4MkFIN9AnpwK3B4k93Q0ik6pHkI1g8HuKs/l2G+nsvQF7A6nPOcESVPMjpDS7x0MqyjqZGVv8N6VKID97P249iAEynai5qRNP4YJzd0BpiIbTiNnvTv3mg66aUF3cZuLIg4wD/Auk/idz+s5DEjnIkM67cCFzLyE/nwKJXgzInTPhnFgRnhYMqwm1KxjMSjGeKAg1yBJ58+/kImV7dfLy8n55Px1d232/Pr6TjpPArMTXNbH9d03d2u72uIz3BM0wsTw64q+rlKNTkfXZBzZcoYC80olieFeNb/1D875LNc5j0LLuJa873rKtpKsrsEDS7BfjSd9Mltaa1xwSd57iVSEFMGWwby4fZuPM3Ir1/uLnFc4aawBmfPAnx+mhErLSipccwFXqLNjCykgt6c4aqUZB9/Rh4xv9acfDdzYp3BNiH1sl/pNOOhuVjsckCzDhb3cIiXBnCFv17cgltJDs8sHMRVPaZFjxstdpBXkgOypjkXCekkBObWLx593CLWHhlXMN2ymd4LkR6ZY1frHbzt6NZx0/StH/buqKIUStbAKibjvBPD21TicI98Q5AhrhJV0uzWnlJylJPhPd1ssMBfndpu8ed/SnDI9llGV8xJFM9I9qxmLQrBA6zjuBlD692lQT6OmJHrnfa8zeodozhEv7h21lK86fXtXbzjpbdkRWy31LFHfIPGHumQ0owmQY/SE3/bUMX0soxdkyab+Pcv+p8D2w== sidebar_class_name: "post api-method" info_path: api/open/bitbybit-cad-cloud-api custom_edit_url: null @@ -64,36 +64,5 @@ Returns parameter schemas and defaults for the requested model names. -{/* static-reference:generated */} -## Reference - -`POST /api/v1/models/definitions` - -Returns parameter schemas and defaults for the requested model names. - -### Request body - -Content type: `application/json` (required) - -| Field | Type | Required | Description | -|---|---|---|---| -| `names` | array of string | yes | Array of model slugs to fetch definitions for (e.g. ['dragon-cup', 'phone-nest']) | - -### Responses - -| Status | Description | -|---|---| -| `200` | Model definitions | -| `400` | Validation error | - -### Example request - -```bash -curl -X POST "https://api.bitbybit.dev/api/v1/models/definitions" \ - -H "x-api-key: YOUR_API_KEY" \ - -H "Content-Type: application/json" \ - -d '{ ... }' -``` - -Authentication: send your key in the `x-api-key` header. The full machine-readable specification is at [openapi.json](https://learn.bitbybit.dev/openapi.json). + \ No newline at end of file diff --git a/docs/api/openapi-docs/models-build-a-dragon-cup.api.mdx b/docs/api/openapi-docs/models-build-a-dragon-cup.api.mdx index 985eb877..d3021ae0 100644 --- a/docs/api/openapi-docs/models-build-a-dragon-cup.api.mdx +++ b/docs/api/openapi-docs/models-build-a-dragon-cup.api.mdx @@ -5,7 +5,7 @@ description: "Parametric dragon-scale textured cup with twisted lofted body, vor sidebar_label: "Models - build a Dragon Cup" hide_title: true hide_table_of_contents: true -api: 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 +api: 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 sidebar_class_name: "post api-method" info_path: api/open/bitbybit-cad-cloud-api custom_edit_url: null @@ -64,63 +64,5 @@ Parametric dragon-scale textured cup with twisted lofted body, voronoi-like skin -{/* static-reference:generated */} -## Reference - -`POST /api/v1/models/dragon-cup` - -Parametric dragon-scale textured cup with twisted lofted body, voronoi-like skin cells, and configurable shell thickness. All parameters are optional - defaults produce a ready-to-print model. - -### Request body - -Content type: `application/json` (required) - -| Field | Type | Required | Description | -|---|---|---|---| -| `params` | object | no | Dragon Cup model parameters - all optional, sane defaults apply | -| `params.height` | number | no | Total cup height (cm) | -| `params.radiusBottom` | number | no | Radius at the base (cm) | -| `params.radiusTopOffset` | number | no | How much the top radius differs from bottom | -| `params.radiusMidOffset` | number | no | Mid-section radius offset | -| `params.rotationTopAngle` | number | no | Top twist angle (degrees) | -| `params.rotationMidAngle` | number | no | Mid twist angle (degrees) | -| `params.nrSkinCellsVertical` | integer | no | Vertical skin cell count | -| `params.nrSkinCellsHorizontal` | integer | no | Horizontal skin cell count | -| `params.nrSkinCellDivisionsTop` | integer | no | Subdivisions at top of each cell | -| `params.nrSkinCellDivisionsBottom` | integer | no | Subdivisions at bottom of each cell | -| `params.skinCellOuterHeight` | number | no | Outer cell extrusion height | -| `params.skinCellInnerHeight` | number | no | Inner cell extrusion height | -| `params.skinCellBottomHeight` | number | no | Bottom cell height | -| `params.skinCellTopHeight` | number | no | Top cell height | -| `params.thickness` | number | no | Shell wall thickness | -| `params.bottomThickness` | number | no | Bottom plate thickness | -| `params.precision` | number | no | Mesh tessellation precision (lower = finer). Range: [0.0001, 10] | -| `params.rotation` | number | no | Final rotation angle (degrees) | -| `params.scale` | number | no | Uniform scale factor. Range: [1e-6, 1000] | -| `params.origin` | array of object | no | 3D point as [x, y, z] tuple, each coordinate in [-1000, 1000] | -| `params.direction` | array of object | no | 3D point as [x, y, z] tuple, each coordinate in [-1000, 1000] | -| `outputs` | object | yes | Controls which output formats are generated and their quality settings | -| `outputs.formats` | array of object | yes | Output formats to generate. Multiple formats can be requested (e.g. ['gltf', 'stpz']) - each produces a separate downloadable result. Do not include both 'step' and 'stpz' - only one STEP variant is supported per request. | -| `outputs.meshPrecision` | number | no | Mesh tessellation precision (lower = finer). Range: [0.0001, 10] | -| `outputs.gltfMeshPrecision` | number | no | Mesh tessellation precision (lower = finer). Range: [0.0001, 10] | -| `outputs.adjustYtoZ` | boolean | no | Convert from Y-up to Z-up coordinate system in the output. Useful for software that expects Z-up. | - -### Responses - -| Status | Description | -|---|---| -| `202` | Task accepted | -| `400` | Validation error | -| `500` | Server error | - -### Example request - -```bash -curl -X POST "https://api.bitbybit.dev/api/v1/models/dragon-cup" \ - -H "x-api-key: YOUR_API_KEY" \ - -H "Content-Type: application/json" \ - -d '{ ... }' -``` - -Authentication: send your key in the `x-api-key` header. The full machine-readable specification is at [openapi.json](https://learn.bitbybit.dev/openapi.json). + \ No newline at end of file diff --git a/docs/api/openapi-docs/models-build-a-phone-nest.api.mdx b/docs/api/openapi-docs/models-build-a-phone-nest.api.mdx index 3ea03429..fb732388 100644 --- a/docs/api/openapi-docs/models-build-a-phone-nest.api.mdx +++ b/docs/api/openapi-docs/models-build-a-phone-nest.api.mdx @@ -5,7 +5,7 @@ description: "Parametric 3D-printable desktop phone holder/stand with a lofted c sidebar_label: "Models - build a Phone Nest" hide_title: true hide_table_of_contents: true -api: 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 +api: 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 sidebar_class_name: "post api-method" info_path: api/open/bitbybit-cad-cloud-api custom_edit_url: null @@ -64,59 +64,5 @@ Parametric 3D-printable desktop phone holder/stand with a lofted cradle surface, -{/* static-reference:generated */} -## Reference - -`POST /api/v1/models/phone-nest` - -Parametric 3D-printable desktop phone holder/stand with a lofted cradle surface, optional ornamental perforations, and a phone mock-up shape. All parameters are optional - defaults produce a ready-to-print model. - -### Request body - -Content type: `application/json` (required) - -| Field | Type | Required | Description | -|---|---|---|---| -| `params` | object | no | Phone Nest model parameters - all optional, sane defaults apply | -| `params.heightBottom` | number | no | Height of the bottom section (cm) | -| `params.heightTop` | number | no | Height of the top section (cm) | -| `params.widthBack` | number | no | Width at the back (cm) | -| `params.widthFront` | number | no | Width at the front (cm) | -| `params.length` | number | no | Depth / length (cm) | -| `params.backOffset` | number | no | Back curve offset (cm) | -| `params.thickness` | number | no | Shell wall thickness | -| `params.applyOrnaments` | boolean | no | Add decorative perforations to the surface | -| `params.filletRadius` | number | no | Fillet radius on loft edges | -| `params.phoneHeight` | number | no | Phone mock-up height (cm) | -| `params.phoneWidth` | number | no | Phone mock-up width (cm) | -| `params.phoneThickness` | number | no | Phone mock-up thickness (cm) | -| `params.precision` | number | no | Mesh tessellation precision (lower = finer). Range: [0.0001, 10] | -| `params.rotation` | number | no | Final rotation angle (degrees) | -| `params.scale` | number | no | Uniform scale factor. Range: [1e-6, 1000] | -| `params.origin` | array of object | no | 3D point as [x, y, z] tuple, each coordinate in [-1000, 1000] | -| `params.direction` | array of object | no | 3D point as [x, y, z] tuple, each coordinate in [-1000, 1000] | -| `outputs` | object | yes | Controls which output formats are generated and their quality settings | -| `outputs.formats` | array of object | yes | Output formats to generate. Multiple formats can be requested (e.g. ['gltf', 'stpz']) - each produces a separate downloadable result. Do not include both 'step' and 'stpz' - only one STEP variant is supported per request. | -| `outputs.meshPrecision` | number | no | Mesh tessellation precision (lower = finer). Range: [0.0001, 10] | -| `outputs.gltfMeshPrecision` | number | no | Mesh tessellation precision (lower = finer). Range: [0.0001, 10] | -| `outputs.adjustYtoZ` | boolean | no | Convert from Y-up to Z-up coordinate system in the output. Useful for software that expects Z-up. | - -### Responses - -| Status | Description | -|---|---| -| `202` | Task accepted | -| `400` | Validation error | -| `500` | Server error | - -### Example request - -```bash -curl -X POST "https://api.bitbybit.dev/api/v1/models/phone-nest" \ - -H "x-api-key: YOUR_API_KEY" \ - -H "Content-Type: application/json" \ - -d '{ ... }' -``` - -Authentication: send your key in the `x-api-key` header. The full machine-readable specification is at [openapi.json](https://learn.bitbybit.dev/openapi.json). + \ No newline at end of file diff --git a/docs/api/openapi-docs/models-execute-a-parametric-model.api.mdx b/docs/api/openapi-docs/models-execute-a-parametric-model.api.mdx index f46a0771..a0be657f 100644 --- a/docs/api/openapi-docs/models-execute-a-parametric-model.api.mdx +++ b/docs/api/openapi-docs/models-execute-a-parametric-model.api.mdx @@ -5,7 +5,7 @@ description: "Generic endpoint - works for any registered model. See model-speci sidebar_label: "Models - execute a parametric model" hide_title: true hide_table_of_contents: true -api: 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 +api: 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 sidebar_class_name: "post api-method" info_path: api/open/bitbybit-cad-cloud-api custom_edit_url: null @@ -66,49 +66,5 @@ Generic endpoint - works for any registered model. See model-specific endpoints -{/* static-reference:generated */} -## Reference - -`POST /api/v1/models/{modelName}` - -Generic endpoint - works for any registered model. See model-specific endpoints for fully typed parameters. Always returns 202 with a task ID for polling. - -### Parameters - -| Parameter | In | Type | Required | Description | -|---|---|---|---|---| -| `modelName` | path | string | yes | Model slug (e.g. dragon-cup, phone-nest) | - -### Request body - -Content type: `application/json` (required) - -| Field | Type | Required | Description | -|---|---|---|---| -| `params` | object | no | Model-specific parameters. Omitted params use their defaults. See model definition for available options. | -| `outputs` | object | yes | Controls which output formats are generated and their quality settings | -| `outputs.formats` | array of object | yes | Output formats to generate. Multiple formats can be requested (e.g. ['gltf', 'stpz']) - each produces a separate downloadable result. Do not include both 'step' and 'stpz' - only one STEP variant is supported per request. | -| `outputs.meshPrecision` | number | no | Mesh tessellation precision (lower = finer). Range: [0.0001, 10] | -| `outputs.gltfMeshPrecision` | number | no | Mesh tessellation precision (lower = finer). Range: [0.0001, 10] | -| `outputs.adjustYtoZ` | boolean | no | Convert from Y-up to Z-up coordinate system in the output. Useful for software that expects Z-up. | - -### Responses - -| Status | Description | -|---|---| -| `202` | Task accepted | -| `400` | Validation error | -| `404` | Not found | -| `500` | Server error | - -### Example request - -```bash -curl -X POST "https://api.bitbybit.dev/api/v1/models/{modelName}" \ - -H "x-api-key: YOUR_API_KEY" \ - -H "Content-Type: application/json" \ - -d '{ ... }' -``` - -Authentication: send your key in the `x-api-key` header. The full machine-readable specification is at [openapi.json](https://learn.bitbybit.dev/openapi.json). + \ No newline at end of file diff --git a/docs/api/openapi-docs/models-generate-a-batch.api.mdx b/docs/api/openapi-docs/models-generate-a-batch.api.mdx index a0744fae..ee722743 100644 --- a/docs/api/openapi-docs/models-generate-a-batch.api.mdx +++ b/docs/api/openapi-docs/models-generate-a-batch.api.mdx @@ -5,7 +5,7 @@ description: "Creates a compound task with one sub-task per item. Each item can sidebar_label: "Models - generate a batch" hide_title: true hide_table_of_contents: true -api: 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 +api: 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 sidebar_class_name: "post api-method" info_path: api/open/bitbybit-cad-cloud-api custom_edit_url: null @@ -66,50 +66,5 @@ Creates a compound task with one sub-task per item. Each item can have different -{/* static-reference:generated */} -## Reference - -`POST /api/v1/models/{modelName}/batch` - -Creates a compound task with one sub-task per item. Each item can have different parameters but shares the same output config. - -### Parameters - -| Parameter | In | Type | Required | Description | -|---|---|---|---|---| -| `modelName` | path | string | yes | Model slug (e.g. dragon-cup, phone-nest) | - -### Request body - -Content type: `application/json` (required) - -| Field | Type | Required | Description | -|---|---|---|---| -| `items` | array of object | yes | Array of parameter variations. Each item produces a separate output with the same model. | -| `items[].params` | object | no | | -| `outputs` | object | yes | Controls which output formats are generated and their quality settings | -| `outputs.formats` | array of object | yes | Output formats to generate. Multiple formats can be requested (e.g. ['gltf', 'stpz']) - each produces a separate downloadable result. Do not include both 'step' and 'stpz' - only one STEP variant is supported per request. | -| `outputs.meshPrecision` | number | no | Mesh tessellation precision (lower = finer). Range: [0.0001, 10] | -| `outputs.gltfMeshPrecision` | number | no | Mesh tessellation precision (lower = finer). Range: [0.0001, 10] | -| `outputs.adjustYtoZ` | boolean | no | Convert from Y-up to Z-up coordinate system in the output. Useful for software that expects Z-up. | - -### Responses - -| Status | Description | -|---|---| -| `202` | Compound task accepted | -| `400` | Validation error | -| `404` | Not found | -| `500` | Server error | - -### Example request - -```bash -curl -X POST "https://api.bitbybit.dev/api/v1/models/{modelName}/batch" \ - -H "x-api-key: YOUR_API_KEY" \ - -H "Content-Type: application/json" \ - -d '{ ... }' -``` - -Authentication: send your key in the `x-api-key` header. The full machine-readable specification is at [openapi.json](https://learn.bitbybit.dev/openapi.json). + \ No newline at end of file diff --git a/docs/api/openapi-docs/models-get-parameter-definitions.api.mdx b/docs/api/openapi-docs/models-get-parameter-definitions.api.mdx index 1838651c..b115a75a 100644 --- a/docs/api/openapi-docs/models-get-parameter-definitions.api.mdx +++ b/docs/api/openapi-docs/models-get-parameter-definitions.api.mdx @@ -5,7 +5,7 @@ description: "Returns parameter schema, types, defaults, and limits for the spec sidebar_label: "Models - get parameter definitions" hide_title: true hide_table_of_contents: true -api: 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 +api: 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 sidebar_class_name: "get api-method" info_path: api/open/bitbybit-cad-cloud-api custom_edit_url: null @@ -66,32 +66,5 @@ Returns parameter schema, types, defaults, and limits for the specified model. -{/* static-reference:generated */} -## Reference - -`GET /api/v1/models/{modelName}/params` - -Returns parameter schema, types, defaults, and limits for the specified model. - -### Parameters - -| Parameter | In | Type | Required | Description | -|---|---|---|---|---| -| `modelName` | path | string | yes | Model slug (e.g. dragon-cup, phone-nest) | - -### Responses - -| Status | Description | -|---|---| -| `200` | Model definition | -| `404` | Not found | - -### Example request - -```bash -curl -X GET "https://api.bitbybit.dev/api/v1/models/{modelName}/params" \ - -H "x-api-key: YOUR_API_KEY" -``` - -Authentication: send your key in the `x-api-key` header. The full machine-readable specification is at [openapi.json](https://learn.bitbybit.dev/openapi.json). + \ No newline at end of file diff --git a/docs/api/openapi-docs/models-list-available-models.api.mdx b/docs/api/openapi-docs/models-list-available-models.api.mdx index 417920f9..579dde48 100644 --- a/docs/api/openapi-docs/models-list-available-models.api.mdx +++ b/docs/api/openapi-docs/models-list-available-models.api.mdx @@ -5,7 +5,7 @@ description: "Lists every parametric model available for generation, by name. Us sidebar_label: "Models - list available models" hide_title: true hide_table_of_contents: true -api: eJzdVU1v4zYQ/SuDuXS3kO2k3ZNubppsjW53jToBCgRBQZFjiwlFcsmRdg1D/70YyYk/Ni3aa32xRc+X3nvzuENWm4zlPf4WDLmMDwUayjrZyDZ4LPGDzZyBOkpbiCqphjhZDY2Eg+qUdapyBOuQYEOekpK8AqoteNXQFO4yAdcEibhNnsxwnOGL5Xo4N7S23kpSBuXNUREgb2KwnjNwAGOzDh0lIKXrsf13+XkiSpB1TY0aShhaq9ZxhorWIRHktmoss/UbUPAYqikWmCjH4DNlLHf4w8WFfJ2++ADIMC04mxkL1MEzeZZQFaOzehhz9pglfofjBPKLt5GwxFA9kpbEmEKkxHbsFp6OYqoQHCk/Vs+MJaeW+gKN4n9RqhlJO8SplNQWC7RMzfF55mT9BvtzducvBI6EZtduMnCtGLTyUBG0mcyBrdnYcbYTXPoDQ9j3gunn1iYyIqfmRU7KmIFe5ZZHs6+Vy/Sa1iCsQbljaZ2rLmOBbNnRM0mS9s0A4Qn3KP63GVat1pQzkO/IhUggrCvrRT2CgHue8RS5V4f6fS8y7OVTYENcB4MlbmjgUnGNJc5UtLPucvZSJ1PqKMlW7rBNDkusmWMuZxI5rSxX28ry1FCH59MvUzCtHh76B6mk22R5O5SaR/srbeetNL1/OP57JcodFXUcdFDVcCiykh41KUMJCxQNYIl/TObLxWQMOMNSh0gG5ssFPNF2CsNzLveIFaCVKQTfjhIX8D28+WKd0SqZt1OYS8ogvNDy3kFGdiFLGUikyXaU4d3Fj7D4uLq7uVlcLa4/3v65uvq0vJ4OirB+HYYX2VPz0x48uJr/DFcutMN0WKAAPg59OX03vfjmVX6xm3oSKa1DapTXJ6qUWuP6HJnXfLmYwqqNMSTO0LSO7WRIZggtx5bhzer2elnA+w+3NwUY0qGJQZatoVy/LSDaSM56AvpKuh1ddW0dTSolUSNseTgW01N567W4G8QURMHWb6Z701J6MK09X88YYHGmrhNl9QUypSZ/Wq8odVbT3wTOhqiJ8maigx/XTETsrCaR/qGvrF6yxCpt/7H16xWFzRgyN8of1RxvLZiMa/nKTp6wuDtY+P/1XttvLNNXnkWnrBciB6x3e7+5l3UWxV9icWTTdZDb5x53O9HXXXJ9L8efW0piHw8FdipZwWRwj+LZBsRZnmgrd4nWFEVVnXLtaBtnl6R4zosHvr++xb7/CxRj+q0= +api: eJzdVU1v4zYQ/SuDuXS3kO2k3ZNubppsjW53jToBCgRBQZFjiwlFcsmRdg1D/70YyYk/Ni3aa32xRc+X3nvzuENWm4zlPf4WDLmMDwUayjrZyDZ4LPGDzZyBOkpbiCqphjhZDY2Eg+qUdapyBOuQYEOekpK8AqoteNXQFO4yAdcEibhNnsxwnOGL5Xo4N7S23kpSBuXNUREgb2KwnjNwAGOzDh0lIKXrsf13+XkiSpB1TY0aShhaq9ZxhorWIRHktmoss/UbUPAYqikWmCjH4DNlLHf4w8WFfJ2++ADIMC04mxkL1MEzeZZQFaOzehhz9pglfofjBPKLt5GwxFA9kpbEmEKkxHbsFp6OYqoQHCk/Vs+MJaeW+gKN4n9RqhlJO8SplNQWC7RMzfF55mT9BvtzducvBI6EZtduMnCtGLTyUBG0mcyBrdnYcbYTXPoDQ9j3gunn1iYyIqfmRU7KmIFe5ZZHs6+Vy/Sa1iCsQbljaZ2rLmOBbNnRM0mS9s0A4Qn3KP63GVat1pQzkO/IhUggrCvrRT2CgHue8RS5V4f6fS8y7OVTYENcB4MlbmjgUnGNJc5UtLPucvZSJ1PqKMlW7rBNDkusmWMuZxI5rSxX28ry1FCH59MvUzCtHh76B6mk22R5O5SaR/srbeetNL1/OP57JcodFXUcdFDVcCiykh41KUMJCxQNYIl/TObLxWQMOMNSh0gG5ssFPNF2CsNzLveIFaCVKQTfjhIX8D28+WKd0SqZt1OYS8ogvNDy3kFGdiFLGUikyXaU4d3Fj7D4uLq7uVlcLa4/3v65uvq0vJ4OirB+HYYX2VPz0x48uJr/DFcutMN0WKAAPg59OX03vfzmVX6xm3oSKa1DapTXJ6qUWuP6HJnXfLmYwqqNMSTO0LSO7WRIZggtx5bhzer2elnA+w+3NwUY0qGJQZatoVy/LSDaSM56AvpKuh1ddW0dTSolUSNseTgW01N567W4G8QURMHWb6Z701J6MK09X88YYHGmrhNl9QUypSZ/Wq8odVbT3wTOhqiJ8maigx/XTETsrCaR/qGvrF6yxCpt/7H16xWFzRgyN8of1RxvLZiMa/nKTp6wuDtY+P/1XttvLNNXnkWnrBciB6x3e7+5l3UWxYvIDzZdB7l97nG3E33dJdf3cvy5pST28VBgp5IVTAb3KJ5tQJzlibZyl2hNUVTVKdeOtnF2SYrnvHjg++tb7Pu/ABfN+q4= sidebar_class_name: "get api-method" info_path: api/open/bitbybit-cad-cloud-api custom_edit_url: null @@ -56,25 +56,5 @@ Lists every parametric model available for generation, by name. Use the returned -{/* static-reference:generated */} -## Reference - -`GET /api/v1/models` - -Lists every parametric model available for generation, by name. Use the returned names with the definitions and generation endpoints to discover each model's parameter schema and defaults before submitting a job. - -### Responses - -| Status | Description | -|---|---| -| `200` | Model name list | - -### Example request - -```bash -curl -X GET "https://api.bitbybit.dev/api/v1/models" \ - -H "x-api-key: YOUR_API_KEY" -``` - -Authentication: send your key in the `x-api-key` header. The full machine-readable specification is at [openapi.json](https://learn.bitbybit.dev/openapi.json). + \ No newline at end of file diff --git a/docs/api/openapi-docs/sheet-metal-unfold-a-face-metrics-report.api.mdx b/docs/api/openapi-docs/sheet-metal-unfold-a-face-metrics-report.api.mdx index 3275299a..ae662765 100644 --- a/docs/api/openapi-docs/sheet-metal-unfold-a-face-metrics-report.api.mdx +++ b/docs/api/openapi-docs/sheet-metal-unfold-a-face-metrics-report.api.mdx @@ -5,7 +5,7 @@ description: "Proprietary sheet-metal analysis: computes the unfold metrics repo sidebar_label: "Sheet metal - unfold a face, metrics report" hide_title: true hide_table_of_contents: true -api: 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 +api: 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 sidebar_class_name: "post api-method" info_path: api/open/bitbybit-cad-cloud-api custom_edit_url: null @@ -64,39 +64,5 @@ Proprietary sheet-metal analysis: computes the unfold metrics report (developabi -{/* static-reference:generated */} -## Reference - -`POST /api/v1/cad/pro/unfold/face-report` - -Proprietary sheet-metal analysis: computes the unfold metrics report (developability, area, ...) for a single face of an uploaded STEP shape. Requires the 'cad' API key scope. Returns 202 with a task ID; the JSON report is delivered in the task metadata. - -### Request body - -Content type: `application/json` (required) - -| Field | Type | Required | Description | -|---|---|---|---| -| `stepFileId` | string | yes | ID of the previously uploaded STEP file (returned by the file upload endpoint). Both plain STEP (.step/.stp) and gzip-compressed STEP (.stpz) uploads are accepted - compression is detected automatically. | -| `faceIndex` | integer | no | 0-based index of the face to analyze.Default: `0`. | - -### Responses - -| Status | Description | -|---|---| -| `202` | Task accepted | -| `400` | Validation error | -| `403` | Insufficient scope | -| `500` | Server error | - -### Example request - -```bash -curl -X POST "https://api.bitbybit.dev/api/v1/cad/pro/unfold/face-report" \ - -H "x-api-key: YOUR_API_KEY" \ - -H "Content-Type: application/json" \ - -d '{ ... }' -``` - -Authentication: send your key in the `x-api-key` header. The full machine-readable specification is at [openapi.json](https://learn.bitbybit.dev/openapi.json). + \ No newline at end of file diff --git a/docs/api/openapi-docs/sheet-metal-unfold-a-face-to-flat-geometry.api.mdx b/docs/api/openapi-docs/sheet-metal-unfold-a-face-to-flat-geometry.api.mdx index c2350cd1..9b6294d8 100644 --- a/docs/api/openapi-docs/sheet-metal-unfold-a-face-to-flat-geometry.api.mdx +++ b/docs/api/openapi-docs/sheet-metal-unfold-a-face-to-flat-geometry.api.mdx @@ -5,7 +5,7 @@ description: "Proprietary sheet-metal unfold: flattens a single developable face sidebar_label: "Sheet metal - unfold a face to flat geometry" hide_title: true hide_table_of_contents: true -api: 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 +api: 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 sidebar_class_name: "post api-method" info_path: api/open/bitbybit-cad-cloud-api custom_edit_url: null @@ -64,44 +64,5 @@ Proprietary sheet-metal unfold: flattens a single developable face (by index) of -{/* static-reference:generated */} -## Reference - -`POST /api/v1/cad/pro/unfold/face-to-flat` - -Proprietary sheet-metal unfold: flattens a single developable face (by index) of an uploaded STEP shape. Requires the 'cad' API key scope. Returns 202 with a task ID; the flattened geometry is delivered as the task's output files. - -### Request body - -Content type: `application/json` (required) - -| Field | Type | Required | Description | -|---|---|---|---| -| `stepFileId` | string | yes | ID of the previously uploaded STEP file (returned by the file upload endpoint). Both plain STEP (.step/.stp) and gzip-compressed STEP (.stpz) uploads are accepted - compression is detected automatically. | -| `faceIndex` | integer | no | 0-based index of the developable face (in the shape's BRepGraph face array) to unfold.Default: `0`. | -| `outputs` | object | no | Controls which output formats are generated and their quality settings | -| `outputs.formats` | array of object | yes | Output formats to generate. Multiple formats can be requested (e.g. ['gltf', 'stpz']) - each produces a separate downloadable result. Do not include both 'step' and 'stpz' - only one STEP variant is supported per request. | -| `outputs.meshPrecision` | number | no | Mesh tessellation precision (lower = finer). Range: [0.0001, 10] | -| `outputs.gltfMeshPrecision` | number | no | Mesh tessellation precision (lower = finer). Range: [0.0001, 10] | -| `outputs.adjustYtoZ` | boolean | no | Convert from Y-up to Z-up coordinate system in the output. Useful for software that expects Z-up. | - -### Responses - -| Status | Description | -|---|---| -| `202` | Task accepted | -| `400` | Validation error | -| `403` | Insufficient scope | -| `500` | Server error | - -### Example request - -```bash -curl -X POST "https://api.bitbybit.dev/api/v1/cad/pro/unfold/face-to-flat" \ - -H "x-api-key: YOUR_API_KEY" \ - -H "Content-Type: application/json" \ - -d '{ ... }' -``` - -Authentication: send your key in the `x-api-key` header. The full machine-readable specification is at [openapi.json](https://learn.bitbybit.dev/openapi.json). + \ No newline at end of file diff --git a/docs/api/openapi-docs/sheet-metal-unfold-all-solids-geometry-report.api.mdx b/docs/api/openapi-docs/sheet-metal-unfold-all-solids-geometry-report.api.mdx index ddca8c32..51b07d2d 100644 --- a/docs/api/openapi-docs/sheet-metal-unfold-all-solids-geometry-report.api.mdx +++ b/docs/api/openapi-docs/sheet-metal-unfold-all-solids-geometry-report.api.mdx @@ -5,7 +5,7 @@ description: "Proprietary sheet-metal unfold, full workflow: flattens every soli sidebar_label: "Sheet metal - unfold all solids, geometry + report" hide_title: true hide_table_of_contents: true -api: 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 +api: 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 sidebar_class_name: "post api-method" info_path: api/open/bitbybit-cad-cloud-api custom_edit_url: null @@ -64,45 +64,5 @@ Proprietary sheet-metal unfold, full workflow: flattens every solid in an upload -{/* static-reference:generated */} -## Reference - -`POST /api/v1/cad/pro/unfold/solid` - -Proprietary sheet-metal unfold, full workflow: flattens every solid in an uploaded STEP file AND returns per-solid metrics in one call. Requires the 'cad' API key scope. Returns 202 with a task ID; flats are combined into one compound output per format and the per-solid report array is delivered in the task metadata. - -### Request body - -Content type: `application/json` (required) - -| Field | Type | Required | Description | -|---|---|---|---| -| `stepFileId` | string | yes | ID of the previously uploaded STEP file (returned by the file upload endpoint). Both plain STEP (.step/.stp) and gzip-compressed STEP (.stpz) uploads are accepted - compression is detected automatically. | -| `kFactor` | number | no | Sheet-metal K-factor (neutral-axis position), typically ~0.5.Default: `0.5`. | -| `thicknessOverride` | number | no | Sheet thickness override in model units; 0 auto-detects thickness from face pairs.Default: `0`. | -| `outputs` | object | no | Controls which output formats are generated and their quality settings | -| `outputs.formats` | array of object | yes | Output formats to generate. Multiple formats can be requested (e.g. ['gltf', 'stpz']) - each produces a separate downloadable result. Do not include both 'step' and 'stpz' - only one STEP variant is supported per request. | -| `outputs.meshPrecision` | number | no | Mesh tessellation precision (lower = finer). Range: [0.0001, 10] | -| `outputs.gltfMeshPrecision` | number | no | Mesh tessellation precision (lower = finer). Range: [0.0001, 10] | -| `outputs.adjustYtoZ` | boolean | no | Convert from Y-up to Z-up coordinate system in the output. Useful for software that expects Z-up. | - -### Responses - -| Status | Description | -|---|---| -| `202` | Task accepted | -| `400` | Validation error | -| `403` | Insufficient scope | -| `500` | Server error | - -### Example request - -```bash -curl -X POST "https://api.bitbybit.dev/api/v1/cad/pro/unfold/solid" \ - -H "x-api-key: YOUR_API_KEY" \ - -H "Content-Type: application/json" \ - -d '{ ... }' -``` - -Authentication: send your key in the `x-api-key` header. The full machine-readable specification is at [openapi.json](https://learn.bitbybit.dev/openapi.json). + \ No newline at end of file diff --git a/docs/api/openapi-docs/sheet-metal-unfold-all-solids-metrics-report.api.mdx b/docs/api/openapi-docs/sheet-metal-unfold-all-solids-metrics-report.api.mdx index 7982a309..4217e17f 100644 --- a/docs/api/openapi-docs/sheet-metal-unfold-all-solids-metrics-report.api.mdx +++ b/docs/api/openapi-docs/sheet-metal-unfold-all-solids-metrics-report.api.mdx @@ -5,7 +5,7 @@ description: "Proprietary sheet-metal analysis: computes per-solid unfold metric sidebar_label: "Sheet metal - unfold all solids, metrics report" hide_title: true hide_table_of_contents: true -api: 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 +api: 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 sidebar_class_name: "post api-method" info_path: api/open/bitbybit-cad-cloud-api custom_edit_url: null @@ -64,40 +64,5 @@ Proprietary sheet-metal analysis: computes per-solid unfold metrics for every so -{/* static-reference:generated */} -## Reference - -`POST /api/v1/cad/pro/unfold/solid-report` - -Proprietary sheet-metal analysis: computes per-solid unfold metrics for every solid in an uploaded STEP file. Requires the 'cad' API key scope. Returns 202 with a task ID; the JSON report array is delivered in the task metadata. - -### Request body - -Content type: `application/json` (required) - -| Field | Type | Required | Description | -|---|---|---|---| -| `stepFileId` | string | yes | ID of the previously uploaded STEP file (returned by the file upload endpoint). Both plain STEP (.step/.stp) and gzip-compressed STEP (.stpz) uploads are accepted - compression is detected automatically. | -| `kFactor` | number | no | Sheet-metal K-factor (neutral-axis position), typically ~0.5.Default: `0.5`. | -| `thicknessOverride` | number | no | Sheet thickness override in model units; 0 auto-detects thickness from face pairs.Default: `0`. | - -### Responses - -| Status | Description | -|---|---| -| `202` | Task accepted | -| `400` | Validation error | -| `403` | Insufficient scope | -| `500` | Server error | - -### Example request - -```bash -curl -X POST "https://api.bitbybit.dev/api/v1/cad/pro/unfold/solid-report" \ - -H "x-api-key: YOUR_API_KEY" \ - -H "Content-Type: application/json" \ - -d '{ ... }' -``` - -Authentication: send your key in the `x-api-key` header. The full machine-readable specification is at [openapi.json](https://learn.bitbybit.dev/openapi.json). + \ No newline at end of file diff --git a/docs/api/openapi-docs/sheet-metal-unfold-all-solids-to-flat-geometry.api.mdx b/docs/api/openapi-docs/sheet-metal-unfold-all-solids-to-flat-geometry.api.mdx index 070ccd68..e6523caa 100644 --- a/docs/api/openapi-docs/sheet-metal-unfold-all-solids-to-flat-geometry.api.mdx +++ b/docs/api/openapi-docs/sheet-metal-unfold-all-solids-to-flat-geometry.api.mdx @@ -5,7 +5,7 @@ description: "Proprietary sheet-metal unfold: loads every solid in an uploaded S sidebar_label: "Sheet metal - unfold all solids to flat geometry" hide_title: true hide_table_of_contents: true -api: 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 +api: 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 sidebar_class_name: "post api-method" info_path: api/open/bitbybit-cad-cloud-api custom_edit_url: null @@ -64,45 +64,5 @@ Proprietary sheet-metal unfold: loads every solid in an uploaded STEP file and f -{/* static-reference:generated */} -## Reference - -`POST /api/v1/cad/pro/unfold/solid-to-flat` - -Proprietary sheet-metal unfold: loads every solid in an uploaded STEP file and flattens each to a flat pattern. Requires the 'cad' API key scope. Returns 202 with a task ID; all flats are combined into one compound output per format. - -### Request body - -Content type: `application/json` (required) - -| Field | Type | Required | Description | -|---|---|---|---| -| `stepFileId` | string | yes | ID of the previously uploaded STEP file (returned by the file upload endpoint). Both plain STEP (.step/.stp) and gzip-compressed STEP (.stpz) uploads are accepted - compression is detected automatically. | -| `kFactor` | number | no | Sheet-metal K-factor (neutral-axis position), typically ~0.5.Default: `0.5`. | -| `thicknessOverride` | number | no | Sheet thickness override in model units; 0 auto-detects thickness from face pairs.Default: `0`. | -| `outputs` | object | no | Controls which output formats are generated and their quality settings | -| `outputs.formats` | array of object | yes | Output formats to generate. Multiple formats can be requested (e.g. ['gltf', 'stpz']) - each produces a separate downloadable result. Do not include both 'step' and 'stpz' - only one STEP variant is supported per request. | -| `outputs.meshPrecision` | number | no | Mesh tessellation precision (lower = finer). Range: [0.0001, 10] | -| `outputs.gltfMeshPrecision` | number | no | Mesh tessellation precision (lower = finer). Range: [0.0001, 10] | -| `outputs.adjustYtoZ` | boolean | no | Convert from Y-up to Z-up coordinate system in the output. Useful for software that expects Z-up. | - -### Responses - -| Status | Description | -|---|---| -| `202` | Task accepted | -| `400` | Validation error | -| `403` | Insufficient scope | -| `500` | Server error | - -### Example request - -```bash -curl -X POST "https://api.bitbybit.dev/api/v1/cad/pro/unfold/solid-to-flat" \ - -H "x-api-key: YOUR_API_KEY" \ - -H "Content-Type: application/json" \ - -d '{ ... }' -``` - -Authentication: send your key in the `x-api-key` header. The full machine-readable specification is at [openapi.json](https://learn.bitbybit.dev/openapi.json). + \ No newline at end of file diff --git a/docs/api/openapi-docs/tasks-cancel-a-task.api.mdx b/docs/api/openapi-docs/tasks-cancel-a-task.api.mdx index 305994a6..7363f0d9 100644 --- a/docs/api/openapi-docs/tasks-cancel-a-task.api.mdx +++ b/docs/api/openapi-docs/tasks-cancel-a-task.api.mdx @@ -5,7 +5,7 @@ description: "Cancels a waiting or queued task. Has no effect on completed/faile sidebar_label: "Tasks - cancel a task" hide_title: true hide_table_of_contents: true -api: eJy9Vt9vGzcM/lcIPjWDbKdbnu7NS9zVWJcYdjoMCIxClmhbzVm66odTw7j/vaDuLnHsdE2BYU/23VHkR/L7SO0xylXA4g5vZbgPOBeoKShvqmicxQIvpVVUBpDwIE00dgXOw5dEiTREGe778F4GsA5ouSQVwVlQblOVFEkPltKUrV3oo8BKermhSJ4j7tHKDWGB/HmsUaDhgJWMaxTo6UsynjQW0ScSGNSaNhKLPcZdxadC9MauUODS+Y2MWGBKRmN9nADnBeMrrOfsNFTOBgrs59fzc/55wVrlnEtiTMrZSDaypayq0ijJloPPgc33p7Dc4jOpyLl6V5GPpgnm7g9sFs6VJG3jPcQmRQYu4ytcPaH7scfK09a4FGZRxhReqt7z9Bs7WNDSeerqkDPGuj5syh0eFukozFyg1NrwMVlODsAvZRnohGHOLg230DgLcS0jyMwYeJABQlKKQlimstw960s0saRHfk4ppDKeYHT32Fb15yDNmqjQ8QWWzjeYnpXkGAWTZ9oewbpmNBfnF6cku3YRli7Z/41fOclaIHnv/CsY5jT9mCt/SbU2lnqepJaLkiB7h3xYIH2VPAWwwL+HH8ZXw9vxzfWn0XR6M2WJbigEuXpFkPdpI+1xiO501nqUpgynNb6pml5DiD6pmDzpR4A20teILVcoxLE+PT9tPsH4qmm+l6rB9xzviSqa7DuEP0m7Y6jGNsONlfFg4ho2xzXneCCtBtflq2mRVise1F2iTzQdsderXLKXtdIQ5GdRS6ul7zCT3VLpKjoO+0wYmQJx7TQWqImXRd4OcY0FDmRlBtu3g7w1BvtmO9QoMJDfdqsj+RILXMdYhWLAJ/oLExe7hYl9TdsTGk2800k1c2zOnlTyJu6yq2Fl/qTdMHHwu/nh5xmLr5HEodEjZ2V+2S2uNUlNHkW31v7pDSfjXmNwVDHlKtIwnIzhnnZ9yM+hgI3TVAYBSmrB3duSjwJ+gTcPptRKen3WhyEfyWRwKUJcE3RNhMBuwJMis6UAF+e/wfh69vHdu/HleHR9+2l2eTMZ9XPjmVg5kbZDv7fFg8vhFVyWLmV0KJAL3oB+27/on5/q06zWvYp85qlVBO2K90ZlXzklWJEl39B4OBn3YZaqyvkYYJPKaHoNycGlWKUIb2a3o4mAPz7cvhOgiW8TLpBm1a/PBFSmotJYAvpKKrFPAUtTUm8h2aopW8ivWRcy7KyCz24BlXc81I1d9du5K1Weu22/uhqgOGLXM2bVAiP5TbhZzshvjaLvGA6yVU9a3VPONmIKKLA0ilgFT3FZYN5QlH73r6Ff9sjdrFyIG2kPfObLHPTaddUu1OPm7Z+Wz397zWvlwcNnUJXSWK5aTmzfivyOtcP0esvm+eYpsGgvgnOBa8dr6w73e+7qR1/WNb/+ksizaOcCt9IbnoBZwtoE/q9fnlCHeb6Ztmo5g+5i+B28ncYtd2Ury8RPKPCedk931npei074DKT5OFSKqnhw7GSz85R5HIBXow+j2xHW9TdOnAPK +api: eJy9Vt9vGzcM/lcIPrWDbKdbnu7NS5zVWJcYdjoMCIxClmhbzVm66odTw7j/vaDuLnHsdG2AYU/23VHkR/L7SO0xylXA4g5vZbgPOBeoKShvqmicxQIvpFVUBpDwIE00dgXOw5dEiTREGe778F4GsA5ouSQVwVlQblOVFEkPltKUrV3oo8BKermhSJ4j7tHKDWGB/HmsUaDhgJWMaxTo6UsynjQW0ScSGNSaNhKLPcZdxadC9MauUODS+Y2MWGBKRmN9nADnBeNLrOfsNFTOBgrs59ezM/55wVrlnEtiTMrZSDaypayq0ijJloPPgc33p7Dc4jOpyLl6V5GPpgnm7g9sFs6VJG3jPcQmRQYu40+4ekL3Y4+Vp61xKcyijCm8VL3n6Td2sKCl89TVIWeMdX3YlDs8LNJRmLlAqbXhY7KcHIBfyjLQCcOcXRpuoXEW4lpGkJkx8CADhKQUhbBMZbl71pdoYkmP/JxSSGU8wejusa3q6yDNmqjQ8QWWzjeYnpXkGAWTZ9oewbpmNOdn56cku3YRli7Z/41fOclaIHnv/E8wzGn6MVf+kmptLPU8SS0XJUH2DvmwQPoqeQpggX8PP4wvh7fjm+tPo+n0ZsoS3VAIcvUTQd6njbTHIbrTWetRmjKc1vimanoNIfqkYvKkHwHaSF8jtlyhEMf69Py0+QTjy6b5XqoG33O8J6posu8QvpJ2x1CNbYYbK+PBxDVsjmvO8UBaDa7LV9MirVY8qLtEn2g6Yq+XuWQva6UhyGtRS6ul7zCT3VLpKjoO+0wYmQJx7TQWqImXRd4OcY0FDmRlBtt3g7w1BvtmO9QoMJDfdqsj+RILXMdYhWLAJ/oLExe7hYl9TdsTGk2800k1c2zOnlTyJu6yq2Fl/qTdMHHwu/nh5xmLr5HEodEjZ2V+2S2uNUlNHkW31v7pDSfjXmNwVDHlKtIwnIzhnnZ9yM+hgI3TVAYBSmrB3duSjwJ+gTcPptRKev22D0M+ksngUoS4JuiaCIHdgCdFZksBzs9+g/H17OPV1fhiPLq+/TS7uJmM+rnxTKycSNuh39viwcXwEi5KlzI6FMgFb0C/65/3353q06zWvYp85qlVBO2K90ZlXzklWJEl39B4OBn3YZaqyvkYYJPKaHoNycGlWKUIb2a3o4mAPz7cXgnQxLcJF0iz6tdvBVSmotJYAvpKKrFPAUtTUm8h2aopW8ivWRcy7KyCz24BlXc81I1d9du5K1Weu22/uhqgOGLXM2bVAiP5TbhZzshvjaLvGA6yVU9a3VPONmIKKLA0ilgFT3FZYN5QlH73r6Ff9sjdrFyIG2kPfObLHPTaddUu1OPm7Z+Wz397zWvlwcNnUJXSWK5aTmzfivyOtcP0YkblcyiwaC+Cc4Frx2vrDvd77upHX9Y1v/6SyLNo5wK30huegFnC2gT+r1+eUId5vpm2ankL3cXwO3g7jVvuylaWiZ9Q4D3tnu6s9bwWnfAZSPNxqBRV8eDYyWbnKfM4AC9HH0a3I6zrb1H7A8s= sidebar_class_name: "delete api-method" info_path: api/open/bitbybit-cad-cloud-api custom_edit_url: null @@ -66,32 +66,5 @@ Cancels a waiting or queued task. Has no effect on completed/failed tasks. -{/* static-reference:generated */} -## Reference - -`DELETE /api/v1/tasks/{taskId}` - -Cancels a waiting or queued task. Has no effect on completed/failed tasks. - -### Parameters - -| Parameter | In | Type | Required | Description | -|---|---|---|---|---| -| `taskId` | path | string | yes | Task ID | - -### Responses - -| Status | Description | -|---|---| -| `200` | Task cancelled | -| `404` | Not found | - -### Example request - -```bash -curl -X DELETE "https://api.bitbybit.dev/api/v1/tasks/{taskId}" \ - -H "x-api-key: YOUR_API_KEY" -``` - -Authentication: send your key in the `x-api-key` header. The full machine-readable specification is at [openapi.json](https://learn.bitbybit.dev/openapi.json). + \ No newline at end of file diff --git a/docs/api/openapi-docs/tasks-get-all-results.api.mdx b/docs/api/openapi-docs/tasks-get-all-results.api.mdx index 937aff91..a9929947 100644 --- a/docs/api/openapi-docs/tasks-get-all-results.api.mdx +++ b/docs/api/openapi-docs/tasks-get-all-results.api.mdx @@ -5,7 +5,7 @@ description: "Returns download URLs for every available result format in a singl sidebar_label: "Tasks - get all results" hide_title: true hide_table_of_contents: true -api: eJztWFFPIzcQ/isjvwDVZgMtL81bCtw16hWiBKpKKDo59rDxxWvv2d5AFO1/r8bOkiXhjruXqlLvCZK1v/k8832z42xY4IVng3t2y/3Ss1nGJHrhVBWUNWzAJhhqZzxI+2i05RLuJh88PFgHuEK3Br7iSvO5RnDoax3oUckDKAMcvDKFRhBc6xzuPEJYKA/K+IBcgn2Aki+VKaCsdVBVxPhcow8egoV+AuxvEmKTs4xV3PESAzqivGGGl8gGLHC/HEmWMUWMKx4WLGMEpRxKNgiuxox5scCSs8GGhXVFu3xwyhQsYwmfDVhdK8ma/QxQYmB0yZoZgfrKGo+ecH4+PaU/L1dftnnSyixTorjWnTSlaJ5lTFgT0ATC4FWlleCE0f/kCWhzSNjOP6EIlAVnK3RBJRp22Vkzt1YjNwndh3R4OhIP3wDVFtl3lnLn+JpyG7D0b0O0yTxM876uumpZ4hqOMS9yOCr0/CiDIx+wor8lBk7kj05iZbYE75x+O8TYYc+rwmAULUnqWcRhsdOr0pjD1VOlHHrgDwEdnMHC1i5/oQ2niACtTqp7K/q0Lgr0ASW0e6IYKHJLg2UMn3hZaYJJdPJCz1nTdOV735J4efwOl1nGuJSKAnM97pTjgWuPB4J+U6IvnOwP6OxU8vXAX4yrTIJW1rwZnboEB2EpS5RM8jrLWFAhZo3MmaTkW/gDvpY2RAN8H99pLQR6D2hWqG2FQIblylDHkq/ncC9zr/KcbHsIaxpien56fthFri2B1Eb+W22iVQo6Z93bYMLKb7DAn1wslMGeQy5jaSM6xM1d6f81/DC6HN6Obq4/Xk0mNxMyWone8+Ibgvxel9zsh2h3R+0HrrQ/zPFNlXQAPrhahNqhfCZoAj4FttUR+jCSh/sn6RGMLpOxHReJ30u++2rcnr5l+J2S3KfatdKjCgso93NO8YAbCbY9r8R5XRSk4vagO51eEeplTNnrPkoC+V7W3EjuWs6tn/bDHhjj18Okx5ex8mBsgDWGXWP4YZQfRvlfGiVKICysZANWYFQgDcAD1ueV6q/O+vTG9P1NGpKb7VRN7yaPbtVO0jUNVGwRQuUHfdqZz1WYr+cq5BJXr4xWVtYifqCx2KOonQrrCDWs1B+4HtZE4n7WfTwlByZfdBftRs34ZTvHL5BLdCxrp/y/e8PxqJcW7KVN2AolDMcjGiRziJ/9AEorUfsMBJcZlXCFLmTwExw/Ki0Fd/Ikh2GcPUkRtg7buTBVEjzBgEOBaoUezk9/gdH19O7du9HF6Or69uP04mZ8lcfqk7riQbZl+m2bPLgYXsKFtnVkxzJGCU+kz/Lz/PTQpKpY9Cp0UaxGIGxvPE6JiBWPBAUadEnLw/Eoh2ldVdYFny5Sve1QbetQ1QGOp7dX4wzef7h9l4FE6pjWoyTrL04yqFSFWhkEfEJRE2YWJ9benNOqlDYfvyZzcL82Aj7ZOVTO0nikTJFvmy8Xsflu69XmgGV76nqhrCZjAV3pbx6m6FZK4BcW9uOqHjeyJ6xJjiIRayWQrLCLSy5zCgN366+Gfh2RqllZH0puOpjxcgw9KDB05jy/X77N7h30H7s4bx1GTaxfaa4MJb5Ot6jUL+7JfqTQM1oefwzI2OD5at2eeJaxhaUX4T3bbEgid043DX39uUZHHWCWsRV3io4W+4FUnv6Xr/e8bsqOJ1vrnUB76f4C87ZhGCrxiuuaPrGMLXG9+z2gmTVZ20WISHo4FAKr0Nl2MCtQy3puqe+vblnT/AMm0gMM +api: eJztWFFPIzcQ/isjvwDVZgMtL81bCtw16hWiBKpKKDo59rDxxWvv2d5AFO1/r8bOkiXhjruXqlLvKSRrf/N55vtmx2xY4IVng3t2y/3Ss1nGJHrhVBWUNWzAJhhqZzxI+2i05RLuJh88PFgHuEK3Br7iSvO5RnDoax3oUckDKAMcvDKFRhBc6xzuPEJYKA/K+IBcgn2Aki+VKaCsdVBVxPhcow8egoV+AuxvEmKTs4xV3PESAzqivGGGl8gGLHC/HEmWMUWMKx4WLGMEpRxKNgiuxox5scCSs8GGhXVFu3xwyhQsYwmfDVhdK8ma/QxQYmB0yZoZgfrKGo+ecH4+PaWPl6sv2zxpZZYpUVzrTppSNM8yJqwJaAJh8KrSSnDC6H/yBLQ5JGznn1AEyoKzFbqgEg277KyZW6uRm4TuQzo8HYmHb4Bqi+w7S7lzfE25DVj6tyHaZB6meV9XXbUscQ3HmBc5HBV6fpTBkQ9Y0WeJgRP5o5NYmS3BO6ffDjF22POqMBhFS5J6FnFY7PSqNOZw9VQphx74Q0AHZ7CwtctfaMMpIkCrk+reij6tiwJ9QAntnigGitzSYBnDJ15WmmASnbzQc9Y0XfnetyReHr/DZZYxLqWiwFyPO+V44NrjgaDflOgLJ/sDOjuVfD3wF+Mqk6CVNW9Gpy7BQVjKEiWTvM4yFlSIWSNzJin5Fv6Ar6UN0QDfx3daC4HeA5oValshkGG5MtSx5Os53Mvcqzwn2x7CmoaYnp+eH3aRa0sgtZH/VptolYLOWfc2mLDyGyzwJxcLZbDnkMtY2ogOcXNX+n8NP4wuh7ejm+uPV5PJzYSMVqL3vPiGIL/XJTf7IdrdUfuBK+0Pc3xTJR2AD64WoXYonwmagE+BbXWEPozk4f5JegSjy2Rsx0Xi95Lvvhq3p28Zfqck96l2rfSowgLK/ZxTPOBGgm3PK3FeFwWpuD3oTqdXhHoZU/a6j5JAvpc1N5K7lnPrp/2wB8b49TDp8WWsPBgbYI1h1xh+GOWHUf6XRokSCAsr2YAVGBVIA/CA9Xml+quzPr0xfX+ThuRmO1XTu8mjW7WTdE0DFVuEUPlBn3bmcxXm67kKucTVK6OVlbWIX2gs9ihqp8I6Qg0r9QeuhzWRuJ91H0/JgckX3UW7UTP+2M7xC+QSHcvaKf/v3nA86qUFe2kTtkIJw/GIBskc4nc/gNJK1D4DwWVGJVyhCxn8BMePSkvBnTzJYRhnT1KErcN2LkyVBE8w4FCgWqGH89NfYHQ9vXv3bnQxurq+/Ti9uBlf5bH6pK54kG2ZftsmDy6Gl3ChbR3ZsYxRwhPps/w8Pzs0qSoWvQpdFKsRCNsbj1MiYsUjQYEGXdLycDzKYVpXlXXBp4tUbztU2zpUdYDj6e3VOIP3H27fZSCROqb1KMn6i5MMKlWhVgYBn1DUhJnFibU357Qqpc3Hn8kc3K+NgE92DpWzNB4pU+Tb5stFbL7berU5YNmeul4oq8lYQFf6m4cpupUS+IWF/biqx43sCWuSo0jEWgkkK+ziksucwsDd+quhX0ekalbWh5KbDma8HEMPCgydOc/vl2+zewf9xy7OW4dRE+tXmitDia/TLSr1i3uyHymURBl7BsvY4Plq3Z54lrGFpRfhPdtsSCJ3TjcN/fy5RkcdYJaxFXeKjhb7gVSe/pav97xuyo4nW+udQHvp/gLztmEYKvGK65q+sYwtcb37f0Aza7K2ixCR9HAoBFahs+1gVqCW9dxS31/dsqb5Byp7Aw0= sidebar_class_name: "get api-method" info_path: api/open/bitbybit-cad-cloud-api custom_edit_url: null @@ -66,33 +66,5 @@ Returns download URLs for every available result format in a single call. Use th -{/* static-reference:generated */} -## Reference - -`GET /api/v1/tasks/{taskId}/results` - -Returns download URLs for every available result format in a single call. Use this instead of making multiple requests to /result/{format}. - -### Parameters - -| Parameter | In | Type | Required | Description | -|---|---|---|---|---| -| `taskId` | path | string | yes | Task ID | - -### Responses - -| Status | Description | -|---|---| -| `200` | Download links for all available formats | -| `404` | Not found | -| `409` | Task is not yet completed | - -### Example request - -```bash -curl -X GET "https://api.bitbybit.dev/api/v1/tasks/{taskId}/results" \ - -H "x-api-key: YOUR_API_KEY" -``` - -Authentication: send your key in the `x-api-key` header. The full machine-readable specification is at [openapi.json](https://learn.bitbybit.dev/openapi.json). + \ No newline at end of file diff --git a/docs/api/openapi-docs/tasks-get-result-default-format.api.mdx b/docs/api/openapi-docs/tasks-get-result-default-format.api.mdx index 0563fc96..09fcab81 100644 --- a/docs/api/openapi-docs/tasks-get-result-default-format.api.mdx +++ b/docs/api/openapi-docs/tasks-get-result-default-format.api.mdx @@ -5,7 +5,7 @@ description: "Returns a download URL for the task's primary result. For compound sidebar_label: "Tasks - get result (default format)" hide_title: true hide_table_of_contents: true -api: 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 +api: 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 sidebar_class_name: "get api-method" info_path: api/open/bitbybit-cad-cloud-api custom_edit_url: null @@ -66,33 +66,5 @@ Returns a download URL for the task's primary result. For compound tasks, return -{/* static-reference:generated */} -## Reference - -`GET /api/v1/tasks/{taskId}/result` - -Returns a download URL for the task's primary result. For compound tasks, returns a manifest with per-sub-task download links. - -### Parameters - -| Parameter | In | Type | Required | Description | -|---|---|---|---|---| -| `taskId` | path | string | yes | Task ID | - -### Responses - -| Status | Description | -|---|---| -| `200` | Result download link (standard) or compound manifest | -| `404` | Not found | -| `409` | Task is not yet completed | - -### Example request - -```bash -curl -X GET "https://api.bitbybit.dev/api/v1/tasks/{taskId}/result" \ - -H "x-api-key: YOUR_API_KEY" -``` - -Authentication: send your key in the `x-api-key` header. The full machine-readable specification is at [openapi.json](https://learn.bitbybit.dev/openapi.json). + \ No newline at end of file diff --git a/docs/api/openapi-docs/tasks-get-result-in-a-specific-format.api.mdx b/docs/api/openapi-docs/tasks-get-result-in-a-specific-format.api.mdx index 50f698d0..a560184d 100644 --- a/docs/api/openapi-docs/tasks-get-result-in-a-specific-format.api.mdx +++ b/docs/api/openapi-docs/tasks-get-result-in-a-specific-format.api.mdx @@ -5,7 +5,7 @@ description: "Returns a download URL for the requested output format (e.g. glb, sidebar_label: "Tasks - get result in a specific format" hide_title: true hide_table_of_contents: true -api: eJztV99vIjcQ/ldGfkoqsyRtXsobTbgr6jVBkFSVInQy9mTxZdf22V4uFO3/Xo13lxDgfrbqS+8lBNae+Wbm+2ZnNiyKPLDBPbsV4TGwOWcKg/TaRW0NG7ApxsqbAAKU/WAKKxTcTd/Ag/UQlwge31cYIiqwVXRVpAeliHCCWZ5BXiw4hIiO/rq/TjPGmRNelBjRk9cNM6JENmBRhMexYpxpcupEXDLOyLj2qNgg+go5C3KJpWCDDYtrR7dC9NrkjLPGKxuwqtKK1ftBUGwwvmI13zpsb3ybwwMHUwxV8engOZQYhRJRcFAobelsQNUrMSxPWT0n58FZEzCQvx/PzujjqJdtIQptHhln0pqIJtJ54VyhpaDz/XeBLm0Og7CLdygpdOetQx9149I+7pxZWFugMI31EJuEUNgifoGpDuGdL45V62VUE4+9oHODDbOifQ6wYViTWl1gBqMnpz0GEA8RPZzD0lY+e1F/r6k6dLop9Oe8z6o8bwjc3dlyu4PBOMMnUbqCzDRwsrxYsLreZcz9i6h3IMw5E0pp8ieKyU6eHkQRcB/PVRe7Nk1Q2pqESABxpkCCSmppE8M4izomaMTyhiKdkQOIlviSavh1qGaVlBgCoFlhYR0CcU5oo02+2xmIkC3Yz0GctmxndU0gL84uDvl+bUlSlVH/FclT7DVn6L31nzcmrfoChv0u5FIb7HkUSiwKhGQd0uVdZv0xfDO+Gt6Ob67fjqbTmynxuMQQRP4FTn6tSmH2XXS3U7uKQhfhMMc3rqEAhOgrGSuPagvQRHyKrKUQhjhWx3pSegTjq0Y3XsgG317H3CNiG32H8CvZuA91VysfdFxCuZ9z8gfCKLBdvAoXVZ4TgbtAn2k6IqtXKWXHJdQQ5GtRC6OE7zB3Utp3eyCMnw+Tnt5nOoCxEdYYnzvDd6F8F8r/UiiJAnFpFRuwHBMDaaQbsL5wur8679P7KPQ3zZxZ95s3U3/TpKNmnAX0q24orWhuYcsYXRj0yUK20HGxXuiYKVwdmWCsqmT6QoNcQFl5HdfJ1NDp33A9rAjM/Xz38YyU2Ohj99CWwCL92E2oSxQKPePd/PpnbzgZ95oDe+mT1qGC4WQMj7jOIH0PAyitwiJwkEJxKuUKfeTwA5x80IWSwqvTDIZ0JTHDVnE74FNFIZAZ8ChRrzDAxdlPML6e3b16Nb4cj65v384ubyajLLGAWJYCacv1S5s8uBxewWVhq4SOcUYJb0CfZxfZ2aFYdb7sOfSpSkYitMuD1zLZSiFBjgZ9w+nhZJzBrHLO+higrIqoe+1Q3u4nJ7Pb0YTD6ze3r3bncEhzOAenHRbaIOATyops8jQY9haCTjVpC+lnEokIayPhnV2A85YmJG3yrG3CQqYm3NarywHje+x6wayas4i+DDcPM/QrLfEjB/vpVE8Y1ZPWNMoKjLNCSyRJPPsltXmNUfj1J10ft0jVdDbEUpgdm2lVhB7kGLvxXBsQEBxK/aAlbJerF+XcPL+b/v21shUN9ae+K4Q2lMuq2T+aVnBPiiLSndPxtO1yNtgunttZddCin3O2tPSyu2ebDZX/zhd1TT+/r9CTuuecrYTX1DeT1pUO9L863td2wz+ZtrI6hW43/UgIXTMwVL6VKCr6xjh7xPXz2kx77Tc5/6d76zeBbvNbz2vetTXKXvNwKCW6uHPtYIihHrrt9a9Ht6yu/wY5x9bX +api: eJztV01v4zYQ/SuDOSUFLSdtLvXNTbJbo9sksJOiQBAsaHEicyORXJLyxjX034uhJMexs58teule4kgiZ97MvDccrjHKIuDoFq9leAh4J1BRyL12UVuDI5xSrL0JIEHZD6a0UsHN9A3cWw9xQeDpfU0hkgJbR1dH/lDJCAeUFRkU5VxAiOT4r/vrMEOBTnpZUSTPXtdoZEU4wijDw0ShQM1OnYwLFMjGtSeFo+hrEhjyBVUSR2uMK8e7QvTaFCiw9YojrGutsNkNgmODyRk2YuOw2/FtDvccTCnU5aeDF1BRlEpGKUBRbitnA6lBRWFxiM0dOw/OmkCB/f14dMQ/L3rZFKLU5gEF5tZEMpHXS+dKnUteP3wXeNN6Pwg7f0c5h+68deSjbl3ah601c2tLkqa1HmKbEA5bxi8w1SO88eVL1Xoe1ZWnQdCFoZZZ0T4F2DKsTa0uKYPzR6c9BZD3kTwcw8LWPntWf6+5Ory6LfTnvM/qomgJ3O/ZcLuHgQLpUVauZDMtnKwo59g024y5fRb1FoQ7gVIpzf5kebWVp3tZBtrFc9bHrk0blLYmIZLAnCmJobJausSgwKhjgsYsbynSG9mDaJkvqYZfh2pW5zmFAGSWVFpHwJyT2mhTbHcGJmQH9nMQpx3bsWkY5MnRyT7fLyxLqjbqvyJ5ir0RSN5b/3ljuVVfwLDfZb7QhgaepJLzkiBZh7R5m1l/jN9MzsbXk8uLt+fT6eWUeVxRCLL4Aie/1pU0uy763aldRanLsJ/jS9dSAEL0dR5rT2oD0ER6jNhRiEKcqJd6UvoEk7NWN17mLb6djrlDxC76HuFXsnEX6rZWPui4gGo35+wPpFFg+3gVzeuiYAL3gT7R9JytnqWUvSyhliBfi1oaJX2PuZfSrts9Yfy8n/R0nukAxkZYUXzqDN+F8l0o/0uhJArEhVU4woISA3mkG+FQOj1cHg/5PArDdTtnNsP2ZBqu23Q0KDCQX/ZDac1zCy5idGE0ZAvZXMf5aq5jpmj5wgRjVZ2nBx7kAuW113GVTI2d/o1W45rB3N5tf56xElt9bC/aEFiml/2EuiCpyKPo59c/B+OryaBdsJO+3DpSML6awAOtMkjPYQSVVVQGAblUgku5JB8F/AAHH3SpcunVYQZj3pKYYeu4GfC5ohDYDHjKSS8pwMnRTzC5mN28ejU5nZxfXL+dnV5enWeJBcyyFEhXrl+65MHp+AxOS1sndCiQE96CPs5OsuN9sepiMXDkU5VMTtBdHrzOk60UEhRkyLecHl9NMpjVzlkfA1R1GfWgG8q7+8nB7Pr8SsDrN9evtudwSHO4AKcdldoQ0CPlNdsUaTAczCWvatMW0msWiQwrk8M7OwfnLU9I2hRZ14RlnppwV68+Byh22PWMWY3ASL4Kl/cz8kud00cWDtOqgTRqkFvTKiugwFLnxJJ48stq85qi9KtPun7ZIlfT2RArabZspqsiDKCg2I/n2oCE4CjX9zqHzeXqWTnXT2fTv3+t7ETD/WnoSqkN57Ju7x9tK7hlRTHpmGepHaDA0ebiuZlVRx36O4ELy4fdLa7XXP4bXzYNv35fk2d13wlcSq+5byatKx34f/VyX9sO/2DayeoQ+rvpR0Lom4Hh8i1lWfMTCnyg1dO1me+13+T8n95bvwl0l9/mrhF9W+PstR/HeU4ubm3bG2K4h256/evza2yavwE+AdbY sidebar_class_name: "get api-method" info_path: api/open/bitbybit-cad-cloud-api custom_edit_url: null @@ -66,34 +66,5 @@ Returns a download URL for the requested output format (e.g. glb, step, stpz). -{/* static-reference:generated */} -## Reference - -`GET /api/v1/tasks/{taskId}/result/{format}` - -Returns a download URL for the requested output format (e.g. glb, step, stpz). - -### Parameters - -| Parameter | In | Type | Required | Description | -|---|---|---|---|---| -| `taskId` | path | string | yes | Task ID | -| `format` | path | string | yes | Result format (e.g. glb, step, stpz, metadata, decomposed-mesh) | - -### Responses - -| Status | Description | -|---|---| -| `200` | Result download link | -| `404` | Not found | -| `409` | Task is not yet completed | - -### Example request - -```bash -curl -X GET "https://api.bitbybit.dev/api/v1/tasks/{taskId}/result/{format}" \ - -H "x-api-key: YOUR_API_KEY" -``` - -Authentication: send your key in the `x-api-key` header. The full machine-readable specification is at [openapi.json](https://learn.bitbybit.dev/openapi.json). + \ No newline at end of file diff --git a/docs/api/openapi-docs/tasks-get-task-status.api.mdx b/docs/api/openapi-docs/tasks-get-task-status.api.mdx index 0a2bbd88..6ecfd7d8 100644 --- a/docs/api/openapi-docs/tasks-get-task-status.api.mdx +++ b/docs/api/openapi-docs/tasks-get-task-status.api.mdx @@ -5,7 +5,7 @@ description: "Returns the current status and metadata of a task." sidebar_label: "Tasks - get task status" hide_title: true hide_table_of_contents: true -api: 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 +api: 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 sidebar_class_name: "get api-method" info_path: api/open/bitbybit-cad-cloud-api custom_edit_url: null @@ -66,32 +66,5 @@ Returns the current status and metadata of a task. -{/* static-reference:generated */} -## Reference - -`GET /api/v1/tasks/{taskId}` - -Returns the current status and metadata of a task. - -### Parameters - -| Parameter | In | Type | Required | Description | -|---|---|---|---|---| -| `taskId` | path | string | yes | Task ID | - -### Responses - -| Status | Description | -|---|---| -| `200` | Task status | -| `404` | Not found | - -### Example request - -```bash -curl -X GET "https://api.bitbybit.dev/api/v1/tasks/{taskId}" \ - -H "x-api-key: YOUR_API_KEY" -``` - -Authentication: send your key in the `x-api-key` header. The full machine-readable specification is at [openapi.json](https://learn.bitbybit.dev/openapi.json). + \ No newline at end of file diff --git a/docs/api/openapi-docs/tasks-list-tasks.api.mdx b/docs/api/openapi-docs/tasks-list-tasks.api.mdx index df3c40b8..ad5f02fc 100644 --- a/docs/api/openapi-docs/tasks-list-tasks.api.mdx +++ b/docs/api/openapi-docs/tasks-list-tasks.api.mdx @@ -5,7 +5,7 @@ description: "Returns a paginated list of your tasks, newest first, each with it sidebar_label: "Tasks - list tasks" hide_title: true hide_table_of_contents: true -api: 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 +api: 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 sidebar_class_name: "get api-method" info_path: api/open/bitbybit-cad-cloud-api custom_edit_url: null @@ -66,34 +66,5 @@ Returns a paginated list of your tasks, newest first, each with its id, kind, st -{/* static-reference:generated */} -## Reference - -`GET /api/v1/tasks` - -Returns a paginated list of your tasks, newest first, each with its id, kind, status, creation time and result link when finished. Filter by status to poll only what is still running, or by kind to separate model generation, STEP conversion, pipelines and compound runs. This is the endpoint to build a job dashboard on rather than polling every task id individually. - -### Parameters - -| Parameter | In | Type | Required | Description | -|---|---|---|---|---| -| `page` | query | integer | no | 1-based page number. Defaults to the first page. | -| `limit` | query | integer | no | How many tasks to return per page. | -| `status` | query | `waiting` \| `queued` \| `processing` \| `completed` \| `failed` \| `cancelled` \| `expired` | no | Return only tasks in this state. waiting and queued are not started yet, processing is running, completed has a downloadable result, failed carries an error, cancelled was stopped by you, and expired means the result has been cleaned up. | -| `kind` | query | `cad` \| `model` \| `convert-simple` \| `convert-advanced` \| `pipeline` \| `compound` | no | Return only tasks of this kind: cad for a single operation, model for a registered parametric model, convert-simple and convert-advanced for STEP conversions, pipeline for a chained run, compound for a parallel run. | - -### Responses - -| Status | Description | -|---|---| -| `200` | Task list | - -### Example request - -```bash -curl -X GET "https://api.bitbybit.dev/api/v1/tasks" \ - -H "x-api-key: YOUR_API_KEY" -``` - -Authentication: send your key in the `x-api-key` header. The full machine-readable specification is at [openapi.json](https://learn.bitbybit.dev/openapi.json). + \ No newline at end of file diff --git a/docs/api/openapi-docs/tasks-retry-a-failed-or-cancelled-task.api.mdx b/docs/api/openapi-docs/tasks-retry-a-failed-or-cancelled-task.api.mdx index 12b38383..b7bc7d86 100644 --- a/docs/api/openapi-docs/tasks-retry-a-failed-or-cancelled-task.api.mdx +++ b/docs/api/openapi-docs/tasks-retry-a-failed-or-cancelled-task.api.mdx @@ -5,7 +5,7 @@ description: "Re-queues a failed or cancelled task with the same parameters." sidebar_label: "Tasks - retry a failed or cancelled task" hide_title: true hide_table_of_contents: true -api: eJztV99vIjcQ/ldGfrmkWiCX5qW80STXQ70mCEhVKUInYw/gY9fe+AcJQvu/V2PvAgHSu1OlvvSeYHfH429mvm883jDP5451H9mYu6Vjk4xJdMKq0iujWZcNsfUUMKADDjOucpRgLAiuBeb04LlbwrPyC/ALBMcLhJJbXqBH69osY7sn1n3cMM0LZF1Gy/qSZUzRJiX3C5Yxi09BWZSs623AjDmxwIKz7ob5dUmrnLdKz1nGZsYW3LMuC0FJVh2Cpligf8OqCTl1pdEOHfm5vLiknxPWto6TMAmjPWpPlrwscyU4WXa+ODLfHMMy0y8oPMVqTYnWq7SZWe7ZTI3Jkevk3fkUIgHn/htc1ek6kYnXoTxo9RQwFUVJ1F7NFFpoQXAIfqEceAOlyXOYGQvOcx8ccC3BorcKVwgWXci9O5XjZH4KRB0S22bwNaq+Vl7xPMGqNz3j+TNfO3iX1ryDUBoNwmLM9fluvwebfz3uIebcqxXCw/DTqxD3twyl5B4pNHzhRZmTvw4vVWf1vkN2rrNJea5YVe2z8XFH1zoH++AmGeNSKkLC88Fe2WY8d3iM1AerUcLzAjVwuO7d1OVywIXA0qNsw4DwR0E121BU3nKxhNKauUUXxeWVj2EQha8pdyiHsYBHEZglq8n2fXg/jscDuLy4hEZHDfBD0DHd3K21IIQCnUuF2ofYq22HtS9WVYTz6uLqWJV3xsPMBP2fCTKGX2UMrTX2686Ekfh1Yv7BxUJpbFnkkk9zhOgd4uJ9Hv7Z+9S/6Y3793efb4fD+yHxv0Dn+PwbNvkYCq4Pt2hWx+boucrdcY7vy8QCcN4G4YNFuQWoPb54VrMInU/t55DM8RP0b5LYLBd10V/hPeRiHX2D8PsIOTqEqnTqVMrodBAVhzmn/WKXM028EqdhPld6vg10R9Rb8noTU3ZaRYkg34uaa8ltgxn1CnNT4uG2R8L45Y3jSjnQxoMiJVLvXsdAqVvgD7380Mv/Ui+RAn5hJE2UxkUK0mD51inficKhsxztqplPA40bbOF96bodWteeKj9dT5VvS1wdUWlgjQwiPtCw6VAEq/w6uuqV6ndc9wJBeJzsfx6RAJMs9o22vOXxZTMdL5BLtCxrZue/Wr1Bv5UMDrImTIkSeoM+LHHdhvjsulAYibnLQHCZUQVXaH0GP8HZs8ql4Faet6FHSyIhTPBx9mgKCY7cgEWBaoUOri5+hv7d6OHDh/51//Zu/Hl0fT+4bcfiE7liIHWVfq2TF+ec69yEiI5ljBKeQL9vX7UvjjWq5otWiTZyVYvtrcIqEX3FkGCOGm2icm/Qb8MolKWx3kERcq9aiehggi+Dh7PR+HaQwW+fxh8ykChMURqHkpS/OM+gVCXmSiPgC4pAPjOYqRxbU05WKW0uviZtpFHni5nujTvtuvdyEXtvXa8mByw7YNcrZlUZ82gLdz8boV0pgW8YdqJVi2vZEkYnQdFAmiuBpITdviQyq9DzSPK3tz7tkapJKiq43vMZb4nQSmfOP1wJD+u52Z1J//5KWauE+lCnzLnSlLyQ7glJ8Y8kIWLZezKPN9uMdbdTfBL+JGMLahPdR7bZUJEfbF5V9PopoCUNTzK24lZRU4yKlsrRf3m6ae3HeDasxXMOzWX0DdyN5DUVacXzQE8sY0tc7+7J1aTKmj5AQNLHNE7vLTs67KnpbHvi4H40ZlX1N/vyj74= +api: eJztV99vIjcQ/ldGfrmkWiCX5qW80STXQ70mCEhVKUInYw/gY9fe+AcJQvu/V2PvAgHSu1OlvvSeYHfH429mvm883jDP5451H9mYu6Vjk4xJdMKq0iujWZcNsfUUMKADDjOucpRgLAiuBeb04LlbwrPyC/ALBMcLhJJbXqBH69osY7sn1n3cMM0LZF1Gy/qSZUzRJiX3C5Yxi09BWZSs623AjDmxwIKz7ob5dUmrnLdKz1nGZsYW3LMuC0FJVh2Cpligf8OqCTl1pdEOHfm5vLiknxPWto6TMAmjPWpPlrwscyU4WXa+ODLfHMMy0y8oPMVqTYnWq7SZWe7ZTI3Jkevk3fkUIgHn/htc1ek6kYnXoTxo9RQwFUVJ1F7NFFpoQXAIfqEceAOlyXOYGQvOcx8ccC3BorcKVwgWXci9O5XjZH4KRB0S22bwNaq+Vl7xPMGqNz3j+TNfO3iX1ryDUBoNwmLM9fluvwebfz3uIebcqxXCw/DTqxD3twyl5B4pNHzhRZmTvw4vVWf1vkN2rrNJea5YVe2z8XFH1zoH++AmGeNSKkLC88Fe2WY8d3iM1AerUcLzAjVwuO7d1OVywIXA0qNsw4DwR0E121BU3nKxhNKauUUXxeWVj2EQha8pdyiHsYBHEZglq8n2fXg/jscDuLy4hEZHDfBD0DHd3K21IIQCnUuF2ofYq22HtS9WVYTz6uLqWJV3xsPMBP2fCTKGX2UMrTX2686Ekfh1Yv7BxUJpbFnkkk9zhOgd4uJ9Hv7Z+9S/6Y3793efb4fD+yHxv0Dn+PwbNvkYCq4Pt2hWx+boucrdcY7vy8QCcN4G4YNFuQWoPb54VrMInU/t55DM8RP0b5LYLBd10V/hPeRiHX2D8PsIOTqEqnTqVMrodBAVhzmn/WKXM028EqdhPld6vg10R9Rb8noTU3ZaRYkg34uaa8ltgxn1CnNT4uG2R8L45Y3jSjnQxoMiJVLvXsdAqVvgD7380Mv/Ui+RAn5hJE2UxkUK0mD51inficKhsxztqplPA40bbOF96bodWteeKj9dT5VvS1wdUWlgjQwiPtCw6VAEq/w6uuqV6ndc9wJBeJzsfx6RAJMs9o22vOXxZTMdL5BLtCxrZue/Wr1Bv5UMDrImTIkSeoM+LHHdhvjsulAYibnLQHCZUQVXaH0GP8HZs8ql4Faet6FHSyIhTPBx9mgKCY7cgEWBaoUOri5+hv7d6OHDh/51//Zu/Hl0fT+4bcfiE7liIHWVfq2TF+ec69yEiI5ljBKeQL9vX7XfH2tUzRetEm3kqhbbW4VVIvqKIcEcNdpE5d6g34ZRKEtjvYMi5F61EtHBBF8GD2ej8e0gg98+jT9kIFGYojQOJSl/cZ5BqUrMlUbAFxSBfGYwUzm2ppysUtpcfE3aSKPOFzPdG3fade/lIvbeul5NDlh2wK5XzKoy5tEW7n42QrtSAt8w7ESrFteyJYxOgqKBNFcCSQm7fUlkVqHnkeRvb33aI1WTVFRwvecz3hKhlc6cf7gSHtZzszuT/v2VslYJ9aFOmXOlKXkh3ROS4h9JQsQyIlZUPctYdzvFJ+FPMragNtF9ZJsNFfnB5lVFr58CWtLwJGMrbhU1xahoqRz9l6eb1n6MZ8NaPOfQXEbfwN1IXlORVjwP9MQytsT17p5cTaqs6QMEJH1M4/TesqPDnprOticO7kdjVlV/A/9ej78= sidebar_class_name: "post api-method" info_path: api/open/bitbybit-cad-cloud-api custom_edit_url: null @@ -66,33 +66,5 @@ Re-queues a failed or cancelled task with the same parameters. -{/* static-reference:generated */} -## Reference - -`POST /api/v1/tasks/{taskId}/retry` - -Re-queues a failed or cancelled task with the same parameters. - -### Parameters - -| Parameter | In | Type | Required | Description | -|---|---|---|---|---| -| `taskId` | path | string | yes | Task ID | - -### Responses - -| Status | Description | -|---|---| -| `202` | Task re-queued | -| `404` | Not found | -| `409` | Task is not in a retryable state | - -### Example request - -```bash -curl -X POST "https://api.bitbybit.dev/api/v1/tasks/{taskId}/retry" \ - -H "x-api-key: YOUR_API_KEY" -``` - -Authentication: send your key in the `x-api-key` header. The full machine-readable specification is at [openapi.json](https://learn.bitbybit.dev/openapi.json). + \ No newline at end of file diff --git a/docs/blog/2026-10-01-bitbybit-mcp-ai-ready-jet-engine.mdx b/docs/blog/2026-10-01-bitbybit-mcp-ai-ready-jet-engine.mdx new file mode 100644 index 00000000..caa6698b --- /dev/null +++ b/docs/blog/2026-10-01-bitbybit-mcp-ai-ready-jet-engine.mdx @@ -0,0 +1,227 @@ +--- +slug: bitbybit-mcp-ai-ready-jet-engine +title: "Making Bitbybit AI Ready: Our MCP Servers, and a Jet Engine Built With Them" +authors: [ubarevicius] +tags: [ai, mcp, bitbybit, cad, assembly, babylonjs] +description: "Bitbybit now runs its own MCP servers, so AI coding agents look up the exact API instead of guessing it and can run CAD operations on request. What that means for Bitbybit users, shown on a turbofan engine with 130 parts placed 4,853 times, built by an AI agent and now a multi-file project in our TypeScript editor." +image: /img/blog/bitbybit-mcp-jet-engine/hero.webp +--- + +import ImageGallery from '@site/src/components/ImageGallery'; + +Exploded view of a two-spool turbofan engine built with Bitbybit by an AI coding agent, with the upper casing lifted and see-through + +More and more of the code that uses Bitbybit is not typed by a person. It is written by an AI coding agent, inside an editor or a terminal, while a person describes what they want and judges what comes back. We think this is where 3D development is heading, and we want Bitbybit to be the CAD library that agents get right. That is why Bitbybit now runs its own **MCP servers**: one that teaches any agent the exact Bitbybit API, and one that lets an agent run real CAD operations for you. + +To show what that looks like in practice, we asked an agent to build something far beyond a demo cube: a two-spool turbofan engine with **130 unique parts placed 4,853 times**, bolted flanges, blades seated in slotted disks, a casing that opens, an exploded view and a welded transport stand. This post explains what MCP is, the use cases we care about most, what they mean for you, and how the engine was made. + + + +## Watch It Come Together + +Here is the finished engine in our TypeScript editor: it starts exploded in empty space, assembles itself, takes its place on the stand with its labels, then opens up for a closer look at the fan, the compressor, the combustor, the turbines and the stand. + +
+ +
+ +## Why an agent needs more than its memory + +A language model learns libraries from whatever it read during training. For a small, stable library that works. For Bitbybit it does not: the API has close to two thousand functions across three CAD kernels, it changes with every release, and many functions take one argument object with a dozen named fields and defaults. An agent that writes Bitbybit code from memory produces names that sound right and do not exist, or fields that existed two versions ago. The code looks plausible, it fails to compile, and you lose the time you hoped to save. + +The fix is not a bigger model. The fix is giving the agent a way to **look things up** at the moment it needs them, the same way a person opens the documentation. + +## What MCP is, in one paragraph + +The [Model Context Protocol](https://modelcontextprotocol.io) is an open standard for connecting AI assistants to tools and data. A server publishes a set of tools, the assistant discovers them and calls them while it works, and the answers flow back into its reasoning. Claude Code, Codex, Cursor, VS Code, Gemini CLI, Windsurf, Zed, the JetBrains IDEs, claude.ai and ChatGPT all speak it. One server, written once, works in all of them. + +## Our two servers + +| | Bitbybit CAD MCP | Bitbybit CAD Cloud MCP | +|---|---|---| +| What it gives the agent | knowledge: every function, parameter, default, return type and example | hands: it runs geometry on CAD Cloud and returns files | +| Cost | free, no account | a [CAD Cloud plan](https://bitbybit.dev/cad-cloud) and an API key | +| Address | `https://mcp.bitbybit.dev/mcp`, or locally `npx -y @bitbybit-dev/mcp` | `https://api.bitbybit.dev/mcp` with your key | +| Docs | [Bitbybit CAD MCP](/learn/using-ai-with-bitbybit/mcp/bitbybit-mcp) | [Bitbybit CAD Cloud MCP](/learn/using-ai-with-bitbybit/mcp/cad-cloud-mcp) | + +Connecting the free one to Claude Code is a single line: + +```bash +claude mcp add --transport http bitbybit https://mcp.bitbybit.dev/mcp +``` + +Every other host is covered on the [MCP page](/learn/using-ai-with-bitbybit/mcp/bitbybit-mcp), most of them with a one-click install. + +## The use cases that matter most + +### 1. Code that compiles the first time + +This is the everyday one. Before an agent writes a Bitbybit call, it asks the server: `search_api` finds the function from a few words ("box with rounded edges"), `describe` returns its exact signature with every field, default and range, and `get_examples` returns calls that are known to work. The answers are **version exact**: the local server reads the version installed in your project, so an agent working on a project pinned to an older release is not handed functions from a newer one. A half-remembered name comes back with the nearest real ones, so a near miss still lands. + +### 2. Learning the API by asking + +You do not need an agent to write code for you to benefit. Ask it "how do I fillet only the vertical edges of this solid?" or "which kernel should I use for a fast boolean on a mesh?" and it answers from the same index we publish with every release, not from a blog post it half remembers. For people new to Bitbybit, this turns the API from something to study into something to talk to. + +### 3. Honest advice about where geometry should run + +Bitbybit geometry can run in your users' browsers, on your own Node servers, or on CAD Cloud. The server carries our [integration guide](/learn/using-ai-with-bitbybit/agentic-cad) and serves it to agents verbatim through `get_guide`, and every function it describes carries a **tier**: `oss` (in the free MIT packages, runs anywhere), `platform-pro` (available in the bitbybit.dev editors on Silver and Gold plans) or `cloud-pro` (runs only on CAD Cloud). An agent that reads the tier never sends you to a paid service for something the free packages already do. We wrote it that way on purpose, because agents repeat what they are told. + +### 4. Answers about real geometry, without writing code + +A language model cannot measure a part by looking at it, and it will happily guess a number anyway. With the CAD Cloud server it does not have to. "How heavy is this bracket in aluminium?" becomes an upload, a pipeline that loads the STEP file and measures its volume, and a multiplication. "Will it fit in a 60 by 40 by 20 box?", "where is the center of mass?", "convert this STEP to glTF for my web page", "flatten this sheet-metal part": each becomes one request, computed by the same kernels that run in our editors, and returned as a number or a file link. + +### 5. Automation and batches + +Twenty variants of a parametric model as STL, a folder of STEP files converted for the web, a measurement run over a whole catalogue: an agent with the CAD Cloud server chains operations into one pipeline per request, so the heavy lifting happens next to the kernels and only the results come back. This is the path for work that is too big or too repetitive to do by hand, and for backends such as edge functions that cannot host a CAD kernel themselves. + +### 6. Scripts for the Bitbybit editors + +The same server describes the `platform-pro` members that exist only inside our editors, so an agent can write TypeScript for the Monaco editor at bitbybit.dev with the full API, including the parts you will not find on npm. The jet engine below ended up exactly there. + +## What this means for you + +- **If you write code with Bitbybit**, connect the free server once and let your agent look things up. You spend your time on the design, not on correcting invented function names. +- **If you script in our editors**, an agent can now draft multi-file projects for you, and the editors run them as they are. +- **If you scaffold an app** with `npm init @bitbybit-dev/app`, it already comes wired for agents: an `AGENTS.md` that tells the agent how to work, the MCP server configured for Claude Code, Cursor and VS Code, and a smoke test the agent can iterate against. See [create-app](/learn/npm-packages/create-app). +- **If you do not write code at all**, the CAD Cloud server lets an assistant answer questions about your parts and convert your files, with nothing to install but a connector. +- **If you run a company** that needs its own operations, we build and host private algorithm namespaces on the same infrastructure, so your agents can call your geometry the same way they call ours. [Write to us](https://bitbybit.dev/contact). + +## The example: a turbofan engine, built by an agent + +We wanted an example that would break a careless approach. A jet engine is a good test: thousands of blades that must sit in their slots, flanges that must line up bolt for bolt, a casing that splits in two, two spools turning at different speeds, and every part named and placed so the assembly exports as a proper STEP file. + +The engine was built by Claude Opus 5.5, Anthropic's model, working as a coding agent in Claude Code, in a project scaffolded with `npm init @bitbybit-dev/app`, on our three.js template, with the Bitbybit CAD MCP configured from the first minute. A person directed the work, as you would direct a colleague: "make the blades smoother up close", "the fillets on the stand's triangular plates are not symmetric", "the front A-frame does not touch the sides of the base". The agent wrote and corrected every line. + + + + + +What it contains: + +- a fan with wide-chord swept blades on dovetail roots in a slotted disk, a spinner held by a ring of screws, and twice as many outlet guide vanes as fan blades; +- booster and high-pressure compressor stages with blades in grooved drums, stators split into halves, and variable stator levers on unison rings; +- a combustor with fuel nozzles, a manifold ring and drilled liner tiles; +- high- and low-pressure turbines with fir-tree blades and clearance-control pipes clipped to the case; +- shafts, two bearings, an accessory gearbox with its pumps, and mounts; +- **360 bolt sets** (bolt, washer and nut defined once and placed by reference) on every flanged joint and split line; +- a welded transport stand on four swivel casters, sized from the fan so the engine always clears the frame. + + + +Every blade, vane and bolt is **one part placed many times**, not a copy. That is what keeps an assembly of this size light: 130 unique shapes, 4,853 placements, 3,060 of them blades and vanes. The same structure goes into the exports: the STEP file holds one product per unique part with every placement as an instance, so it opens in your CAD tool as an assembly with names and colours, not as a soup of solids. + + + +### How an agent checks geometry it cannot see + +The most interesting part of the project was not writing the parts. It was **verifying** them. An agent cannot look at a blade root and notice that it bites into its groove, so we did not let it rely on looking. The project has a smoke test that builds the whole engine headlessly on the same OpenCascade kernel and asks the kernel the questions a reviewer would ask: + +- does every part have real volume? +- do **103 pairs of neighbouring parts** share any volume at all, measured exactly? +- do the parts that are meant to touch, such as blade roots in slots, races on shafts and the engine on its stand, actually touch? +- does the exported STEP read back with exactly the expected number of solids, standing on the ground? + +A separate scan checks every part for self-intersection and every pair of parts for interference. Together these checks caught real mistakes that no screenshot would have shown: drum spacers built inside out, blade roots sinking 0.2 mm into their grooves, a turbine flange reaching into a nozzle groove, a guide vane whose trailing edge overhung its platform. The agent found each one in a test result, fixed the code, and ran the checks again. This loop of writing, measuring and correcting, with the kernel as the judge, is how we believe serious CAD gets built with agents. + + + +### Parametric to the last bolt + +The engine is not a fixed model. The fan blade count, the fan diameter, and the number of compressor and turbine stages are parameters, and a change rebuilds only the parts whose inputs moved. Here is the same code at three settings, seen from the same camera: + +- an 18-blade, 1,400 mm fan with six compressor and three turbine stages: 116 parts placed 3,389 times; +- the default 22-blade, 1,600 mm fan with nine and five: 130 parts placed 4,853 times; +- a 24-blade, 2,000 mm fan with ten and six: 136 parts placed 5,560 times. + +The stand resizes itself from the fan, and every bolt circle, blade row and label follows. + + + +### From a three.js app to our TypeScript editor + +The engine started as a standalone three.js app on our npm packages. Because the model code never touches a renderer, moving it into the Babylon.js editor at bitbybit.dev was a matter of rewriting the viewer and the panel: **30 of the 43 files carried over unchanged**. The result is a multi-file project of about 4,800 lines in the editor, with folders for the CAD helpers, the engine plan, the parts, the viewer and the user interface, that builds the engine in the browser in well under a minute and animates it smoothly. + + + +### Get the source + +The complete source of the engine, as a multi-file project you can open, run and change in our TypeScript editor, is available to **Gold plan** subscribers. Use it as a reference for assemblies, instancing, fasteners placed by reference, parametric rebuilds, exploded views, labels and STEP export, or hand it to your own agent as a worked example. [See the plans](https://bitbybit.dev/auth/pick-plan). + +## What the agent did, and what it did not + +We want to be precise about this, because it is easy to oversell. The agent wrote the code, looked up the API instead of guessing it, and found and fixed its own mistakes through tests. A person decided what to build, judged how it looked, and pointed at what was wrong. The engine is a detailed showcase, not a certified design: its proportions are plausible, not taken from a real engine's drawings. That division of work, a person with intent and judgement and an agent with patience and precision, is what we are building for. + +## Our ambition: Bitbybit, ready for agents + +Making a library usable by agents is not one feature. It is a way of maintaining the whole product: + +- **Every function documented for machines as well as people.** The API reference your agent reads is generated from the same source as the libraries, published with every release and addressed by exact version, never by a moving "latest". +- **Clear tiers.** Every function says where it runs and what it costs, so neither a person nor an agent is surprised. +- **Scaffolds that teach agents how to work.** New projects come with instructions for the agent, the MCP server configured, and a test it can iterate against. +- **Learning from the gaps.** The public server records which names agents reach for that do not exist (never your prompts or your code), and we use that to improve the API and its documentation. +- **One vocabulary everywhere.** The dotted API an agent learns from the free server is the same one it runs on CAD Cloud, the same one in our editors and the same one in the npm packages. + +We think the next generation of CAD will be designed in conversation: you describe the product, an agent writes the parametric model on proven geometry kernels, the kernels check the result, and you decide. Bitbybit's job is to make every step of that reliable. + +## Get started + +1. Connect the free server to your agent: `claude mcp add --transport http bitbybit https://mcp.bitbybit.dev/mcp`, or see the [MCP page](/learn/using-ai-with-bitbybit/mcp/bitbybit-mcp) for every other host. +2. Ask for something: "Using the bitbybit MCP, make a 10 by 20 by 5 box, fillet its edges by 1 and draw it with three.js." +3. Start a real project with `npm init @bitbybit-dev/app` and let your agent iterate against its smoke test. +4. When you want the agent to compute geometry for you rather than write code, connect the [CAD Cloud MCP](/learn/using-ai-with-bitbybit/mcp/cad-cloud-mcp). + +The [Using AI with Bitbybit](/learn/using-ai-with-bitbybit/intro) section has the details. We would love to see what you and your agents build. diff --git a/docs/blog/tags.yml b/docs/blog/tags.yml index 1e280430..336b1ee0 100644 --- a/docs/blog/tags.yml +++ b/docs/blog/tags.yml @@ -256,3 +256,8 @@ pdf: label: PDF permalink: /pdf description: PDF documents generated from a configuration for shoppers and workshops. + +mcp: + label: MCP + permalink: /mcp + description: Model Context Protocol servers that give AI coding agents the Bitbybit API and hosted CAD compute. diff --git a/docs/learn/code/common/occt/sketch/_category_.json b/docs/learn/code/common/occt/sketch/_category_.json new file mode 100644 index 00000000..c13f2628 --- /dev/null +++ b/docs/learn/code/common/occt/sketch/_category_.json @@ -0,0 +1,10 @@ +{ + "label": "Sketch", + "position": 4, + "link": { + "type": "generated-index", + "title": "Sketching Outlines", + "description": "Sketching is how most parametric parts begin: a flat outline, drawn exactly, then extruded, revolved or swept into a solid. The sketch functions draw that outline with a pen - straight lines, circular arcs, Bezier curves, rounded and beveled corners - in any plane you choose, and give back one exact wire or a face. These pages cover the pen and its commands, how a sketch sits on a frame, how to find the edges each command drew, and the two helpers that outline a wire with a width and wrap shapes in their convex hull.", + "slug": "/code/common/occt/sketch" + } +} diff --git a/docs/learn/code/common/occt/sketch/pen-sketcher.md b/docs/learn/code/common/occt/sketch/pen-sketcher.md new file mode 100644 index 00000000..c1f8b187 --- /dev/null +++ b/docs/learn/code/common/occt/sketch/pen-sketcher.md @@ -0,0 +1,124 @@ +--- +sidebar_position: 1 +title: Pen Sketcher +sidebar_label: Pen Sketcher +description: Draw exact 2D outlines in OCCT with a pen - lines, tangent arcs, sagitta and bulge arcs, Bezier curves, rounded and beveled corners - on any plane, then extrude them into solids. +tags: [code, occt, typescript] +--- + +OCCT category icon with a stylized logo representation + +# Drawing Outlines With a Pen + +`bitbybit.occt.sketch.pen` draws a flat outline the way you would describe it in words: start here, go 40 to the right, go up 10, round that corner, curve back smoothly, close. Each command draws on from where the previous one ended. The result is one exact wire, or a face when the outline closes, ready to extrude, revolve or sweep. + +Straight pieces come out as true lines and arcs as true circles, so an extruded sketch has planar and cylindrical faces that fillets, selectors and measurements treat exactly. + +## A first sketch + +```typescript +const plate = await bitbybit.occt.sketch.pen({ + commands: [ + { type: "hLine", id: "base", length: 40 }, + { type: "vLine", id: "right", length: 10 }, + { type: "filletCorner", radius: 2 }, + { type: "tangentArc", id: "nose", to: [-10, 10], relative: true }, + { type: "line", id: "top", to: [0, 20] }, + { type: "close", id: "left" }, + ], + makeFace: true, +}); + +const block = await bitbybit.occt.operations.extrude({ shape: plate, direction: [0, 5, 0] }); +bitbybit.draw.drawAnyAsync({ entity: block }); +``` + +`makeFace` turns the closed outline into a face whose normal is the frame's normal, whichever way the outline runs, so extruding along that normal always builds the solid on the same side. An outline that crosses itself is refused with a message naming the problem, as is any command that cannot be drawn. + +## The commands + +Every command is a small object with a `type`, and an optional `id` that names it in the segments report described below. Points are in the sketch's own x and y. A point is absolute unless `relative` is true, in which case it is an offset from where the pen is. + +| `type` | Fields | Draws | +|---|---|---| +| `line` | `to`, `relative` | a straight segment to a point | +| `hLine` | `length` | along the sketch's x axis; negative goes left | +| `vLine` | `length` | along the sketch's y axis; negative goes down | +| `polarLine` | `length`, `angle` | at an angle in degrees from the x axis, counterclockwise | +| `tangentLine` | `length` | straight on, in the direction the previous segment ended in | +| `threePointArc` | `through`, `to`, `relative` | a circular arc through a middle point | +| `tangentArc` | `to`, `relative` | a circular arc leaving tangent to the previous segment | +| `sagittaArc` | `to`, `sagitta`, `relative` | an arc whose middle stands `sagitta` off the chord; positive bows to the left of travel | +| `bulgeArc` | `to`, `bulge`, `relative` | the DXF way: `bulge` is the tangent of a quarter of the swept angle, positive counterclockwise | +| `quadratic` | `control`, `to`, `relative` | a quadratic Bezier curve | +| `cubic` | `control1`, `control2`, `to`, `relative` | a cubic Bezier curve | +| `close` | | a straight segment back to the start point | +| `filletCorner` | `radius` | rounds the corner between the segments before and after it | +| `chamferCorner` | `distance` | bevels that corner, cutting `distance` off each segment | + +Corner commands sit between the two segments they join. Placed after `close`, a corner command rounds or bevels the corner at the start point. Corners work between lines and circular arcs in any combination. + +In the visual editors, `bitbybit.occt.sketch.commands` has one builder per command (`line`, `hLine`, `tangentArc`, `filletCorner` and the rest); collect their outputs into a list and feed it to the pen. + +## Sketching on a plane + +A sketch lies in the plane of a frame: the frame's `direction` is the sketch's x axis, and its `normal` crossed with the direction is the sketch's y axis. Without a frame, the sketch lies on the ground, facing up, with its y axis running along -Z, which reads naturally when you look down from above. + +```typescript +const wallProfile = await bitbybit.occt.sketch.pen({ + start: [0, 0], + commands: [ + { type: "hLine", length: 30 }, + { type: "vLine", length: 20 }, + { type: "sagittaArc", to: [0, 20], sagitta: -4 }, + { type: "close" }, + ], + frame: { origin: [0, 0, 0], normal: [0, 0, 1], direction: [1, 0, 0] }, + makeFace: true, +}); +``` + +## Finding the edges a command drew + +`bitbybit.occt.sketch.penWithSegments` draws the same outline and also reports which edges each command drew, numbered as `bitbybit.occt.shapes.edge.getEdges` numbers them. Give commands an `id` to find their edges by name rather than by position, which shifts when a command is added. + +```typescript +const drawn = await bitbybit.occt.sketch.penWithSegments({ + commands: [ + { type: "hLine", id: "base", length: 40 }, + { type: "vLine", id: "side", length: 10 }, + { type: "close", id: "slope" }, + ], + makeFace: true, +}); +const slopeEdges = drawn.segments.find(segment => segment.id === "slope")?.edges; +``` + +## Outlining a wire with a width + +`bitbybit.occt.sketch.stroke` outlines a wire as if it were drawn with a pen of a given width: a slot from a path, a trace from a centre line. `cap` finishes the two ends with a flat cut, a half circle or a square end, and `join` sets how the outline goes around corners. A closed wire gives a ring. + +```typescript +const path = await bitbybit.occt.sketch.pen({ + commands: [{ type: "hLine", length: 30 }, { type: "tangentArc", to: [10, 10], relative: true }], +}); +const slot = await bitbybit.occt.sketch.stroke({ + shape: path, + width: 4, + cap: Bit.Inputs.OCCT.strokeCapEnum.round, +}); +``` + +## Wrapping shapes in a hull + +`bitbybit.occt.sketch.hull` wraps vertices, lines, circles and circular arcs in the tightest convex outline around them. It is exact: straight where it spans between shapes, following a circle where a circle bulges out. The hull of a few circles is the classic way to draw a lever, a link or a rounded plate. + +```typescript +const pivot = await bitbybit.occt.shapes.wire.createCircleWire({ radius: 8, center: [0, 0, 0], direction: [0, 1, 0] }); +const tip = await bitbybit.occt.shapes.wire.createCircleWire({ radius: 4, center: [40, 0, 0], direction: [0, 1, 0] }); +const lever = await bitbybit.occt.sketch.hull({ shapes: [pivot, tip] }); +``` diff --git a/docs/learn/runners/intro-blockly.mdx b/docs/learn/runners/intro-blockly.mdx index 741bd65d..993c68cf 100644 --- a/docs/learn/runners/intro-blockly.mdx +++ b/docs/learn/runners/intro-blockly.mdx @@ -126,7 +126,7 @@ async function changeSize(size) { window.changeSize = changeSize; function getInlineScript() { - return '{"type":"blockly","version":"1.4.0","script":"async function(e,r,t,n,s){var c,o;(c=(()=>{const r={property:\\"size\\"};e.HS.handleBlock(e.blocklyWorkspace,\\"T}wb0d1H1WU4~rHqU6Z8\\",r);try{return s.getBitbybitRunnerInputs()[r.property]}catch(e){errorHandle(e,\\"T}wb0d1H1WU4~rHqU6Z8\\")}})())||(c=1),o=await(()=>{let t={promise:(()=>{const t={entity:(()=>{const t={shape:(()=>{const t={size:c,center:(()=>{const t={x:0,y:0,z:0};e.HS.handleBlock(e.blocklyWorkspace,\\"..HOv-y|X^q[[1Ktwe5h\\",t);try{return r.point.pointXYZ(t)}catch(e){errorHandle(e,\\"..HOv-y|X^q[[1Ktwe5h\\")}})()};return async function(){return await e.HS.inputAwaiter(t,e.blocklyWorkspace,\\"NjKMI;:*GYJ2).3M?yj6\\"),e.HS.handleBlock(e.blocklyWorkspace,\\"NjKMI;:*GYJ2).3M?yj6\\",t),e.HS.startedAsyncTask(e.blocklyWorkspace,\\"NjKMI;:*GYJ2).3M?yj6\\",\\"#ddddff\\"),r.occt.shapes.solid.createCube(t).then((r=>(e.HS.finishedAsyncTask(e.blocklyWorkspace,\\"NjKMI;:*GYJ2).3M?yj6\\"),r)),(e=>{errorHandle(e.substring?e.substring(0,1e3):e,\\"NjKMI;:*GYJ2).3M?yj6\\")}))}()})(),radius:.4};return async function(){return await e.HS.inputAwaiter(t,e.blocklyWorkspace,\\"6-?FxF/TH`00-Uh|_T12\\"),e.HS.handleBlock(e.blocklyWorkspace,\\"6-?FxF/TH`00-Uh|_T12\\",t),e.HS.startedAsyncTask(e.blocklyWorkspace,\\"6-?FxF/TH`00-Uh|_T12\\",\\"#ddddff\\"),r.occt.fillets.filletEdges(t).then((r=>(e.HS.finishedAsyncTask(e.blocklyWorkspace,\\"6-?FxF/TH`00-Uh|_T12\\"),r)),(e=>{errorHandle(e.substring?e.substring(0,1e3):e,\\"6-?FxF/TH`00-Uh|_T12\\")}))}()})(),options:(()=>{const t={precision:.005,drawFaces:!0,faceColour:\\"#000099\\",drawEdges:!0,edgeColour:\\"#ffffff\\",edgeWidth:1};e.HS.handleBlock(e.blocklyWorkspace,\\"D6NqR%pIp.xzBt?@?tV4\\",t);try{return r.draw.optionsOcctShapeSimple(t)}catch(e){errorHandle(e,\\"D6NqR%pIp.xzBt?@?tV4\\")}})()};return async function(){return await e.HS.inputAwaiter(t,e.blocklyWorkspace,\\"3n^@/8zZXkRWbQFt?[(m\\"),e.HS.handleBlock(e.blocklyWorkspace,\\"3n^@/8zZXkRWbQFt?[(m\\",t),e.HS.startedAsyncTask(e.blocklyWorkspace,\\"3n^@/8zZXkRWbQFt?[(m\\",\\"#ddddff\\"),r.draw.drawAnyAsync(t).then((r=>(e.HS.finishedAsyncTask(e.blocklyWorkspace,\\"3n^@/8zZXkRWbQFt?[(m\\"),r)),(e=>{errorHandle(e.substring?e.substring(0,1e3):e,\\"3n^@/8zZXkRWbQFt?[(m\\")}))}()})()}.promise;return Array.isArray(t)&&(t=Promise.all(t)),t})(),(()=>{const r={property:\\"cubeMesh\\",value:o};e.HS.handleBlock(e.blocklyWorkspace,\\"#sP(;i?@t;x-M0rw:m)B\\",r);try{s.setBitbybitRunnerResultValue(r.property,r.value)}catch(e){errorHandle(e,\\"#sP(;i?@t;x-M0rw:m)B\\")}})()}(BitByBit,bitbybit,bitbybitRunnerResult,bitbybitRunnerInputs,Bit);"}'; + return '{"type":"blockly","version":"1.4.1","script":"async function(e,r,t,n,s){var c,o;(c=(()=>{const r={property:\\"size\\"};e.HS.handleBlock(e.blocklyWorkspace,\\"T}wb0d1H1WU4~rHqU6Z8\\",r);try{return s.getBitbybitRunnerInputs()[r.property]}catch(e){errorHandle(e,\\"T}wb0d1H1WU4~rHqU6Z8\\")}})())||(c=1),o=await(()=>{let t={promise:(()=>{const t={entity:(()=>{const t={shape:(()=>{const t={size:c,center:(()=>{const t={x:0,y:0,z:0};e.HS.handleBlock(e.blocklyWorkspace,\\"..HOv-y|X^q[[1Ktwe5h\\",t);try{return r.point.pointXYZ(t)}catch(e){errorHandle(e,\\"..HOv-y|X^q[[1Ktwe5h\\")}})()};return async function(){return await e.HS.inputAwaiter(t,e.blocklyWorkspace,\\"NjKMI;:*GYJ2).3M?yj6\\"),e.HS.handleBlock(e.blocklyWorkspace,\\"NjKMI;:*GYJ2).3M?yj6\\",t),e.HS.startedAsyncTask(e.blocklyWorkspace,\\"NjKMI;:*GYJ2).3M?yj6\\",\\"#ddddff\\"),r.occt.shapes.solid.createCube(t).then((r=>(e.HS.finishedAsyncTask(e.blocklyWorkspace,\\"NjKMI;:*GYJ2).3M?yj6\\"),r)),(e=>{errorHandle(e.substring?e.substring(0,1e3):e,\\"NjKMI;:*GYJ2).3M?yj6\\")}))}()})(),radius:.4};return async function(){return await e.HS.inputAwaiter(t,e.blocklyWorkspace,\\"6-?FxF/TH`00-Uh|_T12\\"),e.HS.handleBlock(e.blocklyWorkspace,\\"6-?FxF/TH`00-Uh|_T12\\",t),e.HS.startedAsyncTask(e.blocklyWorkspace,\\"6-?FxF/TH`00-Uh|_T12\\",\\"#ddddff\\"),r.occt.fillets.filletEdges(t).then((r=>(e.HS.finishedAsyncTask(e.blocklyWorkspace,\\"6-?FxF/TH`00-Uh|_T12\\"),r)),(e=>{errorHandle(e.substring?e.substring(0,1e3):e,\\"6-?FxF/TH`00-Uh|_T12\\")}))}()})(),options:(()=>{const t={precision:.005,drawFaces:!0,faceColour:\\"#000099\\",drawEdges:!0,edgeColour:\\"#ffffff\\",edgeWidth:1};e.HS.handleBlock(e.blocklyWorkspace,\\"D6NqR%pIp.xzBt?@?tV4\\",t);try{return r.draw.optionsOcctShapeSimple(t)}catch(e){errorHandle(e,\\"D6NqR%pIp.xzBt?@?tV4\\")}})()};return async function(){return await e.HS.inputAwaiter(t,e.blocklyWorkspace,\\"3n^@/8zZXkRWbQFt?[(m\\"),e.HS.handleBlock(e.blocklyWorkspace,\\"3n^@/8zZXkRWbQFt?[(m\\",t),e.HS.startedAsyncTask(e.blocklyWorkspace,\\"3n^@/8zZXkRWbQFt?[(m\\",\\"#ddddff\\"),r.draw.drawAnyAsync(t).then((r=>(e.HS.finishedAsyncTask(e.blocklyWorkspace,\\"3n^@/8zZXkRWbQFt?[(m\\"),r)),(e=>{errorHandle(e.substring?e.substring(0,1e3):e,\\"3n^@/8zZXkRWbQFt?[(m\\")}))}()})()}.promise;return Array.isArray(t)&&(t=Promise.all(t)),t})(),(()=>{const r={property:\\"cubeMesh\\",value:o};e.HS.handleBlock(e.blocklyWorkspace,\\"#sP(;i?@t;x-M0rw:m)B\\",r);try{s.setBitbybitRunnerResultValue(r.property,r.value)}catch(e){errorHandle(e,\\"#sP(;i?@t;x-M0rw:m)B\\")}})()}(BitByBit,bitbybit,bitbybitRunnerResult,bitbybitRunnerInputs,Bit);"}'; } ``` diff --git a/docs/learn/runners/intro-rete.mdx b/docs/learn/runners/intro-rete.mdx index 37b3298b..209c3a11 100644 --- a/docs/learn/runners/intro-rete.mdx +++ b/docs/learn/runners/intro-rete.mdx @@ -128,7 +128,7 @@ async function changeSize(size) { window.changeSize = changeSize; function getInlineScript() { - return '{"type":"rete","version":"1.4.0","script":"(async function (BitByBit, bitbybit, bitbybitRunnerResult, bitbybitRunnerInputs, Bit) { const dataVarIDf383aaf1893995c7 = {property: [\\"size\\"]};let inputsVarIDf383aaf1893995c7 = {};inputsVarIDf383aaf1893995c7 = {...dataVarIDf383aaf1893995c7, ...inputsVarIDf383aaf1893995c7};const resultf383aaf1893995c7 = [{result: [bitbybitRunnerInputs[inputsVarIDf383aaf1893995c7.property[0]]]}];const dataVarIDcaa28d38f452b168 = {precision: [0.01], drawFaces: [true], faceColour: [\\"#1e00ff\\"], drawEdges: [true], edgeColour: [\\"#ffffff\\"], edgeWidth: [2]};let inputsVarIDcaa28d38f452b168 = {};inputsVarIDcaa28d38f452b168 = {...dataVarIDcaa28d38f452b168, ...inputsVarIDcaa28d38f452b168};const generatedVarIDcaa28d38f452b168 = BitByBit.HS.executeBasedOnType(inputsVarIDcaa28d38f452b168, false, (data) => bitbybit.draw.optionsOcctShapeSimple(data));const resultcaa28d38f452b168 = [{result: generatedVarIDcaa28d38f452b168, transformers: []}];const dataVarIDa9c61a71827d3e38 = {size: [1], center: [[0,0,0]]};let inputsVarIDa9c61a71827d3e38 = {};inputsVarIDa9c61a71827d3e38.size = resultf383aaf1893995c7;BitByBit.HS.updateListInputs(inputsVarIDa9c61a71827d3e38);inputsVarIDa9c61a71827d3e38 = {...dataVarIDa9c61a71827d3e38, ...inputsVarIDa9c61a71827d3e38};const generatedVarIDa9c61a71827d3e38 = await BitByBit.HS.executeBasedOnTypeAsync(inputsVarIDa9c61a71827d3e38, false, (data) => bitbybit.occt.shapes.solid.createCube(data));const resulta9c61a71827d3e38 = [{result: generatedVarIDa9c61a71827d3e38, transformers: []}]; const dataVarIDcd4c1f4de5199424 = {shape: [undefined], radius: [0.4], radiusList: [undefined], indexes: [undefined]};let inputsVarIDcd4c1f4de5199424 = {};inputsVarIDcd4c1f4de5199424.shape = resulta9c61a71827d3e38;BitByBit.HS.updateListInputs(inputsVarIDcd4c1f4de5199424);inputsVarIDcd4c1f4de5199424 = {...dataVarIDcd4c1f4de5199424, ...inputsVarIDcd4c1f4de5199424};const generatedVarIDcd4c1f4de5199424 = await BitByBit.HS.executeBasedOnTypeAsync(inputsVarIDcd4c1f4de5199424, false, (data) => bitbybit.occt.fillets.filletEdges(data));const resultcd4c1f4de5199424 = [{result: generatedVarIDcd4c1f4de5199424, transformers: []}]; const dataVarIDf2f8b4cf1de9ac4c = {entity: [undefined], options: [undefined], babylonMesh: [undefined]};let inputsVarIDf2f8b4cf1de9ac4c = {};inputsVarIDf2f8b4cf1de9ac4c.options = resultcaa28d38f452b168;inputsVarIDf2f8b4cf1de9ac4c.entity = resultcd4c1f4de5199424;BitByBit.HS.updateListInputs(inputsVarIDf2f8b4cf1de9ac4c);inputsVarIDf2f8b4cf1de9ac4c = {...dataVarIDf2f8b4cf1de9ac4c, ...inputsVarIDf2f8b4cf1de9ac4c};const generatedVarIDf2f8b4cf1de9ac4c = await BitByBit.HS.executeBasedOnTypeAsync(inputsVarIDf2f8b4cf1de9ac4c, false, (data) => bitbybit.draw.drawAnyAsync(data));const resultf2f8b4cf1de9ac4c = [{result: generatedVarIDf2f8b4cf1de9ac4c, transformers: []}]; const dataVarID613de15ba24c56db = {property: [\\"cubeMesh\\"]};let inputsVarID613de15ba24c56db = {};inputsVarID613de15ba24c56db.value = resultf2f8b4cf1de9ac4c;BitByBit.HS.updateListInputs(inputsVarID613de15ba24c56db);inputsVarID613de15ba24c56db = {...dataVarID613de15ba24c56db, ...inputsVarID613de15ba24c56db};setBitbybitRunnerResultValue(inputsVarID613de15ba24c56db.property[0], inputsVarID613de15ba24c56db.value[0]); })(BitByBit, bitbybit, bitbybitRunnerResult, bitbybitRunnerInputs, Bit);"}'; + return '{"type":"rete","version":"1.4.1","script":"(async function (BitByBit, bitbybit, bitbybitRunnerResult, bitbybitRunnerInputs, Bit) { const dataVarIDf383aaf1893995c7 = {property: [\\"size\\"]};let inputsVarIDf383aaf1893995c7 = {};inputsVarIDf383aaf1893995c7 = {...dataVarIDf383aaf1893995c7, ...inputsVarIDf383aaf1893995c7};const resultf383aaf1893995c7 = [{result: [bitbybitRunnerInputs[inputsVarIDf383aaf1893995c7.property[0]]]}];const dataVarIDcaa28d38f452b168 = {precision: [0.01], drawFaces: [true], faceColour: [\\"#1e00ff\\"], drawEdges: [true], edgeColour: [\\"#ffffff\\"], edgeWidth: [2]};let inputsVarIDcaa28d38f452b168 = {};inputsVarIDcaa28d38f452b168 = {...dataVarIDcaa28d38f452b168, ...inputsVarIDcaa28d38f452b168};const generatedVarIDcaa28d38f452b168 = BitByBit.HS.executeBasedOnType(inputsVarIDcaa28d38f452b168, false, (data) => bitbybit.draw.optionsOcctShapeSimple(data));const resultcaa28d38f452b168 = [{result: generatedVarIDcaa28d38f452b168, transformers: []}];const dataVarIDa9c61a71827d3e38 = {size: [1], center: [[0,0,0]]};let inputsVarIDa9c61a71827d3e38 = {};inputsVarIDa9c61a71827d3e38.size = resultf383aaf1893995c7;BitByBit.HS.updateListInputs(inputsVarIDa9c61a71827d3e38);inputsVarIDa9c61a71827d3e38 = {...dataVarIDa9c61a71827d3e38, ...inputsVarIDa9c61a71827d3e38};const generatedVarIDa9c61a71827d3e38 = await BitByBit.HS.executeBasedOnTypeAsync(inputsVarIDa9c61a71827d3e38, false, (data) => bitbybit.occt.shapes.solid.createCube(data));const resulta9c61a71827d3e38 = [{result: generatedVarIDa9c61a71827d3e38, transformers: []}]; const dataVarIDcd4c1f4de5199424 = {shape: [undefined], radius: [0.4], radiusList: [undefined], indexes: [undefined]};let inputsVarIDcd4c1f4de5199424 = {};inputsVarIDcd4c1f4de5199424.shape = resulta9c61a71827d3e38;BitByBit.HS.updateListInputs(inputsVarIDcd4c1f4de5199424);inputsVarIDcd4c1f4de5199424 = {...dataVarIDcd4c1f4de5199424, ...inputsVarIDcd4c1f4de5199424};const generatedVarIDcd4c1f4de5199424 = await BitByBit.HS.executeBasedOnTypeAsync(inputsVarIDcd4c1f4de5199424, false, (data) => bitbybit.occt.fillets.filletEdges(data));const resultcd4c1f4de5199424 = [{result: generatedVarIDcd4c1f4de5199424, transformers: []}]; const dataVarIDf2f8b4cf1de9ac4c = {entity: [undefined], options: [undefined], babylonMesh: [undefined]};let inputsVarIDf2f8b4cf1de9ac4c = {};inputsVarIDf2f8b4cf1de9ac4c.options = resultcaa28d38f452b168;inputsVarIDf2f8b4cf1de9ac4c.entity = resultcd4c1f4de5199424;BitByBit.HS.updateListInputs(inputsVarIDf2f8b4cf1de9ac4c);inputsVarIDf2f8b4cf1de9ac4c = {...dataVarIDf2f8b4cf1de9ac4c, ...inputsVarIDf2f8b4cf1de9ac4c};const generatedVarIDf2f8b4cf1de9ac4c = await BitByBit.HS.executeBasedOnTypeAsync(inputsVarIDf2f8b4cf1de9ac4c, false, (data) => bitbybit.draw.drawAnyAsync(data));const resultf2f8b4cf1de9ac4c = [{result: generatedVarIDf2f8b4cf1de9ac4c, transformers: []}]; const dataVarID613de15ba24c56db = {property: [\\"cubeMesh\\"]};let inputsVarID613de15ba24c56db = {};inputsVarID613de15ba24c56db.value = resultf2f8b4cf1de9ac4c;BitByBit.HS.updateListInputs(inputsVarID613de15ba24c56db);inputsVarID613de15ba24c56db = {...dataVarID613de15ba24c56db, ...inputsVarID613de15ba24c56db};setBitbybitRunnerResultValue(inputsVarID613de15ba24c56db.property[0], inputsVarID613de15ba24c56db.value[0]); })(BitByBit, bitbybit, bitbybitRunnerResult, bitbybitRunnerInputs, Bit);"}'; } ``` diff --git a/docs/learn/runners/intro-typescript.mdx b/docs/learn/runners/intro-typescript.mdx index ae6e02a1..a313ffe2 100644 --- a/docs/learn/runners/intro-typescript.mdx +++ b/docs/learn/runners/intro-typescript.mdx @@ -123,7 +123,7 @@ async function changeSize(size) { window.changeSize = changeSize; function getInlineScript() { - return '{"type":"typescript","version":"1.4.0","script":"async function(t,e,i,n,s){s.mockBitbybitRunnerInputs({size:1});const a=s.getBitbybitRunnerInputs(),{occt:b}=e,u=(async()=>{const t=await b.shapes.solid.createCube({size:a.size,center:[0,0,0]}),i=await b.fillets.filletEdges({shape:t,radius:.4}),n=new s.Inputs.Draw.DrawOcctShapeSimpleOptions;n.faceColour=\\"#0000ff\\",n.edgeWidth=1,n.precision=.005;return{cubeMesh:await e.draw.drawAnyAsync({entity:i,options:n})}})();s.setBitbybitRunnerResult(u)}(BitByBit,bitbybit,bitbybitRunnerResult,bitbybitRunnerInputs,Bit);"}'; + return '{"type":"typescript","version":"1.4.1","script":"async function(t,e,i,n,s){s.mockBitbybitRunnerInputs({size:1});const a=s.getBitbybitRunnerInputs(),{occt:b}=e,u=(async()=>{const t=await b.shapes.solid.createCube({size:a.size,center:[0,0,0]}),i=await b.fillets.filletEdges({shape:t,radius:.4}),n=new s.Inputs.Draw.DrawOcctShapeSimpleOptions;n.faceColour=\\"#0000ff\\",n.edgeWidth=1,n.precision=.005;return{cubeMesh:await e.draw.drawAnyAsync({entity:i,options:n})}})();s.setBitbybitRunnerResult(u)}(BitByBit,bitbybit,bitbybitRunnerResult,bitbybitRunnerInputs,Bit);"}'; } ``` diff --git a/docs/learn/runners/table-configurator-blockly.mdx b/docs/learn/runners/table-configurator-blockly.mdx index 7ecbd4c5..5b494dc1 100644 --- a/docs/learn/runners/table-configurator-blockly.mdx +++ b/docs/learn/runners/table-configurator-blockly.mdx @@ -176,7 +176,7 @@ Below are the `index.html` and `script.js` files you would use on StackBlitz or window.changeModel = changeModel; function getInlineScript() { - return '{\"type\":\"rete\",\"version\":\"1.4.0\",\"script\":\"async function(e,t,s,r,n){let a={};a={property:[\\"width\\"],...a};const o=[{result:[r[a.property[0]]]}];let i={};i={property:[\\"length\\"],...i};const u=[{result:[r[i.property[0]]]}];let l={};l={property:[\\"height\\"],...l};const c=[{result:[r[l.property[0]]]}];let p={};p={property:[\\"thickness\\"],...p};const d=[{result:[r[p.property[0]]]}];let f={};f={precision:[.01],drawFaces:[!0],faceColour:[\\"#7984b9\\"],drawEdges:[!0],edgeColour:[\\"#ffffff\\"],edgeWidth:[1],...f};const y=[{result:e.HS.executeBasedOnType(f,!1,(e=>t.draw.optionsOcctShapeSimple(e))),transformers:[]}];let h={};h={skybox:[\\"clearSky\\"],size:[1e3],blur:[.1],environmentIntensity:[.7],...h};e.HS.executeBasedOnType(h,!1,(e=>t.babylon.scene.enableSkybox(e)));let S={};S={radius:[2],center:[[0,0,0]],direction:[[0,1,0]],...S};const H=[{result:await e.HS.executeBasedOnTypeAsync(S,!1,(e=>t.occt.shapes.face.createCircleFace(e))),transformers:[]}];let m={};m={direction:[[-100,-100,-100]],intensity:[3],diffuse:[\\"#ffffff\\"],specular:[\\"#ffffff\\"],shadowGeneratorMapSize:[1024],enableShadows:[!0],shadowDarkness:[0],...m};e.HS.executeBasedOnType(m,!1,(e=>t.babylon.scene.drawDirectionalLight(e)));const v={value1:[void 0],value2:[void 0]};let w={};w.value1=o,w.value2=[{result:[.7],transformers:[]}],e.HS.updateListInputs(w),w={...v,...w};const O=[{result:e.HS.executeBasedOnType(w,!1,(e=>t.logic.firstDefinedValueGate(e))),transformers:[]}],B={value1:[void 0],value2:[void 0]};let x={};x.value1=u,x.value2=[{result:[1.4],transformers:[]}],e.HS.updateListInputs(x),x={...B,...x};const b=[{result:e.HS.executeBasedOnType(x,!1,(e=>t.logic.firstDefinedValueGate(e))),transformers:[]}],L={value1:[void 0],value2:[void 0]};let g={};g.value1=c,g.value2=[{result:[.6],transformers:[]}],e.HS.updateListInputs(g),g={...L,...g};const I=[{result:e.HS.executeBasedOnType(g,!1,(e=>t.logic.firstDefinedValueGate(e))),transformers:[]}],T={value1:[void 0],value2:[void 0]};let A={};A.value1=d,A.value2=[{result:[.1],transformers:[]}],e.HS.updateListInputs(A),A={...T,...A};const k=[{result:e.HS.executeBasedOnType(A,!1,(e=>t.logic.firstDefinedValueGate(e))),transformers:[]}];let D={};D.first=I,D.second=k,e.HS.updateListInputs(D),D={first:[1],second:[1],operation:[\\"subtract\\"],...D};const N=[{result:e.HS.executeBasedOnType(D,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let R={};R.first=k,e.HS.updateListInputs(R),R={first:[1],second:[2],operation:[\\"divide\\"],...R};const C=[{result:e.HS.executeBasedOnType(R,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let E={};E.first=O,E.second=k,e.HS.updateListInputs(E),E={first:[1],second:[2],operation:[\\"subtract\\"],...E};const G=[{result:e.HS.executeBasedOnType(E,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let V={};V.second=k,V.first=b,e.HS.updateListInputs(V),V={first:[1],second:[2],operation:[\\"subtract\\"],...V};const z=[{result:e.HS.executeBasedOnType(V,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let F={};F.first=N,e.HS.updateListInputs(F),F={first:[1],second:[2],operation:[\\"divide\\"],...F};const M=[{result:e.HS.executeBasedOnType(F,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let W={};W.first=I,W.second=C,e.HS.updateListInputs(W),W={first:[1],second:[1],operation:[\\"subtract\\"],...W};const X=[{result:e.HS.executeBasedOnType(W,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let Y={};Y.width=G,Y.length=z,e.HS.updateListInputs(Y),Y={width:[1],length:[2],center:[[0,0,0]],direction:[[0,1,0]],...Y};const Z=[{result:await e.HS.executeBasedOnTypeAsync(Y,!1,(e=>t.occt.shapes.wire.createRectangleWire(e))),transformers:[]}];let P={};P.y=X,e.HS.updateListInputs(P),P={x:[0],y:[0],z:[0],...P};const j=[{result:e.HS.executeBasedOnType(P,!1,(e=>t.vector.vectorXYZ(e))),transformers:[]}];let q={};q.y=M,e.HS.updateListInputs(q),q={x:[0],y:[0],z:[0],...q};const J=[{result:e.HS.executeBasedOnType(q,!1,(e=>t.vector.vectorXYZ(e))),transformers:[]}],K={shape:[void 0]};let Q={};Q.shape=Z,e.HS.updateListInputs(Q),Q={...K,...Q};const U=[{result:await e.HS.executeBasedOnTypeAsync(Q,!1,(e=>t.occt.shapes.edge.getCornerPointsOfEdgesForShape(e))),transformers:[]}];let $={};$.width=k,$.length=k,$.height=N,$.center=J,e.HS.updateListInputs($),$={width:[1],length:[2],height:[3],center:[[0,0,0]],...$};const _=[{result:await e.HS.executeBasedOnTypeAsync($,!1,(e=>t.occt.shapes.solid.createBox(e))),transformers:[]}];let ee={};ee.width=O,ee.length=b,ee.height=k,ee.center=j,e.HS.updateListInputs(ee),ee={width:[1],length:[2],height:[3],center:[[0,0,0]],...ee};const te=[{result:await e.HS.executeBasedOnTypeAsync(ee,!1,(e=>t.occt.shapes.solid.createBox(e))),transformers:[]}];let se={};se.list=U,e.HS.updateListInputs(se),se={nrLevels:[1],...se};const re=[];for(let e=0;et.occt.transforms.translate(e))),transformers:[]}];let ue={};ue.listElements=[te[0],ie[0],H[0]],e.HS.updateListInputs(ue),ue={...ue};const le=[{result:[ue.listElements?ue.listElements:[]]}],ce={shapes:[void 0]};let pe={};pe.shapes=le,e.HS.updateListInputs(pe),pe={...ce,...pe};const de=[{result:await e.HS.executeBasedOnTypeAsync(pe,!1,(e=>t.occt.shapes.compound.makeCompound(e))),transformers:[]}],fe={entity:[void 0],options:[void 0],babylonMesh:[void 0]};let ye={};ye.options=y,ye.entity=de,e.HS.updateListInputs(ye),ye={...fe,...ye};const he=[{result:await e.HS.executeBasedOnTypeAsync(ye,!1,(e=>t.draw.drawAnyAsync(e))),transformers:[]}];let Se={};Se.value=he,e.HS.updateListInputs(Se),Se={property:[\\"table\\"],...Se},setBitbybitRunnerResultValue(Se.property[0],Se.value[0])}(BitByBit,bitbybit,bitbybitRunnerResult,bitbybitRunnerInputs,Bit);\"}'; + return '{\"type\":\"rete\",\"version\":\"1.4.1\",\"script\":\"async function(e,t,s,r,n){let a={};a={property:[\\"width\\"],...a};const o=[{result:[r[a.property[0]]]}];let i={};i={property:[\\"length\\"],...i};const u=[{result:[r[i.property[0]]]}];let l={};l={property:[\\"height\\"],...l};const c=[{result:[r[l.property[0]]]}];let p={};p={property:[\\"thickness\\"],...p};const d=[{result:[r[p.property[0]]]}];let f={};f={precision:[.01],drawFaces:[!0],faceColour:[\\"#7984b9\\"],drawEdges:[!0],edgeColour:[\\"#ffffff\\"],edgeWidth:[1],...f};const y=[{result:e.HS.executeBasedOnType(f,!1,(e=>t.draw.optionsOcctShapeSimple(e))),transformers:[]}];let h={};h={skybox:[\\"clearSky\\"],size:[1e3],blur:[.1],environmentIntensity:[.7],...h};e.HS.executeBasedOnType(h,!1,(e=>t.babylon.scene.enableSkybox(e)));let S={};S={radius:[2],center:[[0,0,0]],direction:[[0,1,0]],...S};const H=[{result:await e.HS.executeBasedOnTypeAsync(S,!1,(e=>t.occt.shapes.face.createCircleFace(e))),transformers:[]}];let m={};m={direction:[[-100,-100,-100]],intensity:[3],diffuse:[\\"#ffffff\\"],specular:[\\"#ffffff\\"],shadowGeneratorMapSize:[1024],enableShadows:[!0],shadowDarkness:[0],...m};e.HS.executeBasedOnType(m,!1,(e=>t.babylon.scene.drawDirectionalLight(e)));const v={value1:[void 0],value2:[void 0]};let w={};w.value1=o,w.value2=[{result:[.7],transformers:[]}],e.HS.updateListInputs(w),w={...v,...w};const O=[{result:e.HS.executeBasedOnType(w,!1,(e=>t.logic.firstDefinedValueGate(e))),transformers:[]}],B={value1:[void 0],value2:[void 0]};let x={};x.value1=u,x.value2=[{result:[1.4],transformers:[]}],e.HS.updateListInputs(x),x={...B,...x};const b=[{result:e.HS.executeBasedOnType(x,!1,(e=>t.logic.firstDefinedValueGate(e))),transformers:[]}],L={value1:[void 0],value2:[void 0]};let g={};g.value1=c,g.value2=[{result:[.6],transformers:[]}],e.HS.updateListInputs(g),g={...L,...g};const I=[{result:e.HS.executeBasedOnType(g,!1,(e=>t.logic.firstDefinedValueGate(e))),transformers:[]}],T={value1:[void 0],value2:[void 0]};let A={};A.value1=d,A.value2=[{result:[.1],transformers:[]}],e.HS.updateListInputs(A),A={...T,...A};const k=[{result:e.HS.executeBasedOnType(A,!1,(e=>t.logic.firstDefinedValueGate(e))),transformers:[]}];let D={};D.first=I,D.second=k,e.HS.updateListInputs(D),D={first:[1],second:[1],operation:[\\"subtract\\"],...D};const N=[{result:e.HS.executeBasedOnType(D,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let R={};R.first=k,e.HS.updateListInputs(R),R={first:[1],second:[2],operation:[\\"divide\\"],...R};const C=[{result:e.HS.executeBasedOnType(R,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let E={};E.first=O,E.second=k,e.HS.updateListInputs(E),E={first:[1],second:[2],operation:[\\"subtract\\"],...E};const G=[{result:e.HS.executeBasedOnType(E,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let V={};V.second=k,V.first=b,e.HS.updateListInputs(V),V={first:[1],second:[2],operation:[\\"subtract\\"],...V};const z=[{result:e.HS.executeBasedOnType(V,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let F={};F.first=N,e.HS.updateListInputs(F),F={first:[1],second:[2],operation:[\\"divide\\"],...F};const M=[{result:e.HS.executeBasedOnType(F,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let W={};W.first=I,W.second=C,e.HS.updateListInputs(W),W={first:[1],second:[1],operation:[\\"subtract\\"],...W};const X=[{result:e.HS.executeBasedOnType(W,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let Y={};Y.width=G,Y.length=z,e.HS.updateListInputs(Y),Y={width:[1],length:[2],center:[[0,0,0]],direction:[[0,1,0]],...Y};const Z=[{result:await e.HS.executeBasedOnTypeAsync(Y,!1,(e=>t.occt.shapes.wire.createRectangleWire(e))),transformers:[]}];let P={};P.y=X,e.HS.updateListInputs(P),P={x:[0],y:[0],z:[0],...P};const j=[{result:e.HS.executeBasedOnType(P,!1,(e=>t.vector.vectorXYZ(e))),transformers:[]}];let q={};q.y=M,e.HS.updateListInputs(q),q={x:[0],y:[0],z:[0],...q};const J=[{result:e.HS.executeBasedOnType(q,!1,(e=>t.vector.vectorXYZ(e))),transformers:[]}],K={shape:[void 0]};let Q={};Q.shape=Z,e.HS.updateListInputs(Q),Q={...K,...Q};const U=[{result:await e.HS.executeBasedOnTypeAsync(Q,!1,(e=>t.occt.shapes.edge.getCornerPointsOfEdgesForShape(e))),transformers:[]}];let $={};$.width=k,$.length=k,$.height=N,$.center=J,e.HS.updateListInputs($),$={width:[1],length:[2],height:[3],center:[[0,0,0]],...$};const _=[{result:await e.HS.executeBasedOnTypeAsync($,!1,(e=>t.occt.shapes.solid.createBox(e))),transformers:[]}];let ee={};ee.width=O,ee.length=b,ee.height=k,ee.center=j,e.HS.updateListInputs(ee),ee={width:[1],length:[2],height:[3],center:[[0,0,0]],...ee};const te=[{result:await e.HS.executeBasedOnTypeAsync(ee,!1,(e=>t.occt.shapes.solid.createBox(e))),transformers:[]}];let se={};se.list=U,e.HS.updateListInputs(se),se={nrLevels:[1],...se};const re=[];for(let e=0;et.occt.transforms.translate(e))),transformers:[]}];let ue={};ue.listElements=[te[0],ie[0],H[0]],e.HS.updateListInputs(ue),ue={...ue};const le=[{result:[ue.listElements?ue.listElements:[]]}],ce={shapes:[void 0]};let pe={};pe.shapes=le,e.HS.updateListInputs(pe),pe={...ce,...pe};const de=[{result:await e.HS.executeBasedOnTypeAsync(pe,!1,(e=>t.occt.shapes.compound.makeCompound(e))),transformers:[]}],fe={entity:[void 0],options:[void 0],babylonMesh:[void 0]};let ye={};ye.options=y,ye.entity=de,e.HS.updateListInputs(ye),ye={...fe,...ye};const he=[{result:await e.HS.executeBasedOnTypeAsync(ye,!1,(e=>t.draw.drawAnyAsync(e))),transformers:[]}];let Se={};Se.value=he,e.HS.updateListInputs(Se),Se={property:[\\"table\\"],...Se},setBitbybitRunnerResultValue(Se.property[0],Se.value[0])}(BitByBit,bitbybit,bitbybitRunnerResult,bitbybitRunnerInputs,Bit);\"}'; } ``` diff --git a/docs/learn/runners/table-configurator-rete.mdx b/docs/learn/runners/table-configurator-rete.mdx index 41526d35..c94321e3 100644 --- a/docs/learn/runners/table-configurator-rete.mdx +++ b/docs/learn/runners/table-configurator-rete.mdx @@ -66,7 +66,7 @@ Below are the `index.html` and `script.js` files you would use on StackBlitz or - + @@ -175,7 +175,7 @@ async function changeModel(value, name) { window.changeModel = changeModel; function getInlineScript() { - return '{"type":"rete","version":"1.4.0","script":"async function(e,t,s,r,n){let a={};a={property:[\\"width\\"],...a};const o=[{result:[r[a.property[0]]]}];let i={};i={property:[\\"length\\"],...i};const u=[{result:[r[i.property[0]]]}];let l={};l={property:[\\"height\\"],...l};const c=[{result:[r[l.property[0]]]}];let p={};p={property:[\\"thickness\\"],...p};const d=[{result:[r[p.property[0]]]}];let f={};f={precision:[.01],drawFaces:[!0],faceColour:[\\"#7984b9\\"],drawEdges:[!0],edgeColour:[\\"#ffffff\\"],edgeWidth:[1],...f};const y=[{result:e.HS.executeBasedOnType(f,!1,(e=>t.draw.optionsOcctShapeSimple(e))),transformers:[]}];let h={};h={skybox:[\\"clearSky\\"],size:[1e3],blur:[.1],environmentIntensity:[.7],...h};e.HS.executeBasedOnType(h,!1,(e=>t.babylon.scene.enableSkybox(e)));let S={};S={radius:[2],center:[[0,0,0]],direction:[[0,1,0]],...S};const H=[{result:await e.HS.executeBasedOnTypeAsync(S,!1,(e=>t.occt.shapes.face.createCircleFace(e))),transformers:[]}];let m={};m={direction:[[-100,-100,-100]],intensity:[3],diffuse:[\\"#ffffff\\"],specular:[\\"#ffffff\\"],shadowGeneratorMapSize:[1024],enableShadows:[!0],shadowDarkness:[0],...m};e.HS.executeBasedOnType(m,!1,(e=>t.babylon.scene.drawDirectionalLight(e)));const v={value1:[void 0],value2:[void 0]};let w={};w.value1=o,w.value2=[{result:[.7],transformers:[]}],e.HS.updateListInputs(w),w={...v,...w};const O=[{result:e.HS.executeBasedOnType(w,!1,(e=>t.logic.firstDefinedValueGate(e))),transformers:[]}],B={value1:[void 0],value2:[void 0]};let x={};x.value1=u,x.value2=[{result:[1.4],transformers:[]}],e.HS.updateListInputs(x),x={...B,...x};const b=[{result:e.HS.executeBasedOnType(x,!1,(e=>t.logic.firstDefinedValueGate(e))),transformers:[]}],L={value1:[void 0],value2:[void 0]};let g={};g.value1=c,g.value2=[{result:[.6],transformers:[]}],e.HS.updateListInputs(g),g={...L,...g};const I=[{result:e.HS.executeBasedOnType(g,!1,(e=>t.logic.firstDefinedValueGate(e))),transformers:[]}],T={value1:[void 0],value2:[void 0]};let A={};A.value1=d,A.value2=[{result:[.1],transformers:[]}],e.HS.updateListInputs(A),A={...T,...A};const k=[{result:e.HS.executeBasedOnType(A,!1,(e=>t.logic.firstDefinedValueGate(e))),transformers:[]}];let D={};D.first=I,D.second=k,e.HS.updateListInputs(D),D={first:[1],second:[1],operation:[\\"subtract\\"],...D};const N=[{result:e.HS.executeBasedOnType(D,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let R={};R.first=k,e.HS.updateListInputs(R),R={first:[1],second:[2],operation:[\\"divide\\"],...R};const C=[{result:e.HS.executeBasedOnType(R,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let E={};E.first=O,E.second=k,e.HS.updateListInputs(E),E={first:[1],second:[2],operation:[\\"subtract\\"],...E};const G=[{result:e.HS.executeBasedOnType(E,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let V={};V.second=k,V.first=b,e.HS.updateListInputs(V),V={first:[1],second:[2],operation:[\\"subtract\\"],...V};const z=[{result:e.HS.executeBasedOnType(V,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let F={};F.first=N,e.HS.updateListInputs(F),F={first:[1],second:[2],operation:[\\"divide\\"],...F};const M=[{result:e.HS.executeBasedOnType(F,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let W={};W.first=I,W.second=C,e.HS.updateListInputs(W),W={first:[1],second:[1],operation:[\\"subtract\\"],...W};const X=[{result:e.HS.executeBasedOnType(W,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let Y={};Y.width=G,Y.length=z,e.HS.updateListInputs(Y),Y={width:[1],length:[2],center:[[0,0,0]],direction:[[0,1,0]],...Y};const Z=[{result:await e.HS.executeBasedOnTypeAsync(Y,!1,(e=>t.occt.shapes.wire.createRectangleWire(e))),transformers:[]}];let P={};P.y=X,e.HS.updateListInputs(P),P={x:[0],y:[0],z:[0],...P};const j=[{result:e.HS.executeBasedOnType(P,!1,(e=>t.vector.vectorXYZ(e))),transformers:[]}];let q={};q.y=M,e.HS.updateListInputs(q),q={x:[0],y:[0],z:[0],...q};const J=[{result:e.HS.executeBasedOnType(q,!1,(e=>t.vector.vectorXYZ(e))),transformers:[]}],K={shape:[void 0]};let Q={};Q.shape=Z,e.HS.updateListInputs(Q),Q={...K,...Q};const U=[{result:await e.HS.executeBasedOnTypeAsync(Q,!1,(e=>t.occt.shapes.edge.getCornerPointsOfEdgesForShape(e))),transformers:[]}];let $={};$.width=k,$.length=k,$.height=N,$.center=J,e.HS.updateListInputs($),$={width:[1],length:[2],height:[3],center:[[0,0,0]],...$};const _=[{result:await e.HS.executeBasedOnTypeAsync($,!1,(e=>t.occt.shapes.solid.createBox(e))),transformers:[]}];let ee={};ee.width=O,ee.length=b,ee.height=k,ee.center=j,e.HS.updateListInputs(ee),ee={width:[1],length:[2],height:[3],center:[[0,0,0]],...ee};const te=[{result:await e.HS.executeBasedOnTypeAsync(ee,!1,(e=>t.occt.shapes.solid.createBox(e))),transformers:[]}];let se={};se.list=U,e.HS.updateListInputs(se),se={nrLevels:[1],...se};const re=[];for(let e=0;et.occt.transforms.translate(e))),transformers:[]}];let ue={};ue.listElements=[te[0],ie[0],H[0]],e.HS.updateListInputs(ue),ue={...ue};const le=[{result:[ue.listElements?ue.listElements:[]]}],ce={shapes:[void 0]};let pe={};pe.shapes=le,e.HS.updateListInputs(pe),pe={...ce,...pe};const de=[{result:await e.HS.executeBasedOnTypeAsync(pe,!1,(e=>t.occt.shapes.compound.makeCompound(e))),transformers:[]}],fe={entity:[void 0],options:[void 0],babylonMesh:[void 0]};let ye={};ye.options=y,ye.entity=de,e.HS.updateListInputs(ye),ye={...fe,...ye};const he=[{result:await e.HS.executeBasedOnTypeAsync(ye,!1,(e=>t.draw.drawAnyAsync(e))),transformers:[]}];let Se={};Se.value=he,e.HS.updateListInputs(Se),Se={property:[\\"table\\"],...Se},setBitbybitRunnerResultValue(Se.property[0],Se.value[0])}(BitByBit,bitbybit,bitbybitRunnerResult,bitbybitRunnerInputs,Bit);"}'; + return '{"type":"rete","version":"1.4.1","script":"async function(e,t,s,r,n){let a={};a={property:[\\"width\\"],...a};const o=[{result:[r[a.property[0]]]}];let i={};i={property:[\\"length\\"],...i};const u=[{result:[r[i.property[0]]]}];let l={};l={property:[\\"height\\"],...l};const c=[{result:[r[l.property[0]]]}];let p={};p={property:[\\"thickness\\"],...p};const d=[{result:[r[p.property[0]]]}];let f={};f={precision:[.01],drawFaces:[!0],faceColour:[\\"#7984b9\\"],drawEdges:[!0],edgeColour:[\\"#ffffff\\"],edgeWidth:[1],...f};const y=[{result:e.HS.executeBasedOnType(f,!1,(e=>t.draw.optionsOcctShapeSimple(e))),transformers:[]}];let h={};h={skybox:[\\"clearSky\\"],size:[1e3],blur:[.1],environmentIntensity:[.7],...h};e.HS.executeBasedOnType(h,!1,(e=>t.babylon.scene.enableSkybox(e)));let S={};S={radius:[2],center:[[0,0,0]],direction:[[0,1,0]],...S};const H=[{result:await e.HS.executeBasedOnTypeAsync(S,!1,(e=>t.occt.shapes.face.createCircleFace(e))),transformers:[]}];let m={};m={direction:[[-100,-100,-100]],intensity:[3],diffuse:[\\"#ffffff\\"],specular:[\\"#ffffff\\"],shadowGeneratorMapSize:[1024],enableShadows:[!0],shadowDarkness:[0],...m};e.HS.executeBasedOnType(m,!1,(e=>t.babylon.scene.drawDirectionalLight(e)));const v={value1:[void 0],value2:[void 0]};let w={};w.value1=o,w.value2=[{result:[.7],transformers:[]}],e.HS.updateListInputs(w),w={...v,...w};const O=[{result:e.HS.executeBasedOnType(w,!1,(e=>t.logic.firstDefinedValueGate(e))),transformers:[]}],B={value1:[void 0],value2:[void 0]};let x={};x.value1=u,x.value2=[{result:[1.4],transformers:[]}],e.HS.updateListInputs(x),x={...B,...x};const b=[{result:e.HS.executeBasedOnType(x,!1,(e=>t.logic.firstDefinedValueGate(e))),transformers:[]}],L={value1:[void 0],value2:[void 0]};let g={};g.value1=c,g.value2=[{result:[.6],transformers:[]}],e.HS.updateListInputs(g),g={...L,...g};const I=[{result:e.HS.executeBasedOnType(g,!1,(e=>t.logic.firstDefinedValueGate(e))),transformers:[]}],T={value1:[void 0],value2:[void 0]};let A={};A.value1=d,A.value2=[{result:[.1],transformers:[]}],e.HS.updateListInputs(A),A={...T,...A};const k=[{result:e.HS.executeBasedOnType(A,!1,(e=>t.logic.firstDefinedValueGate(e))),transformers:[]}];let D={};D.first=I,D.second=k,e.HS.updateListInputs(D),D={first:[1],second:[1],operation:[\\"subtract\\"],...D};const N=[{result:e.HS.executeBasedOnType(D,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let R={};R.first=k,e.HS.updateListInputs(R),R={first:[1],second:[2],operation:[\\"divide\\"],...R};const C=[{result:e.HS.executeBasedOnType(R,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let E={};E.first=O,E.second=k,e.HS.updateListInputs(E),E={first:[1],second:[2],operation:[\\"subtract\\"],...E};const G=[{result:e.HS.executeBasedOnType(E,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let V={};V.second=k,V.first=b,e.HS.updateListInputs(V),V={first:[1],second:[2],operation:[\\"subtract\\"],...V};const z=[{result:e.HS.executeBasedOnType(V,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let F={};F.first=N,e.HS.updateListInputs(F),F={first:[1],second:[2],operation:[\\"divide\\"],...F};const M=[{result:e.HS.executeBasedOnType(F,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let W={};W.first=I,W.second=C,e.HS.updateListInputs(W),W={first:[1],second:[1],operation:[\\"subtract\\"],...W};const X=[{result:e.HS.executeBasedOnType(W,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let Y={};Y.width=G,Y.length=z,e.HS.updateListInputs(Y),Y={width:[1],length:[2],center:[[0,0,0]],direction:[[0,1,0]],...Y};const Z=[{result:await e.HS.executeBasedOnTypeAsync(Y,!1,(e=>t.occt.shapes.wire.createRectangleWire(e))),transformers:[]}];let P={};P.y=X,e.HS.updateListInputs(P),P={x:[0],y:[0],z:[0],...P};const j=[{result:e.HS.executeBasedOnType(P,!1,(e=>t.vector.vectorXYZ(e))),transformers:[]}];let q={};q.y=M,e.HS.updateListInputs(q),q={x:[0],y:[0],z:[0],...q};const J=[{result:e.HS.executeBasedOnType(q,!1,(e=>t.vector.vectorXYZ(e))),transformers:[]}],K={shape:[void 0]};let Q={};Q.shape=Z,e.HS.updateListInputs(Q),Q={...K,...Q};const U=[{result:await e.HS.executeBasedOnTypeAsync(Q,!1,(e=>t.occt.shapes.edge.getCornerPointsOfEdgesForShape(e))),transformers:[]}];let $={};$.width=k,$.length=k,$.height=N,$.center=J,e.HS.updateListInputs($),$={width:[1],length:[2],height:[3],center:[[0,0,0]],...$};const _=[{result:await e.HS.executeBasedOnTypeAsync($,!1,(e=>t.occt.shapes.solid.createBox(e))),transformers:[]}];let ee={};ee.width=O,ee.length=b,ee.height=k,ee.center=j,e.HS.updateListInputs(ee),ee={width:[1],length:[2],height:[3],center:[[0,0,0]],...ee};const te=[{result:await e.HS.executeBasedOnTypeAsync(ee,!1,(e=>t.occt.shapes.solid.createBox(e))),transformers:[]}];let se={};se.list=U,e.HS.updateListInputs(se),se={nrLevels:[1],...se};const re=[];for(let e=0;et.occt.transforms.translate(e))),transformers:[]}];let ue={};ue.listElements=[te[0],ie[0],H[0]],e.HS.updateListInputs(ue),ue={...ue};const le=[{result:[ue.listElements?ue.listElements:[]]}],ce={shapes:[void 0]};let pe={};pe.shapes=le,e.HS.updateListInputs(pe),pe={...ce,...pe};const de=[{result:await e.HS.executeBasedOnTypeAsync(pe,!1,(e=>t.occt.shapes.compound.makeCompound(e))),transformers:[]}],fe={entity:[void 0],options:[void 0],babylonMesh:[void 0]};let ye={};ye.options=y,ye.entity=de,e.HS.updateListInputs(ye),ye={...fe,...ye};const he=[{result:await e.HS.executeBasedOnTypeAsync(ye,!1,(e=>t.draw.drawAnyAsync(e))),transformers:[]}];let Se={};Se.value=he,e.HS.updateListInputs(Se),Se={property:[\\"table\\"],...Se},setBitbybitRunnerResultValue(Se.property[0],Se.value[0])}(BitByBit,bitbybit,bitbybitRunnerResult,bitbybitRunnerInputs,Bit);"}'; } ``` diff --git a/docs/learn/runners/table-configurator-typescript.mdx b/docs/learn/runners/table-configurator-typescript.mdx index 3b3f1270..9c53b5c4 100644 --- a/docs/learn/runners/table-configurator-typescript.mdx +++ b/docs/learn/runners/table-configurator-typescript.mdx @@ -71,7 +71,7 @@ Below are the `index.html` and `script.js` files you would use on StackBlitz or - + @@ -181,7 +181,7 @@ Below are the `index.html` and `script.js` files you would use on StackBlitz or window.changeModel = changeModel; function getInlineScript() { - return '{"type":"rete","version":"1.4.0","script":"async function(e,t,s,r,n){let a={};a={property:[\\"width\\"],...a};const o=[{result:[r[a.property[0]]]}];let i={};i={property:[\\"length\\"],...i};const u=[{result:[r[i.property[0]]]}];let l={};l={property:[\\"height\\"],...l};const c=[{result:[r[l.property[0]]]}];let p={};p={property:[\\"thickness\\"],...p};const d=[{result:[r[p.property[0]]]}];let f={};f={precision:[.01],drawFaces:[!0],faceColour:[\\"#7984b9\\"],drawEdges:[!0],edgeColour:[\\"#ffffff\\"],edgeWidth:[1],...f};const y=[{result:e.HS.executeBasedOnType(f,!1,(e=>t.draw.optionsOcctShapeSimple(e))),transformers:[]}];let h={};h={skybox:[\\"clearSky\\"],size:[1e3],blur:[.1],environmentIntensity:[.7],...h};e.HS.executeBasedOnType(h,!1,(e=>t.babylon.scene.enableSkybox(e)));let S={};S={radius:[2],center:[[0,0,0]],direction:[[0,1,0]],...S};const H=[{result:await e.HS.executeBasedOnTypeAsync(S,!1,(e=>t.occt.shapes.face.createCircleFace(e))),transformers:[]}];let m={};m={direction:[[-100,-100,-100]],intensity:[3],diffuse:[\\"#ffffff\\"],specular:[\\"#ffffff\\"],shadowGeneratorMapSize:[1024],enableShadows:[!0],shadowDarkness:[0],...m};e.HS.executeBasedOnType(m,!1,(e=>t.babylon.scene.drawDirectionalLight(e)));const v={value1:[void 0],value2:[void 0]};let w={};w.value1=o,w.value2=[{result:[.7],transformers:[]}],e.HS.updateListInputs(w),w={...v,...w};const O=[{result:e.HS.executeBasedOnType(w,!1,(e=>t.logic.firstDefinedValueGate(e))),transformers:[]}],B={value1:[void 0],value2:[void 0]};let x={};x.value1=u,x.value2=[{result:[1.4],transformers:[]}],e.HS.updateListInputs(x),x={...B,...x};const b=[{result:e.HS.executeBasedOnType(x,!1,(e=>t.logic.firstDefinedValueGate(e))),transformers:[]}],L={value1:[void 0],value2:[void 0]};let g={};g.value1=c,g.value2=[{result:[.6],transformers:[]}],e.HS.updateListInputs(g),g={...L,...g};const I=[{result:e.HS.executeBasedOnType(g,!1,(e=>t.logic.firstDefinedValueGate(e))),transformers:[]}],T={value1:[void 0],value2:[void 0]};let A={};A.value1=d,A.value2=[{result:[.1],transformers:[]}],e.HS.updateListInputs(A),A={...T,...A};const k=[{result:e.HS.executeBasedOnType(A,!1,(e=>t.logic.firstDefinedValueGate(e))),transformers:[]}];let D={};D.first=I,D.second=k,e.HS.updateListInputs(D),D={first:[1],second:[1],operation:[\\"subtract\\"],...D};const N=[{result:e.HS.executeBasedOnType(D,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let R={};R.first=k,e.HS.updateListInputs(R),R={first:[1],second:[2],operation:[\\"divide\\"],...R};const C=[{result:e.HS.executeBasedOnType(R,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let E={};E.first=O,E.second=k,e.HS.updateListInputs(E),E={first:[1],second:[2],operation:[\\"subtract\\"],...E};const G=[{result:e.HS.executeBasedOnType(E,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let V={};V.second=k,V.first=b,e.HS.updateListInputs(V),V={first:[1],second:[2],operation:[\\"subtract\\"],...V};const z=[{result:e.HS.executeBasedOnType(V,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let F={};F.first=N,e.HS.updateListInputs(F),F={first:[1],second:[2],operation:[\\"divide\\"],...F};const M=[{result:e.HS.executeBasedOnType(F,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let W={};W.first=I,W.second=C,e.HS.updateListInputs(W),W={first:[1],second:[1],operation:[\\"subtract\\"],...W};const X=[{result:e.HS.executeBasedOnType(W,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let Y={};Y.width=G,Y.length=z,e.HS.updateListInputs(Y),Y={width:[1],length:[2],center:[[0,0,0]],direction:[[0,1,0]],...Y};const Z=[{result:await e.HS.executeBasedOnTypeAsync(Y,!1,(e=>t.occt.shapes.wire.createRectangleWire(e))),transformers:[]}];let P={};P.y=X,e.HS.updateListInputs(P),P={x:[0],y:[0],z:[0],...P};const j=[{result:e.HS.executeBasedOnType(P,!1,(e=>t.vector.vectorXYZ(e))),transformers:[]}];let q={};q.y=M,e.HS.updateListInputs(q),q={x:[0],y:[0],z:[0],...q};const J=[{result:e.HS.executeBasedOnType(q,!1,(e=>t.vector.vectorXYZ(e))),transformers:[]}],K={shape:[void 0]};let Q={};Q.shape=Z,e.HS.updateListInputs(Q),Q={...K,...Q};const U=[{result:await e.HS.executeBasedOnTypeAsync(Q,!1,(e=>t.occt.shapes.edge.getCornerPointsOfEdgesForShape(e))),transformers:[]}];let $={};$.width=k,$.length=k,$.height=N,$.center=J,e.HS.updateListInputs($),$={width:[1],length:[2],height:[3],center:[[0,0,0]],...$};const _=[{result:await e.HS.executeBasedOnTypeAsync($,!1,(e=>t.occt.shapes.solid.createBox(e))),transformers:[]}];let ee={};ee.width=O,ee.length=b,ee.height=k,ee.center=j,e.HS.updateListInputs(ee),ee={width:[1],length:[2],height:[3],center:[[0,0,0]],...ee};const te=[{result:await e.HS.executeBasedOnTypeAsync(ee,!1,(e=>t.occt.shapes.solid.createBox(e))),transformers:[]}];let se={};se.list=U,e.HS.updateListInputs(se),se={nrLevels:[1],...se};const re=[];for(let e=0;et.occt.transforms.translate(e))),transformers:[]}];let ue={};ue.listElements=[te[0],ie[0],H[0]],e.HS.updateListInputs(ue),ue={...ue};const le=[{result:[ue.listElements?ue.listElements:[]]}],ce={shapes:[void 0]};let pe={};pe.shapes=le,e.HS.updateListInputs(pe),pe={...ce,...pe};const de=[{result:await e.HS.executeBasedOnTypeAsync(pe,!1,(e=>t.occt.shapes.compound.makeCompound(e))),transformers:[]}],fe={entity:[void 0],options:[void 0],babylonMesh:[void 0]};let ye={};ye.options=y,ye.entity=de,e.HS.updateListInputs(ye),ye={...fe,...ye};const he=[{result:await e.HS.executeBasedOnTypeAsync(ye,!1,(e=>t.draw.drawAnyAsync(e))),transformers:[]}];let Se={};Se.value=he,e.HS.updateListInputs(Se),Se={property:[\\"table\\"],...Se},setBitbybitRunnerResultValue(Se.property[0],Se.value[0])}(BitByBit,bitbybit,bitbybitRunnerResult,bitbybitRunnerInputs,Bit);"}'; + return '{"type":"rete","version":"1.4.1","script":"async function(e,t,s,r,n){let a={};a={property:[\\"width\\"],...a};const o=[{result:[r[a.property[0]]]}];let i={};i={property:[\\"length\\"],...i};const u=[{result:[r[i.property[0]]]}];let l={};l={property:[\\"height\\"],...l};const c=[{result:[r[l.property[0]]]}];let p={};p={property:[\\"thickness\\"],...p};const d=[{result:[r[p.property[0]]]}];let f={};f={precision:[.01],drawFaces:[!0],faceColour:[\\"#7984b9\\"],drawEdges:[!0],edgeColour:[\\"#ffffff\\"],edgeWidth:[1],...f};const y=[{result:e.HS.executeBasedOnType(f,!1,(e=>t.draw.optionsOcctShapeSimple(e))),transformers:[]}];let h={};h={skybox:[\\"clearSky\\"],size:[1e3],blur:[.1],environmentIntensity:[.7],...h};e.HS.executeBasedOnType(h,!1,(e=>t.babylon.scene.enableSkybox(e)));let S={};S={radius:[2],center:[[0,0,0]],direction:[[0,1,0]],...S};const H=[{result:await e.HS.executeBasedOnTypeAsync(S,!1,(e=>t.occt.shapes.face.createCircleFace(e))),transformers:[]}];let m={};m={direction:[[-100,-100,-100]],intensity:[3],diffuse:[\\"#ffffff\\"],specular:[\\"#ffffff\\"],shadowGeneratorMapSize:[1024],enableShadows:[!0],shadowDarkness:[0],...m};e.HS.executeBasedOnType(m,!1,(e=>t.babylon.scene.drawDirectionalLight(e)));const v={value1:[void 0],value2:[void 0]};let w={};w.value1=o,w.value2=[{result:[.7],transformers:[]}],e.HS.updateListInputs(w),w={...v,...w};const O=[{result:e.HS.executeBasedOnType(w,!1,(e=>t.logic.firstDefinedValueGate(e))),transformers:[]}],B={value1:[void 0],value2:[void 0]};let x={};x.value1=u,x.value2=[{result:[1.4],transformers:[]}],e.HS.updateListInputs(x),x={...B,...x};const b=[{result:e.HS.executeBasedOnType(x,!1,(e=>t.logic.firstDefinedValueGate(e))),transformers:[]}],L={value1:[void 0],value2:[void 0]};let g={};g.value1=c,g.value2=[{result:[.6],transformers:[]}],e.HS.updateListInputs(g),g={...L,...g};const I=[{result:e.HS.executeBasedOnType(g,!1,(e=>t.logic.firstDefinedValueGate(e))),transformers:[]}],T={value1:[void 0],value2:[void 0]};let A={};A.value1=d,A.value2=[{result:[.1],transformers:[]}],e.HS.updateListInputs(A),A={...T,...A};const k=[{result:e.HS.executeBasedOnType(A,!1,(e=>t.logic.firstDefinedValueGate(e))),transformers:[]}];let D={};D.first=I,D.second=k,e.HS.updateListInputs(D),D={first:[1],second:[1],operation:[\\"subtract\\"],...D};const N=[{result:e.HS.executeBasedOnType(D,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let R={};R.first=k,e.HS.updateListInputs(R),R={first:[1],second:[2],operation:[\\"divide\\"],...R};const C=[{result:e.HS.executeBasedOnType(R,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let E={};E.first=O,E.second=k,e.HS.updateListInputs(E),E={first:[1],second:[2],operation:[\\"subtract\\"],...E};const G=[{result:e.HS.executeBasedOnType(E,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let V={};V.second=k,V.first=b,e.HS.updateListInputs(V),V={first:[1],second:[2],operation:[\\"subtract\\"],...V};const z=[{result:e.HS.executeBasedOnType(V,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let F={};F.first=N,e.HS.updateListInputs(F),F={first:[1],second:[2],operation:[\\"divide\\"],...F};const M=[{result:e.HS.executeBasedOnType(F,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let W={};W.first=I,W.second=C,e.HS.updateListInputs(W),W={first:[1],second:[1],operation:[\\"subtract\\"],...W};const X=[{result:e.HS.executeBasedOnType(W,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let Y={};Y.width=G,Y.length=z,e.HS.updateListInputs(Y),Y={width:[1],length:[2],center:[[0,0,0]],direction:[[0,1,0]],...Y};const Z=[{result:await e.HS.executeBasedOnTypeAsync(Y,!1,(e=>t.occt.shapes.wire.createRectangleWire(e))),transformers:[]}];let P={};P.y=X,e.HS.updateListInputs(P),P={x:[0],y:[0],z:[0],...P};const j=[{result:e.HS.executeBasedOnType(P,!1,(e=>t.vector.vectorXYZ(e))),transformers:[]}];let q={};q.y=M,e.HS.updateListInputs(q),q={x:[0],y:[0],z:[0],...q};const J=[{result:e.HS.executeBasedOnType(q,!1,(e=>t.vector.vectorXYZ(e))),transformers:[]}],K={shape:[void 0]};let Q={};Q.shape=Z,e.HS.updateListInputs(Q),Q={...K,...Q};const U=[{result:await e.HS.executeBasedOnTypeAsync(Q,!1,(e=>t.occt.shapes.edge.getCornerPointsOfEdgesForShape(e))),transformers:[]}];let $={};$.width=k,$.length=k,$.height=N,$.center=J,e.HS.updateListInputs($),$={width:[1],length:[2],height:[3],center:[[0,0,0]],...$};const _=[{result:await e.HS.executeBasedOnTypeAsync($,!1,(e=>t.occt.shapes.solid.createBox(e))),transformers:[]}];let ee={};ee.width=O,ee.length=b,ee.height=k,ee.center=j,e.HS.updateListInputs(ee),ee={width:[1],length:[2],height:[3],center:[[0,0,0]],...ee};const te=[{result:await e.HS.executeBasedOnTypeAsync(ee,!1,(e=>t.occt.shapes.solid.createBox(e))),transformers:[]}];let se={};se.list=U,e.HS.updateListInputs(se),se={nrLevels:[1],...se};const re=[];for(let e=0;et.occt.transforms.translate(e))),transformers:[]}];let ue={};ue.listElements=[te[0],ie[0],H[0]],e.HS.updateListInputs(ue),ue={...ue};const le=[{result:[ue.listElements?ue.listElements:[]]}],ce={shapes:[void 0]};let pe={};pe.shapes=le,e.HS.updateListInputs(pe),pe={...ce,...pe};const de=[{result:await e.HS.executeBasedOnTypeAsync(pe,!1,(e=>t.occt.shapes.compound.makeCompound(e))),transformers:[]}],fe={entity:[void 0],options:[void 0],babylonMesh:[void 0]};let ye={};ye.options=y,ye.entity=de,e.HS.updateListInputs(ye),ye={...fe,...ye};const he=[{result:await e.HS.executeBasedOnTypeAsync(ye,!1,(e=>t.draw.drawAnyAsync(e))),transformers:[]}];let Se={};Se.value=he,e.HS.updateListInputs(Se),Se={property:[\\"table\\"],...Se},setBitbybitRunnerResultValue(Se.property[0],Se.value[0])}(BitByBit,bitbybit,bitbybitRunnerResult,bitbybitRunnerInputs,Bit);"}'; } ``` diff --git a/docs/learn/using-ai-with-bitbybit/intro.md b/docs/learn/using-ai-with-bitbybit/intro.md index be3f1301..7241fc09 100644 --- a/docs/learn/using-ai-with-bitbybit/intro.md +++ b/docs/learn/using-ai-with-bitbybit/intro.md @@ -8,7 +8,7 @@ tags: [ai] # Bitbybit for AI coding agents -Agents write more and more of the code that uses Bitbybit, and we treat them as a first-class audience: the same API that a person learns from these pages is published in the forms an agent can read at the moment it needs them. An agent that knows Bitbybit from memory guesses, and Bitbybit has 1901 functions across three CAD kernels, so guessing produces plausible names that do not exist. An agent that looks the API up gets the exact signature, defaults and examples for the version your project has installed, and code that compiles the first time. +Agents write more and more of the code that uses Bitbybit, and we treat them as a first-class audience: the same API that a person learns from these pages is published in the forms an agent can read at the moment it needs them. An agent that knows Bitbybit from memory guesses, and Bitbybit has 1919 functions across three CAD kernels, so guessing produces plausible names that do not exist. An agent that looks the API up gets the exact signature, defaults and examples for the version your project has installed, and code that compiles the first time. This section explains the ways to give an agent that knowledge, in the order we recommend them. diff --git a/docs/package.json b/docs/package.json index ca81255d..c160d63f 100644 --- a/docs/package.json +++ b/docs/package.json @@ -1,6 +1,6 @@ { "name": "docs", - "version": "1.4.0", + "version": "1.4.1", "private": true, "scripts": { "docusaurus": "docusaurus", diff --git a/docs/src/components/BitByBitRenderCanvas/index.tsx b/docs/src/components/BitByBitRenderCanvas/index.tsx index 1945c149..33e30da3 100644 --- a/docs/src/components/BitByBitRenderCanvas/index.tsx +++ b/docs/src/components/BitByBitRenderCanvas/index.tsx @@ -66,7 +66,7 @@ const BitByBitRenderCanvas: React.FC = React.memo(({ const canvasContainerRef = useRef(null); const uniqueId = useId(); const { siteConfig } = useDocusaurusContext(); - const defaultVersion = siteConfig.customFields?.bitbybitVersion as string || "1.4.0"; + const defaultVersion = siteConfig.customFields?.bitbybitVersion as string || "1.4.1"; const [isIframeReady, setIsIframeReady] = useState(false); const [loadIframe, setLoadIframe] = useState(!requireManualStart); diff --git a/docs/src/pages/index.tsx b/docs/src/pages/index.tsx index fb5194ec..8fcac1af 100644 --- a/docs/src/pages/index.tsx +++ b/docs/src/pages/index.tsx @@ -185,7 +185,7 @@ function HeroSection() { CAD Kernels
- 1901 + 1919 API Functions
diff --git a/docs/static/img/blog/bitbybit-mcp-jet-engine/casing-faded.webp b/docs/static/img/blog/bitbybit-mcp-jet-engine/casing-faded.webp new file mode 100644 index 00000000..725d5fe9 Binary files /dev/null and b/docs/static/img/blog/bitbybit-mcp-jet-engine/casing-faded.webp differ diff --git a/docs/static/img/blog/bitbybit-mcp-jet-engine/casing-open.webp b/docs/static/img/blog/bitbybit-mcp-jet-engine/casing-open.webp new file mode 100644 index 00000000..4d8bb3c3 Binary files /dev/null and b/docs/static/img/blog/bitbybit-mcp-jet-engine/casing-open.webp differ diff --git a/docs/static/img/blog/bitbybit-mcp-jet-engine/configurator.webp b/docs/static/img/blog/bitbybit-mcp-jet-engine/configurator.webp new file mode 100644 index 00000000..341548f0 Binary files /dev/null and b/docs/static/img/blog/bitbybit-mcp-jet-engine/configurator.webp differ diff --git a/docs/static/img/blog/bitbybit-mcp-jet-engine/core-detail.webp b/docs/static/img/blog/bitbybit-mcp-jet-engine/core-detail.webp new file mode 100644 index 00000000..7137d471 Binary files /dev/null and b/docs/static/img/blog/bitbybit-mcp-jet-engine/core-detail.webp differ diff --git a/docs/static/img/blog/bitbybit-mcp-jet-engine/editor-project.webp b/docs/static/img/blog/bitbybit-mcp-jet-engine/editor-project.webp new file mode 100644 index 00000000..77486673 Binary files /dev/null and b/docs/static/img/blog/bitbybit-mcp-jet-engine/editor-project.webp differ diff --git a/docs/static/img/blog/bitbybit-mcp-jet-engine/exploded-transparent.webp b/docs/static/img/blog/bitbybit-mcp-jet-engine/exploded-transparent.webp new file mode 100644 index 00000000..2879bab6 Binary files /dev/null and b/docs/static/img/blog/bitbybit-mcp-jet-engine/exploded-transparent.webp differ diff --git a/docs/static/img/blog/bitbybit-mcp-jet-engine/exploded.webp b/docs/static/img/blog/bitbybit-mcp-jet-engine/exploded.webp new file mode 100644 index 00000000..a3003790 Binary files /dev/null and b/docs/static/img/blog/bitbybit-mcp-jet-engine/exploded.webp differ diff --git a/docs/static/img/blog/bitbybit-mcp-jet-engine/fan-detail.webp b/docs/static/img/blog/bitbybit-mcp-jet-engine/fan-detail.webp new file mode 100644 index 00000000..178bdd9e Binary files /dev/null and b/docs/static/img/blog/bitbybit-mcp-jet-engine/fan-detail.webp differ diff --git a/docs/static/img/blog/bitbybit-mcp-jet-engine/hero.webp b/docs/static/img/blog/bitbybit-mcp-jet-engine/hero.webp new file mode 100644 index 00000000..7df27cf4 Binary files /dev/null and b/docs/static/img/blog/bitbybit-mcp-jet-engine/hero.webp differ diff --git a/docs/static/img/blog/bitbybit-mcp-jet-engine/iso-front.webp b/docs/static/img/blog/bitbybit-mcp-jet-engine/iso-front.webp new file mode 100644 index 00000000..195f540c Binary files /dev/null and b/docs/static/img/blog/bitbybit-mcp-jet-engine/iso-front.webp differ diff --git a/docs/static/img/blog/bitbybit-mcp-jet-engine/iso-rear-exploded.webp b/docs/static/img/blog/bitbybit-mcp-jet-engine/iso-rear-exploded.webp new file mode 100644 index 00000000..e5aaccf4 Binary files /dev/null and b/docs/static/img/blog/bitbybit-mcp-jet-engine/iso-rear-exploded.webp differ diff --git a/docs/static/img/blog/bitbybit-mcp-jet-engine/labelled.webp b/docs/static/img/blog/bitbybit-mcp-jet-engine/labelled.webp new file mode 100644 index 00000000..b0b3abc7 Binary files /dev/null and b/docs/static/img/blog/bitbybit-mcp-jet-engine/labelled.webp differ diff --git a/docs/static/img/blog/bitbybit-mcp-jet-engine/stand-detail.webp b/docs/static/img/blog/bitbybit-mcp-jet-engine/stand-detail.webp new file mode 100644 index 00000000..ebd2c80a Binary files /dev/null and b/docs/static/img/blog/bitbybit-mcp-jet-engine/stand-detail.webp differ diff --git a/docs/static/img/blog/bitbybit-mcp-jet-engine/variant-default.webp b/docs/static/img/blog/bitbybit-mcp-jet-engine/variant-default.webp new file mode 100644 index 00000000..7c9f8ee6 Binary files /dev/null and b/docs/static/img/blog/bitbybit-mcp-jet-engine/variant-default.webp differ diff --git a/docs/static/img/blog/bitbybit-mcp-jet-engine/variant-large.webp b/docs/static/img/blog/bitbybit-mcp-jet-engine/variant-large.webp new file mode 100644 index 00000000..38ba91ab Binary files /dev/null and b/docs/static/img/blog/bitbybit-mcp-jet-engine/variant-large.webp differ diff --git a/docs/static/img/blog/bitbybit-mcp-jet-engine/variant-small.webp b/docs/static/img/blog/bitbybit-mcp-jet-engine/variant-small.webp new file mode 100644 index 00000000..85a3b614 Binary files /dev/null and b/docs/static/img/blog/bitbybit-mcp-jet-engine/variant-small.webp differ diff --git a/docs/static/openapi.json b/docs/static/openapi.json index 03a827b9..c3ce6568 100644 --- a/docs/static/openapi.json +++ b/docs/static/openapi.json @@ -2,7 +2,7 @@ "openapi": "3.1.0", "info": { "title": "Bitbybit CAD Cloud API", - "version": "1.4.0", + "version": "1.4.1", "description": "High-performance parametric CAD model generation API. Supports multi-format output (STEP, GLTF, decomposed mesh), pipeline execution, file-based conversion, and async job processing.", "contact": { "name": "Bitbybit", diff --git a/examples/angular/babylonjs/laptop-holder/package.json b/examples/angular/babylonjs/laptop-holder/package.json index 12358be2..d32a7fc1 100644 --- a/examples/angular/babylonjs/laptop-holder/package.json +++ b/examples/angular/babylonjs/laptop-holder/package.json @@ -16,7 +16,7 @@ "@angular/material": "^21.2.0", "@angular/platform-browser": "^21.2.0", "@angular/router": "^21.2.0", - "@bitbybit-dev/babylonjs": "1.4.0", + "@bitbybit-dev/babylonjs": "1.4.1", "rxjs": "^7.8.1", "tslib": "^2.8.0", "zone.js": "~0.15.0" diff --git a/examples/angular/threejs/vite-basic-example/package.json b/examples/angular/threejs/vite-basic-example/package.json index e3027150..acc81ac2 100644 --- a/examples/angular/threejs/vite-basic-example/package.json +++ b/examples/angular/threejs/vite-basic-example/package.json @@ -14,7 +14,7 @@ "@angular/forms": "^20.0.0", "@angular/platform-browser": "^20.0.0", "@angular/router": "^20.0.0", - "@bitbybit-dev/threejs": "1.4.0", + "@bitbybit-dev/threejs": "1.4.1", "rxjs": "7.8.2", "tslib": "^2.5.0", "zone.js": "~0.15.0" diff --git a/examples/angular/threejs/vite-basic-example/src/workers/manifold.worker.ts b/examples/angular/threejs/vite-basic-example/src/workers/manifold.worker.ts index 47721590..dfcd7ffc 100644 --- a/examples/angular/threejs/vite-basic-example/src/workers/manifold.worker.ts +++ b/examples/angular/threejs/vite-basic-example/src/workers/manifold.worker.ts @@ -7,7 +7,7 @@ import Module from "manifold-3d"; const init = async () => { const wasm = await Module({ locateFile: () => { - return "https://git-cdn.bitbybit.dev/v1.4.0/wasm/manifold-3.5.3.wasm"; + return "https://git-cdn.bitbybit.dev/v1.4.1/wasm/manifold-3.5.3.wasm"; }, }); wasm.setup(); diff --git a/examples/api/frontend/package.json b/examples/api/frontend/package.json index bfa2a34b..1a1f0788 100644 --- a/examples/api/frontend/package.json +++ b/examples/api/frontend/package.json @@ -1,6 +1,6 @@ { "name": "bitbybit-example-frontend", - "version": "1.4.0", + "version": "1.4.1", "private": true, "type": "module", "scripts": { diff --git a/examples/api/hono-rest/package.json b/examples/api/hono-rest/package.json index 48b3be43..7d57c3ed 100644 --- a/examples/api/hono-rest/package.json +++ b/examples/api/hono-rest/package.json @@ -1,6 +1,6 @@ { "name": "bitbybit-api-hono-rest-threejs", - "version": "1.4.0", + "version": "1.4.1", "private": true, "type": "module", "scripts": { diff --git a/examples/api/hono-sdk/package.json b/examples/api/hono-sdk/package.json index 10d1e4ec..295bfdf7 100644 --- a/examples/api/hono-sdk/package.json +++ b/examples/api/hono-sdk/package.json @@ -1,6 +1,6 @@ { "name": "bitbybit-api-hono-sdk-threejs", - "version": "1.4.0", + "version": "1.4.1", "private": true, "type": "module", "scripts": { @@ -9,7 +9,7 @@ }, "dependencies": { "hono": "^4.7.0", - "@bitbybit-dev/cad-cloud-sdk": "1.4.0" + "@bitbybit-dev/cad-cloud-sdk": "1.4.1" }, "devDependencies": { "@cloudflare/workers-types": "^5.20260903.1", diff --git a/examples/api/nodejs-rest/package.json b/examples/api/nodejs-rest/package.json index 14961f43..bc6ae97e 100644 --- a/examples/api/nodejs-rest/package.json +++ b/examples/api/nodejs-rest/package.json @@ -1,6 +1,6 @@ { "name": "bitbybit-api-nodejs-rest-threejs", - "version": "1.4.0", + "version": "1.4.1", "private": true, "type": "module", "scripts": { diff --git a/examples/api/nodejs-sdk/package.json b/examples/api/nodejs-sdk/package.json index 85ab10dc..d10f5f41 100644 --- a/examples/api/nodejs-sdk/package.json +++ b/examples/api/nodejs-sdk/package.json @@ -1,6 +1,6 @@ { "name": "bitbybit-api-nodejs-sdk-threejs", - "version": "1.4.0", + "version": "1.4.1", "private": true, "type": "module", "scripts": { @@ -11,7 +11,7 @@ "dependencies": { "express": "^5.1.0", "multer": "^2.3.0", - "@bitbybit-dev/cad-cloud-sdk": "1.4.0" + "@bitbybit-dev/cad-cloud-sdk": "1.4.1" }, "devDependencies": { "@types/express": "^5.0.2", diff --git a/examples/nextjs/babylonjs/simple/package.json b/examples/nextjs/babylonjs/simple/package.json index 9a7cd45e..1cc5d177 100644 --- a/examples/nextjs/babylonjs/simple/package.json +++ b/examples/nextjs/babylonjs/simple/package.json @@ -9,7 +9,7 @@ "lint": "next lint" }, "dependencies": { - "@bitbybit-dev/babylonjs": "1.4.0", + "@bitbybit-dev/babylonjs": "1.4.1", "next": "16.3.4", "react": "19.2.6", "react-dom": "19.2.6" diff --git a/examples/node/basic/package.json b/examples/node/basic/package.json index 015435c2..46b24de6 100644 --- a/examples/node/basic/package.json +++ b/examples/node/basic/package.json @@ -1,6 +1,6 @@ { "name": "basic", - "version": "1.4.0", + "version": "1.4.1", "description": "Example of how to use @bitbybit-dev/occt within node", "main": "index.js", "scripts": { @@ -15,7 +15,7 @@ "node": ">=20.19.4" }, "dependencies": { - "@bitbybit-dev/occt": "1.4.0" + "@bitbybit-dev/occt": "1.4.1" }, "devDependencies": { "extensionless": "1.9.9", diff --git a/examples/node/express-app/package.json b/examples/node/express-app/package.json index 3a489efc..0b33f8e2 100644 --- a/examples/node/express-app/package.json +++ b/examples/node/express-app/package.json @@ -1,6 +1,6 @@ { "name": "bitbybit-node-express", - "version": "1.4.0", + "version": "1.4.1", "description": "Example of how to use @bitbybit-dev/core libraries within express app", "main": "index.ts", "scripts": { @@ -12,11 +12,11 @@ "author": "Bit By Bit Developers", "license": "MIT", "dependencies": { - "@bitbybit-dev/base": "1.4.0", - "@bitbybit-dev/core": "1.4.0", - "@bitbybit-dev/jscad": "1.4.0", - "@bitbybit-dev/manifold": "1.4.0", - "@bitbybit-dev/occt": "1.4.0", + "@bitbybit-dev/base": "1.4.1", + "@bitbybit-dev/core": "1.4.1", + "@bitbybit-dev/jscad": "1.4.1", + "@bitbybit-dev/manifold": "1.4.1", + "@bitbybit-dev/occt": "1.4.1", "dotenv": "^16.0.3", "express": "^4.18.2", "jsonpath-plus": "^10.3.0", diff --git a/examples/nuxt/babylonjs/basic/package.json b/examples/nuxt/babylonjs/basic/package.json index 3ec5bcbf..9c3c3d7d 100644 --- a/examples/nuxt/babylonjs/basic/package.json +++ b/examples/nuxt/babylonjs/basic/package.json @@ -11,7 +11,7 @@ "postinstall": "nuxt prepare" }, "dependencies": { - "@bitbybit-dev/babylonjs": "1.4.0", + "@bitbybit-dev/babylonjs": "1.4.1", "nuxt": "4.5.2", "vue": "latest", "vue-router": "latest" diff --git a/examples/package.json b/examples/package.json index d0943ec0..9b0c0eae 100644 --- a/examples/package.json +++ b/examples/package.json @@ -1,6 +1,6 @@ { "name": "bitbybit-examples", - "version": "1.4.0", + "version": "1.4.1", "description": "Monorepo for browser CAD which holds bitbybit.dev npm packages", "scripts": { "list": "node scripts/examples.mjs list", diff --git a/examples/react/babylonjs/cup/package.json b/examples/react/babylonjs/cup/package.json index fb80778c..87ddd01a 100644 --- a/examples/react/babylonjs/cup/package.json +++ b/examples/react/babylonjs/cup/package.json @@ -4,7 +4,7 @@ "private": true, "homepage": "https://app-store.bitbybit.dev/cup", "dependencies": { - "@bitbybit-dev/babylonjs": "1.4.0", + "@bitbybit-dev/babylonjs": "1.4.1", "@emotion/react": "^11.14.0", "@emotion/styled": "^11.14.0", "@mui/icons-material": "^5.18.0", diff --git a/examples/react/babylonjs/laptop-holder/package.json b/examples/react/babylonjs/laptop-holder/package.json index f80bb2f0..c329e8f6 100644 --- a/examples/react/babylonjs/laptop-holder/package.json +++ b/examples/react/babylonjs/laptop-holder/package.json @@ -7,7 +7,7 @@ "dependencies": { "react": "19.2.6", "react-dom": "19.2.6", - "@bitbybit-dev/babylonjs": "1.4.0", + "@bitbybit-dev/babylonjs": "1.4.1", "@mui/icons-material": "^7.1.0", "@mui/material": "^7.1.0", "@emotion/react": "^11.14.0", diff --git a/examples/react/threejs/vase/package.json b/examples/react/threejs/vase/package.json index cf8513b4..f84b61a1 100644 --- a/examples/react/threejs/vase/package.json +++ b/examples/react/threejs/vase/package.json @@ -4,7 +4,7 @@ "private": true, "homepage": "https://app-store.bitbybit.dev/bitbybit-threejs", "dependencies": { - "@bitbybit-dev/threejs": "1.4.0", + "@bitbybit-dev/threejs": "1.4.1", "@emotion/react": "^11.14.0", "@emotion/styled": "^11.14.0", "@mui/icons-material": "^5.18.0", diff --git a/examples/runner/babylon/full/inline-include/index.html b/examples/runner/babylon/full/inline-include/index.html index e7ae6513..2d440728 100644 --- a/examples/runner/babylon/full/inline-include/index.html +++ b/examples/runner/babylon/full/inline-include/index.html @@ -34,7 +34,7 @@ // This function simply outputs the script that was exported from the Rete editor by clicking "Export to Runner" and selecting Minify option. function exportedScript() { - return '{\"type\":\"rete\",\"version\":\"1.4.0\",\"script\":\"!async function(e,t,s,n,r){let a={};a={x:[0],y:[0],z:[1],...a};const o=[{result:e.HS.executeBasedOnType(a,!1,(e=>t.vector.vectorXYZ(e))),transformers:[]}];let i={};i={text:[\\"[true,false]\\"],...i};const c=[{result:e.HS.executeBasedOnType(i,!1,(e=>t.json.parse(e))),transformers:[]}];let p={};p={text:[\\"[false,true]\\"],...p};const u=[{result:e.HS.executeBasedOnType(p,!1,(e=>t.json.parse(e))),transformers:[]}],l=[{result:[5],transformers:[]}];let d={};d={x:[1],y:[0],z:[0],...d};const m=[{result:e.HS.executeBasedOnType(d,!1,(e=>t.vector.vectorXYZ(e))),transformers:[]}],y=[{result:[12],transformers:[]}],S=[{result:[7],transformers:[]}];let H={};H={x:[0],y:[1],z:[0],...H};const f=[{result:e.HS.executeBasedOnType(H,!1,(e=>t.vector.vectorXYZ(e))),transformers:[]}];let h={};h={x:[0],y:[0],z:[1],...h};const x=[{result:e.HS.executeBasedOnType(h,!1,(e=>t.vector.vectorXYZ(e))),transformers:[]}];let v={};v={number:[.4],...v};const O=[{result:e.HS.executeBasedOnType(v,!1,(e=>t.math.number(e))),transformers:[]}];let I={};I={x:[0],y:[0],z:[-1],...I};const L=[{result:e.HS.executeBasedOnType(I,!1,(e=>t.vector.vectorXYZ(e))),transformers:[]}];let B={};B={x:[0],y:[0],z:[-2],...B};const w=[{result:e.HS.executeBasedOnType(B,!1,(e=>t.vector.vectorXYZ(e))),transformers:[]}];let T={};T={x:[0],y:[0],z:[1],...T};const g=[{result:e.HS.executeBasedOnType(T,!1,(e=>t.vector.vectorXYZ(e))),transformers:[]}];let A={};A={x:[0],y:[1.5],z:[0],...A};const E=[{result:e.HS.executeBasedOnType(A,!1,(e=>t.vector.vectorXYZ(e))),transformers:[]}];let b={};b={...{faceOpacity:[.5],edgeOpacity:[.5],edgeColour:[\\"#000000\\"],faceColour:[\\"#212121\\"],vertexColour:[\\"#ff00ff\\"],faceMaterial:[void 0],edgeWidth:[2],vertexSize:[.03],drawEdges:[!0],drawFaces:[!0],drawVertices:[!1],precision:[.02],drawEdgeIndexes:[!1],edgeIndexHeight:[.06],edgeIndexColour:[\\"ff00ff\\"],drawFaceIndexes:[!1],faceIndexHeight:[.06],faceIndexColour:[\\"#0000ff\\"]},...b};const z=[{result:e.HS.executeBasedOnType(b,!1,(e=>t.draw.optionsOcctShape(e))),transformers:[]}];let W={};W={name:[\\"Custom Material\\"],baseColor:[\\"#9c9cba\\"],emissiveColor:[\\"#000000\\"],metallic:[.9],roughness:[.1],alpha:[1],backFaceCulling:[!1],zOffset:[2],...W};const C=[{result:e.HS.executeBasedOnType(W,!1,(e=>t.babylon.material.pbrMetallicRoughness.create(e))),transformers:[]}];let P={};P={x:[0],y:[0],z:[-1],...P};const X=[{result:e.HS.executeBasedOnType(P,!1,(e=>t.vector.vectorXYZ(e))),transformers:[]}];let Y={};Y={x:[0],y:[0],z:[-1.5],...Y};const Z=[{result:e.HS.executeBasedOnType(Y,!1,(e=>t.vector.vectorXYZ(e))),transformers:[]}];let N={};N={x:[0],y:[0],z:[1],...N};const k=[{result:e.HS.executeBasedOnType(N,!1,(e=>t.vector.vectorXYZ(e))),transformers:[]}];let M={};M={skybox:[\\"city\\"],size:[1e3],blur:[.4],environmentIntensity:[.4],...M};e.HS.executeBasedOnType(M,!1,(e=>t.babylon.scene.enableSkybox(e)));let F={number:[{result:[20],transformers:[]}]};e.HS.updateListInputs(F),F={number:[20],...F};const D=[{result:e.HS.executeBasedOnType(F,!1,(e=>t.math.number(e))),transformers:[]}];let R={};R.y=y,e.HS.updateListInputs(R),R={x:[0],y:[0],z:[0],...R};const j=[{result:e.HS.executeBasedOnType(R,!1,(e=>t.vector.vectorXYZ(e))),transformers:[]}];let q={};q.item=y,e.HS.updateListInputs(q),q={...q};const V=[{result:q.item}];let G={};G.first=S,e.HS.updateListInputs(G),G={first:[1],second:[-2],operation:[\\"divide\\"],...G};const J=[{result:e.HS.executeBasedOnType(G,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let K={};K.first=S,e.HS.updateListInputs(K),K={first:[1],second:[-4],operation:[\\"divide\\"],...K};const Q=[{result:e.HS.executeBasedOnType(K,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let U={};U.first=y,U.second=O,e.HS.updateListInputs(U),U={first:[1],second:[.4],operation:[\\"add\\"],...U};const $=[{result:e.HS.executeBasedOnType(U,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let _={};_.item=S,e.HS.updateListInputs(_),_={..._};const ee=[{result:_.item}],te={faceOpacity:[1],edgeOpacity:[1],edgeColour:[\\"#1c1c1c\\"],faceColour:[\\"#bdbdbd\\"],vertexColour:[\\"#ff00ff\\"],faceMaterial:[void 0],edgeWidth:[2],vertexSize:[.03],drawEdges:[!0],drawFaces:[!0],drawVertices:[!1],precision:[.01],drawEdgeIndexes:[!1],edgeIndexHeight:[.06],edgeIndexColour:[\\"ff00ff\\"],drawFaceIndexes:[!1],faceIndexHeight:[.06],faceIndexColour:[\\"#0000ff\\"]};let se={};se.faceMaterial=C,e.HS.updateListInputs(se),se={...te,...se};const ne=[{result:e.HS.executeBasedOnType(se,!1,(e=>t.draw.optionsOcctShape(e))),transformers:[]}];let re={};re.center=Z,re.direction=X,e.HS.updateListInputs(re),re={radius:[3],height:[1.9],center:[[0,0,0]],direction:[[0,1,0]],...re};const ae=[{result:await e.HS.executeBasedOnTypeAsync(re,!1,(e=>t.occt.shapes.solid.createCylinder(e))),transformers:[]}];let oe={};oe.y=$,e.HS.updateListInputs(oe),oe={x:[0],y:[12],z:[0],...oe};const ie=[{result:e.HS.executeBasedOnType(oe,!1,(e=>t.vector.vectorXYZ(e))),transformers:[]}];let ce={};ce.first=D,e.HS.updateListInputs(ce),ce={first:[1],second:[3],operation:[\\"multiply\\"],...ce};const pe=[{result:e.HS.executeBasedOnType(ce,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let ue={};ue.first=V,ue.second=O,e.HS.updateListInputs(ue),ue={first:[1],second:[.4],operation:[\\"add\\"],...ue};const le=[{result:e.HS.executeBasedOnType(ue,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let de={};de.first=V,de.second=O,e.HS.updateListInputs(de),de={first:[1],second:[.4],operation:[\\"subtract\\"],...de};const me=[{result:e.HS.executeBasedOnType(de,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let ye={};ye.first=ee,e.HS.updateListInputs(ye),ye={first:[1],second:[-.2],operation:[\\"multiply\\"],...ye};const Se=[{result:e.HS.executeBasedOnType(ye,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let He={};He.second=D,e.HS.updateListInputs(He),He={first:[360],second:[1],operation:[\\"divide\\"],...He};const fe=[{result:e.HS.executeBasedOnType(He,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}],he={shape:[void 0],radius:[.3],radiusList:[void 0],indexes:[void 0]};let xe={};xe.shape=ae,e.HS.updateListInputs(xe),xe={...he,...xe};const ve=[{result:await e.HS.executeBasedOnTypeAsync(xe,!1,(e=>t.occt.fillets.filletEdges(e))),transformers:[]}];let Oe={};Oe.start=L,Oe.end=ie,e.HS.updateListInputs(Oe),Oe={start:[[0,0,0]],end:[[0,1,0]],...Oe};const Ie=[{result:await e.HS.executeBasedOnTypeAsync(Oe,!1,(e=>t.occt.shapes.wire.createLineWire(e))),transformers:[]}];let Le={};Le.second=pe,e.HS.updateListInputs(Le),Le={first:[360],second:[1],operation:[\\"divide\\"],...Le};const Be=[{result:e.HS.executeBasedOnType(Le,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let we={};we.start=w,we.end=ie,e.HS.updateListInputs(we),we={start:[[0,0,0]],end:[[0,1,0]],...we};const Te=[{result:await e.HS.executeBasedOnTypeAsync(we,!1,(e=>t.occt.shapes.wire.createLineWire(e))),transformers:[]}];let ge={};ge.y=le,e.HS.updateListInputs(ge),ge={x:[0],y:[0],z:[.05],...ge};const Ae=[{result:e.HS.executeBasedOnType(ge,!1,(e=>t.vector.vectorXYZ(e))),transformers:[]}];let Ee={};Ee.y=me,Ee.z=Q,e.HS.updateListInputs(Ee),Ee={x:[0],y:[0],z:[-1],...Ee};const be=[{result:e.HS.executeBasedOnType(Ee,!1,(e=>t.vector.vectorXYZ(e))),transformers:[]}];let ze={};ze.y=me,ze.z=J,e.HS.updateListInputs(ze),ze={x:[0],y:[0],z:[0],...ze};const We=[{result:e.HS.executeBasedOnType(ze,!1,(e=>t.vector.vectorXYZ(e))),transformers:[]}];let Ce={};Ce.z=Se,e.HS.updateListInputs(Ce),Ce={x:[0],y:[0],z:[0],...Ce};const Pe=[{result:e.HS.executeBasedOnType(Ce,!1,(e=>t.vector.vectorXYZ(e))),transformers:[]}];let Xe={};Xe.step=fe,e.HS.updateListInputs(Xe),Xe={step:[.1],min:[0],max:[360],...Xe};const Ye=e.HS.executeBasedOnType(Xe,!1,(e=>t.vector.span(e))),Ze=[];for(let e=0;e<1;e++)Ze.push({type:\\"flat\\"});const Ne=[{result:Ye,transformers:Ze}];let ke={};ke.first=Se,e.HS.updateListInputs(ke),ke={first:[2],second:[-2],operation:[\\"multiply\\"],...ke};e.HS.executeBasedOnType(ke,!1,(e=>t.math.twoNrOperation(e)));let Me={};Me.listElements=ve,e.HS.updateListInputs(Me),Me={...Me};const Fe=[{result:[Me.listElements?Me.listElements:[]]}],De={shape:[void 0],axis:[[0,0,1]],angle:[0]};let Re={};Re.shape=Ie,Re.axis=o,Re.angle=Be,e.HS.updateListInputs(Re),Re={...De,...Re};const je=[{result:await e.HS.executeBasedOnTypeAsync(Re,!1,(e=>t.occt.transforms.rotate(e))),transformers:[]}];let qe={};qe.first=Be,e.HS.updateListInputs(qe),qe={first:[1],second:[.4],operation:[\\"multiply\\"],...qe};const Ve=[{result:e.HS.executeBasedOnType(qe,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let Ge={};Ge.first=Be,e.HS.updateListInputs(Ge),Ge={first:[1],second:[.6],operation:[\\"multiply\\"],...Ge};const Je=[{result:e.HS.executeBasedOnType(Ge,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let Ke={};Ke.listElements=[Ae[0],j[0],be[0],We[0]],e.HS.updateListInputs(Ke),Ke={...Ke};const Qe=[{result:[Ke.listElements?Ke.listElements:[]]}];let Ue={};Ue.item=Ne,e.HS.updateListInputs(Ue),Ue={...Ue};const $e=[{result:Ue.item}],_e={shape:[void 0],nrOfDivisions:[11],removeStartPoint:[!1],removeEndPoint:[!1]};let et={};et.shape=je,et.nrOfDivisions=l,e.HS.updateListInputs(et),et={..._e,...et};const tt=[{result:await e.HS.executeBasedOnTypeAsync(et,!1,(e=>t.occt.shapes.wire.divideWireByEqualDistanceToPoints(e))),transformers:[]}],st={shape:[void 0],axis:[[0,0,1]],angle:[0]};let nt={};nt.shape=Te,nt.axis=o,nt.angle=[Ve[0],Je[0]],e.HS.updateListInputs(nt),nt={...st,...nt};const rt=[{result:await e.HS.executeBasedOnTypeAsync(nt,!1,(e=>t.occt.transforms.rotate(e))),transformers:[]}];let at={};at.number=Ve,e.HS.updateListInputs(at),at={number:[1],operation:[\\"negate\\"],...at};const ot=[{result:e.HS.executeBasedOnType(at,!1,(e=>t.math.oneNrOperation(e))),transformers:[]}],it={points:[void 0]};let ct={};ct.points=Qe,e.HS.updateListInputs(ct),ct={...it,...ct};const pt=[{result:await e.HS.executeBasedOnTypeAsync(ct,!1,(e=>t.occt.shapes.wire.createPolylineWire(e))),transformers:[]}];e.HS.drawNodeMeshes(pt,t);const ut={list:[void 0],pattern:[[!0,!0,!1]]};let lt={};lt.list=tt,lt.pattern=u,e.HS.updateListInputs(lt),lt={...ut,...lt};const dt=[{result:e.HS.executeBasedOnType(lt,!0,(e=>t.lists.getByPattern(e))),transformers:[]}];let mt={};mt.listElements=rt,e.HS.updateListInputs(mt),mt={...mt};const yt=[{result:[mt.listElements?mt.listElements:[]]}],St={shape:[void 0],origin:[[0,0,0]],direction:[[0,0,1]]};let Ht={};Ht.shape=pt,Ht.origin=We,Ht.direction=f,e.HS.updateListInputs(Ht),Ht={...St,...Ht};const ft=[{result:await e.HS.executeBasedOnTypeAsync(Ht,!1,(e=>t.occt.transforms.mirror(e))),transformers:[]}],ht={shape:[void 0]};let xt={};xt.shape=pt,e.HS.updateListInputs(xt),xt={...ht,...xt};const vt=await e.HS.executeBasedOnTypeAsync(xt,!1,(e=>t.occt.shapes.edge.getCornerPointsOfEdgesForShape(e))),Ot=[];for(let e=0;e<1;e++)Ot.push({type:\\"flat\\"});const It=[{result:vt,transformers:Ot}],Lt={list:[void 0],index:[0],clone:[!0]};let Bt={};Bt.list=yt,e.HS.updateListInputs(Bt),Bt={...Lt,...Bt};const wt=[{result:e.HS.executeBasedOnType(Bt,!1,(e=>t.lists.getItem(e))),transformers:[]}],Tt={shape:[void 0]};let gt={};gt.shape=ft,e.HS.updateListInputs(gt),gt={...Tt,...gt};const At=[{result:await e.HS.executeBasedOnTypeAsync(gt,!1,(e=>t.occt.shapes.edge.getCornerPointsOfEdgesForShape(e))),transformers:[]}],Et={shape:[void 0],nrOfDivisions:[11],removeStartPoint:[!1],removeEndPoint:[!1]};let bt={};bt.shape=wt,bt.nrOfDivisions=l,e.HS.updateListInputs(bt),bt={...Et,...bt};const zt=[{result:await e.HS.executeBasedOnTypeAsync(bt,!1,(e=>t.occt.shapes.wire.divideWireByEqualDistanceToPoints(e))),transformers:[]}],Wt={list:[void 0],index:[3],clone:[!0]};let Ct={};Ct.list=At,e.HS.updateListInputs(Ct),Ct={...Wt,...Ct};const Pt=[{result:e.HS.executeBasedOnType(Ct,!1,(e=>t.lists.removeItemAtIndex(e))),transformers:[]}],Xt={list:[void 0],pattern:[[!0,!0,!1]]};let Yt={};Yt.list=zt,Yt.pattern=c,e.HS.updateListInputs(Yt),Yt={...Xt,...Yt};const Zt=[{result:e.HS.executeBasedOnType(Yt,!1,(e=>t.lists.getByPattern(e))),transformers:[]}],Nt={list:[void 0],clone:[!0]};let kt={};kt.list=Pt,e.HS.updateListInputs(kt),kt={...Nt,...kt};const Mt=e.HS.executeBasedOnType(kt,!1,(e=>t.lists.reverse(e))),Ft=[];for(let e=0;e<1;e++)Ft.push({type:\\"flat\\"});const Dt=[{result:Mt,transformers:Ft}];let Rt={};Rt.listElements=[Zt[0],dt[0]],e.HS.updateListInputs(Rt),Rt={...Rt};const jt=[{result:[Rt.listElements?Rt.listElements:[]]}];let qt={};qt.listElements=[It[0],Dt[0]],e.HS.updateListInputs(qt),qt={...qt};const Vt=[{result:[qt.listElements?qt.listElements:[]]}],Gt={list:[void 0],clone:[!0]};let Jt={};Jt.list=jt,e.HS.updateListInputs(Jt),Jt={...Gt,...Jt};const Kt=e.HS.executeBasedOnType(Jt,!1,(e=>t.lists.flipLists(e))),Qt=[];for(let e=0;e<2;e++)Qt.push({type:\\"flat\\"});const Ut=[{result:Kt,transformers:Qt}],$t={points:[void 0]};let _t={};_t.points=Vt,e.HS.updateListInputs(_t),_t={...$t,..._t};const es=[{result:await e.HS.executeBasedOnTypeAsync(_t,!1,(e=>t.occt.shapes.wire.createPolylineWire(e))),transformers:[]}];let ts={};ts.listElements=Ut,e.HS.updateListInputs(ts),ts={...ts};const ss=[{result:[ts.listElements?ts.listElements:[]]}],ns={shape:[void 0],radius:[.3],radiusList:[void 0],indexes:[void 0]};let rs={};rs.shape=es,e.HS.updateListInputs(rs),rs={...ns,...rs};const as=[{result:await e.HS.executeBasedOnTypeAsync(rs,!1,(e=>t.occt.fillets.fillet2d(e))),transformers:[]}],os={points:[void 0]};let is={};is.points=ss,e.HS.updateListInputs(is),is={...os,...is};const cs=[{result:await e.HS.executeBasedOnTypeAsync(is,!1,(e=>t.occt.shapes.wire.createPolylineWire(e))),transformers:[]}],ps={shape:[void 0],angle:[360],direction:[[0,1,0]],copy:[!1]};let us={};us.shape=as,us.direction=x,e.HS.updateListInputs(us),us={...ps,...us};const ls=[{result:await e.HS.executeBasedOnTypeAsync(us,!1,(e=>t.occt.operations.revolve(e))),transformers:[]}],ds={shape:[void 0]};let ms={};ms.shape=as,e.HS.updateListInputs(ms),ms={...ds,...ms};const ys=[{result:await e.HS.executeBasedOnTypeAsync(ms,!1,(e=>t.occt.shapes.wire.startPointOnWire(e))),transformers:[]}],Ss={shape:[void 0]};let Hs={};Hs.shape=as,e.HS.updateListInputs(Hs),Hs={...Ss,...Hs};const fs=[{result:await e.HS.executeBasedOnTypeAsync(Hs,!1,(e=>t.occt.shapes.wire.endPointOnWire(e))),transformers:[]}],hs={shape:[void 0]};let xs={};xs.shape=as,e.HS.updateListInputs(xs),xs={...hs,...xs};const vs=[{result:await e.HS.executeBasedOnTypeAsync(xs,!1,(e=>t.occt.shapes.wire.closeOpenWire(e))),transformers:[]}],Os={shape:[void 0],angle:[360],direction:[[0,1,0]],copy:[!1]};let Is={};Is.shape=vs,Is.direction=x,e.HS.updateListInputs(Is),Is={...Os,...Is};const Ls=[{result:await e.HS.executeBasedOnTypeAsync(Is,!1,(e=>t.occt.operations.revolve(e))),transformers:[]}],Bs={shape:[void 0],radius:[1],radiusList:[void 0],indexes:[void 0],direction:[[0,1,0]]};let ws={};ws.shape=cs,ws.direction=g,e.HS.updateListInputs(ws),ws={...Bs,...ws};const Ts=[{result:await e.HS.executeBasedOnTypeAsync(ws,!1,(e=>t.occt.fillets.fillet3DWire(e))),transformers:[]}],gs={shape:[void 0],face:[void 0],distance:[-.2],tolerance:[.1]};let As={};As.shape=ls,e.HS.updateListInputs(As),As={...gs,...As};const Es=[{result:await e.HS.executeBasedOnTypeAsync(As,!1,(e=>t.occt.operations.offset(e))),transformers:[]}],bs={shape:[void 0],index:[0]};let zs={};zs.shape=ls,e.HS.updateListInputs(zs),zs={...bs,...zs};const Ws=[{result:await e.HS.executeBasedOnTypeAsync(zs,!1,(e=>t.occt.shapes.wire.getWire(e))),transformers:[]}];let Cs={};Cs.item=ys,e.HS.updateListInputs(Cs),Cs={...Cs};const Ps=[{result:Cs.item}];let Xs={};Xs.item=fs,e.HS.updateListInputs(Xs),Xs={...Xs};const Ys=[{result:Xs.item}];let Zs={};Zs.start=fs,Zs.end=ys,e.HS.updateListInputs(Zs),Zs={start:[[0,0,0]],end:[[0,1,0]],...Zs};const Ns=[{result:await e.HS.executeBasedOnTypeAsync(Zs,!1,(e=>t.occt.shapes.wire.createLineWire(e))),transformers:[]}];e.HS.drawNodeMeshes(Ns,t);const ks={shape:[void 0],angle:[360],direction:[[0,1,0]],copy:[!1]};let Ms={};Ms.shape=Ts,Ms.angle=ot,Ms.direction=o,e.HS.updateListInputs(Ms),Ms={...ks,...Ms};const Fs=[{result:await e.HS.executeBasedOnTypeAsync(Ms,!1,(e=>t.occt.operations.revolve(e))),transformers:[]}],Ds={shape:[void 0]};let Rs={};Rs.shape=Ls,e.HS.updateListInputs(Rs),Rs={...Ds,...Rs};const js=[{result:await e.HS.executeBasedOnTypeAsync(Rs,!1,(e=>t.occt.shapes.solid.fromClosedShell(e))),transformers:[]}],qs={shape:[void 0],index:[1]};let Vs={};Vs.shape=Ws,e.HS.updateListInputs(Vs),Vs={...qs,...Vs};const Gs=[{result:await e.HS.executeBasedOnTypeAsync(Vs,!1,(e=>t.occt.shapes.edge.getEdge(e))),transformers:[]}],Js={shape:[void 0],index:[0]};let Ks={};Ks.shape=Es,e.HS.updateListInputs(Ks),Ks={...Js,...Ks};const Qs=[{result:await e.HS.executeBasedOnTypeAsync(Ks,!1,(e=>t.occt.shapes.wire.getWire(e))),transformers:[]}],Us={shape:[void 0],translation:[[0,0,0]]};let $s={};$s.shape=Ns,$s.translation=E,e.HS.updateListInputs($s),$s={...Us,...$s};const _s=[{result:await e.HS.executeBasedOnTypeAsync($s,!1,(e=>t.occt.transforms.translate(e))),transformers:[]}],en={shape:[void 0],direction:[[0,1,0]]};let tn={};tn.shape=Fs,tn.direction=Pe,e.HS.updateListInputs(tn),tn={...en,...tn};const sn=[{result:await e.HS.executeBasedOnTypeAsync(tn,!1,(e=>t.occt.operations.extrude(e))),transformers:[]}];let nn={};nn.listElements=js,e.HS.updateListInputs(nn),nn={...nn};const rn=[{result:[nn.listElements?nn.listElements:[]]}],an={shape:[void 0],index:[1]};let on={};on.shape=Qs,e.HS.updateListInputs(on),on={...an,...on};const cn=[{result:await e.HS.executeBasedOnTypeAsync(on,!1,(e=>t.occt.shapes.edge.getEdge(e))),transformers:[]}];let pn={};pn.listElements=Gs,e.HS.updateListInputs(pn),pn={...pn};const un=[{result:[pn.listElements?pn.listElements:[]]}],ln={shape:[void 0]};let dn={};dn.shape=_s,e.HS.updateListInputs(dn),dn={...ln,...dn};const mn=[{result:await e.HS.executeBasedOnTypeAsync(dn,!1,(e=>t.occt.shapes.wire.startPointOnWire(e))),transformers:[]}],yn={shape:[void 0]};let Sn={};Sn.shape=_s,e.HS.updateListInputs(Sn),Sn={...yn,...Sn};const Hn=[{result:await e.HS.executeBasedOnTypeAsync(Sn,!1,(e=>t.occt.shapes.wire.endPointOnWire(e))),transformers:[]}],fn={shapes:[void 0]};let hn={};hn.shapes=un,e.HS.updateListInputs(hn),hn={...fn,...hn};const xn=[{result:await e.HS.executeBasedOnTypeAsync(hn,!1,(e=>t.occt.shapes.wire.combineEdgesAndWiresIntoAWire(e))),transformers:[]}];let vn={};vn.listElements=cn,e.HS.updateListInputs(vn),vn={...vn};const On=[{result:[vn.listElements?vn.listElements:[]]}],In={shape:[void 0],shapes:[void 0],keepEdges:[!1]};let Ln={};Ln.shape=sn,Ln.shapes=Fe,e.HS.updateListInputs(Ln),Ln={...In,...Ln};const Bn=[{result:await e.HS.executeBasedOnTypeAsync(Ln,!1,(e=>t.occt.booleans.difference(e))),transformers:[]}];let wn={};wn.item=Hn,e.HS.updateListInputs(wn),wn={...wn};const Tn=[{result:wn.item}];let gn={};gn.item=mn,e.HS.updateListInputs(gn),gn={...gn};const An=[{result:gn.item}],En={shape:[void 0],shapes:[void 0],keepEdges:[!1]};let bn={};bn.shape=Bn,bn.shapes=rn,e.HS.updateListInputs(bn),bn={...En,...bn};const zn=[{result:await e.HS.executeBasedOnTypeAsync(bn,!1,(e=>t.occt.booleans.difference(e))),transformers:[]}],Wn={shapes:[void 0]};let Cn={};Cn.shapes=On,e.HS.updateListInputs(Cn),Cn={...Wn,...Cn};const Pn=[{result:await e.HS.executeBasedOnTypeAsync(Cn,!1,(e=>t.occt.shapes.wire.combineEdgesAndWiresIntoAWire(e))),transformers:[]}];let Xn={};Xn.listElements=[Ps[0],Tn[0],An[0],Ys[0]],e.HS.updateListInputs(Xn),Xn={...Xn};const Yn=[{result:[Xn.listElements?Xn.listElements:[]]}],Zn={shape:[void 0],origin:[[0,0,0]],normal:[[0,0,1]]};let Nn={};Nn.shape=zn,Nn.normal=m,e.HS.updateListInputs(Nn),Nn={...Zn,...Nn};const kn=[{result:await e.HS.executeBasedOnTypeAsync(Nn,!1,(e=>t.occt.transforms.mirrorAlongNormal(e))),transformers:[]}];let Mn={};Mn.listElements=[xn[0],Pn[0]],e.HS.updateListInputs(Mn),Mn={...Mn};const Fn=[{result:[Mn.listElements?Mn.listElements:[]]}],Dn={points:[void 0]};let Rn={};Rn.points=Yn,e.HS.updateListInputs(Rn),Rn={...Dn,...Rn};const jn=[{result:await e.HS.executeBasedOnTypeAsync(Rn,!1,(e=>t.occt.shapes.wire.createPolylineWire(e))),transformers:[]}];let qn={};qn.listElements=[kn[0],zn[0]],e.HS.updateListInputs(qn),qn={...qn};const Vn=[{result:[qn.listElements?qn.listElements:[]]}],Gn={shapes:[void 0],makeSolid:[!1]};let Jn={};Jn.shapes=Fn,e.HS.updateListInputs(Jn),Jn={...Gn,...Jn};const Kn=[{result:await e.HS.executeBasedOnTypeAsync(Jn,!1,(e=>t.occt.operations.loft(e))),transformers:[]}],Qn={shape:[void 0],radius:[.5],radiusList:[void 0],indexes:[void 0]};let Un={};Un.shape=jn,e.HS.updateListInputs(Un),Un={...Qn,...Un};const $n=[{result:await e.HS.executeBasedOnTypeAsync(Un,!1,(e=>t.occt.fillets.fillet2d(e))),transformers:[]}],_n={shapes:[void 0]};let er={};er.shapes=Vn,e.HS.updateListInputs(er),er={..._n,...er};const tr=[{result:await e.HS.executeBasedOnTypeAsync(er,!1,(e=>t.occt.shapes.compound.makeCompound(e))),transformers:[]}],sr={shape:[void 0],origin:[[0,0,0]],direction:[[0,0,1]]};let nr={};nr.shape=Kn,nr.origin=We,nr.direction=f,e.HS.updateListInputs(nr),nr={...sr,...nr};const rr=[{result:await e.HS.executeBasedOnTypeAsync(nr,!1,(e=>t.occt.transforms.mirror(e))),transformers:[]}],ar={shape:[void 0],angle:[360],direction:[[0,1,0]],copy:[!1]};let or={};or.shape=$n,or.direction=x,e.HS.updateListInputs(or),or={...ar,...or};const ir=[{result:await e.HS.executeBasedOnTypeAsync(or,!1,(e=>t.occt.operations.revolve(e))),transformers:[]}];let cr={};cr.listElements=[ls[0],Es[0],Kn[0],rr[0]],e.HS.updateListInputs(cr),cr={...cr};const pr=[{result:[cr.listElements?cr.listElements:[]]}],ur={shape:[void 0],offset:[-.1]};let lr={};lr.shape=ir,e.HS.updateListInputs(lr),lr={...ur,...lr};const dr=[{result:await e.HS.executeBasedOnTypeAsync(lr,!1,(e=>t.occt.operations.makeThickSolidSimple(e))),transformers:[]}],mr={shape:[void 0],angle:[0],center:[[0,0,0]],axis:[[0,0,1]]};let yr={};yr.shape=tr,yr.angle=$e,yr.axis=k,e.HS.updateListInputs(yr),yr={...mr,...yr};const Sr=[{result:await e.HS.executeBasedOnTypeAsync(yr,!1,(e=>t.occt.transforms.rotateAroundCenter(e))),transformers:[]}],Hr={shapes:[void 0],tolerance:[1e-7]};let fr={};fr.shapes=pr,e.HS.updateListInputs(fr),fr={...Hr,...fr};const hr=[{result:await e.HS.executeBasedOnTypeAsync(fr,!1,(e=>t.occt.shapes.shell.sewFaces(e))),transformers:[]}],xr={entity:[void 0],options:[void 0],babylonMesh:[void 0]};let vr={};vr.entity=dr,vr.options=z,e.HS.updateListInputs(vr),vr={...xr,...vr};await e.HS.executeBasedOnTypeAsync(vr,!1,(e=>t.draw.drawAnyAsync(e)));let Or={};Or.listElements=Sr,e.HS.updateListInputs(Or),Or={...Or};const Ir=[{result:[Or.listElements?Or.listElements:[]]}],Lr={shapes:[void 0]};let Br={};Br.shapes=Ir,e.HS.updateListInputs(Br),Br={...Lr,...Br};const wr=[{result:await e.HS.executeBasedOnTypeAsync(Br,!1,(e=>t.occt.shapes.compound.makeCompound(e))),transformers:[]}];let Tr={};Tr.listElements=[hr[0],ve[0],wr[0]],e.HS.updateListInputs(Tr),Tr={...Tr};const gr=[{result:[Tr.listElements?Tr.listElements:[]]}],Ar={shapes:[void 0]};let Er={};Er.shapes=gr,e.HS.updateListInputs(Er),Er={...Ar,...Er};const br=[{result:await e.HS.executeBasedOnTypeAsync(Er,!1,(e=>t.occt.shapes.compound.makeCompound(e))),transformers:[]}],zr={entity:[void 0],options:[void 0],babylonMesh:[void 0]};let Wr={};Wr.entity=br,Wr.options=ne,e.HS.updateListInputs(Wr),Wr={...zr,...Wr};await e.HS.executeBasedOnTypeAsync(Wr,!1,(e=>t.draw.drawAnyAsync(e)))}(BitByBit,bitbybit,bitbybitRunnerResult,bitbybitRunnerInputs,Bit);\"}' + return '{\"type\":\"rete\",\"version\":\"1.4.1\",\"script\":\"!async function(e,t,s,n,r){let a={};a={x:[0],y:[0],z:[1],...a};const o=[{result:e.HS.executeBasedOnType(a,!1,(e=>t.vector.vectorXYZ(e))),transformers:[]}];let i={};i={text:[\\"[true,false]\\"],...i};const c=[{result:e.HS.executeBasedOnType(i,!1,(e=>t.json.parse(e))),transformers:[]}];let p={};p={text:[\\"[false,true]\\"],...p};const u=[{result:e.HS.executeBasedOnType(p,!1,(e=>t.json.parse(e))),transformers:[]}],l=[{result:[5],transformers:[]}];let d={};d={x:[1],y:[0],z:[0],...d};const m=[{result:e.HS.executeBasedOnType(d,!1,(e=>t.vector.vectorXYZ(e))),transformers:[]}],y=[{result:[12],transformers:[]}],S=[{result:[7],transformers:[]}];let H={};H={x:[0],y:[1],z:[0],...H};const f=[{result:e.HS.executeBasedOnType(H,!1,(e=>t.vector.vectorXYZ(e))),transformers:[]}];let h={};h={x:[0],y:[0],z:[1],...h};const x=[{result:e.HS.executeBasedOnType(h,!1,(e=>t.vector.vectorXYZ(e))),transformers:[]}];let v={};v={number:[.4],...v};const O=[{result:e.HS.executeBasedOnType(v,!1,(e=>t.math.number(e))),transformers:[]}];let I={};I={x:[0],y:[0],z:[-1],...I};const L=[{result:e.HS.executeBasedOnType(I,!1,(e=>t.vector.vectorXYZ(e))),transformers:[]}];let B={};B={x:[0],y:[0],z:[-2],...B};const w=[{result:e.HS.executeBasedOnType(B,!1,(e=>t.vector.vectorXYZ(e))),transformers:[]}];let T={};T={x:[0],y:[0],z:[1],...T};const g=[{result:e.HS.executeBasedOnType(T,!1,(e=>t.vector.vectorXYZ(e))),transformers:[]}];let A={};A={x:[0],y:[1.5],z:[0],...A};const E=[{result:e.HS.executeBasedOnType(A,!1,(e=>t.vector.vectorXYZ(e))),transformers:[]}];let b={};b={...{faceOpacity:[.5],edgeOpacity:[.5],edgeColour:[\\"#000000\\"],faceColour:[\\"#212121\\"],vertexColour:[\\"#ff00ff\\"],faceMaterial:[void 0],edgeWidth:[2],vertexSize:[.03],drawEdges:[!0],drawFaces:[!0],drawVertices:[!1],precision:[.02],drawEdgeIndexes:[!1],edgeIndexHeight:[.06],edgeIndexColour:[\\"ff00ff\\"],drawFaceIndexes:[!1],faceIndexHeight:[.06],faceIndexColour:[\\"#0000ff\\"]},...b};const z=[{result:e.HS.executeBasedOnType(b,!1,(e=>t.draw.optionsOcctShape(e))),transformers:[]}];let W={};W={name:[\\"Custom Material\\"],baseColor:[\\"#9c9cba\\"],emissiveColor:[\\"#000000\\"],metallic:[.9],roughness:[.1],alpha:[1],backFaceCulling:[!1],zOffset:[2],...W};const C=[{result:e.HS.executeBasedOnType(W,!1,(e=>t.babylon.material.pbrMetallicRoughness.create(e))),transformers:[]}];let P={};P={x:[0],y:[0],z:[-1],...P};const X=[{result:e.HS.executeBasedOnType(P,!1,(e=>t.vector.vectorXYZ(e))),transformers:[]}];let Y={};Y={x:[0],y:[0],z:[-1.5],...Y};const Z=[{result:e.HS.executeBasedOnType(Y,!1,(e=>t.vector.vectorXYZ(e))),transformers:[]}];let N={};N={x:[0],y:[0],z:[1],...N};const k=[{result:e.HS.executeBasedOnType(N,!1,(e=>t.vector.vectorXYZ(e))),transformers:[]}];let M={};M={skybox:[\\"city\\"],size:[1e3],blur:[.4],environmentIntensity:[.4],...M};e.HS.executeBasedOnType(M,!1,(e=>t.babylon.scene.enableSkybox(e)));let F={number:[{result:[20],transformers:[]}]};e.HS.updateListInputs(F),F={number:[20],...F};const D=[{result:e.HS.executeBasedOnType(F,!1,(e=>t.math.number(e))),transformers:[]}];let R={};R.y=y,e.HS.updateListInputs(R),R={x:[0],y:[0],z:[0],...R};const j=[{result:e.HS.executeBasedOnType(R,!1,(e=>t.vector.vectorXYZ(e))),transformers:[]}];let q={};q.item=y,e.HS.updateListInputs(q),q={...q};const V=[{result:q.item}];let G={};G.first=S,e.HS.updateListInputs(G),G={first:[1],second:[-2],operation:[\\"divide\\"],...G};const J=[{result:e.HS.executeBasedOnType(G,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let K={};K.first=S,e.HS.updateListInputs(K),K={first:[1],second:[-4],operation:[\\"divide\\"],...K};const Q=[{result:e.HS.executeBasedOnType(K,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let U={};U.first=y,U.second=O,e.HS.updateListInputs(U),U={first:[1],second:[.4],operation:[\\"add\\"],...U};const $=[{result:e.HS.executeBasedOnType(U,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let _={};_.item=S,e.HS.updateListInputs(_),_={..._};const ee=[{result:_.item}],te={faceOpacity:[1],edgeOpacity:[1],edgeColour:[\\"#1c1c1c\\"],faceColour:[\\"#bdbdbd\\"],vertexColour:[\\"#ff00ff\\"],faceMaterial:[void 0],edgeWidth:[2],vertexSize:[.03],drawEdges:[!0],drawFaces:[!0],drawVertices:[!1],precision:[.01],drawEdgeIndexes:[!1],edgeIndexHeight:[.06],edgeIndexColour:[\\"ff00ff\\"],drawFaceIndexes:[!1],faceIndexHeight:[.06],faceIndexColour:[\\"#0000ff\\"]};let se={};se.faceMaterial=C,e.HS.updateListInputs(se),se={...te,...se};const ne=[{result:e.HS.executeBasedOnType(se,!1,(e=>t.draw.optionsOcctShape(e))),transformers:[]}];let re={};re.center=Z,re.direction=X,e.HS.updateListInputs(re),re={radius:[3],height:[1.9],center:[[0,0,0]],direction:[[0,1,0]],...re};const ae=[{result:await e.HS.executeBasedOnTypeAsync(re,!1,(e=>t.occt.shapes.solid.createCylinder(e))),transformers:[]}];let oe={};oe.y=$,e.HS.updateListInputs(oe),oe={x:[0],y:[12],z:[0],...oe};const ie=[{result:e.HS.executeBasedOnType(oe,!1,(e=>t.vector.vectorXYZ(e))),transformers:[]}];let ce={};ce.first=D,e.HS.updateListInputs(ce),ce={first:[1],second:[3],operation:[\\"multiply\\"],...ce};const pe=[{result:e.HS.executeBasedOnType(ce,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let ue={};ue.first=V,ue.second=O,e.HS.updateListInputs(ue),ue={first:[1],second:[.4],operation:[\\"add\\"],...ue};const le=[{result:e.HS.executeBasedOnType(ue,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let de={};de.first=V,de.second=O,e.HS.updateListInputs(de),de={first:[1],second:[.4],operation:[\\"subtract\\"],...de};const me=[{result:e.HS.executeBasedOnType(de,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let ye={};ye.first=ee,e.HS.updateListInputs(ye),ye={first:[1],second:[-.2],operation:[\\"multiply\\"],...ye};const Se=[{result:e.HS.executeBasedOnType(ye,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let He={};He.second=D,e.HS.updateListInputs(He),He={first:[360],second:[1],operation:[\\"divide\\"],...He};const fe=[{result:e.HS.executeBasedOnType(He,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}],he={shape:[void 0],radius:[.3],radiusList:[void 0],indexes:[void 0]};let xe={};xe.shape=ae,e.HS.updateListInputs(xe),xe={...he,...xe};const ve=[{result:await e.HS.executeBasedOnTypeAsync(xe,!1,(e=>t.occt.fillets.filletEdges(e))),transformers:[]}];let Oe={};Oe.start=L,Oe.end=ie,e.HS.updateListInputs(Oe),Oe={start:[[0,0,0]],end:[[0,1,0]],...Oe};const Ie=[{result:await e.HS.executeBasedOnTypeAsync(Oe,!1,(e=>t.occt.shapes.wire.createLineWire(e))),transformers:[]}];let Le={};Le.second=pe,e.HS.updateListInputs(Le),Le={first:[360],second:[1],operation:[\\"divide\\"],...Le};const Be=[{result:e.HS.executeBasedOnType(Le,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let we={};we.start=w,we.end=ie,e.HS.updateListInputs(we),we={start:[[0,0,0]],end:[[0,1,0]],...we};const Te=[{result:await e.HS.executeBasedOnTypeAsync(we,!1,(e=>t.occt.shapes.wire.createLineWire(e))),transformers:[]}];let ge={};ge.y=le,e.HS.updateListInputs(ge),ge={x:[0],y:[0],z:[.05],...ge};const Ae=[{result:e.HS.executeBasedOnType(ge,!1,(e=>t.vector.vectorXYZ(e))),transformers:[]}];let Ee={};Ee.y=me,Ee.z=Q,e.HS.updateListInputs(Ee),Ee={x:[0],y:[0],z:[-1],...Ee};const be=[{result:e.HS.executeBasedOnType(Ee,!1,(e=>t.vector.vectorXYZ(e))),transformers:[]}];let ze={};ze.y=me,ze.z=J,e.HS.updateListInputs(ze),ze={x:[0],y:[0],z:[0],...ze};const We=[{result:e.HS.executeBasedOnType(ze,!1,(e=>t.vector.vectorXYZ(e))),transformers:[]}];let Ce={};Ce.z=Se,e.HS.updateListInputs(Ce),Ce={x:[0],y:[0],z:[0],...Ce};const Pe=[{result:e.HS.executeBasedOnType(Ce,!1,(e=>t.vector.vectorXYZ(e))),transformers:[]}];let Xe={};Xe.step=fe,e.HS.updateListInputs(Xe),Xe={step:[.1],min:[0],max:[360],...Xe};const Ye=e.HS.executeBasedOnType(Xe,!1,(e=>t.vector.span(e))),Ze=[];for(let e=0;e<1;e++)Ze.push({type:\\"flat\\"});const Ne=[{result:Ye,transformers:Ze}];let ke={};ke.first=Se,e.HS.updateListInputs(ke),ke={first:[2],second:[-2],operation:[\\"multiply\\"],...ke};e.HS.executeBasedOnType(ke,!1,(e=>t.math.twoNrOperation(e)));let Me={};Me.listElements=ve,e.HS.updateListInputs(Me),Me={...Me};const Fe=[{result:[Me.listElements?Me.listElements:[]]}],De={shape:[void 0],axis:[[0,0,1]],angle:[0]};let Re={};Re.shape=Ie,Re.axis=o,Re.angle=Be,e.HS.updateListInputs(Re),Re={...De,...Re};const je=[{result:await e.HS.executeBasedOnTypeAsync(Re,!1,(e=>t.occt.transforms.rotate(e))),transformers:[]}];let qe={};qe.first=Be,e.HS.updateListInputs(qe),qe={first:[1],second:[.4],operation:[\\"multiply\\"],...qe};const Ve=[{result:e.HS.executeBasedOnType(qe,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let Ge={};Ge.first=Be,e.HS.updateListInputs(Ge),Ge={first:[1],second:[.6],operation:[\\"multiply\\"],...Ge};const Je=[{result:e.HS.executeBasedOnType(Ge,!1,(e=>t.math.twoNrOperation(e))),transformers:[]}];let Ke={};Ke.listElements=[Ae[0],j[0],be[0],We[0]],e.HS.updateListInputs(Ke),Ke={...Ke};const Qe=[{result:[Ke.listElements?Ke.listElements:[]]}];let Ue={};Ue.item=Ne,e.HS.updateListInputs(Ue),Ue={...Ue};const $e=[{result:Ue.item}],_e={shape:[void 0],nrOfDivisions:[11],removeStartPoint:[!1],removeEndPoint:[!1]};let et={};et.shape=je,et.nrOfDivisions=l,e.HS.updateListInputs(et),et={..._e,...et};const tt=[{result:await e.HS.executeBasedOnTypeAsync(et,!1,(e=>t.occt.shapes.wire.divideWireByEqualDistanceToPoints(e))),transformers:[]}],st={shape:[void 0],axis:[[0,0,1]],angle:[0]};let nt={};nt.shape=Te,nt.axis=o,nt.angle=[Ve[0],Je[0]],e.HS.updateListInputs(nt),nt={...st,...nt};const rt=[{result:await e.HS.executeBasedOnTypeAsync(nt,!1,(e=>t.occt.transforms.rotate(e))),transformers:[]}];let at={};at.number=Ve,e.HS.updateListInputs(at),at={number:[1],operation:[\\"negate\\"],...at};const ot=[{result:e.HS.executeBasedOnType(at,!1,(e=>t.math.oneNrOperation(e))),transformers:[]}],it={points:[void 0]};let ct={};ct.points=Qe,e.HS.updateListInputs(ct),ct={...it,...ct};const pt=[{result:await e.HS.executeBasedOnTypeAsync(ct,!1,(e=>t.occt.shapes.wire.createPolylineWire(e))),transformers:[]}];e.HS.drawNodeMeshes(pt,t);const ut={list:[void 0],pattern:[[!0,!0,!1]]};let lt={};lt.list=tt,lt.pattern=u,e.HS.updateListInputs(lt),lt={...ut,...lt};const dt=[{result:e.HS.executeBasedOnType(lt,!0,(e=>t.lists.getByPattern(e))),transformers:[]}];let mt={};mt.listElements=rt,e.HS.updateListInputs(mt),mt={...mt};const yt=[{result:[mt.listElements?mt.listElements:[]]}],St={shape:[void 0],origin:[[0,0,0]],direction:[[0,0,1]]};let Ht={};Ht.shape=pt,Ht.origin=We,Ht.direction=f,e.HS.updateListInputs(Ht),Ht={...St,...Ht};const ft=[{result:await e.HS.executeBasedOnTypeAsync(Ht,!1,(e=>t.occt.transforms.mirror(e))),transformers:[]}],ht={shape:[void 0]};let xt={};xt.shape=pt,e.HS.updateListInputs(xt),xt={...ht,...xt};const vt=await e.HS.executeBasedOnTypeAsync(xt,!1,(e=>t.occt.shapes.edge.getCornerPointsOfEdgesForShape(e))),Ot=[];for(let e=0;e<1;e++)Ot.push({type:\\"flat\\"});const It=[{result:vt,transformers:Ot}],Lt={list:[void 0],index:[0],clone:[!0]};let Bt={};Bt.list=yt,e.HS.updateListInputs(Bt),Bt={...Lt,...Bt};const wt=[{result:e.HS.executeBasedOnType(Bt,!1,(e=>t.lists.getItem(e))),transformers:[]}],Tt={shape:[void 0]};let gt={};gt.shape=ft,e.HS.updateListInputs(gt),gt={...Tt,...gt};const At=[{result:await e.HS.executeBasedOnTypeAsync(gt,!1,(e=>t.occt.shapes.edge.getCornerPointsOfEdgesForShape(e))),transformers:[]}],Et={shape:[void 0],nrOfDivisions:[11],removeStartPoint:[!1],removeEndPoint:[!1]};let bt={};bt.shape=wt,bt.nrOfDivisions=l,e.HS.updateListInputs(bt),bt={...Et,...bt};const zt=[{result:await e.HS.executeBasedOnTypeAsync(bt,!1,(e=>t.occt.shapes.wire.divideWireByEqualDistanceToPoints(e))),transformers:[]}],Wt={list:[void 0],index:[3],clone:[!0]};let Ct={};Ct.list=At,e.HS.updateListInputs(Ct),Ct={...Wt,...Ct};const Pt=[{result:e.HS.executeBasedOnType(Ct,!1,(e=>t.lists.removeItemAtIndex(e))),transformers:[]}],Xt={list:[void 0],pattern:[[!0,!0,!1]]};let Yt={};Yt.list=zt,Yt.pattern=c,e.HS.updateListInputs(Yt),Yt={...Xt,...Yt};const Zt=[{result:e.HS.executeBasedOnType(Yt,!1,(e=>t.lists.getByPattern(e))),transformers:[]}],Nt={list:[void 0],clone:[!0]};let kt={};kt.list=Pt,e.HS.updateListInputs(kt),kt={...Nt,...kt};const Mt=e.HS.executeBasedOnType(kt,!1,(e=>t.lists.reverse(e))),Ft=[];for(let e=0;e<1;e++)Ft.push({type:\\"flat\\"});const Dt=[{result:Mt,transformers:Ft}];let Rt={};Rt.listElements=[Zt[0],dt[0]],e.HS.updateListInputs(Rt),Rt={...Rt};const jt=[{result:[Rt.listElements?Rt.listElements:[]]}];let qt={};qt.listElements=[It[0],Dt[0]],e.HS.updateListInputs(qt),qt={...qt};const Vt=[{result:[qt.listElements?qt.listElements:[]]}],Gt={list:[void 0],clone:[!0]};let Jt={};Jt.list=jt,e.HS.updateListInputs(Jt),Jt={...Gt,...Jt};const Kt=e.HS.executeBasedOnType(Jt,!1,(e=>t.lists.flipLists(e))),Qt=[];for(let e=0;e<2;e++)Qt.push({type:\\"flat\\"});const Ut=[{result:Kt,transformers:Qt}],$t={points:[void 0]};let _t={};_t.points=Vt,e.HS.updateListInputs(_t),_t={...$t,..._t};const es=[{result:await e.HS.executeBasedOnTypeAsync(_t,!1,(e=>t.occt.shapes.wire.createPolylineWire(e))),transformers:[]}];let ts={};ts.listElements=Ut,e.HS.updateListInputs(ts),ts={...ts};const ss=[{result:[ts.listElements?ts.listElements:[]]}],ns={shape:[void 0],radius:[.3],radiusList:[void 0],indexes:[void 0]};let rs={};rs.shape=es,e.HS.updateListInputs(rs),rs={...ns,...rs};const as=[{result:await e.HS.executeBasedOnTypeAsync(rs,!1,(e=>t.occt.fillets.fillet2d(e))),transformers:[]}],os={points:[void 0]};let is={};is.points=ss,e.HS.updateListInputs(is),is={...os,...is};const cs=[{result:await e.HS.executeBasedOnTypeAsync(is,!1,(e=>t.occt.shapes.wire.createPolylineWire(e))),transformers:[]}],ps={shape:[void 0],angle:[360],direction:[[0,1,0]],copy:[!1]};let us={};us.shape=as,us.direction=x,e.HS.updateListInputs(us),us={...ps,...us};const ls=[{result:await e.HS.executeBasedOnTypeAsync(us,!1,(e=>t.occt.operations.revolve(e))),transformers:[]}],ds={shape:[void 0]};let ms={};ms.shape=as,e.HS.updateListInputs(ms),ms={...ds,...ms};const ys=[{result:await e.HS.executeBasedOnTypeAsync(ms,!1,(e=>t.occt.shapes.wire.startPointOnWire(e))),transformers:[]}],Ss={shape:[void 0]};let Hs={};Hs.shape=as,e.HS.updateListInputs(Hs),Hs={...Ss,...Hs};const fs=[{result:await e.HS.executeBasedOnTypeAsync(Hs,!1,(e=>t.occt.shapes.wire.endPointOnWire(e))),transformers:[]}],hs={shape:[void 0]};let xs={};xs.shape=as,e.HS.updateListInputs(xs),xs={...hs,...xs};const vs=[{result:await e.HS.executeBasedOnTypeAsync(xs,!1,(e=>t.occt.shapes.wire.closeOpenWire(e))),transformers:[]}],Os={shape:[void 0],angle:[360],direction:[[0,1,0]],copy:[!1]};let Is={};Is.shape=vs,Is.direction=x,e.HS.updateListInputs(Is),Is={...Os,...Is};const Ls=[{result:await e.HS.executeBasedOnTypeAsync(Is,!1,(e=>t.occt.operations.revolve(e))),transformers:[]}],Bs={shape:[void 0],radius:[1],radiusList:[void 0],indexes:[void 0],direction:[[0,1,0]]};let ws={};ws.shape=cs,ws.direction=g,e.HS.updateListInputs(ws),ws={...Bs,...ws};const Ts=[{result:await e.HS.executeBasedOnTypeAsync(ws,!1,(e=>t.occt.fillets.fillet3DWire(e))),transformers:[]}],gs={shape:[void 0],face:[void 0],distance:[-.2],tolerance:[.1]};let As={};As.shape=ls,e.HS.updateListInputs(As),As={...gs,...As};const Es=[{result:await e.HS.executeBasedOnTypeAsync(As,!1,(e=>t.occt.operations.offset(e))),transformers:[]}],bs={shape:[void 0],index:[0]};let zs={};zs.shape=ls,e.HS.updateListInputs(zs),zs={...bs,...zs};const Ws=[{result:await e.HS.executeBasedOnTypeAsync(zs,!1,(e=>t.occt.shapes.wire.getWire(e))),transformers:[]}];let Cs={};Cs.item=ys,e.HS.updateListInputs(Cs),Cs={...Cs};const Ps=[{result:Cs.item}];let Xs={};Xs.item=fs,e.HS.updateListInputs(Xs),Xs={...Xs};const Ys=[{result:Xs.item}];let Zs={};Zs.start=fs,Zs.end=ys,e.HS.updateListInputs(Zs),Zs={start:[[0,0,0]],end:[[0,1,0]],...Zs};const Ns=[{result:await e.HS.executeBasedOnTypeAsync(Zs,!1,(e=>t.occt.shapes.wire.createLineWire(e))),transformers:[]}];e.HS.drawNodeMeshes(Ns,t);const ks={shape:[void 0],angle:[360],direction:[[0,1,0]],copy:[!1]};let Ms={};Ms.shape=Ts,Ms.angle=ot,Ms.direction=o,e.HS.updateListInputs(Ms),Ms={...ks,...Ms};const Fs=[{result:await e.HS.executeBasedOnTypeAsync(Ms,!1,(e=>t.occt.operations.revolve(e))),transformers:[]}],Ds={shape:[void 0]};let Rs={};Rs.shape=Ls,e.HS.updateListInputs(Rs),Rs={...Ds,...Rs};const js=[{result:await e.HS.executeBasedOnTypeAsync(Rs,!1,(e=>t.occt.shapes.solid.fromClosedShell(e))),transformers:[]}],qs={shape:[void 0],index:[1]};let Vs={};Vs.shape=Ws,e.HS.updateListInputs(Vs),Vs={...qs,...Vs};const Gs=[{result:await e.HS.executeBasedOnTypeAsync(Vs,!1,(e=>t.occt.shapes.edge.getEdge(e))),transformers:[]}],Js={shape:[void 0],index:[0]};let Ks={};Ks.shape=Es,e.HS.updateListInputs(Ks),Ks={...Js,...Ks};const Qs=[{result:await e.HS.executeBasedOnTypeAsync(Ks,!1,(e=>t.occt.shapes.wire.getWire(e))),transformers:[]}],Us={shape:[void 0],translation:[[0,0,0]]};let $s={};$s.shape=Ns,$s.translation=E,e.HS.updateListInputs($s),$s={...Us,...$s};const _s=[{result:await e.HS.executeBasedOnTypeAsync($s,!1,(e=>t.occt.transforms.translate(e))),transformers:[]}],en={shape:[void 0],direction:[[0,1,0]]};let tn={};tn.shape=Fs,tn.direction=Pe,e.HS.updateListInputs(tn),tn={...en,...tn};const sn=[{result:await e.HS.executeBasedOnTypeAsync(tn,!1,(e=>t.occt.operations.extrude(e))),transformers:[]}];let nn={};nn.listElements=js,e.HS.updateListInputs(nn),nn={...nn};const rn=[{result:[nn.listElements?nn.listElements:[]]}],an={shape:[void 0],index:[1]};let on={};on.shape=Qs,e.HS.updateListInputs(on),on={...an,...on};const cn=[{result:await e.HS.executeBasedOnTypeAsync(on,!1,(e=>t.occt.shapes.edge.getEdge(e))),transformers:[]}];let pn={};pn.listElements=Gs,e.HS.updateListInputs(pn),pn={...pn};const un=[{result:[pn.listElements?pn.listElements:[]]}],ln={shape:[void 0]};let dn={};dn.shape=_s,e.HS.updateListInputs(dn),dn={...ln,...dn};const mn=[{result:await e.HS.executeBasedOnTypeAsync(dn,!1,(e=>t.occt.shapes.wire.startPointOnWire(e))),transformers:[]}],yn={shape:[void 0]};let Sn={};Sn.shape=_s,e.HS.updateListInputs(Sn),Sn={...yn,...Sn};const Hn=[{result:await e.HS.executeBasedOnTypeAsync(Sn,!1,(e=>t.occt.shapes.wire.endPointOnWire(e))),transformers:[]}],fn={shapes:[void 0]};let hn={};hn.shapes=un,e.HS.updateListInputs(hn),hn={...fn,...hn};const xn=[{result:await e.HS.executeBasedOnTypeAsync(hn,!1,(e=>t.occt.shapes.wire.combineEdgesAndWiresIntoAWire(e))),transformers:[]}];let vn={};vn.listElements=cn,e.HS.updateListInputs(vn),vn={...vn};const On=[{result:[vn.listElements?vn.listElements:[]]}],In={shape:[void 0],shapes:[void 0],keepEdges:[!1]};let Ln={};Ln.shape=sn,Ln.shapes=Fe,e.HS.updateListInputs(Ln),Ln={...In,...Ln};const Bn=[{result:await e.HS.executeBasedOnTypeAsync(Ln,!1,(e=>t.occt.booleans.difference(e))),transformers:[]}];let wn={};wn.item=Hn,e.HS.updateListInputs(wn),wn={...wn};const Tn=[{result:wn.item}];let gn={};gn.item=mn,e.HS.updateListInputs(gn),gn={...gn};const An=[{result:gn.item}],En={shape:[void 0],shapes:[void 0],keepEdges:[!1]};let bn={};bn.shape=Bn,bn.shapes=rn,e.HS.updateListInputs(bn),bn={...En,...bn};const zn=[{result:await e.HS.executeBasedOnTypeAsync(bn,!1,(e=>t.occt.booleans.difference(e))),transformers:[]}],Wn={shapes:[void 0]};let Cn={};Cn.shapes=On,e.HS.updateListInputs(Cn),Cn={...Wn,...Cn};const Pn=[{result:await e.HS.executeBasedOnTypeAsync(Cn,!1,(e=>t.occt.shapes.wire.combineEdgesAndWiresIntoAWire(e))),transformers:[]}];let Xn={};Xn.listElements=[Ps[0],Tn[0],An[0],Ys[0]],e.HS.updateListInputs(Xn),Xn={...Xn};const Yn=[{result:[Xn.listElements?Xn.listElements:[]]}],Zn={shape:[void 0],origin:[[0,0,0]],normal:[[0,0,1]]};let Nn={};Nn.shape=zn,Nn.normal=m,e.HS.updateListInputs(Nn),Nn={...Zn,...Nn};const kn=[{result:await e.HS.executeBasedOnTypeAsync(Nn,!1,(e=>t.occt.transforms.mirrorAlongNormal(e))),transformers:[]}];let Mn={};Mn.listElements=[xn[0],Pn[0]],e.HS.updateListInputs(Mn),Mn={...Mn};const Fn=[{result:[Mn.listElements?Mn.listElements:[]]}],Dn={points:[void 0]};let Rn={};Rn.points=Yn,e.HS.updateListInputs(Rn),Rn={...Dn,...Rn};const jn=[{result:await e.HS.executeBasedOnTypeAsync(Rn,!1,(e=>t.occt.shapes.wire.createPolylineWire(e))),transformers:[]}];let qn={};qn.listElements=[kn[0],zn[0]],e.HS.updateListInputs(qn),qn={...qn};const Vn=[{result:[qn.listElements?qn.listElements:[]]}],Gn={shapes:[void 0],makeSolid:[!1]};let Jn={};Jn.shapes=Fn,e.HS.updateListInputs(Jn),Jn={...Gn,...Jn};const Kn=[{result:await e.HS.executeBasedOnTypeAsync(Jn,!1,(e=>t.occt.operations.loft(e))),transformers:[]}],Qn={shape:[void 0],radius:[.5],radiusList:[void 0],indexes:[void 0]};let Un={};Un.shape=jn,e.HS.updateListInputs(Un),Un={...Qn,...Un};const $n=[{result:await e.HS.executeBasedOnTypeAsync(Un,!1,(e=>t.occt.fillets.fillet2d(e))),transformers:[]}],_n={shapes:[void 0]};let er={};er.shapes=Vn,e.HS.updateListInputs(er),er={..._n,...er};const tr=[{result:await e.HS.executeBasedOnTypeAsync(er,!1,(e=>t.occt.shapes.compound.makeCompound(e))),transformers:[]}],sr={shape:[void 0],origin:[[0,0,0]],direction:[[0,0,1]]};let nr={};nr.shape=Kn,nr.origin=We,nr.direction=f,e.HS.updateListInputs(nr),nr={...sr,...nr};const rr=[{result:await e.HS.executeBasedOnTypeAsync(nr,!1,(e=>t.occt.transforms.mirror(e))),transformers:[]}],ar={shape:[void 0],angle:[360],direction:[[0,1,0]],copy:[!1]};let or={};or.shape=$n,or.direction=x,e.HS.updateListInputs(or),or={...ar,...or};const ir=[{result:await e.HS.executeBasedOnTypeAsync(or,!1,(e=>t.occt.operations.revolve(e))),transformers:[]}];let cr={};cr.listElements=[ls[0],Es[0],Kn[0],rr[0]],e.HS.updateListInputs(cr),cr={...cr};const pr=[{result:[cr.listElements?cr.listElements:[]]}],ur={shape:[void 0],offset:[-.1]};let lr={};lr.shape=ir,e.HS.updateListInputs(lr),lr={...ur,...lr};const dr=[{result:await e.HS.executeBasedOnTypeAsync(lr,!1,(e=>t.occt.operations.makeThickSolidSimple(e))),transformers:[]}],mr={shape:[void 0],angle:[0],center:[[0,0,0]],axis:[[0,0,1]]};let yr={};yr.shape=tr,yr.angle=$e,yr.axis=k,e.HS.updateListInputs(yr),yr={...mr,...yr};const Sr=[{result:await e.HS.executeBasedOnTypeAsync(yr,!1,(e=>t.occt.transforms.rotateAroundCenter(e))),transformers:[]}],Hr={shapes:[void 0],tolerance:[1e-7]};let fr={};fr.shapes=pr,e.HS.updateListInputs(fr),fr={...Hr,...fr};const hr=[{result:await e.HS.executeBasedOnTypeAsync(fr,!1,(e=>t.occt.shapes.shell.sewFaces(e))),transformers:[]}],xr={entity:[void 0],options:[void 0],babylonMesh:[void 0]};let vr={};vr.entity=dr,vr.options=z,e.HS.updateListInputs(vr),vr={...xr,...vr};await e.HS.executeBasedOnTypeAsync(vr,!1,(e=>t.draw.drawAnyAsync(e)));let Or={};Or.listElements=Sr,e.HS.updateListInputs(Or),Or={...Or};const Ir=[{result:[Or.listElements?Or.listElements:[]]}],Lr={shapes:[void 0]};let Br={};Br.shapes=Ir,e.HS.updateListInputs(Br),Br={...Lr,...Br};const wr=[{result:await e.HS.executeBasedOnTypeAsync(Br,!1,(e=>t.occt.shapes.compound.makeCompound(e))),transformers:[]}];let Tr={};Tr.listElements=[hr[0],ve[0],wr[0]],e.HS.updateListInputs(Tr),Tr={...Tr};const gr=[{result:[Tr.listElements?Tr.listElements:[]]}],Ar={shapes:[void 0]};let Er={};Er.shapes=gr,e.HS.updateListInputs(Er),Er={...Ar,...Er};const br=[{result:await e.HS.executeBasedOnTypeAsync(Er,!1,(e=>t.occt.shapes.compound.makeCompound(e))),transformers:[]}],zr={entity:[void 0],options:[void 0],babylonMesh:[void 0]};let Wr={};Wr.entity=br,Wr.options=ne,e.HS.updateListInputs(Wr),Wr={...zr,...Wr};await e.HS.executeBasedOnTypeAsync(Wr,!1,(e=>t.draw.drawAnyAsync(e)))}(BitByBit,bitbybit,bitbybitRunnerResult,bitbybitRunnerInputs,Bit);\"}' };