Hello community, I’ll try to be brief. My 13 year old son got a 3d printer as a gift, and I’d like to learn alongside him. We have 0 experience. However, I am a data scientist, so lots of professional Python experience, if that helps. We’re a foss/Linux family so my questions are:
What tools are the best to learn for 3d printing for me? I am ready to learn CAD programming. Can you all recommend a tech stack and resources to learn it?
Personally I prefer OpenSCAD and SolveSpace for designing as they provide easy way to work and get precise measurements.
-
OpenSCAD is programming based CAD tool, which is to say you write down commands like make a cube, 10mm high, from it subtract a cylinder, etc. It’s great for basic models and doing a quick one off things. It’s capable of more complex stuff but lack of optimization and no help of any kind makes it a wasted effort for complex stuff. Because it’s like a programming language it’s the de-facto standard when it comes to configurable prints;
-
SolveSpace is parametric CAD tool. You draw things with simple elements like lines, arcs and similar and then form the shape with restrictions. For example you can tell two lines to be parallel and equal in size. And then only define size of one. Drawing is considered solved when there are no more degrees of freedom left. Solve space is more what a technical person would like. It looks kind of like AutoCAD and other CAD softwares. You can do quite complex stuff with it but complex stuff can take time because you approach the design with a technical drawing and then move from there by adding extrusions, revolves and similar. FreeCAD works in the same way, but I prefer SolveSpace;
-
Blender is also a notable 3D design tool and the one that’s easiest to do quick mockups and free hand. However setting up blender scaling so 1unit = 1mm cane be quite a problem. Also Blender is not exactly designed for precise work. You can of course specify width and angles and whatnot, but it’s mostly modeling tool so most of its tools are going to be targeted towards that.
For slicer, I wholeheartedly recommend PrusaSlicer from Prusa labs. It will give you sane defaults and excellent print quality without overwhelming you with configuration and data. I use to use CURA and pretty much gave up on it simply because it has too many options. PrusaSlicer works and works well. There are other options out there, even super expensive paid versions, but I don’t think they are worth it. Some people swear by them, but to me they don’t provide much benefit for the price they cost.
I wouldn’t suggest going OctoPrint route just yet. It’s a lot more to add to the learning curve and only benefit you get is a bit of convenience with network print and supervision. Which is not all that useful anyway. I use to run OctoPrint server, but stopped doing so last year. Once you have well configured printer it will be a fire and forget kind of thing anyway.
Good advice I can give you is look into better nozzle at some point. You don’t have to go the expensive route. Simple MicroSwiss plated nozzle is good enough (~20$). High quality nozzle means a lot, and I mean a lot. It’s a huge difference between issues you had trouble figuring out and print looking very consistent with proper layer bonding and similar.
TeachingTech has an awesome resource and YouTube channel related to 3D printing. He goes into details with everything and does explain things with examples. His 3D printer calibration scripts are great. They are basically GCODE generating scripts which make lives very easy. Things like flow calibration, temperature towers, z-offset, etc. All easily done and explained with a video.
Am not sure which printer you got, but if it has manual bed leveling with springs, get rid of them and replace them with silicone pads. Easily the best upgrade you’ll do. Springs are a never-ending source of issues with first layer. They slightly bend, your print unsticks. You print 2-3 times, have to recalibrate, etc. Silicone is compressible but remains firm so there’s no wobble and once configured bed remains leveled forever.
If you have detailed questions, ask-away.
OpenSCAD is great, but with Python experience I’d recommend taking a look at CadQuery.
deleted by creator
Managed to get it working and while performance is much better, syntax is downright disgusting. I know it’s Python, but looking at any code written for CQ would give Guido a nightmare. Am not sure looking up to jQuery was a good idea to begin with. I’ll try and give it a shot few more times, but boy does code written in this syntax look ugly and cryptic. Thanks for the recommendation though.
Maybe am missing something important here with chaining of commands?
It’s not ideal, no, but I find it better than OpenSCAD for the simple reason that it’s inside of a complete programming language. But that’s rarely needed so, eh?
I don’t know what my ideal code-first solution would look like, but at least there’s multiple options!
It’s great that it’s inside of Python as a language but at the same time sad that they didn’t take advantage of readability of the language. Syntax is very convoluted. But I’ll give it a shot some more times, perhaps there’s some obvious logic am missing.
-
Before you go the octoprint or other hosted app route, I humbly suggest printing from the SD card while you learn the process engineering to get prints to come out decent. This reduces the number of things you have to learn at once, and the points of failure. The workflow is then simply: (1) acquire or design the model (STL file). (2) slice it (generate .gcode file) and copy to sd card. (3) use the touchscreen to run the gcode file.
You’ll spend most of your fiddling on step 2 since you need to learn what temperatures and speeds work well.
To expand on this, also wait to do any big modifications to the printer until you familiarize yourself with it and again, are able to get decent prints. Nothing is worse than starting out with something new and not knowing whether your issues are caused by a lack of experience or something you changed yourself.
Depending on the printer going for klipper directly might make it easier to use. Being able to have the abl probe and calculate what adjustments need to be made makes life so much easier.
Hi there. I’m something of a 3D printing veteran, I’ve built a dozen printers, had a side gig maintaining printers for a small manufacturer, done all kinds of crazy crap with 3D printing.
I see from other comments you have an Ender 3 Pro. Decent little machine, should be lots of fun.
The biggest advice I can give you is: Watch the thing print. You can learn so much just by watching the thing print. Especially if something is going wrong. Sit there and watch it like television. It will give you this great sense for how the printer works. It’s not a Star Trek replicator, physics is happening while the part is halfway done. Heat, inertia, gravity, they’re all factors.
Download stuff from Thingiverse to print out. There’s lots of godawful models out there written by people who don’t have a clue what they’re doing. They’re extremely instructive. I found a cool little low poly skull that was modeled tilted at a slight angle to the axes, so the bottom layer was at a very slight angle to the bed and it tried to print the thing uphill. Print stuff out, watch it fail. Learn.
As for a tech stack: I’m a Linux guy myself. My current favorite workload is FreeCAD and Slic3r.
FreeCAD is very powerful, if a bit clunky. The UI is written in Python, and it leaks into the user experience a bit. Start using the parametric features, especially referring to the built-in spreadsheet in your sketches, and you’ll start to recognize it. I’ve also used Fusion360 and OnShape at various points in my career, and learned things from both, but I do all my 3D design work in FreeCAD now.
Most slicer software works on Linux, even Simplify3D does. I’ve used many of them over the years, and they all do a pretty good job. Try several out, you’ll find most of them in your distro’s package manager.
One thing I would suggest: Learn a little bit of G-code. Reasons why: It’s useful when diagnosing problems with the machine, and it can be handy to customize the start of print and end of print routines. Like when you start a print, and it heats up the bed, then it heats up the nozzle, then it homes the axes, and maybe ejects a little filament to clear the nozzle…that’s all G-code that the slicer software appends to the .gcode file. Usually there’s a text field somewhere in the settings that lets you alter it.
Thanks for this. I was initially thinking of starting with OpenSCAD but FreeCAD was another contender. Perhaps I need to go with whichever has the best documentation, examples, and learning resources.
TinkerCAD is free and browser-based. It’s remarkably powerful for something that’s basically explicitly supposed to be simple enough a child could learn to use it.
And I’ll second trying to understand some G-code. When a malfunction causes your print to stop cleanly midway, pretty much your only way to salvage it is to figure out which Z-layer it malfunctioned at, and directly edit the G-code to start where it left off. It’s finicky, but a lifesaver on large prints. Nothing is worse than 30 hour print failing 80% of the way in.
OpenSCAD is rather unique; you draw parts by programming them in code, which I never personally hitched horses with. Neat if gimmicky idea.
FreeCAD is trying to be all things to all people and achieving it extremely slowly. You can code parts in Python, and it has an OpenSCAD workbench, though my personal preference for workflow is Part Design; drawing 2D shapes and then extruding them into 3D.
Blender is another option, probably preferable for hand-sculpting/art/etc.
For me, I design with Fusion360 and I slice with Cura (I have a Creality Ender 3 Pro v1). Honestly, I think the biggest learning curve for me was learning all the little changes and optimizations that you have to make to get the printer to print well. So I’ll just collect a bunch of the little tips that I’ll learned:
- When designing, try to think about the orientation of the thing you’re printing. ie, do you plan to print it standing up or laying on its side? This will influence its strength (if you plan to use it for engineering projects), since 3d prints are generally pretty good at handling compressive forces but are weaker at handling shear forces along the z-axis of the print (ie, across different layers).
- Printers are generally able to print up to 45 degrees for overhangs without needing supports, so you can try to orient your part around to minimize the need for supports
- The times when a print is most likely to fail are when the printer is printing the first couple of layers. If you see a print successfully complete the first, say, 3 layers without mistakes or detaching, you can generally be pretty assured that the rest of the print will be fine.
- Bed adhesion can be an issue until you optimize settings for it (ie, the print detaches from the bed during the print). First, check for dust on the bed. Second, I find that it really helps if you use 2 different bed temperatures during the print. You may have to dig around in your slicer’s settings, but there should be an option for “initial layer temperature.” I find that for PLA, a good temperature is 200C for the nozzle, 65C for the initial bed temperature, and then 50C for the regular bed temperature (ie, the bed starts off at 65C, and after the printer finishes the first layer, the bed drops down to 50C for the remainder of the print).
- Additionally, it can also be good to slow down the print speed for the first 1-2 layers. Again, you’ll have to dig through your settings, but what I prefer is 80 mm/s travel speed, 25 mm/s print speed for the initial layers. With these settings, I find that I basically never need a brim or an adhesion support - the print itself actually sticks onto the bed a bit too well, making it somewhat hard to remove after the print is finished, which is a good problem to have when it comes to 3d printing
- The auto-bed leveling on your 3D printer is nice, but it’s not a replacement for manually leveling the bed. Manually level the bed before every print, since taking off your last print from the bed has the tendency to make your bed not level. Then, after manual leveling, do an auto-bed leveling to remove the remaining tiny variations in the bed level
- Use gyroid for your infill pattern. It’s just better than the default.
- Enable filament retraction during hops - it helps remove a lot of the strings left behind when the nozzle moves to a different location of the print. I also like to have a z-hop height of around 0.4 mm just to make sure there’s no strings
- When I got my printer, my bed was wobbly. I think you got the same printer as me, so it could be worth checking for that. For the longest time I assumed that that was just how it was, and then wondered why my prints were coming out so strange. If you see bed wobbling on your printer, you should tighten the wheels (not the leveling knobs) under the bed. There should be instructions on ifixit for how to do that
The auto-bed leveling on your 3D printer is nice, but it’s not a replacement for manually leveling the bed. Manually level the bed before every print, since taking off your last print from the bed has the tendency to make your bed not level. Then, after manual leveling, do an auto-bed leveling to remove the remaining tiny variations in the bed level
Depends on your printer, I think. Mine is quite happy being leveled only after nozzle changes, and the autolevel is Good Enough.
Look into OpenSCAD. It’s a declarative language you can use to do 3d modeling. I suck with graphical programs like Fusion and Blender but I’m a programmer, and OpenSCAD has made my life a lot easier.
OpenSCAD is great for programmers because you write code to generate 3D objects. If you love Python there are ways to write Python that then generates OpenSCAD code, so that may be worth looking into.
Designing stuff: FreeCad and OpenSCAD. Lots of YouTube material for educational purposes.
Regarding the printer, this depends on the make/model/manufacturer, but the more serious people (not starting a flame war here, just my observation) tend to use Klipper. Most printers run some form of Marlin, but most can run Klipper as an alternative firmware.
And there are the slicers… A huge amount of choice here, but one way or the other, most are forks/spinoffs of previous work. Personal choice here is SuperSlicer, mostly due to its interface and me being too lazy to use OrcaSlicer of one of the other options.
But beware: tuning, measuring adjusting will take a lot of time. And the entire 3d printing community likes is.
I actually use Blender to 3d design. I guess it’s easier for me? Maybe I’ll give the other ones a shot.
I use OpenSCAD to have a declarative method to ‘design’ boxes for my electronic projects. So boxes and lids with hinges and stuff.
When I need something with accurate measurements but a more complex design, FreeCad is the go-to tool. Sprockets, PS5 controller loading-station, bolts and nuts.
Blender probably can be used too, but I have never used it.
I have a home lab running two docker hosts, does it need to be dedicated hardware, or would this work?
If the printer runs a Marlin variation as firmware (Ender probably does), you can run octoprint on a Raspberry pi or more powerful stuff. Running in docker should be doable, you just need to route the serial-usb connection into the container running ocotoprint. Klipper user with Mainsail on a RPI4 here, no experience with a dockerized octoprint.
The most slicers have some calibration prints to tune flow/temperature etc. Do them before starting that 9 hour print job…
Octoprint just runs in docker, you need to connect the printer to a USB port.
I never fully got into 3d printing, but I got far enough that I designed a lot in openscad. This was 10 years ago, and it was really popular back then, and might still be.
I’d find a good YouTube Channel like Makers Muse or Make With Layers for some beginner tips and tricks, that really helped me when I was starting out to get into the lingo.
As for software suggestions. Follow the recommendations from the manufacturer for the printer for software. Using Printables or Thingiverse for models to start with. At least to get started.
Then understand what printer you have. There is a world of difference between an Flashforge Adventure, Ender 3, and Prusa Mini.
After printing some fun models like a Benchy, try making your own stuff you’ll have a good feel for what’s a good print once you’ve printed other models, and have a few failures.
My software recommendations are as follows:
Modelling software for the teen: TinkerCAD, it’s free, it’s simple, and there are hundreds of tutorials going over how to use it. The software feels limiting for the experienced, but for a newbie it’s not bad
Next steps: Google Sketchup is another free software, still limited but has a lot of resources and is a good intro into cad.
For you: Fusion360, I think it’s still free, but with heavy restrictions. But from the last I checked it still has all the tools you need to get started. Plus it’s well documented with dozens of tutorials and guides.
My Software: I use to use Fusion, but I moved to FreeCAD. Made with layers goes over why this isn’t the best software and it’s many many issues. But for me I personally love using it with the sheer precision and control I can get with my designs. It’s not for beginners and the documentation is poor, with virtually no tutorials. I’ve done a small write up for how to get started before so check my comments if you are interested.
Otherwise Cura or PrusaSlicer is to get your models to print.
What kind of printer is it? The more-experienced-than-me folks will probably be able to point you in the direction of specific resources depending what type of printing you’ll be doing.
When we first got into printing I taught my husband the basics of CAD with Fusion360, and after a bit of wrangling with the unintuitive controls he found it pretty easy to use. It’s free for personal use, which is the main draw, but also it makes it easy to share designs with each other. That said I’m sure someone will be along to recommend a FOSS alternative because this is Lemmy after all.
Mainly I just wanted to say welcome to the gang and have fun printing a load of stuff you didn’t even know you needed! :D
Thanks! I think it’s a creality ender 3 pro