Skip to main content

An advanced Python application and library for generating 2D and 3D models in OpenSCAD

Project description

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

super_scad-0.8.3.tar.gz (42.7 kB view details)

Uploaded Source

Built Distribution

super_scad-0.8.3-py3-none-any.whl (86.6 kB view details)

Uploaded Python 3

File details

Details for the file super_scad-0.8.3.tar.gz.

File metadata

  • Download URL: super_scad-0.8.3.tar.gz
  • Upload date:
  • Size: 42.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.12.7 Linux/6.11.4-201.fc40.x86_64

File hashes

Hashes for super_scad-0.8.3.tar.gz
Algorithm Hash digest
SHA256 055b085add4ad664f82b12bf91317259421cf6472f1eb42bc74090b6b64c3685
MD5 676b3db4d1ab10b4939b10812c28b595
BLAKE2b-256 fd17440b70e6fac2e2ed28d200b2f854f1310a1d9e49fc9e95d94bb5273c8e4c

See more details on using hashes here.

File details

Details for the file super_scad-0.8.3-py3-none-any.whl.

File metadata

  • Download URL: super_scad-0.8.3-py3-none-any.whl
  • Upload date:
  • Size: 86.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.12.7 Linux/6.11.4-201.fc40.x86_64

File hashes

Hashes for super_scad-0.8.3-py3-none-any.whl
Algorithm Hash digest
SHA256 15e1c1d700be8ba496ddcc0e9332a05de01ba151a2dd6d1ba182a3983f6b49c7
MD5 db5e1e3297c6aad5bd785f32688e88f6
BLAKE2b-256 b843cab5a71224c7ab69ef2e15a53afdad9f1f3f9caa4eed84ebbfb2f4a03e66

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page