{"id":20127398,"url":"https://github.com/buserror/gcodepp","last_synced_at":"2025-07-22T21:03:02.592Z","repository":{"id":3225950,"uuid":"4261393","full_name":"buserror/gcodepp","owner":"buserror","description":"gcodepp is a reprap GCODE postprocessor and optimizer","archived":false,"fork":false,"pushed_at":"2012-07-25T09:06:22.000Z","size":370,"stargazers_count":12,"open_issues_count":0,"forks_count":2,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-07-15T03:56:10.530Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"Cyberhowie/OSHA-Heat-Safety-Android-En","license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/buserror.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2012-05-08T14:11:27.000Z","updated_at":"2024-12-30T09:42:15.000Z","dependencies_parsed_at":"2022-08-20T15:40:20.472Z","dependency_job_id":null,"html_url":"https://github.com/buserror/gcodepp","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/buserror/gcodepp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buserror%2Fgcodepp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buserror%2Fgcodepp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buserror%2Fgcodepp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buserror%2Fgcodepp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/buserror","download_url":"https://codeload.github.com/buserror/gcodepp/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buserror%2Fgcodepp/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266572293,"owners_count":23949992,"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","status":"online","status_checked_at":"2025-07-22T02:00:09.085Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2024-11-13T20:21:02.000Z","updated_at":"2025-07-22T21:03:02.559Z","avatar_url":"https://github.com/buserror.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"gcodepp -- GCODE postprocessor and optimizer\n=======\n\ngcodepp is a tool that takes a GCODE file a used for reprap, parses it,\nand passes it thru a series of filters that can rewrite bits of it for\nspecific tasks.\n\nThe idea is to allow \"specialization\" of gcode generation for specific\nprinter models without having to complicate slicer programs like [Slic3r](http://slic3r.org/)\nor [repsnapper](https://github.com/timschmidt/repsnapper).\n\n*This is work in progress* it had had a lot of testing with output from both these slicer\napplications, but little else.\n\nThe tool is made to be easy to hack, and the parser is very, very fast, one if the goal\nis to make a library out of it eventually, and make a host 'spooler' software with it.\n\nSome debate exists because that sort of specialisation is seen by many as belonging in the\nfirmware; I strongly disagree, the firmware will never have a 'view' of a whole layer (or more)\nand the history of (2D) printer drivers clearly demonstrate that 1) the printer driver\ndoesn't belong in the application, 2) the printer driver is responsible to generate\ndevice specific output from a basic, generic intermediate format 3) The printer is slaved\nto that format.\nIn other words, we need a stage between the Slicer and the Firmware, and there is room there\nfor a tool that would involve printer descriptions and 'optimize' the output for that specific\nhardware.\n\nAntijerk filter\n---------------\n![Antijerk1](https://github.com/buserror-uk/gcodepp/raw/master/img/antijerk1.png) ![Antijerk2](https://github.com/buserror-uk/gcodepp/raw/master/img/antijerk2.png)\nThis filter slows down head movements using the speed of the head, and the angle of\nthe next segment (the sharpness of the next turn). It will split long movements so only\nthe last part is used as slowdown, and can also slowdown sequences of small \"jerky\"\nmoves like very small infills.\n\nThe default setting of the filter is not to try to split long extruded moves, as it\nsometime introduce artifacts dues to the difference in flow rates.\nThe default mode works really well as is tho, and will allow you to jack up the \"movement only\"\nspeed of your printer by a large amount. Here I use 170mm/s without any visible loss of\nprecision.\n\nAntidot Filter\n--------------\n![Antidot1](https://github.com/buserror-uk/gcodepp/raw/master/img/antidot1.png) ![Antidot2](https://github.com/buserror-uk/gcodepp/raw/master/img/antidot2.png)\nThe antidot tries to remove spurious extrusion 'dots' as sometime generated by [Slic3r](http://slic3r.org/)\nMost of the time it tries to make sharp angles \"sharper\" by adding extra spurious dots on them,\nand most of the time it makes the print a lot worse than without them!\nThe filter just recognize spurious small extrusion and remove them from the output.\n\nCleaner Filter\n--------------\nThis filter is ran last on the pipeline, and optimizes the GCode generation by removing\nspurious coordinates. The gcode is also stripped of commends, and is 'compressed' by\nremoving trailing zeros from coordinates, so X1.0000 becomes X1\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbuserror%2Fgcodepp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbuserror%2Fgcodepp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbuserror%2Fgcodepp/lists"}