https://github.com/gregstarr/pychop3d
Python implementation of "Chopper: Partitioning Models into 3D-Printable Parts"
https://github.com/gregstarr/pychop3d
3d-models 3d-printer 3d-printing paper-implementations python python3 research-paper trimesh
Last synced: 4 months ago
JSON representation
Python implementation of "Chopper: Partitioning Models into 3D-Printable Parts"
- Host: GitHub
- URL: https://github.com/gregstarr/pychop3d
- Owner: gregstarr
- License: mit
- Created: 2019-11-26T17:48:19.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2023-07-06T22:14:15.000Z (over 2 years ago)
- Last Synced: 2025-06-02T16:58:49.678Z (4 months ago)
- Topics: 3d-models, 3d-printer, 3d-printing, paper-implementations, python, python3, research-paper, trimesh
- Language: Python
- Homepage:
- Size: 38.4 MB
- Stars: 21
- Watchers: 2
- Forks: 4
- Open Issues: 19
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
[](https://travis-ci.com/gregstarr/pychop3d)
[](https://coveralls.io/github/gregstarr/pychop3d?branch=master)
# Chopper: Partitioning Models into 3D-Printable Parts
(not my paper)### [Paper Link](Matusik_Chopper.pdf)
## Docker Setup
For seamless Docker setup Dockerfile is provided as well as [Vscode Devcontainer Support](https://code.visualstudio.com/docs/remote/containers)
## 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.msiI 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 betterSee bunny_config.yml or shoerack_config.yml for examples
## Gallery
#### Bunny
Takes about 2 minutes
![]()
![]()
![]()
![]()
![]()
#### Table:
#### Shoerack
Takes about 45 minutes
![]()
![]()
![]()
![]()
![]()