Skip to content

Python implementation of "Chopper: Partitioning Models into 3D-Printable Parts"

License

Notifications You must be signed in to change notification settings

gregstarr/pychop3d

Repository files navigation

Build Status Coverage Status

Chopper: Partitioning Models into 3D-Printable Parts

(not my paper)

Docker Setup

For seamless Docker setup Dockerfile is provided as well as Vscode Devcontainer Support

Windows Setup

NOTE: Must use python 3.7

download and install Blender 2.79b

https://download.blender.org/release/Blender2.79/blender-2.79-windows64.msi

I think you can download any version 2.79 or higher, but I know it works with 2.79b

clone repo

> git clone https://github.com/gregstarr/pychop3d.git

enter directory

> cd pychop3d

create and activate environment

For venv:

> python -m venv venv
> venv\Scripts\activate

For Anaconda:

> conda create -n pychop3d python=3.7
> conda activate pychop3d
update pip

> python -m pip install --upgrade pip

install packages

> pip install -r windows_requirements.txt

Usage

Try the example (this uses bunny_config.yml)

python main.py

Try out your own STLs by creating a configuration YAML and passing it to main

> python main.py -c my_config.yml

NOTE: you may have to add the pychop3d directory to your PYTHONPATH environment variable using:

> set PYTHONPATH=C:\path\to\pychop3d

Main Configuration Options

  • beam_width: increasing this will cause the process to take longer but will (in theory) make the output better
  • connector_diameter: side length of the connector pegs (cubes)
  • connector_spacing: minimum distance between adjacent connectors
  • connector_tolerance: extra side length for the 'slots'
  • mesh: file path to stl, can also override this on command line in main.py
  • part_separation: experimental feature, sometimes helps, sometimes hurts
  • printer_extents: volume of your cartesian printer (currently do not support delta-style printers)
  • directory: directory where the output stls, config file, and save progress will be stored a new directory will be created within this directory with the 'name' and the datetime string
  • name: name of job, this will influence what the name of the output directory is
  • plane_spacing: how many planes to consider for each normal, increasing this will cause the process to take longer but will possibly make the output better

See bunny_config.yml or shoerack_config.yml for examples

Gallery

Bunny

Takes about 2 minutes

Table:

Shoerack

Takes about 45 minutes

About

Python implementation of "Chopper: Partitioning Models into 3D-Printable Parts"

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •