Impossibilities And 3D Printing

This week our own [Donald Papp] wrote a thought-provoking piece on buying and selling 3D-printer models. His basic point: if you don’t know what you’re getting until you’ve purchased it, and there’s no refund policy, how can you tell if your money is being well spent? It’s a serious problem for these nascent markets, because when customers aren’t satisfied they won’t come back.

It got me thinking about my own experience, albeit with all of the free 3D models out there. They are a supremely mixed bag, and even though you’re not paying for the model, you’re paying in printing time, filament, and effort. It pays to be choosy, and all of [Donald]’s suggestions hold in the “free” market as well.

Failenium Falcon. Image by Johannes

Only download models that have been printed at least once, have decent documentation about things like layer height, filament type, and support, and to the best of your abilities, be critical about the ability to fabricate the part at all. Fused-deposition printers can only print on top of previous layers, and have a distinct grain, so you need to watch out for overhangs and print orientation. With resin printers, you need to be careful about trapped volumes of uncured resin. You want to be sure that the modeler at least took these considerations into account.

But when your parts have strength requirements, fits, and tolerances, it gets even worse. There’s almost no way a designer can know if you’re overextruding on your first layers or not. Different slicers handle corners differently, making inner surfaces shrink to varying degrees. How can the designer work around your particular situation?

My personal answer is open-source. Whenever possible, I prefer models in OpenSCAD. If you download an STL with ten M8 bolt holes, you could widen them all in a modeling program, but if you’ve got the source code, it’s as easy as changing a single variable. Using the source plays to the customizability of 3D printing, which is perhaps its strongest suit, in my mind. Nobody knows exactly how thick your desk is but you, after all. Making a headphone hook that’s customizable is key.

So even if the markets for 3D prints can solve the reliability problems, through customer reviews or requirements of extensive documentation, they’ll never be able to solve the one-size-fits-nobody issue. Open source fixes this easily. Sell me the source, not the STL!

