OpenFL: an API for the Form 1 / 1+

Hi All!
Is there anybody who tried this OpenFL with Detax or Dreve reisins?
In our company we have Form2 printer and we’re using it for audio solutions with Detax reisins…with quite nice results. Although it could be better.

If I’m right getting longer exposition time with less power from LED should give us better resolution and thinner layers? Do you think this would give better results (we have “steps” in the sound-tubes)?
If so I think we can buy Form1+ and play a bit with the setting :slight_smile:
Do you plna to create OpenFL API for Form2 as well? Ther is open mode in Form2 but you have to use pre-set setting which can create some issue with the outcome.

I’m afraid at the moment we do not have plans to provide OpenFL for Form 2.

What about Detax materials? Do you have any results/information?

Still no plans for Open FL for Form 2? I would be very happy to have it.

2 Likes

Hello. What is the safe laser power limit for Form 1 (not +)?

One would think by now that this would be a simple process already incorporated into the form 2. I would wager that more people would purchase the form 2. Especially when carbon fiber filaments are available for standard 3d printers

Hi. Thanks for creating this forum. I have Form1+. I liked the idea of controlling the curing setings so I did firmware upgrade using the preform 2.3.3 oOpenFL software. The minute I pressed the firmware update icon the printer froze and shot down. It is now a dead rock, not seen nither by the computer nor the software. What should i do. Please help. Thanks.

HI, great stuff here.
Is it possible to read in an FLP without a printer?
I want to download them from the SD and alter the commands.
After that I want to put them back on the printer and print them.

Thanks in advance
A.

You have to print the FLPs from Preform to a Form 1/1+, then read them back with the API; there’s not a way to go from Preform to FLPs on your local machine.

Hi. sorry for the misunderstanding.
I want to get the .flp files that were formerly send to the printer from my SD card in the printer on my hdd and the into python using the API. Is that possible?

Anyway. Is ist possible to alter the XYMove commands like the ZMove command.
I have in layer 21 these points:

layer[21].points
[LaserPoint(x=34858, y=34845, dt=4), LaserPoint(x=34858, y=34792, dt=3), LaserPoint(x=34728, y=34886, dt=8)]

I user this command to change them:

layer[21].points = 32000,32000,5

this should give me a Laserpoint with x=32000 y=32000 and a dt of 5

layer[21] gives me

File “”, line 1, in
File “/home/pi/OpenFL-master/OpenFL/FLP.py”, line 125, in repr
self._reprContents(),
File “/home/pi/OpenFL-master/OpenFL/FLP.py”, line 167, in _reprContents
def _reprContents(self):
File “/home/pi/OpenFL-master/OpenFL/FLP.py”, line 171, in points
def points(self):
TypeError: ‘int’ object is not iterable

I also tried numerous commands with rackets but nothing works.

layer[21].points = (32000,32000,5)

then layer[21] gives
Traceback (most recent call last):
File “”, line 1, in
File “/home/pi/OpenFL-master/OpenFL/FLP.py”, line 171, in points
def points(self):
TypeError: ‘int’ object is not iterable

Thanks for the reply.

Okay, it sounds like you have two different questions.

You can list files on the printer with list_blocks, and read FLPs off the printer using read_block_flp (for historical reasons, a layer is called a “block”).

You’re having trouble modifying the file because you’re trying to replace a list of tuples with a single tuple. You should instead try something
layer[21].points = [(32000, 32000, 5)]
Note the nested brackets, which make a list of (one) tuple containing three items (for x, y, and laser power).

1 Like

Thank you Matt,
That worked and makes sense.

1 Like

Hi there. I have an odd problem.

The API works great and does normally what I intend to do. However. Now I have a simple calibration print that i want to print with some of mine changes. However if I try to send Layer(Block) 32 back to the printer I get this error:

Something
Something
Something
Layer  32 done
Traceback (most recent call last):
  File "/home/pi/OpenFL-master/calib_debug.py", line 16, in <module>
    p.write_block(i, layer)
  File "/home/pi/OpenFL-master/OpenFL/Printer.py", line 327, in write_block
    return self.write_block_flp(block, data)
  File "/home/pi/OpenFL-master/OpenFL/Printer.py", line 351, in write_block_flp
    self.write_block(block, bytearray(flp.tostring()), skip_audit=True)
  File "/home/pi/OpenFL-master/OpenFL/Printer.py", line 340, in write_block
    expect_success=True)
  File "/home/pi/OpenFL-master/OpenFL/Printer.py", line 180, in _command
    r = self._wait_for_packet(wait, verbose=verbose)
  File "/home/pi/OpenFL-master/OpenFL/Printer.py", line 195, in _wait_for_packet
    p = self.poll()
  File "/home/pi/OpenFL-master/OpenFL/Printer.py", line 220, in poll
    self._process_raw(raw)
  File "/home/pi/OpenFL-master/OpenFL/Printer.py", line 145, in _process_raw
    while self.packet[0] != self.SOF:
IndexError: bytearray index out of range

So it fails during the p.write_block(i, layer) in my code. I am stuck and do not know where to start, hence in my test code down below I do not do something with this Layer, I just want to write it back to the printer.

Thanks
ohh and here my code

from OpenFL import Printer, FLP
p=Printer.Printer()

assert 0 in p.list_blocks() # I0 this fails, then there are no layers on the printer

for i in xrange(31,40):
	layer = p.read_block_flp(block=i)
	assert isinstance(layer, FLP.Packets)
	assert isinstance(layer, list)
	for l in xrange(0,len(layer)):
		print 'Something'
	
	print 'Layer ',i, 'done'
	p.write_block(i, layer)
	print 'Layer ',i, 'send to printer'
print 'Upload complete!'

Thanks for sharing this! it’s really very interesting and as mentioned by others, opens up a lot of potential!

I’m trying to vary the exposure laterally across a 3-dimensional build. The exposure has clearly been varied laterally when generating the 2D lithopane of the Mona Lisa shown in your presentation. Forgive me, I’m knew to Python and have two questions if you could help me please?

  1. Was the lithopane generated using the image_to_laser_moves.py script?

  2. If so, to then vary the exposure in three dimensions, could a series of FLP blocks (layers) be produced using the image_to_laser_moves.py script and then tie them together for uploading to the printer? Is there a better way of doing this or example script for something similar available I could work with? Just conscious that the print.py script is only for printing a single layer.

The process you’ve developed looks fantastic and any help will be gratefully received!

Rob.

Hello,

I wanted to start using Preform OpenFL 2.3.3 version and I see that the Amazon S3 download links from the Github page are broken:

Can anyone help with providing a valid download link, from a mirror, or Dropbox/Google Drive/etc. folder?
I tried contacting Formlabs support but they don’t seem to maintain this project anymore.

@BenFrantzDale Could you please help us with this?
I really love the Form1 machine I have, and using the OpenFL version of Preform will allow us to use custom materials and print settings for this machine.

Thank you,
Alex

1 Like
1 Like

@Marshall_Banana Thank you very (very) much!!! :fist_right::fist_left:

LE: I’ve created a PR to add these files to the OpenFL repo on Github (PR #36)

2 Likes

Thank you for bringing this to our attention. We changed the URL our downloads come from and hadn’t updated it. We just merged this PR to fix the links: Fix AWS download link by icarusdes · Pull Request #37 · Formlabs/OpenFL · GitHub

The updated links are

1 Like