Toolpaths is a Grasshopper plugin for generating and simulating G-code. It's goal is to enable new ways of 3D printing and CNC milling while giving novices and experts alike full control of the machines movement.
-
Object-Oriented Toolpaths The core data type is the Toolpath, which encapsulates a curve with its associated metadata (speed, extrusion, etc.) into a single object.
Granularity: Assign parameters per-path or per-segment.
Compatibility: A Toolpath object remains a standard Grasshopper geometry type, allowing you to use native components for transformations without losing metadata.
-
Inheritance & Settings
Settings follow a simple priority: Global Defaults (lowest) → Linked Template → Local Override (highest). You can use any existing toolpath as a template for a new one, inheriting all properties automatically and overriding only what is necessary.
-
Simulation
The FDM engine simulates material deposition rather than just visualizing a mesh pipe. By calculating volume buildup the solver enables features like automatic flow adjustment.
- Variable layer height and vase mode slicing.
- Automatic extrusion width calculation and volume-based extrusion modes.
- Generator Components for infill and walls
- Modulators: Per-vertex control of extrusion prarmeters like flow, speed, etc
- Masking: Filters to isolate modulator effects to specific sections of a toolpath.
- Path optimization via TSP sorting
- Real-time playback of the simulation
- UV-mapped output meshes for rendering
- Z-hop and retractions
- Gcode upload for Klipper, RepRap, and Octoprint.
- LinuxCNC and Fusion 360 tool library support with tool/holder visualization
- High-performance stock removal simulation
- LinuxCNC-flavor G-code compiler
For installation and licensing instructions, please refer to the Licensing Documentation.
TOOLPATHS is currently in closed beta. We are beta testing with a small team of dedicated designers and fabricators. If you want to contribute, ask for a key at toolpaths@juengerkuehn.com.
- multi extruder support
- when multiple files are open, only the preview of the current file is displayed
- less verbose messages on different compontents and on startup
- bug fixes for simulation time
- rewrite for vase mode: 4 modes to control pitch and point spacing by angle or distance. removes the 400,001 vertex limit.
- Non-planar slicing: mesh is transformed to planar, sliced, and inverse-transformed to original geometry.
- Upgraded to .NET 8.0: requires Rhino 8.20+ for improved performance.
- Fixed bug causing incorrect infill line heights.
- package layout for Rhino 7
- async solver for FMD processor and FDM simulator
- rhino 7 support
- added gyroid and gyroid connected infill
- BREAKING CHANGES:
- infill generator: "Line width" renamed to "Infill spacing"
- handles flow = 0 and generates endcaps dynamically at extrusions ends
- more aggressive smoothing, suggested value for mesh smoothing is 0 - 2
- output for robots (for use with e.g. robots plugin by visose)
- operations are removed and replaced by toolpath inheritance
- toolpath can accept other toolpaths as templates. In this way settings can be used in multiple toolpaths and adjusted in bulk
- new curve / toolpath sorting component, sorting is removed in the FDM Processor
- machine and process settings are seperated: FDM machine + FDM Defaults
- FDM Processor checks the build volume, if provided, and gives visual warnings if exceeded
- Z clearance setting check inital Z hop to prevent collisions
- non-planar example
- Renamed "Initial Z Height" to Safe Clearance: Max(CurrentZ + Clearance, Clearance) logic
- renaming in fdm defaults: StartG → startG-Code, EndG → endG-Code, EPos → ExtruderMode
- fdm simulator: outputs overall program time in human readable format: HH:mm:ss
- vector field modulator: replaced IDW with Gaussian for smoother displacement
- vector field modulator: introduced per-point "Sigma" radius for individual influence control (removed redundant Falloff)
- bug fixes
- auto segmentation for curve inputs
- modulated speeds for no extrude moves will be correctly displayed
- gcode output to GH only on request
- faster slicing
- image map example
- variable infill example
- better degen defaults
- issue warnings if extusion is limited by nozzle size
- slicing component now accept mesh input (much faster)
- baked preview mesh is now split to match the sim time
- improved stability
- deconstuct toolpath is now two components: deconstuct CNC and deconstruct FDM
- gha loading sequence fix on mac
- no extrude curves displayed thicker
- mesh smoothing
- refactored infill and wall generator
- modulators accepts linear curves
- demo files
- volume component to calculate the extrusion area based on width / height
- static mode more performant
- fdm machine flattens toolpath input
- uv scaling input for better textures flow along the extrusion
- bugfixes for preview
- Infill Generator : robust handling for disjoint regions
- Infill Generator : Start Point is now hidden ; right click to reveal
- smart selector for extrusion mode based on available inputs
- bugfix: static mode now correctly ignores sampled heights
- closed paths are rendered more nicely
- toolpaths now has an icon
- interpolated vector field modulator
- simulation improvement:
- heigthfield outlier filtering
- extrusion smoothing
- dengenerate extrusion filtering
- heightfield interpolation
- bugfix: sorting curves off by default
- icons for parameters
- deconstruct toolpath features hidden outputs for clarity
- color component features hidden inputs
- vms now should default to 2 for all modulators
- significant perf improvements in fdm program generation and simulation
- better icons
- significant perf improvements in fdm preview
- icons
- curve divider respects closed/open state
- walls generator reworked to suppress duplicate control points
- introduction of simplify curve component
- planar slicer component: generates planar curves for "normal" printing
- bugfix in walls generator: holes are offest correctly
- async upload to printer
- refactor of vasemode layerheight
- introduction of layerheight generator: creates a layerheights based on slope
- better default values
- licensing popup when license is expired
- option to disable licensing , plugin will not try to load automatically until licensing is enabled
- naming conflict resolved between Rhino host plugin and Grasshopper
- licensing popup at first install




