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.