Skip to main content

A Python library to interface with the OpenSCAD app.

Project description

A Python library to interface with and run the OpenSCAD interpreter.

ColorScheme Enum Class

ColorScheme defines the following enums:
  • cornfield

  • metallic

  • sunset

  • starnight

  • beforedawn

  • nature

  • deepocean

  • solarized

  • tomorrow

  • tomorrow_night

  • monotone

RenderMode Enum Class

RenderMode defines the following enums::
  • test_only

  • render

  • preview

  • thrown_together

  • wireframe

OpenScadRunner Class

The OpenScadRunner class provides the following methods:

  • __init__() The initializer method, which has the following arguments:
    • scriptfile = The name of the script file to process.

    • outfile = The name of the file to output to.

    • imgsize = The size of the imagefile to output to, if outputting to a PNG or GIF. Default: (640,480)

    • antialias = The antialiasing scaling factor. If greater than 1.0, images are generated at a larger size, then scaled down to the target size with anti-aliasing. Default: 1.0 (no anti-aliasing)

    • animate = If given an integer number of frames, creates that many frames of animation, and collates them into an animated GIF or APNG. Default: None

    • animate_duration = Number of milliseconds per frame for an animated GIF or APNG. Default: 250

    • render_mode = The rendering mode to use when generating an image. See RenderMode Enum. Default: RenderMode.preview

    • show_axes = If True, show axes in the rendering. Default: True

    • show_scales = If True, show the scales along the axes. Default: True

    • show_edges = If True, shows the edges of all the faces. Default: False

    • show_crosshairs = If True, shows the crosshairs for the center of the camera translation. Default: False

    • camera = Gives the camera position as either [translate_x,y,z,rot_x,y,z,dist] or [eye_x,y,z,center_x,y,z]

    • orthographic = If True, render orthographic. If False, render with perspective. Default: False

    • auto_center = If True, and script does not set $vpt, $vpr, or $vpd, then centers the shape in the rendered image. Default: False

    • view_all = If True, and script does not set $vpd, then the field of view is scaled to show the complete rendered shape. Default: False

    • color_scheme = The color scheme to render an image with. See ColorScheme Enum. Default: ColorScheme.cornfield,

    • csg_limit = If given, the maximum number of CSG elements to render.

    • deps_file = If given, the file to write Makefile dependancies out to.

    • make_file = If given, the Makefile script to run when missing a dependency.

    • set_vars = An optional dictionary of script variables and values to set.

    • customizer_file = If given, specifies the file containing Customizer Parameters.

    • customizer_params = An optional dictionary of customizer parameter names and values to set.

    • hard_warnings = Stop at first WARNING, as if it were an ERROR. Default: False

    • quiet = Suppresses non-error, non-warning messages. Default: False

    • enabled = List of experimental features to enable. Default; []

  • good() Returns True if the run() method was called, and processing completed successfully.

  • __bool__() Returns True if the run() method was called, and processing completed, whether or not it was successful.

  • run() Run the OpenSCAD app with the current settings. This sets some instance variables:
    • .complete = A boolean value indicating if the processing has completed yet.

    • .success = A boolean value indicating if the processing completed sucessfully.

    • .script = The script that was evaluated, as a list of line strings.

    • .cmdline = The commandline arguments used to launch the OpenSCAD app.

    • .return_code = The return code from OpenSCAD. Generally 0 if successful.

    • .echos = A list of ECHO: output line strings.

    • .warnings = A list of WARNING: output line strings.

    • .errors = A list of ERROR: or TRACE: output line strings.

Creating an STL file:

from openscad_runner import OpenScadRunner
osr = OpenScadRunner("example.scad", "example.stl")
osr.run()
for line in osr.echos:
    print(line)
for line in osr.warnings:
    print(line)
for line in osr.errors:
    print(line)
if osr.good():
    print("Successfully created example.stl")

Creating a Preview PNG:

from openscad_runner import RenderMode, OpenScadRunner
osr = OpenScadRunner("example.scad", "example.png", render_mode=RenderMode.preview, imgsize=(800,600), antialias=2.0)
osr.run()
for line in osr.echos:
    print(line)
for line in osr.warnings:
    print(line)
for line in osr.errors:
    print(line)
if osr.good():
    print("Successfully created example.png")

Creating a Fully Rendered PNG:

from openscad_runner import RenderMode, OpenScadRunner
osr = OpenScadRunner("example.scad", "example.png", render_mode=RenderMode.render, imgsize=(800,600), antialias=2.0)
osr.run()
for line in osr.echos:
    print(line)
for line in osr.warnings:
    print(line)
for line in osr.errors:
    print(line)
if osr.good():
    print("Successfully created example.png")

Rendering an animated GIF:

from openscad_runner import OpenScadRunner
osr = OpenScadRunner("example.scad", "example.gif", imgsize=(320,200), animate=36, animate_duration=200)
osr.run()
for line in osr.echos:
    print(line)
for line in osr.warnings:
    print(line)
for line in osr.errors:
    print(line)
if osr.good():
    print("Successfully created example.gif")

Rendering an animated PNG:

from openscad_runner import OpenScadRunner
osr = OpenScadRunner("example.scad", "example.png", imgsize=(320,200), animate=36, animate_duration=200)
osr.run()
for line in osr.echos:
    print(line)
for line in osr.warnings:
    print(line)
for line in osr.errors:
    print(line)
if osr.good():
    print("Successfully created example.png")

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

openscad_runner-1.2.2.tar.gz (7.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

openscad_runner-1.2.2-py3-none-any.whl (8.1 kB view details)

Uploaded Python 3

File details

Details for the file openscad_runner-1.2.2.tar.gz.

File metadata

  • Download URL: openscad_runner-1.2.2.tar.gz
  • Upload date:
  • Size: 7.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.4

File hashes

Hashes for openscad_runner-1.2.2.tar.gz
Algorithm Hash digest
SHA256 fbdb1ee30ce129d845970813b812ad864afcf3379431012a78f8ea1b42fa15c1
MD5 42fed63eb021fc4ae4bc9c6d102129b9
BLAKE2b-256 2aa617a698b3687114bac2e9a9ffb27f50578cd886bcc31929645c761a3c0005

See more details on using hashes here.

File details

Details for the file openscad_runner-1.2.2-py3-none-any.whl.

File metadata

File hashes

Hashes for openscad_runner-1.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 01a5b7722a6df3ea866e9980020cb0c3885657a4328c8db083ef14f570e10db1
MD5 f3b8f4de94bac0186412fdd6781dcb92
BLAKE2b-256 7fa45632f11224c2c64f72147817b391a87d023094aa74f2904482b8e0be4c02

See more details on using hashes here.

Supported by

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