GSoC ideas - slic3r/Slic3r GitHub Wiki

Conditional G-code and arithmetic expressions parser

Language: C++ Difficulty: Easy-Medium

Implement a grammar parser for conditional and arithmetic expressions within custom G-code, maybe using Boost.Spirit or some other library. #3390


Port the GUI to C++

Language: C++/wxWidgets Difficulty: Easy

The GUI is currently coded in Perl using wxWidgets and our goal is to have it ported to C++. The wxWidgets API is almost identical between Perl and C++, so it's an easy task. There are a couple things where we use the dynamic features of Perl which are trickier and interesting to port.


Port the SVGNest library to C++

Language: C++ Difficulty: Easy

The SVGNest library provides an algorithm for polygon nesting. It's written in JavaScript and a C++ port of it would improve Slic3r's auto-arrange feature. #3237


Fix bugs of the Boost.Voronoi library

Language: C++ Difficulty: Medium

The good but unmaintained Boost.Voronoi library has a couple minor issues affecting Slic3r's results. Interesting task for learning the Voronoi algorithm and how to troubleshoot a computational geometry issue. #2948


Wireframe printing

Language: C++ Difficulty: Medium

Implement the wireframe printing algorithm. #2274


Automatic part rotation

Language: C++ Difficulty: Medium

Automatically rotate a part to make some face of the part the bottom. #3047


Manual support creation

Language: C++/Perl/OpenGL Difficulty: Medium/Hard

Allow users to place and move support pillars by clicking in the 3D GUI. #3062


Refactor the TriangleMesh class and support non-solid walls

Language: C++ Difficulty: Medium/Hard

Replace the internal mesh representation (currently based on admesh) using an existing 3D mesh library or implementing a half-edge structure; only use admesh for fixing models. Keep non-solid walls and slice them as single paths. Bonus: import SVG paths and position them freely using the GUI for printing as single extrusions. #3560 #3523


Implement 3MF format read/write

Language: C++ Difficulty: Easy

Add the 3MF format for both reading and writing. #2811


Non-planar printing

Language: C++ Difficulty: Medium

Implement techniques for non-planar printing. #3442


Support surface colors and mixing extruders

Language: C++/Perl Difficulty: Hard

Read surface colors from AMF or OBJ and keep them throughout the slicing process in order to generate G-code for mixing extruders. #3546


Clean the libslic3r API and write bindings for it

Language: C++ + any Difficulty: Easy

Expose the internal algorithms of Slic3r as a library and write bindings for Python, Perl etc.


Write a Slic3r plugin for Grasshopper

Language: C++ Difficulty: Medium/Hard

Expose Slic3r functionality as many separate components that can be plugged in larger GH definitions (for example: slice a NURBS model in GH and feed the slices to the toolpath generation process in order to skip mesh generation, or provide flow calculation for people driving 5-axis robots with custom motion). This requires a fair amount of design work.