Does the Preform Fine-Tuning X/Y scaling actually work?

It doesn’t work on my machine; as in - it does nothing. Whatever values I plug in my parts come out the same dimensions when printing my 80mm test pieces aligned with X and with Y.

Does it work for anyone else?

It is the same for me … I have the same dimensions. The first impression on my Form1 was a calibration test and the second to see the results.
I work in watchmaking industry then the accuracy is paramount.

I adjust my Xand Y axes by a small amount of 0.2-0.3% and it is measurable.  I’ve not tried a larger value, say 1-2%.

I’m using Preform 1.2.1 and 1.3c firmware.

Very interesting. I’m concerned that FL might have implemented this in some other way than scaling the actual tool path - and are could be using some kind of low level hardware instruction that may not be working because of my X-galvo tuning, and Y-galvo replacement.

KD - you are the man! the man who tracked down the F1 galvo, but if you could post results with a larger increment/decrement that would be great.

Barth  - could you post more details about the calibration test you used and scaling factor?

I was using the attached 80mm test piece - which at default was printing aligned with the X-axis at 79.6mm. The picture shows the result of printing with X-axis scaling at 2.6% - ie - no effect.


Hohoho!! My bad!

I set 0.09 and 0.02% instead of 0.9 and 0.2% now it looks good!

Sorry for that.

I’ve adjusted both X and Y galvanometers so no issue there with scaling and I would guess Preform scales the slices before sending them to the printer but just a guess.  Oddly, I have set 0.4mm in Z-offset and returned after a reboot and it reads 0.5mm so bugs are also entirely possible!

When I finish mapping the scaling necessary for each quadrant of the build area, I’ll run a 3% scaled piece and let you know.

I’m having some success with it!  I have a part that in CAD is 67.5mm x 38mm on X and Y.  Shapeways SWF and ‘detail’ processes print spot on at 67.5mm and 37.9mm.  My Form parts were always ‘loose’ with “X” being 68mm and “Y” being on target at 38mm.  I entered an X scaling value of -0.74% and I’m getting 67.45mm x ~37.9mm.  They’ll actually mate up with the Shapeways parts now, so I’m pretty happy for that!

Scaling the slices before sending them to the printer would be the “right” way to do it - but then if that’s how it’s done, why doesn’t it work on my machine and yet it seem to work on two other printers? Note, initially I also scaled both axes - since the y was printing larger rather than smaller - again, no effect.

My concern is that that the work I’ve done showing how to tune the galvos and how to replace them may be diminished because it stops the preform X/Y scaling from working…

Might just try a print with one axis intentionally distorted-- do a few percent and see what happens?  I tested by aligning a part and generating supports and then just printing twice back to back.  Once with no modifications which I took measurements from and calculated a desired correction factor for, then a second time after entering the correction amount.

I agree that it would seem ‘right’ to apply the scale to the slices.  I suppose they could scale the output of the DAC (or the DAC voltage reference if there’s a separate one, but I assumed that they’re just using internal DACs on their MCU).  Maybe they’re actually messing with the slew time between points (to slightly reduce or expand deflection), seems like that would be more likely to mess with galvo tuning than deflection voltages.

Suppose we could lash up yea olde USB protocol analyzer and look at the datastream to the printer and do a few prints back to back and then see if the data changes.  (Two tries to see if the data is the same run to run with identical settings, then a third with ‘scaled’ output and see if it’s different.)

Based on the fact that one cannot mess with the fine tuning without a printer attached makes me think that it has to modify a piece of code stored in the printer.  Maybe I will make a change with the printer in Windows and reboot to Mac OS and see if the settings are still there.  It will help prove where the setting is being stored.

