{"id":34266389,"url":"https://github.com/mythagel/nc_tools","last_synced_at":"2026-03-14T06:02:50.250Z","repository":{"id":25104122,"uuid":"28525386","full_name":"mythagel/nc_tools","owner":"mythagel","description":"A collection of composable CNC/CAM GCode tools","archived":false,"fork":false,"pushed_at":"2022-04-25T09:24:54.000Z","size":755,"stargazers_count":16,"open_issues_count":0,"forks_count":5,"subscribers_count":5,"default_branch":"master","last_synced_at":"2023-04-05T10:37:55.075Z","etag":null,"topics":["cam-gcode","cnc","gcode"],"latest_commit_sha":null,"homepage":"http://mythagel.github.io/nc_tools/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mythagel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-12-27T01:08:19.000Z","updated_at":"2023-03-19T01:04:36.000Z","dependencies_parsed_at":"2022-08-23T19:30:59.545Z","dependency_job_id":null,"html_url":"https://github.com/mythagel/nc_tools","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"purl":"pkg:github/mythagel/nc_tools","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mythagel%2Fnc_tools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mythagel%2Fnc_tools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mythagel%2Fnc_tools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mythagel%2Fnc_tools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mythagel","download_url":"https://codeload.github.com/mythagel/nc_tools/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mythagel%2Fnc_tools/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":27768958,"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-12-16T02:00:10.477Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","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":["cam-gcode","cnc","gcode"],"created_at":"2025-12-16T17:47:29.763Z","updated_at":"2025-12-16T17:47:30.511Z","avatar_url":"https://github.com/mythagel.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"nc_tools\n========\n\nA collection of composable CNC/CAM GCode tools.\n\n```\n$ cat robot2.ngc | nc_backplot\n```\n\n![robot backplot](https://raw.github.com/mythagel/backplot/master/robot_backplot.png)\n\nImplemented utilities\n=====================\n\n * [nc_backplot](http://mythagel.github.io/nc_tools/nc_backplot/)\n    * display a backplot of the incoming gcode\n * [nc_model](http://mythagel.github.io/nc_tools/nc_model/)\n    * generate a 3d model of the incoming gcode, given tools and stock\n * [nc_rename_axis](http://mythagel.github.io/nc_tools/nc_rename_axis/)\n    * rename an axis, a=\u003e is delete, a=\u003eb is rename, a\u003c=\u003eb is swap\n * nc_bounds\n    * bounding box of gcode or .off model\n * nc_transform\n    * transform / rotate stock for next operation\n    * nc_transform -a 45 -b 45 -x -30 # rotate 45 deg around x, 45 around y, translate -30 on x\n * nc_tooltable\n    * generate linuxcnc tool table from nc_tools.conf\n * [nc_contour_pocket](http://mythagel.github.io/nc_tools/nc_contour_pocket/)\n    * Generate contour parallel toolpath from gcode path\n * [nc_stock](http://mythagel.github.io/nc_tools/nc_stock/)\n    * Generate .off stock models\n * [nc_svgpath](http://mythagel.github.io/nc_tools/nc_svgpath/)\n    * SVG path data -\u003e gcode converter\n * nc_identity\n    * gcode identity transformation - base for new tools\n * [nc_arcfit](http://mythagel.github.io/nc_tools/nc_arcfit/)\n    * recover G2/G3 arcs from linear paths\n * nc_delay\n    * delay the output of the gcode based on the machining time option 1x 2x, etc\n * nc_shortlines\n    * split incoming gcode into short line segments\n    * ~~cli option --arc-only~~\n * nc_slice\n    * Segments a 3d model into 2d slices for further processing\n * nc_contour_drill\n    * Generate a drill pattern bounded by the input gcode path\n * nc_contour_offset\n    * Generate contour parallel offsets from gcode path\n * nc_linear_ramp\n    * Convert plunge into linear ramp along path\n\n\n~~not implemented / not complete~~\n\n * ~~nc_fold_moves~~\n    * fold adajacent G00 moves\n * ~~nc_pick~~\n    * nc_stop --at-comment blah --at-line 205 --at-tool 3\n    * selectively pick gcode from file\n    * e.g. within bounding box\n * ~~nc_inspect~~\n    * allow playback of the gcode\n    * feed rate override + pause\n    * seek forward and backward\n    * zoom to section of timeline\n * ~~nc_scale~~\n    * scale gcode axes up or down\n * ~~nc_offset_rotational_origin~~\n    * translate to/from tool local (canonical) rotations to world rotation (e.g. rotary tables)\n * ~~nc_feedrate~~\n    * analyse / optimise feedrate of provided gcode\n * ~~nc_lathe_roughing~~\n    * G70/G71 canned cycle style lathe roughing generator \n * ~~nc_blueprint~~\n    * Generate SVG blueprint with 3 ortho + perspective view of gcode / model.\n * ~~nc_annotate~~\n    * Analyses and adds annotations to input gcode, e.g. path continuity\n * ~~nc_contour_spiral~~\n    * Generate spiral toolpaths from gcode path\n\nGenerators\n==========\n\n * ~~lathe_path~~\n    * generate lathe operations for svg path\n    * TODO determine machining strategy for lathe operations based on different tools and back faces\n * ~~mill_path~~\n    * generate profile operation for svg path\n    * pick from SVG file with xpath pattern\n    * opt. scale / transform\n    * profile / pocket\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmythagel%2Fnc_tools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmythagel%2Fnc_tools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmythagel%2Fnc_tools/lists"}