Skip to content
/ Farfalle Public

Experimental 3d Printing Slicer

License

Notifications You must be signed in to change notification settings

Liech/Farfalle

Repository files navigation

Farfalle

This is an experimental Slicer in a very rough state.

Orchestrated by a Python or Lua Script the executable produces gcode.

It uses Mesh based Models instead of Axis aligned Planes to cut.

Therefore it might be a little bit slower than what you are used too. But it is capable of pretty neat stuff:

  • Non-Planar Printing
  • STL Mesh Based Infill Patterns
  • Function Defined Infill
  • Nonplanar Build Plate

Also the script code is pretty small and therefor hopefully inviting for experimentation and learning how slicers work.

It is not finished yet though.

Planar Benchy

image image There are Gaps between the lines, because the extrusion is not yet tuned. Im currently concentrating on the correct toolpath.

Non-Planar Benchy

image image image

Obviously there is some tuning of the retraction settings needed.

Future

Next Steps

  • It is currently pretty slow. Slicing a Benchy can take a day. I am confident that it would be possible in under 15 Minutes.
  • The Retraction Settings and similar Settings are not tuned, therefor a lot of stringing is happening
  • The line Merging is naive and it should incorporate also wall sections.
  • The order the lines are printed does not respect common sense
  • The drawn lines are too detailed. It should be possible to shrink down the slicer files.

Far Future

  • Instead of Sinus Curves it should be possible to follow top Surfaces
  • Infill
  • Support
  • Mindfullness regarding Printer Geometry
  • 3D Non Planar Polygon Offsetting instead of Voxel Erosion
  • Multi Layer Region Coupling to reduce stringing potential
  • I want to experiment with intentionally move the nozzle into the already printed material to stich layers together
  • I want to experiment with Layerless Hot Plasticblob as Infill to get stronger prints

License

https://www.gnu.org/licenses/lgpl-3.0.html

Use

  • make sure to pull submodules too
  • build with VCPKG + CMAKE
  • create main.py or main.lua at the same folder as the executeable
  • fill main and get inspirations in example folder
  • documentation.py dumps a script reference

Dependencies

  • CMAKE - Build Tool
  • VCPKG - Package Manager
  • CGAL - Main Workhorse
  • eigen3 - CGAL wants this
  • glm - Vector Library
  • nlohmann::json - Config Load/Save
  • Polyglot - My lib for scripting languages (Python & Lua)