Kevin, I think your efforts and write-ups are awesome.  I do not think the scaling is not working due to changing the galvo’s.  I do not remember if you also changed the driver board but either way, the driver board just does what it is told.  The controller does the interpreting of speeds and feeds.  The rest just does the work (I am not sure if galvo’s have feedback to the controller like a servo.

Off to see if the settings are saved in the printer or software.

I do not think the settings are stored in the printer.  I booted to Windows,  edited the settings +4.0 & -4.0.  I then closed Preform.  Reopened Preform.  Verified the settings were still there.  I then rebooted to Mac OS.  Opened Preform and looked at the settings.  Both were set at 0.0 & 0.0.  Clearly not  what I set in Windows.  I rebooted to Windows and found that the settings were at +4.0 & -4.0 as I had set it before rebooting.  I se everything back to the default settings as I really can not test anymore until I have a functioning printer.

@David interesting stuff - and I’m sad to hear your printer is out of commission.

I’ve actually pulled out the SDHC card from the Form1 and plugged it in to look at it’s contents - it seems to have a file for each slice, given that I could see files named with numbers corresponding to the number of layers in my parts. I’ve also looked at the Form files in a binary editor including the original laser spot test file.

My impression was that that form files included a “pre-amble” that dictated the “speed” of the galvometers - or at least thats what it seemed like when I imported different shapes to the original laser spot file and saved it along with its “special material”.

So what I’m worried about is that there is a meta-instruction - sent alongside the slice data, like the galvo speed, that accomplishes scaling, and which is somehow disrupted by my changes so far.

I guess the way to confirm this is to look at the slice data on the SDHC card in the form1 on an indentical form1 file with different scaling settings. I’ll update tomorrow.

Thanks all for updates!

No troubles scaling 3% on one axis.  Model printed with 3% scaling.

The actual +/- values for Preform are stored in the registry of Windows, and presumably in a .pref file on OSX.  You can uninstall Preform, reinstall and find your +/- values already set.  Same applies to Z-offset values.


I’ll get you the file locations and registry entries from a fresh install of Preform so you can _completely _remove Preform and its settings.  Let me know what OS you have installed… Windows 7 64bit?

The Unofficial Form1 Wiki

@KD - yup W764

This text file contains most of the changes after installing Preform 1.2.1 on Windows 7 64bit, then executing it and manipulating the butterfly .form.  The Keys entries correspond to Registry values where HKCU is Hardware Key Current User, HKLM is Hardware Key Local Machine, etc.  Be careful when editing the Registry!  Also included are files and folders created.

Use your best judgment deleting these and maybe it will fix your problem with scaling.


Well - I’m totally baffled as to why scaling is not working on my machine. Scaling does seem to be implemented in the slice data. I loaded a part to the Form1, cancelled it, unplugged it - took the SD card out and plugged it into a reader, and copied the slice data over to my computer. Note, slices are loaded onto the SD card as numbered files.

Then I replaced the SD card into the Form1, powered it on - loaded the exact same part - cancelled it again, and again copied the SD card data on to my computer.

As expected the slice data was all the same - although with different file creation dates.

Next I put scaling on at 3.8% for both axes, and loaded the exact same part again - expecting that if scaling was not implemented in the slices then a file comparison of the new SD card data would show the slice files to identical in binary.

The slice files are different however - and all larger - as you’d expect if the slices themselves were scaled. See attached screenshot from BeyondCompare - comparing the data taken from the card after loading the same part with and without scaling.

So now - I’m am utterly confused as to why this is not working on my machine. I’ll try one more print, but I don’t hold out much hope that anything has changed in the meantime.

If anyone’s curious about the odometer file you can see in the pic - as you’d expect it’s a set of stats on your F1. Here’s mine …


That is curious that the data appears to be scaled but the printer is not reflecting the increase on >either< axis.

How do you feel about leaving the new galvanometer where it is and swapping out the daughter board?

Good find on the odometer file.  I was wondering where that file was since it’s the one that’s reported back to FL if you agreed to it in Preform, of course.

Well - now I’m even more confused if that’s possible. I printed X and Y oriented 80mm test parts expanded by 3.8% and they printed expanded. So I’ve no idea what was going on before - and just now I printed the same pieces in X plus1.2% and Y minus1.2% and they printed in the reverse. X part was 78.8mm and Y part was 81mm.

Maybe it is connected to my galvo replacement - the thing is, in switching out my busted Y axis galvo I noticed that Formlabs had installed the X galvo in the Y slot and vice versa - so I thought it didn’t matter which was put where - and I put the replacement PT-20K Y axis in the Y slot - which means I currently have two “Y” galvos - which was working fine - except for this scaling.

It is strange that Preform refuses to apply scaling if the F1 is not connected. It shouldn’t need to be given it appears to scaling the slices … who knows. I’ll try plugging in the X axis from my PT-20K set so that I once again have X and Y galvos installed in reverse.