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?

  • MeanEYE@lemmy.world
    link
    fedilink
    English
    arrow-up
    9
    ·
    7 months ago

    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.

      • MeanEYE@lemmy.world
        link
        fedilink
        English
        arrow-up
        1
        ·
        edit-2
        7 months ago

        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?

        • tehbilly@le.ptr.is
          link
          fedilink
          English
          arrow-up
          1
          ·
          7 months ago

          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!

          • MeanEYE@lemmy.world
            link
            fedilink
            English
            arrow-up
            1
            ·
            7 months ago

            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.

  • charmed_electron@programming.dev
    link
    fedilink
    English
    arrow-up
    6
    ·
    7 months ago

    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.

    • CmdrShepard@lemmy.one
      link
      fedilink
      English
      arrow-up
      2
      ·
      7 months ago

      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.

      • TwanHE@lemmy.world
        link
        fedilink
        English
        arrow-up
        1
        ·
        7 months ago

        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.

  • Contramuffin@lemmy.world
    link
    fedilink
    English
    arrow-up
    4
    ·
    7 months ago

    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
  • BOFH666@lemmy.world
    link
    fedilink
    English
    arrow-up
    3
    ·
    7 months ago

    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.

      • BOFH666@lemmy.world
        link
        fedilink
        English
        arrow-up
        4
        ·
        7 months ago

        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.

  • rasterweb@kbin.social
    link
    fedilink
    arrow-up
    3
    ·
    7 months ago

    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.

  • cyberic@discuss.tchncs.de
    link
    fedilink
    English
    arrow-up
    2
    ·
    edit-2
    7 months ago

    Cura is worth the learning curve along with a raspberry Pi running Octaprint if you have a raspberry pi or old computer lying around.

    Then I would recommend downloading some files using Thangs so you can dial in your slicer settings. Then I wpuld start with the CAD.

    Edit: Added Thangs.

    • ArtVandelay@lemmy.worldOP
      link
      fedilink
      English
      arrow-up
      2
      ·
      7 months ago

      I have a home lab running two docker hosts, does it need to be dedicated hardware, or would this work?

      • BOFH666@lemmy.world
        link
        fedilink
        English
        arrow-up
        1
        ·
        7 months ago

        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…

  • vettnerk@lemmy.ml
    link
    fedilink
    English
    arrow-up
    2
    ·
    7 months ago

    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.

  • elscallr@lemmy.world
    link
    fedilink
    English
    arrow-up
    1
    ·
    7 months ago

    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.

  • Captain Aggravated@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    1
    ·
    7 months ago

    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.

  • TeaHands@lemmy.world
    link
    fedilink
    English
    arrow-up
    1
    ·
    7 months ago

    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