Skip to main content

"Easy as Pie" CAD (Piecad)

For many years I used OpenSCAD, but the functional language it uses was often a hinderance and its speed was poor. Piecad is my opinionted view of what a good, simple CAD API should look like. It is written in Python. Its primary focus is the creation of models for 3D printing.

To install using pip (virtual environment recommended):

pip install piecad

Documentation

Piecad-Viewer: Piecad has a view function which works like a 3d print (also does 2D). Piecad-Viewer provides the window that displays the model/image from each view call. You can use arrow keys to swtich between the models/images.

Examples

My Piecad development environment.

I have one window where I run vi as my editor.

I have another window that is piecad_viewer.

I use the script below to watch for changes in all *.py files, the argument to the script is the name of the main python file. When any python file is written, python is ran on that main python file.

So I use view calls for what I need to see. Edit, then when I write, the pywatch script below causes those views to be displayed.

#!/usr/bin/env python3
import sys
import os
import time
from watchdog.events import FileSystemEventHandler
from watchdog.observers import Observer

class MyEventHandler(FileSystemEventHandler):
    def on_created(self, event):
        pass

    def on_modified(self, event):
        if event.src_path.endswith(".py"):
            print(event)
            os.system(f"python {sys.argv[1]}")

    def on_deleted(self, event):
        pass

    def on_moved(self, event):
        pass

if __name__ == "__main__":
    if len(sys.argv) != 2:
        print("Usage: pywatch _file_")
        sys.exit(1)
    path_to_watch = "."  # Current directory
    event_handler = MyEventHandler()
    observer = Observer()
    observer.schedule(event_handler, path_to_watch, recursive=True)
    observer.start()
    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        observer.stop()
    observer.join()

CREDITS

Piecad is based on Manifold, a 3D CAD package written in C++. Manifold incorporates Clipper2 for 2D objects. It also uses quickhull for 3d convex hulls. You can see Manifold's web site for other packages that are used.

Piecad uses the trimesh package for mesh loading/saving and for Piecad-Viewer.

Piecad also uses isect_segments-bentley_ottmann to check for polygon self intersections. Also, fontTools and fontPens are used to support text.

We include two fonts: Hack-Regular.tts and Roboto-Regular.tts, see piecad/fonts for the licenses.

Download files

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

Source Distribution

piecad-1.1.2.tar.gz (1.1 MB view details)

Uploaded Source

Built Distribution

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

piecad-1.1.2-py2.py3-none-any.whl (278.8 kB view details)

Uploaded Python 2Python 3

File details

Details for the file piecad-1.1.2.tar.gz.

File metadata

  • Download URL: piecad-1.1.2.tar.gz
  • Upload date:
  • Size: 1.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.34.2

File hashes

Hashes for piecad-1.1.2.tar.gz
Algorithm Hash digest
SHA256 41999e6b86932a70f01aae2be8123920f0ee1af0d8761d9cd6912024b9ed2554
MD5 c984697732baac5b4b0a5c7a3d8c9d82
BLAKE2b-256 2403e9bfe10a81bfe28d6e795151ad711e7bfc5ba3543ef7c116d717e9355bf7

See more details on using hashes here.

File details

Details for the file piecad-1.1.2-py2.py3-none-any.whl.

File metadata

  • Download URL: piecad-1.1.2-py2.py3-none-any.whl
  • Upload date:
  • Size: 278.8 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.34.2

File hashes

Hashes for piecad-1.1.2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 d49405cc3e0de079ddc316ed84e0e4049fa1e9f69d21b7c378e393cec8bdb9de
MD5 bf74b51435b2fdabae2b5dd895c5af5e
BLAKE2b-256 31c8c7b39b4b2bea35a77ec05124e390ba0ee59e408ef3f940b913871aaa12eb

See more details on using hashes here.

Release history Release notifications | RSS feed

1.4.2

2 files

1.4.1

2 files

1.4.0

2 files

1.3.0

2 files

1.2.0

2 files

This release

1.1.2 This release

2 files

1.1.1

2 files

1.1.0

2 files

1.0.9

2 files

1.0.8

2 files

1.0.7

2 files

1.0.6

2 files

1.0.5

2 files

1.0.4

2 files

1.0.3

2 files

1.0.2

2 files

1.0.1

2 files

1.0.0

2 files

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