Update Jan 2014: As I am not updating Projectlayer that much recently, Windows users may wish to take a look at Creation Workshop, which offers slicing, support creation and DLP printer controls in one application.  Have a look at the homepage, or at the Github Project.

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
  • 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:
  • 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, 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.


  • August 6, 2013 - 12:19 pm | Permalink

    I’m Jody, italian, and i try to make a 3D printer DLP. I would like to use your software to control the printer. I have a questions, you use arduino with ramps for elettronic? You have modificate the firmare sprinter or use the original? Si possible to have eventually your modificate firmware? Thanks!

    • August 6, 2013 - 1:39 pm | Permalink

      Hi Jody. I simply used the regular Sprinter firmware – it should work with no modifications.

      Best of luck!

  • August 20, 2013 - 10:53 pm | Permalink

    Hi Gary,

    I have just aired my website: , where I introduce the new affordable 3-d dlp resin to all dlp printing enthusiasts.
    I hope to find distributors for all countries to make the resin even more affordable for the end-users by saving on the shipping costs.

    Thanks again for all your help!


  • Pingback: Networking Things and Creators in Open Source Hardware | Open Electronics

  • Yvo de Haas
    September 20, 2013 - 6:51 pm | Permalink


    I am currently working on a printer that prints with binder in Zcorp material. This printer is called focus and can be found on thingiverse. I can already print using Gcode, but I need a new form of exporting STL files that an Arduino with Ramps can use to print with inkjet cartridges. I have a fair amount of Arduino programming skills, but lack basic computer programming skills.

    If you would be interested in helping me with this you can contact me at: focuspowderprinter [at]

    Many thanks in advance,

    Yvo de Haas

    • September 20, 2013 - 7:49 pm | Permalink


      That sounds like an interesting project! Unfortunately I don’t have the time to help out.

      Best of luck!


  • Mike S
    October 11, 2013 - 5:18 am | Permalink

    I tried to run the Windows self contained exe on a couple of different machines and got error messages indicating either that it was not a Win executable, or wrong version. (64 vs 32 bit perhaps?) Can you make a 32 bit exe available? Thanks for your efforts on this software.

    • October 11, 2013 - 7:52 am | Permalink

      Hi there. Sorry to hear it’s not working for you. I thought it should be compatible with x32 machines but I will double check.

      Could you let me know what operating systems you tried?

  • Mike S
    October 13, 2013 - 4:58 am | Permalink

    XP Pro sp3 and Win 7 Pro sp1 32 bit

  • Mike S
    November 6, 2013 - 1:58 am | Permalink

    Hi Gary,
    Any news on a 32 bit version for Windows?

  • Mike S
    November 6, 2013 - 3:24 am | Permalink

    I also tried installing Python and running that way. The test files in pyglet work but when I double click on a command window opens then closes and that is all. Any advice? Thanks.

  • antonio
    November 15, 2013 - 1:57 pm | Permalink

    Is necessary a dlp proiector or is ok a lcd proiector ? thank you

    • November 15, 2013 - 2:16 pm | Permalink

      Hi antonio, It has to be a DLP, because the LCD projectors appear to have a UV filter which stops the light from curing the resin.

      • antonio
        November 15, 2013 - 4:55 pm | Permalink

        is possible to eliminate the uv filter?

        • November 15, 2013 - 5:42 pm | Permalink

          From what I understand it is a coating on the LCD display which is difficult (or impossible) to remove, and also there to protect the LCD from degrading due to UV exposure.

          Some time ago I attempted an experiment to see if a UV lamp shining through an old LCD monitor screen would cure resin underneath, but it didn’t work due to the coating, and I couldn’t see a way of removing it either.

  • December 19, 2013 - 11:18 pm | Permalink

    i can start this software PLEASE HELP I NEED PYTHON OR WHAT

    The version of this file is not compatible with the version of windows you re running.
    Check your computer s system information to whether you need an x86 (32-bit)
    or x64 (64-bit) version of the program, and then contact the software publisher.


    my comp is ok

    • December 20, 2013 - 12:02 pm | Permalink

      Others have also had problems starting the windows executable on their OS. I suspect that it is because I built it on a Vista x64 machine, and some of the libraries it needs are possibly not compatible.

      What OS are you using?

      An alternative is to run the program from source – if you know how to run python programs.

      If you are looking for a polished product however, I would actually recommend looking at some of the other DLP control programs that people have developed. There has been a lot of activity in this area and there are better solutions to my Projectlayer hack nowadays.

      Best of luck.

  • goldi80
    December 20, 2013 - 10:13 am | Permalink

    can not start the program!!!!

  • goldi80
    December 20, 2013 - 12:49 pm | Permalink

    I’m using win7 32bit and win xp sp3 i try everything
    put the link python
    i want to my printer with this program!

  • goldi80
    December 20, 2013 - 1:14 pm | Permalink

    i have idea to make great printer use remove x axis you don’t need it is go to slow to many nose
    Vivitek D952HD DLP Projector 1080p put horizontal with the mirror 1000$ and put 30µ pixel size on the software you need it micro settings
    z axis put ball nut 1204 is 12mm 4mm step is cheap 10$ Pack of 4 SBR16UU 16mm Aluminum Open Linear
    only one micro switch on top
    calibration z axis put paper on the glass push z axis down to the paper make it zero simple no need to touch again
    Build Table most importet thing you need two build two table one to another with two 8mm Linear Ball Bearing and two springs on LM8UU 8mm Linear Ball in the middle put micro switch to pause the job
    wen the resin is making vacuum the micro switch will pause the job and wait the resin slowly get under is all about springs
    my calculation is 20mm ring or else build time 1000 slice for 15 min to max 30min
    I’m building this!

  • goldi80
    December 20, 2013 - 1:59 pm | Permalink

    i like a simple software usually the work this one have pause i need it for my printer

    the best software i see is tisk in polish lang,, uh

    wen i can try it if it works i pay you my one salary ?

  • goldi80
    December 21, 2013 - 1:02 pm | Permalink

    this works on win7 64bit jeeeeeeeee

    • December 21, 2013 - 11:57 pm | Permalink

      Glad to hear you got it working. Best of luck on your build!

  • Eric CHU
    January 1, 2014 - 12:01 pm | Permalink

    •Windows self-contained executable (zip). Runs without needing to install python or download the dependencies.

    I try to download this zip file. But failed
    If possible send this to my e-mail box?
    or have another link to reach?


    • January 1, 2014 - 1:29 pm | Permalink

      Hi Eric,

      The link appears to work ok for me. I’ll send the zip to you via Email in any case.


  • Christer Vestermark
    January 1, 2014 - 3:57 pm | Permalink

    I really like this program, but there seems to be some kind of small error in the ProjectLayer Dislay? Maybe have something with file compression to do?? Som pixels is missing, and the rounded part have a flat surface.

    These pictures shows the same frame, in the ProjectLayer Display, and your test web page:

    The STL and SVG can be found here (M3):

    This is visible on the printed part as well…

    • January 1, 2014 - 4:22 pm | Permalink

      Hi. That’s interesting. I can only assume that the artefacts are introduced by the Cairo library in some way. At the moment I sadly can’t recommend anything to try in order to remove them. If I think of anything I will let you know.


      • Christer Vestermark
        January 8, 2014 - 9:32 pm | Permalink

        Thank you anyway.
        And thank you for hinting about Creation Workshop. I have been looking at it earlier, but then I liked your program more. But with the latest release it seems relly useful.
        Thank you!

        Best regards

  • Wojciech
    July 31, 2014 - 12:02 pm | Permalink

    I`m Wojciech. I work to build SLS printer. Would it be possible to add positive/negative option when converting STL to SVG in Slic3r? Now it works only with DLP printers.