Kliment's Pronterface has rudimentary support for controlling a DLP resin printer via the Projectlayer screen. I made some modifications which are listed here, together with a few instructions on how to best use it.



  • Accepts SVG files from Slic3r or Skeinforge, or a zip file of images (bmp,jpg,png), processing them in alphabetical order. (File extension is .3dlp.zip)
  • Settings are saved between sessions.
  • First layer can be displayed for a set number of seconds. Useful for testing or for exposing the first layer for longer before starting the print. A value of -1 sets it to infinity.
  • Display of a calibration grid to ensure the size of the projected image is correct.
  • Pre- and Post-lift gcodes define what the printer should do before and after projecting a slice.  Used to tilt the vat to lift the print off the base, etc.
  • Overshoot setting tells the printer to lift, or dunk, the piece a little further than the layer height, in order to let the resin get in place for the next slice.


Additional Python Dependencies

Controls Overview

A help option is available in the dialog to say what each control does.  The text of this is given below.


  • Load: Opens a file dialog to choose an SVG file created from Slic3r or Skeinforge, or a zip file of bitmap images (with extension: .3dlp.zip).
  • Present: Starts the presentation of the slices.
  • Pause: Pauses the presentation. Can be resumed afterwards by clicking this button, or restarted by clicking present again.
  • Stop: Stops presenting the slices.


  • Layer (mm): The thickness of each slice. Should match the value used to slice the model. SVG files update this value automatically, 3dlp.zip files have to be manually entered.
  • Exposure (s): How long each slice should be displayed.
  • Blank (s): The pause length between slices. This should take into account any movement of the Z axis, plus time to prepare the resin surface (sliding, tilting, sweeping, etc).
  • Scale: The additional scaling of each slice.
  • Direction: The direction the Z axis should move. Top Down is where the projector is above the model, Bottom up is where the projector is below the model.
  • Overshoot (mm): How far the axis should move beyond the next slice position for each slice. For Top Down printers this would dunk the model under the resi and then return. For Bottom Up printers this would raise the base away from the vat and then return.
  • Pre-lift Gcode: Additional gcode to run before raising the Z axis. Be sure to take into account any additional time needed in the pause value, and be careful what gcode is added!
  • Post-lift Gcode: Additional gcode to run after raising the Z axis. Be sure to take into account any additional time needed in the pause value, and be careful what gcode is added!
  • X (px): The projector resolution in the X axis.
  • Y (px): The projector resolution in the Y axis.
  • OffsetX (mm): How far the slice should be offset from the edge in the X axis.
  • OffsetY (mm): How far the slice should be offset from the edge in the Y axis.
  • ProjectedX (mm): The actual width of the entire projected image. Use the Calibrate grid to show the full size of the projected image, and measure the width at the same level where the slice will be projected onto the resin.
  • Z Axis Speed (mm/min): Speed of the Z axis in mm/minute. Take into account that slower rates may require a longer pause value.

Display Options

  • Fullscreen: Toggles the project screen to full size.
  • Calibrate: Toggles the calibration grid. Each grid should be 10mmx10mm in size. Use the grid to ensure the projected size is correct. See also the help for the ProjectedX field.
  • Boundary: Toggles the boundary of the loaded model. Shown in red so it can be used to position the slice whilst the resin is in the vat.
  • 1st Layer: Displays the first layer of the model. Use this to project the first layer for longer so it holds to the base. Note: this value does not affect the first layer when the "Present" run is started, it should be used manually. The "(s)" number dictates how long to display the first layer for. -1 = unlimited.


  • Calibrate the projector (see XY Calibration below).
  • Choose Direction of "Top Down" or "Bottom Up" depending on your projector type.
  • Slice a model to SVG (or a zip of images) and load into Projectlayer.
  • Without resin in the vat, choose "1st Layer" to project the first layer onto the vat floor. Check the image is sharp and in the correct position, adjusting scale and offset accordingly . Turn off 1st layer.
  • Set layer height, exposure and blank (pause) as needed.
  • Set overshoot, pre/post lift gcode, and Z-axis speed as needed.
  • Optionally, perform a dry run to check the projection and movement sync as expected.
  • Load the resin into the printer and position the base to start.
  • Optionally (but recommended), use the "1st layer" control to display the first layer a little longer. This ensures it binds securely to the base.
  • Start the print by choosing "Present".

 XY Calibration

The key settings are the X and resolution (in pixels), and the ProjectedX value (in mm).  The former should be set to the resolution of the projector (e.g. 1024×768), and the latter to the full width of the image that is projected onto the bottom of the vat – not just what is visible in the vat of course, but the entire width of the projection.  (The display should of course be set to “fullscreen”).  With these figures dialled in the calibrate checkbox should display a grid of 10mm² squares.  The ProjectedX parameter can be modified to fine tune.