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
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.
- 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".
The key settings are the X and Y 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.
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!
Hi Jody. I simply used the regular Sprinter firmware - it should work with no modifications.
Best of luck!
I have just aired my website: www.funtodo.net , 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!
Networking Things and Creators in Open Source Hardware | Open Electronics
[...] of concept for an application to manage and display files used for 3D printing (STL, G-Code etc), Projectlayer, a modification of Kliment’s Pronterface for use with DLP resin [...]
Yvo de Haas
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] gmail.com
Many thanks in advance,
Yvo de Haas
That sounds like an interesting project! Unfortunately I don't have the time to help out.
Best of luck!
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.
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?
XP Pro sp3 and Win 7 Pro sp1 32 bit
Any news on a 32 bit version for Windows?
I also tried installing Python and running that way. The test files in pyglet work but when I double click on pronterface.py a command window opens then closes and that is all. Any advice? Thanks.
Is necessary a dlp proiector or is ok a lcd proiector ? thank you
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.
is possible to eliminate the uv filter?
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.
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
can not start the program!!!!
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.
I'm using win7 32bit and win xp sp3 i try everything
put the link python
i want to my printer with this program!
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!
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 ?
this works on win7 64bit jeeeeeeeee
Glad to hear you got it working. Best of luck on your build!
•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?
The link appears to work ok for me. I'll send the zip to you via Email in any case.
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...
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.
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.
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.
Creation Workshop is not free anymore.
Have you fully stoped this project ?
first of all thanks for your amazing work. I could already successfully install and run Projectlayer under Windows. It's great!
However i am trying to get it working on a Raspberry Pi 2 (Raspbian Wheezy). Since the RPi is something very new for me, i can not get it working. I tried to install the "normal" Pronterface on the RPi, which worked out. But when I try to open the "Projector" tool, i get following message:
" Traceback (moste recent call last):
File "/homepi/SLA/Printrun-master/printrun/pronterface.py", line 772 in project
from printrun import projectlayer
File "/home/pi/SLA/Printrun-master/printrun/projectlayer.py", line 24, in
from cairosvg.surface import PNGSurface
ImportError: No module named cairosvg.surface "
Do you have any idea how i can fix it? I tried to find any useful information, but so far I did not have any success...
Is there a way to get Projectlayer working for the RPi?
Thanks in advance!
Hi Gary -
Great info and website. I'm curious to know if you recommend an SVG converter for autocad and I am also assuming I need to "fill" parts of the drawing for black and white. I have a drawing that cannot be converted to a solid. (Too many graphical entities) The computer hangs during the conversion - it has close to 250,000 pillars and then some additional geometries. It seems like I could make the slices I need and upload to slic3r from there. (there are actually only two distinct slices and 18 replicates of the first - and then 2 of the last one) It is a 2 mm thick chip. I've tried 4 different cad programs and even build a very high powered computer for it - 128GB RAM and i7 4 GHz processor, RAM disc, SSD etc.
hi (if you're still around...),
It's great to have this interface and functionality. I'm building a resin printer, using a Raspberry Pi as part of the control. I connect to the Pi via ssh, start pronterface, open Tools -> Projector and get the ProjectLayer Control. It works fine...the only problem is that the ProjectLayer Display is on the computer I'm ssh'ing from (as an X-Window) and I want it on the Raspberry Pi HDMI output instead, where the projector is. What's on the HDMI output currently looks like just the log messages when the pi boots. I thought maybe either I have to change the "class DisplayFrame(wx.Frame):" in projectlayer.py, or maybe can somehow make the pi mirror output to HDMI or set a DISPLAY variable maybe but haven't gotten any of that to work yet.
Any ideas on how I might make ProjectLayer Display go out the HDMI would be greatly appreciated.