Swiftpack.co - nicklockwood/ShapeScript as Swift Package

Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
Source code for the ShapeScript 3D modeling app for macOS
.package(url: "https://github.com/nicklockwood/ShapeScript.git", from: "1.3.7")

Build Codecov Platforms Swift 5.1 License Twitter



ShapeScript is a hybrid scripting/markup language for creating and manipulating 3D geometry using techniques such as extruding or "lathing" 2D paths to create solid 3D shapes, and CSG (Constructive Solid Geometry) to combine or subtract those shapes from one another.

ShapeScript is implemented on top of Euclid, a cross-platform 3D modeling library written in Swift. Anything you can construct using ShapeScript can be replicated programmatically in Swift using Euclid.

ShapeScript is also the scripting language used for the ShapeScript App.

If you would like to support the development of Euclid and the ShapeScript language, please consider buying a copy of ShapeScript (the app itself is free, but there is an in-app purchase to unlock some features).


ShapeScript is packaged as a dynamic framework, which itself depends on the Euclid framework, a copy of which is included in this repository.

To install the ShapeScript framework using CocoaPods, add the following to your Podfile:

pod 'ShapeScript', '~> 1.3'

To install using Carthage, add this to your Cartfile:

github "nicklockwood/ShapeScript" ~> 1.3

To install using Swift Package Manager, add this to the dependencies: section in your Package.swift file:

.package(url: "https://github.com/nicklockwood/ShapeScript.git", .upToNextMinor(from: "1.3.0")),

The repository also includes the ShapeScript Viewer application, a cut-down version of the ShapeScript app available on the Mac App Store. It is not currently possible to install or run this app using CocoaPods, Carthage or Swift Package Manager, however you can run it by opening the included Xcode project and selecting the ShapeScript Viewer scheme.

Note: ShapeScript Viewer requires Xcode 11+ to build, and runs on macOS 10.13+.


The best way to try out ShapeScript is to run the ShapeScript Viewer app (see above).

Once you have opened the app, you can create a new ShapeScript document from the File menu, or open one of the example projects from the Help menu.

ShapeScript does not include a built-in editor. Instead, after opening a shape file in the ShapeScript Viewer, you can select Open in Editor (Cmd-E) from the Edit menu to open the source file in a text editor of your choice.

The ShapeScript Viewer will track changes to the source file and update in real-time as you edit it.

For more information, check out the help section.


Feel free to open an issue in Github if you have questions about how to use the library, or think you may have found a bug.

If you wish to contribute improvements to the documentation or the code itself, that's great! But please read the CONTRIBUTING.md file before submitting a pull request.


The ShapeScript framework and viewer are primarily the work of Nick Lockwood.


Stars: 228
Last commit: 14 hours ago

Ad: Job Offers

iOS Software Engineer @ Perry Street Software
Perry Street Software is Jack’d and SCRUFF. We are two of the world’s largest gay, bi, trans and queer social dating apps on iOS and Android. Our brands reach more than 20 million members worldwide so members can connect, meet and express themselves on a platform that prioritizes privacy and security. We invest heavily into SwiftUI and using Swift Packages to modularize the codebase.

Submit a free job ad (while I'm testing this). The analytics numbers for this website are here.

Release Notes

14 hours ago
  • Added debug command for highlighting invisible geometry
  • Custom blocks can now return any value type, not just meshes or paths
  • Infix expressions are now handled correctly when used in a statement position
  • Improved type mismatch error messages for block parameters
  • String values are no longer nullable and empty strings are handled more correctly
  • Nested command calls without parentheses are now handled correctly
  • Improved type reporting for single-value tuples in error messages
  • Updated print behavior to better match text interpolation

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics