{"id":17663815,"url":"https://github.com/gregstarr/pychop3d","last_synced_at":"2025-06-17T08:02:16.553Z","repository":{"id":40954411,"uuid":"224252501","full_name":"gregstarr/pychop3d","owner":"gregstarr","description":"Python implementation of \"Chopper: Partitioning Models into 3D-Printable Parts\"","archived":false,"fork":false,"pushed_at":"2023-07-06T22:14:15.000Z","size":40221,"stargazers_count":21,"open_issues_count":19,"forks_count":4,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-02T16:58:49.678Z","etag":null,"topics":["3d-models","3d-printer","3d-printing","paper-implementations","python","python3","research-paper","trimesh"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gregstarr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-11-26T17:48:19.000Z","updated_at":"2025-05-05T12:23:16.000Z","dependencies_parsed_at":"2024-10-30T22:35:59.626Z","dependency_job_id":null,"html_url":"https://github.com/gregstarr/pychop3d","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/gregstarr/pychop3d","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gregstarr%2Fpychop3d","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gregstarr%2Fpychop3d/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gregstarr%2Fpychop3d/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gregstarr%2Fpychop3d/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gregstarr","download_url":"https://codeload.github.com/gregstarr/pychop3d/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gregstarr%2Fpychop3d/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260318590,"owners_count":22991110,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["3d-models","3d-printer","3d-printing","paper-implementations","python","python3","research-paper","trimesh"],"created_at":"2024-10-23T19:42:38.618Z","updated_at":"2025-06-17T08:02:16.519Z","avatar_url":"https://github.com/gregstarr.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build Status](https://travis-ci.com/gregstarr/pychop3d.svg?branch=master)](https://travis-ci.com/gregstarr/pychop3d)\n[![Coverage Status](https://coveralls.io/repos/github/gregstarr/pychop3d/badge.svg?branch=master)](https://coveralls.io/github/gregstarr/pychop3d?branch=master)\n# Chopper: Partitioning Models into 3D-Printable Parts\n(not my paper)\n\n### [Paper Link](Matusik_Chopper.pdf)\n\n## Docker Setup\n\nFor seamless Docker setup Dockerfile is provided as well as [Vscode Devcontainer Support](https://code.visualstudio.com/docs/remote/containers) \n\n## Windows Setup\n*NOTE: Must use python 3.7*\n\n##### download and install Blender 2.79b\nhttps://download.blender.org/release/Blender2.79/blender-2.79-windows64.msi\n\nI think you can download any version 2.79 or higher, but I know it works\nwith 2.79b\n##### clone repo \n`\u003e git clone https://github.com/gregstarr/pychop3d.git`\n##### enter directory \n`\u003e cd pychop3d`\n##### create and activate environment\nFor venv:\n```\n\u003e python -m venv venv\n\u003e venv\\Scripts\\activate\n```\nFor Anaconda:\n```\n\u003e conda create -n pychop3d python=3.7\n\u003e conda activate pychop3d\n```\n##### update pip\n`\u003e python -m pip install --upgrade pip`\n##### install packages \n`\u003e pip install -r windows_requirements.txt`\n\n## Usage\n##### Try the example (this uses bunny_config.yml) \n`python main.py`\n##### Try out your own STLs by creating a configuration YAML and passing it to main\n`\u003e python main.py -c my_config.yml`\n\n*NOTE: you may have to add the pychop3d directory to your PYTHONPATH environment variable using:*\n```\n\u003e set PYTHONPATH=C:\\path\\to\\pychop3d\n```\n\n### Main Configuration Options\n* beam_width: increasing this will cause the process to take longer but will (in theory) \nmake the output better\n* connector_diameter: side length of the connector pegs (cubes)\n* connector_spacing: minimum distance between adjacent connectors\n* connector_tolerance: extra side length for the 'slots'\n* mesh: file path to stl, can also override this on command line in main.py\n* part_separation: experimental feature, sometimes helps, sometimes hurts\n* printer_extents:  volume of your cartesian printer (currently do not support delta-style printers)\n* directory: directory where the output stls, config file, and save progress will be stored a new \ndirectory will be created within this directory with the 'name' and the datetime string\n* name: name of job, this will influence what the name of the output directory is\n* plane_spacing: how many planes to consider for each normal, increasing this will cause the process \nto take longer but will possibly make the output better\n\nSee bunny_config.yml or shoerack_config.yml for examples\n\n## Gallery\n\n#### Bunny\n\nTakes about 2 minutes\n\n\u003cp float=\"left\"\u003e\n    \u003cimg src=\"images/process1.png\" width=\"200\"/\u003e\n    \u003cimg src=\"images/process2.png\" width=\"200\"/\u003e\n    \u003cimg src=\"images/process3.png\" width=\"200\"/\u003e\n    \u003cimg src=\"images/process4.jpg\" width=\"400\"/\u003e\n    \u003cimg src=\"images/process5.jpg\" width=\"250\"/\u003e\n\u003c/p\u003e\n\n#### Table:\n\n\u003cimg src=\"images/table.jpg\" width=\"300\"/\u003e\n\n#### Shoerack\n\nTakes about 45 minutes\n\n\u003cp float=\"left\"\u003e\n    \u003cimg src=\"images/shoerack1.PNG\" width=\"200\"/\u003e\n    \u003cimg src=\"images/shoerack2.PNG\" width=\"200\"/\u003e\n    \u003cimg src=\"images/shoerack3.PNG\" width=\"200\"/\u003e\n    \u003cimg src=\"images/shoerack4.jpg\" width=\"200\"/\u003e\n    \u003cimg src=\"images/shoerack5.jpg\" width=\"200\"/\u003e\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgregstarr%2Fpychop3d","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgregstarr%2Fpychop3d","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgregstarr%2Fpychop3d/lists"}