Skip to main content

SuperSCAD

Legal Docs Release Code
PyPI - License Documentation Status Latest Stable Version
Code Coverage unit Tests

The OO Programmers Solid 3D CAD Modeller

SuperSCAD is an advanced application/library for generating 2D and 3D models in OpenSCAD in Python. SuperSCAD is based, among others, on the factory pattern and delivers to you as 2D and 3D modeler the superpowers of Python.

Documentation

The full documentation is available at https://superscad.readthedocs.io.

Getting Started and Installing SuperSCAD

We advise to create a Python virtual environment in a project folder:

cd awsesome-project

python -m venv .venv
. .venv/bin/activate
pip install super-scad

Using your favorite editor, copy-paste the code from the demo in the next section and save the file under openscad-logo.py.

vi openscad-logo.py  

Run python and open the generated openscad-logo.scad in openscad.

python openscad-logo.py
openscad openscad-logo.scad

Congratulations, you just finished your first SuperSCAD project.

Demo

Below is an example of SuperSCAD utilizing the factory pattern.

from super_scad.boolean.Difference import Difference
from super_scad.d3.Cylinder import Cylinder
from super_scad.d3.Sphere import Sphere
from super_scad.other.Modify import Modify
from super_scad.scad.Context import Context
from super_scad.scad.Scad import Scad
from super_scad.scad.ScadWidget import ScadWidget
from super_scad.scad.Unit import Unit
from super_scad.transformation.Rotate3D import Rotate3D


class Logo(ScadWidget):
    """
    SuperSCAD widget for generating OpenSCAD logo.
    """

    def build(self, context: Context):
        """
        Builds a SuperSCAD widget.

        :param context: The build context.
        """
        size: float = 50.0
        hole: float = size / 2.0
        height: float = 1.25 * size

        cylinder = Cylinder(height=height, diameter=hole, center=True, fn4n=True)
        sphere = Sphere(diameter=size, fn4n=True)

        return Difference(children=[sphere,
                                    cylinder,
                                    Modify(highlight=True, child=Rotate3D(angle_x=90.0, child=cylinder)),
                                    Rotate3D(angle_y=90.0, child=cylinder)])


if __name__ == '__main__':
    scad = Scad(context=Context(fn=360))
    logo = Logo()
    scad.run_super_scad(logo, 'logo.scad')

The example generates the logo of OpenSCAD.

OpenSCAD Logo

Links

License

This project is licensed under the terms of the MIT license.

Metadata

Release files for Super-SCAD 0.11.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for Super-SCAD 0.11.7
File Size Uploaded Provenance
super_scad-0.11.7.tar.gz 50.8 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for Super-SCAD 0.11.7
File Interpreter ABI Platform
super_scad-0.11.7-py3-none-any.whl Python 3 none any Details

Total release size: 155.0 kB

Release files / super_scad-0.11.7.tar.gz

Download URL super_scad-0.11.7.tar.gz
Size 50.8 kB
Tags Source
SHA-256 checksum
How to use checksums
9bab7ad435e8211485516256c1e49073c752758b3c3279d20594ff8aca52ec4e
BLAKE2b-256 checksum
How to use checksums
0c5a5fb73273b2e398b4eea014673467beb87111f0f35f0a0344139f9f9ef2cd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.3.2 CPython/3.14.2 Linux/6.18.8-200.fc43.x86_64

Release files / super_scad-0.11.7-py3-none-any.whl

Download URL super_scad-0.11.7-py3-none-any.whl
Size 104.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2fbb709d661726734fe4bc731afad65b6ea22504efc85fcab71d82940fab2f20
BLAKE2b-256 checksum
How to use checksums
d33510faf1bf49134f594dfba5effa23e27668b853dff4122b71de8e24398bfb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.3.2 CPython/3.14.2 Linux/6.18.8-200.fc43.x86_64

Security for Super-SCAD 0.11.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.11.7 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page