{"id":18278511,"url":"https://github.com/iridiumio/polycut","last_synced_at":"2026-01-31T06:12:52.719Z","repository":{"id":219607077,"uuid":"745466126","full_name":"IridiumIO/PolyCut","owner":"IridiumIO","description":"Polycut is a tool designed to import SVG files and convert them to 2D GCode to run on 3D Printers that have blades/pens/knives/foil stampers or other tools attached. It also directly supports uploading to a networked 3D Printer via Klipper. Think of it as an alternative to buying a Cricut if you already have a 3D Printer.","archived":false,"fork":false,"pushed_at":"2026-01-30T10:45:14.000Z","size":9323,"stargazers_count":84,"open_issues_count":3,"forks_count":8,"subscribers_count":5,"default_branch":"master","last_synced_at":"2026-01-31T03:01:08.231Z","etag":null,"topics":["3d-printing","dotnet","dotnet-8","drawing","foiling","plotters","svg","vinyl-cutter","windows-11"],"latest_commit_sha":null,"homepage":"https://github.com/IridiumIO/PolyCut","language":"Visual Basic .NET","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/IridiumIO.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.txt","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"IridiumIO","patreon":null,"open_collective":null,"ko_fi":"IridiumIO","tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":"BuyMeACoffee.com/Iridium"}},"created_at":"2024-01-19T11:52:15.000Z","updated_at":"2026-01-30T10:45:18.000Z","dependencies_parsed_at":"2024-03-11T03:29:34.452Z","dependency_job_id":"2c535f98-5954-408d-ba91-9100b340fc96","html_url":"https://github.com/IridiumIO/PolyCut","commit_stats":null,"previous_names":["iridiumio/polycut"],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/IridiumIO/PolyCut","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IridiumIO%2FPolyCut","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IridiumIO%2FPolyCut/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IridiumIO%2FPolyCut/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IridiumIO%2FPolyCut/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/IridiumIO","download_url":"https://codeload.github.com/IridiumIO/PolyCut/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IridiumIO%2FPolyCut/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28931095,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-31T04:05:25.756Z","status":"ssl_error","status_checked_at":"2026-01-31T04:02:35.005Z","response_time":128,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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-printing","dotnet","dotnet-8","drawing","foiling","plotters","svg","vinyl-cutter","windows-11"],"created_at":"2024-11-05T12:24:44.979Z","updated_at":"2026-01-31T06:12:52.701Z","avatar_url":"https://github.com/IridiumIO.png","language":"Visual Basic .NET","funding_links":["https://github.com/sponsors/IridiumIO","https://ko-fi.com/IridiumIO","BuyMeACoffee.com/Iridium","https://ko-fi.com/iridiumio'"],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/IridiumIO/PolyCut/ac993f8824416a01a3d201cd3b27ee47d56aceee/PolyCut/Resources/banner_light.svg\" width=\"450\"\u003e\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\u003cb\u003eIf you've already got a 3D Printer, you shouldn't need to buy a separate Cricut or Silhouette machine.\u003c/b\u003e\u003c/p\u003e \n\n\u003cp align=\"center\"\u003ePolycut is a tool designed to import SVG files and convert them to 2D GCode to run on 3D Printers that have blades/pens/knives/foil stampers or other tools attached. It also directly supports uploading to a networked 3D Printer via Klipper. \n\u003c/p\u003e \n\n\u0026nbsp;\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/user-attachments/assets/0e6ff91c-14cd-447d-adea-5113609f091e\" width=\"1000\"/\u003e\n  \u003c/br\u003e \n\u003c/p\u003e\n\n\u0026nbsp;\n\n\u003ch3 align=\"center\"\u003e\u003ca href=\"https://github.com/IridiumIO/PolyCut/releases\"\u003eDownload Here\u003c/a\u003e\u003c/h3\u003e\n\n# Features\n\n### Drawing Canvas:\n- Import multiple SVGs, arrange and scale them (currently you need to have them grouped how you want in advance as groups can't be separated yet) with a resizable/rotatable cutting mat to help line things up\n    - Support for any size 3D printer bed since all we really need is the bed dimensions; right now the default is named `Ender 3 S1` at 235x235mm but you can adjust and save the dimensions to anything; proper adding/editing names is planned.\n- Draw basic shapes (line, ellipse, rectangle, path) and text elements directly onto the canvas (best used for creating cutout lines for easier weeding of vinyl)\n- Objects can be resized and re-positioned as needed. I do however recommend using a program such as `Inkscape` to actually create your SVGs exactly how you want them, and then using PolyCut as the slicer\n\n### Tool Modes:\n- Cutting mode - generates outline paths for a drag knife or cutter (e.g. Roland Vinyl Cutter); importantly, has configurable swivel offsets that account for the blade's diameter, to ensure sharp corners remain sharp.\n- Drawing mode - generate paths and fills in a hatch / crosshatch pattern\n- (More modes planned, though editing the settings of the above two modes can allow for foiling and embossing as well)\n\n### Generators:\nThere are two generators currently included with Polycut; `Polycut.Core` and `GCodePlot`\n- **Polycut.Core**: Created for Polycut, but still experimental. It supports cutting and drawing, and most importantly, it can process text elements without having to convert them to paths first. However it has a few drawbacks for now:\n    - Even if a shape does not have a fill in the SVG, it will still be filled\n    - Complex shapes can cause problems with cutting/drawing accuracy.\n- **GCodePlot**: Created by @arpruss, with a few tweaks by myself that haven't made it into the base repository yet. This is a more tried-and-tested generator with more consistent results.\n    -  but importantly it **cannot** handle text elements that haven't been converted to paths first. \nThere are other features that are supported by one or the other; these are appropriately enabled/disabled when you switch between the two.\n\n### Preview\n- 2D rendering of toolpaths including a preview mode that renders the lines in the order the 3D printer will process them (at 20x speed)\n- Note: This gets laggy **very** quickly if you have intricate designs or you set the precision too high\n- GCode preview also shows estimated time and total drawing/cutting length. These details are also visible to Klipper\n\n### Export\n- Save to GCode file, or\n- Send to a networked 3D printer using Klipper/Moonraker. Other services should be relatively straightforward to implement if requested. No support for password-protected Moonraker instances so far though\n    - Option to auto-start running the file after upload\n\n### Monitor\n- Simply takes the provided URL from the export tab and renders the webpage; handy for monitoring Klipper from within the app rather than opening a separate browser\n\n\n\u0026nbsp;\n\n# Requirements\n- Windows 10 v1809 or higher (Windows 11 required for Mica effects).\n    - Technically it could work as far back as Windows 7 but I haven't tested it.  \n\n\u0026nbsp;\n\n# Additional Screenshots\n\n\u003cp\u003e\n   \u003cimg src=\"https://github.com/IridiumIO/PolyCut/assets/1491536/77c7abfc-bef7-4a34-a558-ab1c78c9ff5f\" width=\"1000\"/\u003e\n  \u003cimg src=\"https://github.com/IridiumIO/PolyCut/assets/1491536/cb2b29de-e527-42ba-9b35-a3a55a4881b2\" width=\"1000\"/\u003e\n\u003c/p\u003e\n\n# Background\nI have a 3D printer. I wanted to get into bookbinding, which utilises a lot of vinyl designs that typically require a Cricut, Silhouette or similar vinyl cutter that costs as much as a 3D printer. A 3D printer is already a perfectly good 3-axis system, capable of \u003c200 micron cutting/drawing precision.\nGeneral solutions do exist for creating GCode from SVG files already - You can convert SVGs to GCode from within Cura, but it doesn't account for the diameter of a swivel blade, and thus corners are never crisp; Inkscape has its own inbuilt GCodeTools but it is extremely kludgy; InkCut looks to be nice, but it refuses to run on my PC. \n\nGCodePlot by @arpruss is an excellent extension to Inkscape - by far the best I found (and in fact, you can use it from within Polycut) but on its own, it isn't quite *smooth* enough. You have to chop up a 12\" cutting mat to fit on a standard 3d printer bed, and you never quite know where to line everything up. First I created a [template](https://github.com/IridiumIO/PolyCut/assets/1491536/dd7d9973-3343-4935-85e9-bdc71f112550) for Inkscape that had a [pre-chopped cutting mat in it](https://github.com/IridiumIO/PolyCut/assets/1491536/623fe8d8-3cfd-4ae9-a5e2-e2841f8a1561). Then modified GCodePlot to allow exporting from Inkscape's export menu, added support for ignoring hidden/locked layers, and added Moonraker upload support. That should have been enough for me.\n\nBut then I got ambitious...\n\n\n### Tutorial on setting up Klipper to quickly swap between 3D printing and non-printing modes \n[Klipper Setup.md](https://github.com/IridiumIO/PolyCut/blob/master/Klipper%20Setup.md#klipper-setup)\n\n### 3D-printable mount for holding swivel blade/pens\nIf you have an Ender 3 S1 or other printer that can take [this hotswap mount](https://properprinting.pro/product/creality-ender3s1-simpletoolchanger/), then you can [get my current vinyl cutter holder here](https://www.printables.com/model/741765). \n\nOtherwise, you'll find vinyl cutters on Printables/Thingiverse. I *strongly* recommend using one that has a spring in it, because a 3D printer bed is nowhere near level enough for the accuracy needed to consistently cut through vinyl. A spring will allow a bit of flexibility and pressure to keep the blade in contact with the cutting mat. \n\n# Issues and Planned Features\n[See the document here](https://github.com/IridiumIO/PolyCut/blob/master/PolyCut.Core/Issues.md#issues)\n\n -----\n ### Like this project?\n Please consider leaving a tip on Ko-Fi :) \n \n \u003cp align=\"center\"\u003e\u003ca href='https://ko-fi.com/iridiumio' target='_blank'\u003e\u003cimg height='42' style='border:0px;height:42px;' src='https://cdn.ko-fi.com/cdn/kofi3.png?v=3' border='0' alt='Buy Me a Coffee at ko-fi.com' /\u003e\u003c/a\u003e\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Firidiumio%2Fpolycut","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Firidiumio%2Fpolycut","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Firidiumio%2Fpolycut/lists"}