43 thoughts on “Impossibilities And 3D Printing

  1. A free STL is better than nothing. It would be ungrateful to suggest otherwise. It’s akin to the old ‘give a man a fish…’.

    With limited time, I’ll take the fish. I might make kedgeree from it, or a fillet. If I’m going to need lots of different fish in the future, then yes, I’d rather be shown how to fish.

    1. This may not be true.
      I know I’ve wasted time with free code/svgs/etc before having to write my own.
      I expect you can waste a lot of filament and time On a free model before deciding its garbage and you need to create your own?

      1. Not if you’re paying attention. The slicer will show a layer by layer of the print paths that should make print issues in the model obvious.

        Off measurements can often get post-processed for corrections.

        And if it looks funky I just toss it in a CAD software and check. Still quite a good time savings over a scratch build in almost every case.

        That being said I do a fair bit of cursing horrible design decisions and reminding myself of the price point and good intentions of the author. :)

  2. Open sources are not necessarily the ultimate fix for every case (requiring parametric design) – you also need the proper tool to interpret/use those sources (or the ability to convert them to another format with the parametric design intact). Yes, OpenSCAD or (parametric) FreeCAD sources or the like are ideal since the tools are free, but what about a SolidWorks file for instance? (quite a few of them on GrabCAD) There are tons of (closed source) CAD formats which are not directly supported by open source tools.

    1. That was my first thought: this converts the discussion from “can I print that” to “can I open that file”. When I release things on thingiverse I upload the stl and the .fcstd but there are tons of fusion360 users out there, probably far more than us freecad users, for whom only the stl is useful. FreeCAD is the closest thing I have to a rosetta stone of 3d model formats and conversions, but it’s nowhere near comprehensive.

          1. I’d still rather have the original fscd etc as an option. But yes this would really sell me on buying models from the internet.

            Though modifying STL is possible its a big pain.

            And having modifiable (easily) files means you can tweak the design to suit your machine and slicer’s limitations much more easily.

        1. Agreed…IMHO I would rather have a step than an openscad file. You never know what libraries and such people have installed in their openscad build. It isn’t too hard to figure out but I certainly find it faster to just mod the step.
          It does become difficult with things like fusion360. It is limited by OS, is closed and has cloud dependencies which some find off-putting but it is also free(ish) most of the time. So it is a tradeoff on how open (and secure) you want your toolchain. I love fusion’s features but some of the others such as freecad are starting to catch up a bit (CAM system).

          STL is a pain to modify in pretty much every CAD system I have tried and I hate the lossy format…but it is better than nothing.

          1. I always bundle all needed libraries in the scad file using a simple recursive script when I post the scad file. Though it does make the file potentially more confusing.

            BTE, a number of times I’ve modified an stl in OpenSCAD by turning it into an OpenSCAD polyhedron and working with it in OpenSCAD, and it wasn’t that bad as a workflow. I still haven’t being able to get the art of dealing with 3D objects using more visually based CAD systems (though I have to confess that on some occasions I draw Beziers in Inkscape and export to OpenSCAD rather than specifying then manually n OpenSCAD code).

    2. Seconded. Working with OpenSCAD is programming at it’s most direct, with a unforgiving variable scoping. Most people don’t like programming, doubly so under OpenSCAD’s rules.

      Fusion360 has a much more approachable GUI and workflow for most design work.

    3. And all of them allows exporting STEP or IGES formats. You get a BREP format file that you can directly modify. Unlike STLs which are always “lossy”, because the mathematically accurate surface from BREP has been discretized/triangulated and a circle isn’t a circle but a polygon.

  3. I rarely use free or bought models from internet, I usually create my own. I sometimes take models from internet for measurements and adjust it to my needs by remodeling it. Once you know your way around CAD software it often pays to just build your own as adjusting to your needs is much easier. Polygon count for rounded features are often either too low or too high making it inefficient. It doesn’t take that much time, or less time if you need to make adjustments to poorly designed models.

  4. OpenSource is only part of a greater vision of what we all want from this community. There needs to be a place where people can post thing for people to print, but also doesn’t make it simple for sometime to rip-off their work. I’m happy to watch a movie someone made using Blender without them giving me the source files. Sometimes I even pay for movies that turn out to be bad (shudder). There is room in the world for both of these.

  5. Hear hear! I agree entirely with Elliot Williams. I don’t actually use pre-created objects too often, but when I am forced to (like to print replacement parts for my reprap), I want OpenSCAD source! I can adjust parameters for my printer or for the screws I happen to have on hand, and I can edit it…truly, why would I re-print something if I didn’t have an improvement already in mind?

    I see a few comments here that seem to trend in the direction of saying everyone shouldn’t need to be a programmer just to use a 3D printer, and I just can’t agree. Computers are far enough along, the advantages of computing should not be limited to a few hobbyists….but 3D printing is very much not to that point yet. If you aren’t interested in becoming an advanced user of CAD and slicers, I think it’s very unlikely that 3D printing will have much to offer you. If you just want the product, have you considered Etsy? I don’t resent the presence of less-technical enthusiasts, but it’s like the guy you know who buys a 12″ dob for his first telescope because he read about a comet in the newspaper…you know that thing is just gonna sit in his garage and gather dust, a lingering source of vague embarrassment and disappointment.

    But who knows…different strokes.

    One thing, though, that is kind of vexing for me still…I *love* OpenSCAD, though there is a basic limit to its ability to express complex shapes which sometimes stymies me. But I do find that it tends to be a lot easier to write than to read. I use comments and factoring, and I’ve tried a bunch of different approaches to parameterizing components in a project. Nested translate()/rotate(), or global variables controling multmatrix(), or so on. It’s very usable and I can usually edit a project even if I come back to it after a few years. But every time, if the shape is at all complex, there is a point when I first start where I am just completely lost in all of the relative transformations and if I’m looking at a cube() or linear_extrude(), I can’t tell really which part it is or how I want to edit it. I figure people who use OpenSCAD interactively might have a different experience with it. And it really has improved as I have learned a few comment styles (like starting each module with a description of the axes if it’s at all in doubt). And on top of that, I’ve learned a lot of tricks to reverse-engineer an object. But *reading* OpenSCAD is still hard, and I kind of wish somehow it wasn’t, even though I can’t imagine any way to improve it.

    1. What works for me is to define features and subfeatures as separately named method()s. So if I’m making a pulley, I might define hub, spoke, and rim methods. I also use lots of named variables instead of magic numbers hard coded in the code. So I’ll have variables named shaft_dia, worm_dia, groove_depth, etc. I also add definitions for allowances that I tweak to adjust for the expansion of the plastic.

      It also helps me to review each module as I complete it, and refactor it a little by pulling out the magic numbers that crept in.

      I have no problem picking up very old OpenSCAD code that uses names instead of numbers, and lots of well-named small modules.

    2. I’m a big user of 3D printers for the creation of prototype parts, and I most definately want to be able to modify my parts (eg: move that hole 2mm towards the base) without having to dig into some code to do it. And with 3D CAD packages these days, why would I?

      Probably 99 out of 100 of my parts I draw from scratch, and I can then modify them as needs be and as suits me. And in many cases drawing from scratch is faster than seaching multiple sites to find something that _might_ work.

  6. So far, after about 4 years of having a 3D printer in the house. I’ve yet to print something functional and been happy with how it turned out.
    I have printed toys and novelty stuff and they were fine.
    For functional prints I usually print one or two parts of the model and find out the tolerances are off, or it doesn’t fit the screws/bearings/nuts/axles I have on hand.. or it’s just really inefficient print-time-wise etc. I then just rebuild the model in Fusion 360 and add my own optimizations or redesigns to it.
    If everyone had Prusa level printers, all decently tuned, using decent filament and settings, then we could maybe just print complex stuff right off the STL without worrying. It still leaves the issue of hardware (screws, nuts etc.).. it’s a ever-ending cycle.
    Posting your source file regardless of what program you used goes a very long way towards helping people out. It’s like posting compiled binaries vs. source code.

    1. Lol, there absolutely, 100% nothing special about a prusa printer. They have issues just like an ender or anything else. You just get to pay a 25% markup for his name and she gummy bears. I’ve had the opposite experience as you. I have only had one functional print not work in 3yrs. If a print calls for m4, I use m4. Works for me. If it calls for cap head or button head, I use that. I don’t understand the issue with hardware.

      1. Heh I only do functional prints and they almost always work, but quite often it takes a second or third draft to get it right. Though I’ve gotten a lot better about predicting clearances and so on ahead of time.

        I often wonder about print quality. I have a reprap kit from an obscure provider, and it is a constant (if mild) struggle to keep it on this side of usable. It has a bunch of flaws that I know about, but I’m able to work around them all and get parts with the quality I need. Sometimes I wonder how it stacks up relative to other printers…is mine relatively dialed-in, or am I working against incredible odds to get working components!

        I will say, I am astounded how often I see people displaying parts online that have horrible gaps in the top layer. Setting up over-extrusion on the top layers was the very first tweak I made when I started calibrating.

      2. With Prusa you are mainly paying for first class support. This matters if you are the type that actually wants to produce parts and not tweak and debug the printer. Or you are a newbie with no idea that you better fix your heated bed before using the machine because it could set the house on fire – the manufacturer skimped on proper connectors! (yay Anet …)

  7. As someone with a CNC but not a 3D printer, what’s the issue with source files models being rubbish?

    If I get a model for CNC, I use my own CAM to generate g-code for my material, machine, and tools’ capabilities. Unless there’s a fundamental issue (need an extra axis, or a tool geometry I don’t have), it should work.

    1. CNC’s tend to be much more accurate and repeatable than FDM 3d printers. When a 1/4″ cutting tool goes in a 3″ circle, you get a VERY predictable result that will be almost imperceptibly identical to one someone on another continent made using similar equipment. With 3d printers, everything from feed rate and motor tolerances to filament brands and the temperature of the room that day can affect the size of a hole, cause flanges (known as elephants’ feet) around the base or require varying amounts of supports to be added. For example, I can reliably nearly 50 degree overhangs while many people with very similar printers struggle with 45 degrees and others can do 65 after some tuning and their favorite brand of filament.

      The biggest issue I’ve run into is hole sizes and small gaps. Small vertical holes tend to shrink more than large holes since either the print head is making tighter turns which can cause the filament to stretch over the void instead of adhearing properly. Small gaps cause issues where 2 pieces that should “almost” touch, end up accidentally fused together during printing because each wall was 0.5mm too thick. If this is in an accessible area, an exacto knife is all that’s needed, but if it’s somewhere like inside a print-in-place hinge, you’re usually doing a calibration and a bunch of test prints to figure out which dial needs to be adjusted 2% to fix the issue.

      Fixing a gap problem, bad overhang or hole size issue either means doing a bunch of calibration on your machine, sometimes just to discover than the original designer used a very expensive brand of PLA whereas your using a bargain PETG (for strength or heat resistance) and it simply isn’t possible. Which means your often ripping open the file in Blender to grow every hole 10% or adjusting part angles and spacing to gain that exta 0.5mm you need to keep everything happy. THIS is where having source files can be very helpful.

      1. The material you are machining with a CNC doesn’t shrink or expand by an entire millimeter (unless it’s large, metal, with large temperature changes) and is a solid.

        3D printing is essentially like machining a block of really thick gelatin, it moves and changes slightly over the course of the print because it’s molten material which can cause large variances.

    2. From what I’ve experienced many of conversations about 3D printing completely miss the necessity of the operator knowing their equipment and tooling like you obviously do.

      All the process is roughly the same but it’s missing “you”. The machinist.

  8. Most of people that buy 3D printer online have zero knowdlge about the subject and generally about manufacturing. One of the best selling 3D printer is a pure piece of garbage (CR-40) but people buy it because is big and cheap and never realize that what they get is very bad, the community hype between the users is so high that if you tell them is a poor product they tell you you are a hater without knowing nothing about engineering.
    If you are stupid and ignorant you can’t complain if the sellers sell you pure garbage or not.
    Even the famous Prusa 3D printer is poorly designed for any industrial standard, but most seller think only about shipping cost and they tell you that allumininium is good material… Yes for aeroplane.
    Burt the reality is very different, all the top quality 3D printer and cnc are made with an huge amount of Steel but is not good to be sell on line to people that only look at the price because shipping cost are really high.

    1. From what I understand, 30×30 extrusion is a lot better than 20×20, when using aluminum frames. A lot of 3D printers use the Cartesian design, which I’m not a fan of, since the hole bed moves. The belts they use are another issue and so is the lack of closed looped systems. Both could be could be remedied.

  9. While we can all wish for others to start bundling sources (OpenSCAD, STEP, …) another approach is to accelerate work on free tools that reconstruct an editable source to a good enough approximation from STL. Recent fusion360 plugin here, Early days, but surely more and better can come with concerted effort? Having a great STL to converter would be a very attractive feature for thingiverse or a competitor site too.

  10. Designing for sharp inside corners is easy. Use ‘mouse bites’, small circular nips in the corners so that the nozzle makes a little outward jog around the sharp corner. Get them just right and the squeeze out of the plastic fills them to a sharp corner. A little oversize will leave a bit of a pocket up the corners of the hole.

    Works great for putting a 3D printed plastic gear onto a square shaft, and the corner pockets stop the shaft corners from putting stress on the part so the pressure comes from the larger flats of the shaft.

    If you’re printing a part to slide onto something thin like a sheet metal tab, make ovals at the slot ends, perpendicular to the slot. The side of the oval towards the slot end should be placed so the side of the tab will touch it. When printed the plastic won’t be pushed in to interfere with the tab’s square edges.

  11. I’m sure the model designer would like for their source to remain in their own possession. Just as with code, open source is fun and has a lot of heart but falls flat on it’s face when you need to generate income as a starving entrepreneur. I will always take open source when it’s worth having, and at this point I have benefited enough that I should have paid my way. Perhaps the issue isn’t giving away the source, but finding a way to license the source so only those who paid may see it and nobody can learn it from those who paid. You know, anti-piracy.

  12. It has likely been said before, but what we need is way better slicers. We should not be correcting for the printer’s sloppiness by adjusting the model dimensions. What goes into the slicer should have the same dimensions as what appears on the print bed… and when it’s not, we should tweak some slicer parameters, or – as a last resort – indicate “this hole is too small, make it larger”.

    I’m fully aware that it’s a deep rabbit hole – taking into account printer tolerances, extrusion speeds, various types of filaments, temperatures, and so on. But I think that it’s the only real solution for sharing & downloading useful “precision” prints.

  13. This article reads like it’s whining about a free file not working well. Half the time it’s operator error. It’s one thing if a file isn’t manifold, it’s another if you can’t judge for yourself what will and will not work. A file that hasn’t been printed by anyone? BFD, give it a go. I design the vast majority of everything that I make, but I’m thankful every time someone decides to share their work as well.

    Bottom line, learn your 3D printer, figure out what works.

  14. OMFSM, people in these comments are wining about not wanting to share their source code.

    If writing closed source designs and selling them is your income then go for it. If you can compete.

    But this is an emerging field which has been emerging for about 30 years now. The first 20 were on the closed source model and what did we get? Super expensive printers that only a few large corporations and universities could afford. Most people didn’t know they existed. What did the open source model get us in 10 years? Pretty much everything we have today.

    Ok, I know, there is some controversy over how fair the version of the story goes. Yes, there was this invitation to hobbyists to have a go at stereolithography in then-popular electronics magazines. As if typical hobbyists could have sourced the lasers or the chemicals to make resins. I haven’t heard of any similar articles involving FDM! People have made FDM extruders out of bolts, toaster wire and muffler putty.

    So, anyway. I happen to make a living at a company working on proprietary products that have no open source competition. We fill a niche that the community isn’t interested in. If someone came along and offered to fill that niche for free we would have to adapt. That’s how a free market works.

    When I design something for my printer though, I’m standing on the shoulders of a great big community. I’d rather work with them to make things better for all of us than against them. My source code goes online with the only requirement being share-alike. Yes, you an even sell it!

    But if you think you can compete against the community. If you think you can design something so much better that people will choose to buy your closed source design rather than use a free one. Then I am rooting for you. Because from this side it’s not a competition. If you really can bring something into existence that is so much better it competes with free then great! You just made the world a better place. Just don’t lock up an idea with a patent so that you can own and suppress development in an area where if you never existed someone else might have come along a day later and shared that same idea with the world.

    Also, wining that there isn’t already a site geared more towards the peddling of proprietary, closed designs? Really? You aren’t providing the community with anything for free. Why should it do so for you. Make the site yourself!

  15. “Only download models that have been printed at least once, have decent documentation about things like layer height, filament type, and support,”

    Good advice for a beginner, someone who needs a print which works and needs it now or someone who is just due for an easy success.

    If you have the ability, time and inclination to troubleshoot a 3d print however why not try an undocumented and/or untested design now and then? And when you do why not respond in the comments about your results and what settings did/didn’t work.

    That’s one way that we can get more good, well tested, well documented designs out there, besides doing the entire design, test and document job ourselves.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.