Of course I do not mean to hurt anyone’s feelings with this post, but
blunt honesty literally guarantees that will happen. So be it. You can
TLDR this, but I actually care if Formlabs succeeds, I know this is a
perspective you need to understand, and all of this is true.
Overview
The Preform software is not good enough for the kind of Company I
think Formlabs aspires to be. It certainly is not anywhere close to
the caliber of the Machine itself, which I believe is absolutely
excellent, both from an Industrial Design and an Engineering
standpoint. Preform, on the other hand, is all about ‘looking’ slick,
but functionally it’s a train wreck.
Where to begin…
Reporting individual ‘bugs’ is pointless, because the entire
application is completely flawed. Sometimes it’s simpler, more
efficient, and more cost-effective to simply admit a program is a
failure, cut your losses, and just start over from scratch. This is
definitely one of those situations, because ‘fixing’ all of it’s flaws
requires a completely new program. The Form1+ was designed for
Inventors, sophisticated Artists, and Engineers. The application that
drives it needs to embrace and reflect that fact.
Here are just a few of the reasons Preform needs to go:
GUI
It’s ugly, overly simplistic, not configurable, wastes screen real
estate, fails miserably at it’s most important core tasks, and it’s
incredibly slow. More developer time was spent making the build volume
box ‘zoom in’ when the app is opened, than making useful features that
actually help users get work done. It’s like they read 'How to write
intuitive GUIs", and then did the exact opposite. It’s more about the
developers getting their rocks off on what they perceive as ‘cool’,
rather than wriing a program for users that’s intuitive, fast,
utilizes the skills and paradigms user’s already know from multiple
CAD program interfaces, and has the functionality that users actually
need to leverage the excellent Form1 effectively. e.g. They failed.
-
Why is the rendering and movement so horribly slow? Load a model in
meshlab and manipulate it. Then load it in Preform. Everything is an
order of magnitude slower in Preform. Why? -
The ‘flyout’ view widget is incredibly useless. It’s behavior is
non-intuitive, and it’s use is frustrating. For instance, when you
mouse-over it, it moves away from your mouse so you need to move the
mouse again to get to it. Once you do manage to keep it still, the
buttons do strange things. For instance, the left and right arrow
buttons do the exact same thing, but spin in different
directions. Each can spin the model all the way around, so you kinda
only need one. However, there’s no indication of which side you’re
looking at. Top and bottom arrow buttons though, for some unknowable
reason hit a wall, and it’s impossible to rotate the model
completely all the way around. A slightly off-brown button state
alerts you to this - if ineffectively.This is a core functionality problem that is also present when
dragging with the mouse. Again, more developer time wasted on
someone’s twisted idea of ‘slickness’ that unfortunately codifies a
core functional limitation that actually impedes getting stuff
done. Not being able to rotate the model completely in every
direction is simply not acceptable in this type of program. Writing
a poorly conceived custom GUI element that thinks that’s OK, is
inexcusable. How about making the software rotate my model? That’d
be time well spent. And have you ever heard of Orthographic and
Isometric projection? A top, front, right side, and iso buttons
would be great instead. That, and how about taking into account the
actual active model bounding box size, and zoom the view
automatically to ‘fit’ the model. Now that would be useful. -
The ‘Status’ bar is always wasting 3/4" of screen. Problem is,
nothing in it is very statusy. And why so huge? Ah, it has big
buttons in it. Hmm, is it a dialog or a status bar. Identity crisis
apparently. Again, very amaturish design. None of this data is even
useful until I hit ‘print’ anyway. Show it to me then. -
The ‘tool bar’ on the left. Massive icons that waste space. But to
use it, a quazi-modal dialog pops up right in your face - and likely
right in your way too. But you can’t move it. You have to work
‘around’ the GUI elements, rather than them augmenting your
workflow. -
Mouse movement of the model is terrible and painfully slow. The
scroll wheel does not zoom at a reasonable rate, and changing this
in Windows has no effect at all (not to mention you should not have
to change it there anyway, but I was desparate). The user should be
able to assign which button does what, and exactly how rotating the
wheel zooms in or out - both in direction and rate. -
No preferences dialog to set anything (like above mouse behavior),
or model color, or shading/wireframe, or default file locations,
or… -
Sliders are way too sensitive and practically unusable. Why no
direct numerical entry as well? -
There is no XYZ widget in the corner of the screen to help you
understand the orientation of the model. Virtually every CAD program
in the world has this. Think there’s a reason? -
Why are there no indicators of hinge and front always?
-
There’s no useful common zoom controls, like active model bounding
box, or extents, or percentage, or drawing a window, or… -
Constant shading and unshading of the model on mouseover is annoying
and pointless. -
Every software update automatically loads the butterfly clip when
the app starts up. WTF? -
Basically, a ton of time was wasted implementing useless or slick or
downright crappy ‘features’, and almost zero time spent on making a
useful tool. Grade: F.
Functionality
Supports. Don’t get me going. Well, I guess I already am, so here’s
both barrels:
-
The heavy gusseted stick with the ball and wedge point is overly
simplistic, clunky, and wastes a lot of very expensive resin. That,
and it’s hit or miss if it works at all. -
If you can calculate that the model is poorly supported in a
location, and you can write code to color that location red, then
why not simply figure out how to support it right in the first
place? This is a complete copout. If it’s too hard for you, then
maybe you’re not up to the task, and maybe you should not really be
working at Formlabs. -
When manually trying to correct the red areas you bailed on, why
does the addition of some supports inexplicably use a round rod with
a point that penetrates through the top of my model? And why does it
give no indication it’s using a round vs. a clunky support until I
click to add it? What logic could it possibly be using to decide to
use one or the other? And why can’t it show me ahead of time? I have
been driven to almost throwing and breaking things by this shit. -
Why do I have no control over what tip the support uses?
-
Why does this stupid tip become my cursor when placing the support,
and why does it flip all around spastically, making aligning it
literally impossible? -
Why, when I do manage to get it aligned, by moving my mouse one
micron at a time, and waiting for the graphics to catch up, does the
support get put in a completely different place anyway? -
Why, on a small feature that needs a support, do you make that
clunky support tip go right through my model, destroying the
feature? -
Why does a big clunky tip hit a flat face of the model at bizarre
angle, embedding only a corner of it into the model? -
Why, on many added supports, is the ball and wedge not even attached
to the support post that stops just below it. Waste all of the
resin, with none of the benefit! And leave a mark on the part
too. WhooHoo! -
Why do many autogenerated support tips stop just short of even
touching the model at all?! -
Why can’t I place a support behind another support? Supports get in
the way and there’s no way to ‘hide’ them so I can place a new one
where I need to without deleting already good supports, and then
re-adding them back in later! -
Why do you need to automatically update the support ‘integrity’
after every single add or delete? Wait, I know the answer - so you
can color the model. How about you let me push a button to do that. -
It seems like existing posts in the way determine where I can add
new supports, as if you’ve become emotionally attached to the posts
you’ve already built, and don’t want to move or hide them. How about
hiding all existing supports, but make a colored spot where they
touch on the model. Then I can add new supports easily where I need
them, (which appear as a simple dot as well), and when I’m done, I
press the new button to check integrity you’re going to add, and you
can regen all posts to use the least amount of resin and provide the
best support. -
Why can’t I drag supports around, or raise and lower them when they
encroach on a feature? Add and delete are nowhere near enough control. -
Why can’t I manipulate supports when in slicer view - when I can
actually see exactly where I need to put them? -
Why is pgup and pgdn a single slice anyway? Shouldn’t up and down
arrow be that, with pgup and pgdn being many slices (like, ahem, a
page of many slices)? Whatever. -
I already gave you absolutely free a much better support geometry
paradigm to implement that would likely solve many of these
issues. Use it. -
Basically everything about the supports in Preform sucks. From how
clunky they are, to how wrong the algorithm for placement is, to the
the bad math used to calculate placement height, to how crappy the
interface for ‘fixing’ them is, to the marks they leave on the
print.
… I could go on for hours, but why do I need to design usable
software for the 3d printer I just spent over $3k on? So many software
design decisions have been made incorrectly on the Preform project
they’re not even countable. Bottom line: it’s extremely unlikely
that the current developers are up to the task of writing the correct
front-end for the Form1. Everything they have done thus far screams
that.
Please, for all of your users sake, and for the future of Formlabs,
replace Preform and the entire software dev team with it. Start clean
and build a truly multi-platform front end that is in the same class
as the Machine - Absolutely Excellent.
I think you should seriously consider the OpenSource route with the
software while you’re cleaning house. You will attract a lot more
ideas and help. You’re selling hardware and giving the software away
anyway. Why not avail yourselves of the huge worldwide maker/hacker
community that will undoubtedly help you write better code, and at
least help you focus on better features? You’ll own and control the
repo, but can accept the patches and bug fixes you want. I really
can’t see how that’s not a big win-win for you and your users.
I fear a failure to take bold positive action now could seriously
impact your future viability. The printer kicks ass, but the software
is already getting a bad reputation. Since it’s closed source, and
this software must be used to run the printer, this could be a
deciding factor for many people to simply buy another device. Of
course, you will never hear about those decisions.