Plater is a 3D printer plates placer and optimizer. It takes a few STL files and some parameters such as the plate dimension, part orientation and spacing, and it tries to generates 3D model to print your parts with at least as possible plates.
It uses a really simple configuration file that contains the list of parts with
their quantities and dimension. You can then build your STL plate(s) and release
it with your part, or simply release the
plater.conf file and let people do
their own plates using their own settings.
Note that Plater will not choose the best orientation of a part for you, this is up to the user because it depends on a lot of things.
- Get Windows binaries (v1.1)
- Get Windows command line tool (plater.exe, v1.0)
- Get Linux binaries (v1.0), Qt 4.8 and OpenGL required
- Get OSX dmg (v1.0), thanks to Toby Tomkins
With the GUI
To make a plate, first load your STL files. Click "Add Part(s)" button and select
one or more
This will open a wizard, you'll be able to select the orientation and the quantity of the part.
Then, enter your plate dimension (in mm). You can also adjust the spacing of the parts and the precision (internally, plater use a discrete representation of parts, lower is better).
Hit "Run", this will generate you the STL file(s) corresponding to your plates.
All the settings you change can be saved to a
config.json file using the
"File > config.json" menu. This file will be created in the same folder as
plater executable and will be loaded on startup.
With the command line
Plater usage is:
plater [options] plater.conf
plater.conf is the name of your configuration file. If
- is given as a
file name, the configuration will be read from standard input.
Here are the options:
-v, increase the verbosity, this will output more things on
stderrduring the placing of the parts
-W width, width of the plate, in mm (default
-H height, height of the plate, in mm (default
-j precision, precision, in mm (default
-s spacing, parts spacing, in mm (default
-d delta, sets the spacing of the brute forcing (see below), default
-r rotation, sets the angle of the brute forcing, default
-p, will output .ppm files instead of STLs
-o pattern, sets the pattern of output files, default is
plate_%03d, this means that the first plate will be named plate_001.stl, the second plate_002.stl and so on.
The plater.conf file
The configuration file looks like this:
# This is an example of plater.conf file part.stl 1 other_part.stl 3 back yet-another-part.stl 8 left
Each line begins with a part name, followed by the quantity, and optionally the side
that should be on the plate. The side can be
bottom (default, you can also put
left or `right.
You can put comment lines begining with
#, it can be useful to add some advices
on how generate your plate or some copyrights.
The file should be described relatively to the
If a filename contains a space (
How does it works?
The problem of placing parts is quite hard and very likely NP-complete. Plater is an heuristic based on greedy algorithm that use brute force.
Each part is first pixelized into a bitmap (each pixel is white for free space and black for used space), with a given precision. Then, this bitmap is dilatated with a given spacing.
Then, the placer tries to put each part one by one on the plate, brute forcing position to maximize a score based on a simple gravity-like property, which tend to pack the parts. If it can't place the part, it try adding a new plate and so on.
It is runned multiple times with multiple parameters, and the best solution, i.e the one with the less plates is kept.
Note that the result can be bad in some limit cases, and it will not replace your expert brain! However, it is useful to do the placing automatically and quickly.
To build plater, go in the
plater/ directory and then use the cmake:
mkdir build cd build cmake .. make
This will create for you the libplater and the plater command tool
First, install Qt 4.8.0. Then, be sure you built plater in
You can simply run QtCreator on
gui.pro and build it.
Using command line
Go in the
gui/ directory, and do:
mkdir build cd build qmake .. make sudo make install
This will create the
plater-gui binary file.