{"repo":"zalo/CascadeStudio","free":true,"listed":false,"github":"https://github.com/zalo/CascadeStudio","clone":"git clone https://github.com/zalo/CascadeStudio.git","description":"A Full Live-Scripted CAD Kernel in the Browser","language":"JavaScript","stars":1446,"topics":["brep","cad","modeling","opencascade","scad"],"license":"MIT","category":"cad_tool","readme_excerpt":"<p align=\"center\">\n  <a href=\"https://zalo.github.io/CascadeStudio/?code=bZDLCsIwEEX3%2FYqhqwhRUjWCiCv9AnXhAxehHWkgtNKmoH%2FvTGsflGYRSOaek8w49JDmDk8msVUJezg7m2AhwuYilLBSIGHJ21rNdgED5TvFAoEXAfVB6LYYf53NSHHn4uF%2FEP0bLFMSfFHhiLgxccq98SgeSkZSPSVsKdspR8B1CFB8EgguhclKV2fmWkuguubg0b5e9PMsRhFwK01XEh6dvhfdBs7nbGyNSNlaL%2Fjxq6MID6aMTYI8wA1VF5FmbIJaDqmzrxKbhzTsAfUD&gui=VY4xC8IwFIT%2Fy5tjSDMIzeIg6KRIEBdxeCQPG0gTaRIcxP9uRAztTffd3XAvMHF8xEAhH3EkUGAwGbR0cfQEBgdKg6YESvCukcZwr9Or4KJj8sbg7HwGtZLiZ%2F%2F9N5Ci9jvnPeUNqDwVYrBFM1Cj%2FRRLsCePYZ4520CjdaVekD3vF1q%2FPw%3D%3D\"><img src=\"./packages/cascade-studio/icon/CascadeStudioBanner-1257x519.png\" href></a>\n</p>\n<p align=\"center\">\n  <a href=\"https://github.com/zalo/CascadeStudio/deployments/activity_log?environment=github-pages\">\n      <img src=\"https://img.shields.io/github/deployments/zalo/CascadeStudio/github-pages?label=Github%20Pages%20Deployment\" title=\"Github Pages Deployment\"></a>\n  <a href=\"https://github.com/zalo/CascadeStudio/deployments/activity_log?environment=Production\">\n      <img src=\"https://img.shields.io/github/deployments/zalo/CascadeStudio/Production?label=Vercel%20Deployment\" title=\"Vercel Deployment\"></a>\n  <a href=\"https://github.com/zalo/CascadeStudio/commits/master\">\n      <img src=\"https://img.shields.io/github/last-commit/zalo/CascadeStudio\" title=\"Last Commit Date\"></a>\n  <a href=\"https://github.com/zalo/CascadeStudio/blob/master/LICENSE\">\n      <img src=\"https://img.shields.io/badge/license-MIT-brightgreen\" title=\"License: MIT\"></a>\n</p>\n\n## A Full Live-Scripted CAD Kernel and IDE in the Browser.\n\nUse code to create 3D Models with features ranging from simple primitives + CSG to complex revolves, sweeps, and fillets. Cascade Studio exposes the full power of the [OpenCascade](https://github.com/Open-Cascade-SAS/OCCT) kernel (OCCT 8.0), while providing a concise standard library for simple operations.\n\nWrite in JavaScript or OpenSCAD, visualize in real-time, and export to `.step`, `.stl`, or `.obj`. Copy the URL to share your model with anyone.\n\n## Features\n\n - **Powerful Standard Library** for primitives, booleans, sweeps, lofts, fillets, and more\n - **Sketch API** with plane parameter (`new Sketch([x,y], 'XZ')`) for drawing in XY, XZ, or YZ planes\n - **Selector API** for querying edges and faces: `Edges(shape).parallel([0,0,1]).max([0,0,1]).indices()`\n - **Measurement Functions**: `Volume()`, `SurfaceArea()`, `CenterOfMass()`\n - **Dual Editor Modes**: JavaScript and OpenSCAD\n - **IntelliSense** autocomplete with full TypeScript definitions and JSDoc\n - **Modeling History Timeline** to scrub through build steps in the 3D viewport\n - **Agent API** (`window.CascadeAPI`) for programmatic control via Playwright or developer tooling\n - **Reusable CAD Engine** — `cascade-core` npm package for embedding CAD modeling in any web app\n - Access to the full OpenCASCADE kernel via the `oc.` namespace\n - Automatic caching acceleration of standard library operations\n - `.STEP`/`.IGES`/`.STL` import and `.STEP`/`.STL`/`.OBJ` export\n - URL serialization of code for easy sharing\n - Save/Load projects to preserve code, layout, and imported files\n - Integrated GUI system (sliders, checkboxes, buttons) via Tweakpane\n - Responsive layout with mobile support\n - Installable for offline use as a Progressive Web App\n - **Free and open source under the MIT License**\n\n\n<p align=\"center\">\n  <img title=\"Use the OpenCASCADE Geometry Kernel to Model your toughest projects.\" src=\"./packages/cascade-studio/icon/CSG.gif\"          height=\"192\">\n  <img title=\"Define Custom GUIs to easily and simply customize your models!\"src=\"./packages/cascade-studio/icon/GUI.gif\"                  height=\"192\">\n  <img title=\"Import and export .STL files and work with them like normal geometry!\"src=\"./packages/cascade-studio/icon/ImportSTL.gif\"    height=\"192\">\n  <img title=\"Import and export .STEP files from other CAD Applications!\"src=\"./packages/cascade-studio/icon/ImportSTEP.gif\"              height=\"192\">\n  <a title=\"ALPHA: Augment your models with graphical gizmos to get the best of both worlds!\" href=\"https://zalo.github.io/CascadeStudio/?code=fZLBahsxEIbveQqRSz3QitMshTF2ap4gyWFr6MFNVGowcUkc2N5%2BUjuW0HWM6mBs%2F%2Fq%2FH8lRgKN3VJjWjgO8QelsS72KLx8xQqoBYSXHk354iSLHjuF0pJ5Aih3nh8pEFbH5dLZjxlbEW7X5blBTsCRohNCPdEV5F0rhgwmkao0J6h3CM%2Ff%2BQ7nCvM0xDLkDE1W96QZ3dj5mGQJrmdhzezjw5F1D6rIQhPonD6cJput29wuY6AlY0UdIcxVvzNCYlmT5a1aXCYcuCr%2F3wS8EcMO%2FmvvLMLbWx%2FCH%2Fws%3D&gui=q1ZKzs8tyM9LzSvxS8xNVbJSSk4sTk5MSQ3LTC1X0lHyTS3OCEotVrIy0DOE84IS89KBSqMN9AwMdYxidZRCMnNKlKx0jQwgTJg8SMDIACjvlpmTk1pir2RVUlSaqqPknJickQrl1QIA\"><img src=\"./packages/cascade-studio/icon/Gizmo.gif\"        height=\"192\"></a>\n  <img title=\"Install Cascade Studio for working offline!\"                          src=\"./packages/cascade-studio/icon/Installable.gif\"  width=\"275\">\n  <img title=\"Use world-class intellisense with VS Code's Text Editor!\"             src=\"./packages/cascade-studio/icon/Intellisense.gif\" width=\"275\">\n</p>\n\n\n## Examples\n\n<p align=\"center\">\n  <a title=\"Logo Example\" href=\"https://zalo.github.io/CascadeStudio/?code=bZDLCsIwEEX3%2FYqhqwhRUjWCiCv9AnXhAxehHWkgtNKmoH%2FvTGsflGYRSOaek8w49JDmDk8msVUJezg7m2AhwuYilLBSIGHJ21rNdgED5TvFAoEXAfVB6LYYf53NSHHn4uF%2FEP0bLFMSfFHhiLgxccq98SgeSkZSPSVsKdspR8B1CFB8EgguhclKV2fmWkuguubg0b5e9PMsRhFwK01XEh6dvhfdBs7nbGyNSNlaL%2Fjxq6MID6aMTYI8wA1VF5FmbIJaDqmzrxKbhzTsAfUD&gui=VY4xC8IwFIT%2Fy5tjSDMIzeIg6KRIEBdxeCQPG0gTaRIcxP9uRAztTffd3XAvMHF8xEAhH3EkUGAwGbR0cfQEBgdKg6YESvCukcZwr9Or4KJj8sbg7HwGtZLiZ%2F%2F9N5Ci9jvnPeUNqDwVYrBFM1Cj%2FRRLsCePYZ4520CjdaVekD3vF1q%2FPw%3D%3D\"><img src=\"./packages/cascade-studio/icon/Logo.png\" height=\"192\"></a>\n  <a title=\"Default Example\" href=\"https://zalo.github.io/CascadeStudio/?code=lZE%2Fa8MwEMV3f4qLJxVU7ObPUEqGkgydEw9tQgbHOlsCRSqSTJpvX0m2axMKpcIYWXf6ved3WQYbg6VDKGEvBUMDVy4qDlchJVRaOaMlOI5gSiZaC7qOX9VNCuW7bSLRAdcSd1193WNI2h2kFBY5UJiH1zJ%2FeEmSbKr5ydH4jWJQcIMImwHse7S1QjVez%2Bi24SBcFLPdlbDW%2FX2yCuBQHHwdQvG3NfDJ6DmYyyk40%2BId5SNQdtp5r%2BSY0yeanyg8%2B94%2FKHeY9ynGQ%2F6BCWHt27MzZeVi8GM%2BtdGXeNRlkBSmVFb2VsE%2FqyCzFXXtq6pC0gVH4fjji45%2FOm4Pp0H4lTE%2FotoIVEzeoPHzcXEgOupeBGMSZ1Phx%2FkqSi%2BDdIFfbrEl6ZuYpR75DQ%3D%3D&gui=q1ZKzs8tyM9LzSvxS8xNVbJSSk4sTk5MSQ3LTC1X0lHyTS3OCEotVrIy0DOE84IS89KBSqMN9AwMdYxidZSCElMyS4GKjA1gbJgSIwMdE4PYWgA%3D\"><img src=\"./packages/cascade-studio/icon/Default.png\" height=\"192\"></a>\n  <a title=\"General Overview Example\" href=\"https://zalo.github.io/CascadeStudio/?code=lVbbbuM2EH33V0zzRCdy1s5lmyabh2ySpgss0EWcohfDD7RE2WxkUSCp2G6Rf%2B8ZUvItiy7WuUiWhjNnZs4c8t07epppR%2FiV5OayKOgB%2F5RdUabmpnTeSq%2FLKc3Mgryh2ilyZq7I5ORniuSL1IWcFIryuky9xopOB06Hhc6UvaRbq6RXwbmeVzBz4QXWSk%2BpLGmi2GfGvmX2d%2B08VdLKufLKujbI3GSq6BTKk6frxrU4%2BMJ2BwkNEuofn%2BF6%2FON59ypGf1Y%2BnV3STUm6hKdcpgBoLGVWLjibkztyM1kxsDKjtLYvyoUAwfKaSrVonIhRb9A%2F9Env4tCPu8c%2FaxTHi5ND3z3u0O7nsy7VkxEj%2Bu4FxAvo2wvuy0x4WytYAafgbBl0k8o1jcICFOCjWW7X3qrUy3JaF9JSZbWb00L7GdcW7fwjoT%2BTUIe%2F6E7PVelCF9kT3IiTfkLxD4gS6rQhhtVMWbXT4fCEm%2BYqlepco61WZrqOzp6sLF0BWzHqJ%2F2EizROGjeCv3W7ydr77arQ5R6D2mcRPLIKvgPymdLTmQ%2BLWyu4fAv61pQ7kK16McUL08%2BihP8YnUXnmc5zZZkp3lQhwsR4b%2BYhpo5x4EoMzkPbQL7zLfAt%2FcRQKXoyVTe8YGptbO6XaGQGMM0Nownkk4VBWEkv6BkzVnPz0JGwsDEWwReNkJ4Y9DjDkOt4C8Oj8cgx%2B1qYBVzCvfU6xaiv2nJumharGdL2C%2B1iXXcdigflf4efgATxudAJnZ1zudcYvugKkYcLpao36fHiYMdGTT4fhxV6B34EgvTHSUMU3AxOE8xhctofgzO5LJzaZstjbONle%2BPoPpsql4QouHAmPDFAMTE1ZASiskn3ZqkjQ2OKYjSI0eknVLXxKLbYG8abu842Tf6997AF3KBG421sv%2Ba5U%2F4So8WroWmWqQO%2BpT4MDc8uTVZ7mDKUXZZpLNGWSENF4Qf6aaIy6vLZLNyzJlc3Q93OYVgZg4sntfSnd%2BLgF8jl6XvWSybuwaMBq80Bt%2B%2F4ZLd1ccVmVE7vwiPKLYZAYpZr9bQC8BypxOluQ%2BgftoIwKQ6QrjOFdBxoHSDInIU8hzwerM6%2BJhK9c64xy9Agwc92XT%2BbHFX9xPJewXuY58itkqS1csVCFPrPewB2F0qBVZe1gWYAD0Y91D74Y2ditMfpPSyYr4RutU0LJS4SKAZ0uLs9clG5QUJTl1nP5PkOFMWMJIMnTc8FREqz9oSazgFLYZfFXEJ2omJEh4HKJPZ0DfjOuLqAdrIN4nYm55Au7H1VhdmWmMlepqYWSpQy81GI%2FwEVlS26CHG%2FFZbt29B3QTQVWAveDB9oWE8Czdk5dineF%2BJG1ZDISzttd6%2B1dALnTeHMJf1WQvREN8xu6LKLOihibd7sJmjOBoBYbysAPFrnEPh4ikRC8zCmnXE8MPBOTHUVjzQTNKGF2lBnCn7iYOIBowwHCSUdTkjaVYVcbfbgT8B6Tf2rDkwEP13ha%2B%2Bif4WbDxSvR9d01u%2F%2BG7eExmzZmi0bs%2BWOGX90LtYhPjTojgtVTv1sy2qvMsuEVqxHSbNg1LoY4%2BjQ2r%2Bu79q3R0fx7WvntfMf&gui=dY8xC8IwEIX%2Fy80hJLVF6OLg0EkpRVzE4UgOG7SpJCkO4n83Ftss7XYf73sP7g2q7569JRuO2BGUoNAr1HQ29AIGB%2FJtQx5KweVMDdpbVC%2BCC8myK4M9qpZ2UAY3EIMGtRliZZNzWUw4dTLBchErp9aouyUfvTg8U5rOmeTbIpphNMJCUqPDbkzHa82gQC5ZP1owK9cPVtcPtOmRyhn9h88X\"><img src=\"./packages/cascade-studio/icon/Variety.png\" height=\"192\"></a>\n  <a title=\"Rotated Extrusion Example\" href=\"https://zalo.github.io/CascadeStudio/?code=VY2xCsMwDER3f4VGGxRw0roNhI7pXEo3kyFgYQwmhkSlzd9HeIsGoZN07zIx8C9tvH%2FWNC8xEzzgXXhmCuOf128grUDqVfIey6K9bzqH0LTS7ITgz8oiXOosQtxkEKrdyaHrrRmUeqYsqWOItOlztLwIokW4I1wFhDfshVXXbjLDAQ%3D%3D&gui=TYoxC8IwEEb%2Fy83XcskkWRwEnRQp4iIOR3LYQHqRJsVB%2FO8W1OL2ve%2B9J%2Fg83LOK1gMPAg48F89BzlEegLCX0ndSwFFrFupYb3N6oZYM2ivCKaYKrjGrz%2Fz5xhJamv02piR1Da6OkyBs2Pey0G7Mk4ZjYv3%2FYvjC6w0%3D\"><img src=\"./packages/cascade-studio/icon/RotatedExtrusion.png\" width=\"256\"></a>\n  <a title=\"Fillet Example\" href=\"https://zalo.github.io/CascadeStudio/?code=RZHNTsMwEITveYpRT65kSNKKQ4UQEhU8AJQDqnrIz7YxJHbluH9CvDu7TgM5JM7ufjOTTZpi6akIhNAQqktrbE0eha1joXSFr%2BPbpzNWSl3SUkAwbUC8HvDWGkEANVlxeaKRQeNmJvdZNr2PQOnOGIGVL2zfsqdaZzyskWfZRuPJnRWfNO5iSSP4A02v%2FJjsg%2FlXFyQwGzKfa2Elj8byOqSEnmXZH%2By6cjR%2Ft8ZZRJgz6X%2FhDQ8nZquWDVVf3FKTF9My%2FTgZk3wnwqUphkZcUHD7uJ7SheA6UL2jHm4be8YG8j1VQRxLCieiuEL0TbGnPqoNUs%2BCKYmpsdBYL3Q%2Blzw%2FScJ2K0ZEmAVrU7G%2BWkTPfD5FVYg0XBkKY4lzXFCbvij5o3bCit12iCtI5w49oXFH8jwAecaRIffwh3E0dNo7H25%2FAQ%3D%3D&gui=q1ZKzs8tyM9LzSvxS8xNVbJSSk4sTk5MSQ3LTC1X0lHyTS3OCEotVrIy0DOE84IS89KBSqMN9AwMdYxidZRCMnNKlKx0jQwgTJg8SMDIACjvlpmTk1pir2RVUlSaqqPknJickQrl1QIA\"><img src=\"./packages/cascade-studio/icon/Fillet.png\" height=\"192\"></a>\n  <a title=\"Loft Example\" href=\"https://zalo.github.io/CascadeStudio/?code=fZE9C8IwEIb3%2ForDKULEVu0gIg6uDiJuwSHGqy2GniQRFPG%2FmzRa%2FMIMubyXu%2FcJF40OCqkwgyn8XUvSlz3VTIjeIOfQbOmGg4B3GQ4PESuj8FfOnLA7SfSDOPDEtZG11dIhEykP1aPgsSLXpDLfGF1H3uP1AT7dy1rim0o%2Fid0X5vCLmac8%2F80c%2BzivjNLIAqH1S","default_branch":"master","files":93,"tree":[".devcontainer.json",".gitattributes",".github/workflows/ci.yml",".github/workflows/codeql-analysis.yml",".github/workflows/deploy-pages.yml",".github/workflows/publish-cascade-core.yml",".github/workflows/search_all_branches.yml",".gitignore",".nojekyll",".npmrc",".nvmrc","CLAUDE.md","LICENSE","README.md","index.html","package-lock.json","package.json","packages/cascade-core/README.md","packages/cascade-core/fonts/Consola.ttf","packages/cascade-core/fonts/Consolas.ttf","packages/cascade-core/fonts/Papyrus.ttf","packages/cascade-core/fonts/Roboto.ttf","packages/cascade-core/package.json","packages/cascade-core/scripts/build.cjs","packages/cascade-core/src/engine/CascadeEngine.js","packages/cascade-core/src/engine/MessageBus.js","packages/cascade-core/src/index.js","packages/cascade-core/src/openscad/OpenSCADTranspiler.js","packages/cascade-core/src/worker/CascadeWorker.js","packages/cascade-core/src/worker/FileUtils.js","packages/cascade-core/src/worker/ShapeToMesh.js","packages/cascade-core/src/worker/StandardLibrary.js","packages/cascade-core/src/worker/StandardUtils.js","packages/cascade-core/types/StandardLibraryIntellisense.ts","packages/cascade-studio/css/main.css","packages/cascade-studio/icon/CSG.gif","packages/cascade-studio/icon/CascadeStudioBanner-1257x519.png","packages/cascade-studio/icon/CascadeStudioBanner.png","packages/cascade-studio/icon/CascadeStudioScreenshot.png","packages/cascade-studio/icon/Default.png","packages/cascade-studio/icon/Fillet.png","packages/cascade-studio/icon/GUI.gif","packages/cascade-studio/icon/Gizmo.gif","packages/cascade-studio/icon/ImportSTEP.gif","packages/cascade-studio/icon/ImportSTL.gif","packages/cascade-studio/icon/Installable.gif","packages/cascade-studio/icon/Intellisense.gif","packages/cascade-studio/icon/Loft.png","packages/cascade-studio/icon/Logo.png","packages/cascade-studio/icon/Reuleaux.png","packages/cascade-studio/icon/RotatedExtrusion.png","packages/cascade-studio/icon/Variety.png","packages/cascade-studio/icon/android-chrome-192x192.png","packages/cascade-studio/icon/android-chrome-512x512.png","packages/cascade-studio/icon/apple-touch-icon.png","packages/cascade-studio/icon/favicon-16x16.png","packages/cascade-studio/icon/favicon-32x32.png","packages/cascade-studio/icon/favicon.ico","packages/cascade-studio/lib/dockview-core/dockview-core.js","packages/cascade-studio/lib/dockview-core/dockview-core.js.map","packages/cascade-studio/lib/dockview-core/dockview.css","packages/cascade-studio/lib/golden-layout/golden-layout.js","packages/cascade-studio/lib/golden-layout/golden-layout.js.map","packages/cascade-studio/lib/golden-layout/goldenlayout-base.css","packages/cascade-studio/lib/golden-layout/goldenlayout-dark-theme.css","packages/cascade-studio/lib/openscad-parser/openscad-parser.js","packages/cascade-studio/lib/openscad-parser/openscad-parser.js.map","packages/cascade-studio/manifest.webmanifest","packages/cascade-studio/package.json","packages/cascade-studio/scripts/build.cjs","packages/cascade-studio/scripts/node-shims.cjs","packages/cascade-studio/scripts/postinstall.cjs","packages/cascade-studio/service-worker.js","packages/cascade-studio/src/CascadeAPI.js","packages/cascade-studio/src/CascadeMain.js","packages/cascade-studio/src/CascadeView.js","packages/cascade-studio/src/CascadeViewHandles.js","packages/cascade-studio/src/ConsoleManager.js","packages/cascade-studio/src/EditorManager.js","packages/cascade-studio/src/GUIManager.js","packages/cascade-studio/src/main.js","packages/cascade-studio/src/openscad/OpenSCADMonaco.js","packages/cascade-studio/textures/dullFrontLitMetal.png","playwright.config.js","test/.gitignore","test/README.md","test/__snapshots__/CascadeStudioTest/compares-page-screenshot/chromium-win32/test-chromium.png","test/cascade-studio.spec.js","test/fixtures/everything-example.js","test/package-lock.json","test/package.json","test/server.py","vercel.json"],"storefront":"/r/zalo","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/zalo/CascadeStudio/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}