Extract STL from Preform project files

The Form1 printer is supposed to be a click and print easy consumer solution. You get a sleek hardware (that still needs some tuning) and a polished software (Preform) that does not let you tweak a lot’s of options. So if for some reason the auto-generated supports are not working or you want to use a non-official polymer, then you are locked by the closed nature of the product.

When I’ve discussed with Formlabs during the SF Maker Fair, they confirmed they had no intention to release the USB protocol and the .FORM file format specification. The result is that if you want to use a Linux OS or another slicer, you are restricted (ex: generate internal supports function does not exist in Preform yet). These limitations do not exist with the B9 printer, as they decided to release everything as open source.

So what can be done? Well we are limited to reverse-engineer the FORM file or the USB protocol. It’s tedious and random: the end result is not guarantied but by doing so You can learn things about the Form1 and maybe fix some short-coming. A few stuff that open protocol/file could do:

  • enable other OS (no need to use visualization in Linux for ex)
  • custom slicer to fine control the supports, generated path, calibratio
  • Compatibility with different resin/polymer by adjusting the curing parameters
  • new cool features like the vat-fogging map

Anyway, with this post let’s start simple by extracting the STL meshes embedded in the .FORM files.

Extracting STL Mesh data from the .FORM

Using  something like Frhed free HEX editor let you peak at the file content, and a little bit a search gives this 80 characters string with “stl” inside… Yes this is, if you remember the STL file format the first field of a binary format file.

formSTLHeader

And when you duplicate the same object, or add another STL, you can see that each STL instance is stored in the .FORM file. More interesting is the fact that preform keeps the STL in its original dimension and orientation. So you can see that even if I scaled and rotated one of the pieces (from here), the extracted STL shows the supports scaled and with an angle.

multiSTLinMesh_rotateNScale

This is telling us, that somewhere in the meta data of the .FORM file you have the position, rotation and scale information. This is stored in binary (not text) format and thus is more complex to extract. I might try to find where it is stored in a later version of my STL extraction program.

The Utility to extract STL mesh data from .FORM files is coded in plain C, so you should be able to recompile it on anything without much issues. The current EXE was compiled using Visual Studio Express 2010 x86, so you might need to install the VS 2010 redistribuable package before using it.

Utility usage is: extractSTL xxx.form
This will extract the STL meshes and save them in “xxx.form_meshN.stl”

The EXE, source code and VS project files are available here.

Happy forming!

[<<Prev. – Form1 might need calibration]    [3D Printer articles]   [Form1 Calibration Procedure – Next>>]

Advertisements

8 thoughts on “Extract STL from Preform project files

  1. Kirk

    Dang I so wish I could get this to work, how come it does not? I installed the visual studio as mentioned in the link above! PLEASE! Help. All I see is a command prompt flash by when I try to start it. I’m using windows 7. Any ideas, this would be fantastic, I would pay you for it if I could find you and get it to work. : )

    Reply
  2. Kirk

    Never mind, figured it out, works like a charm! Need to use in command prompt. BRILLIANT! HOLY GOD! I LOVE YOU! Thanks so much, you have no idea how much time you just saved me! THANK YOU!
    best, Kirk

    Reply
    1. damienideas Post author

      Good day Kirk,
      nice thanks for checking this, hopefully it’s useful to you. I’m not really interested in spending time to build a GUI, but if anyone has the time to do so, I’ll try help.

      Could I ask why you needed this extraction?

      I’m still pondering on what I should add next, maybe code my ‘slicer’ from http://wp.me/p3gI7M-5s then work my way up to build internal supports…
      Cheers

      Reply
    1. damienideas Post author

      Good day Dmitry,
      could you tell me a bit more on your setup? I have tried on version 1.1 for a simple STL and could extract it without any issue.
      If you can share the .Form file that doesn’t work it could also help.
      Cheers

      Reply
  3. Etienne Renaud

    Hi Damien,
    thanks for sharing the STL Extract Tool.
    We’re currently using both, a Form 1 and a B9 Creator (just started using it and still learning)
    My idea is to possibly use Preform to automatically have preform add the supports, save the *.form file, extract the STL again and use that new STL with supports now on the B9 Creator.

    All the best
    Etienne
    http://www.looxis.de

    Reply
    1. damienideas Post author

      Good day Etienne,
      yes this is definitely possible, the only detail is that scaling and rotation are not applied on the STL extracted, so you would have to rotate the geometry in the STL outside of preform first.

      Note: that I have discussed with someone that has a .form file that can be extracted, but somehow the geometry is corrupted. So maybe there is a bug in the current code. I would have to investigate further. If you can make some try on your side an report your result that would be great.

      Cheers

      Reply
  4. Kevin

    Hi Damien,
    Thanks for your tool! I have tested the extract tool,but it only works with Preform 0.8.4 preview 3 or older version. The stl files extract by 0.84 preview 3 or later version, cant be opened by other software, for example : Creation Workshop or Autodesk Meshmixer.
    Thanks
    Kevin

    Reply

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s