 We have Steve. He's from Wellington. He does open stack things and he likes printing gibbons. Let's make him feel welcome Hi, so a while ago I managed to justify to buying a 3d printer for for the household And it's And what's more I actually Occasionally use it and I even more occasionally make something that's actually useful in works Well, what turned out to happen as as I worked out my process for for designing and printing things is that it turned out that my Entire tool chain ended up being backed by python-based tools, so I thought I should probably do a talk about it So how are these 3d consumer printers aimed at? There was a time when the answer to that was everybody At least if not now then really really soon and you know this brand new printer. That's that's for everybody It hasn't worked out that way so much and There's a number of reasons for that and I'm gonna go through a few of them But as I go on, you know, I'm gonna say why this isn't necessarily a bad thing at least not yet So The promise of 3d printers isn't as amazing, you know The we immediately go to science fiction things and you know think of some things like the Star Trek replicator It will give you anything No consumer 3d printers do not do this So okay, so that's lower expectations a little bit It's a convenience appliance with all the other appliances in your kitchen which you can use to you know Make useful things around the house No It is not a convenient appliance Maybe it will be soon, but it's certainly not now so expectations are lowering and It's even made it onto the onto the Gartner hype cycle, you know, it's Gartner, but I put this on because it's amusing See the consumer 3d printing is on a gravity assisted trip into the trough of disillusionment That's okay because now is a really good time to think about the tooling that that you use to to feed into the design process of Objects that end up getting printed on these things and by the time they Expectations are more realistic with the with the actual abilities of the devices will be in a much better position to to make the most of them So what's left if we take out the everybody We have three general areas where these where these devices are working really well One is education One is sort of product prototyping in a commercial environment and another one would be the home enthusiast So these are my kids One of the justifications for getting the printer was that they could learn 3d design and print things themselves Mission accomplished They can do what they like now But they actually did a big thing these were designed on a website called tinker CAD It's a really good tool Considering there's a there's not a lot of easy to use open source 3d design visual tools Tinker CAD, you know, it's at least a software as a service and it gives you a way of, you know Building some primitive shapes into something complex and useful And it's good for kids To be fair the the dragon had a little bit of assistance from me And the ice creams I whenever I buy a new color I am obliged to print out a new cone and a new top for the ice cream in that color so that she can add to her collection But yeah, it's cash environments At a stretch, I'd say from primary onwards. No all the way to tertiary It's a great experience for for students to have be able to design something and go through the entire process Into you know making a real thing You do have to be careful if you're setting up a lab You need to have the teaching or the admin resource to actually run it. These things are not zero effort Again product prototyping if you've got people that are being paid to do it. They will learn how to do it This is a ring that I printed for a friend. Who's a professional jeweler? He needed a 3d print of a design To show the client and if the client approved it he'd get the work He got the work and I got paid in bear. So that was it was fine. And finally we've got the home enthusiast Yes, I'm making useful things and actually using them Here's the old pot lids that have the handle broken off So there was this tiny little nubbin to lift off this really heavy glass lid So to have knobs back on my pot lids is wonderful. So So what are these three things have in common? What they have in common is that there is a person or persons who have dedicated time to learn how to do this stuff Why do you need time? Why can't you just put on a design printer and use it? Let's find out printing issues This is the very first thing I tried to print and and I knew it would probably fail because You know, I Had read up enough that you know something was going to go go wrong and in this case it was bed adhesion The print would start fine But then the part would start cooling down cooling up and then it's moving and then it's all over Eventually solved that by Coming up with an adhesion method that worked for me Which in my case was a mixture of acetone and ABS plastic Which is becomes a slurry that you can paint onto the bed surface And then it anything that gets printed on it sticks pretty well What happened here? This was an extruder jam It stopped printing after a while because if the plastic can't go through the nozzle then nothing not much is going to happen the fix there was to Take the extruder nozzle apart and so can a nested blubber Oh, I don't even know what happened here No, actually I do so what up this was a Knob, I wanted it to be quite solid because it's going to be used a lot So this was another bed adhesion issue in this case The thermal stress of this solid lump of plastic As it cools down it contracts So it lifts up at the edges and it gets to a point where it starts moving around and then I Wasn't Watching the printer at the time so things happened and it went all wrong and I Couldn't get this part to print so I tried switching to a different color and exact the same kind of plastic and it worked so Yeah, there was a little frustrating Now this is an interesting one This is an example of learning how to use a new material This is patchy Which is you know not as often heard about in 3d printing, but it's Has some really nice properties as much stronger than the old ABS in the in the and It's Stable in UV. It doesn't break down in UV light It's strong and flexible and it's it's food safe. I use food safe in in air quotes because 3d printed things aren't necessarily Watertight So if the food gets in there bacteria will grow and and you'll die of something horrible, but but the plastic itself is food safe So I was really motivated to make this work and it turns out what the issue was Pet G is really kind of sticky and there was as as it printed as it changed direction it would leave little little hairs of plastic poking up and then as the Extruder came around again It would collect those hairs and it would stick to the side of the hot extruder and over time you'd get these Bits of plastic building up until there's this great big glob of snot just hanging there And then it would fall off and it would all turn to poo And I tried lots of things to try and solve this I tried changing the temperature I tried exchanging the The extrusion multiplier, but it turned out the thing that worked best was just slowing the print down by about 20% Slowing it down. There was no little hairs coming off and it printed perfectly Which is really good because I think I'll be using pet G for most of my prints from now on And even once you get a successful print The the result will not necessarily performance function for its entire life You know a common problem is that you get delaminations on the XY plane Because that's that's the the order that it's Getting extruded in So, you know, that's fine. It's just a an attribute of the material So, I mean these sorts of problems They just they just time-consuming and you have to go through a learning process to To be able to debug these sort of problems And that's why it takes time and that's why the audience is a lot smaller than everybody because not everybody has the time to do this So let's show some actual useful things Look, there's a knob. That's the wrong color, but it works. It's really nice and Then we've got a bracket. So, you know one one thing about I'll cover that later. So yeah, I'll just here's the bottom of this of this gate mechanism Yes, so if you see that wedge there It starts off as basically nothing and then it wedges up and then it drops down So the so it's a locking mechanism and I knew I that this wedge probably wouldn't stay flush on the deck It would start lifting up lifting up and that's exactly what happened But once you have your own printer and you get into this mindset that Okay, this will do for now it'll probably fail in some way, but I'll wait for the failure and then I'll go back and and Do whatever is necessary to to iterate the design Here's the thing I showed earlier. It's a Clip that lets me Put the vacuum cleaner hose onto the vacuum that the old one broke This one has a lot of leverage on it. So it does it does break quite often But this is the sort of thing I'd quite happily print again and again because it performed something useful until it breaks And you know the original one broke anyway, so I'm no no worse off than I was and then it's extending the useful life of our vacuum cleaner So let's make an actual useful thing This is one of those stereos that the internet says is Sounds really amazing for really not much money. So I got one of them and it's perfectly fine as a kitchen stereo But it's I'm not happy with how it's mounted It's upside down obviously because that's the only way I could get the adhesive velcro to stick and So I'd like it to be the right way around and I'd like to screw it to the underside of our bench there so Here's the basic process of Making a thing first you need to design it And that will give you a 3d model. That's just like any other 3d model Then you need to transform that model into a list of instructions that a 3d printer can consume. So that's called slicing Um Funny neat to print it and then you can use it great done and the the tools that we're gonna use in this particular case Let's start with open scad open scad is a domain specific functional language for solid modeling It's very cool And I'll I'll show you some examples very soon solid Python is a library which Let's you write in Python and generate open scad files So what I'll be demonstrating is designing using solid Python rather than a visual tool For slicing we're gonna have a look at cura Which is the slicing engine with an associated user interface the engine itself is written in C++ the user interface is written in Python and Bot queue I know it's in the abstract But I'm not actually gonna show much about bot queue because I don't use it But it's a it's a print queue for 3d printers So if you have lots of them or if you're you know sharing your 3d printer with a bunch of people Then it could be a good way of Managing print jobs There's a couple reasons I don't use it it doesn't have much value to me I need to be standing there in front of the printer for the start of the print anyway Also the printer I have it's a make-a-bot to clone It doesn't consume gcode directly it has a Requires the gcode to be transformed into a binary form so So bot queue doesn't have very good support for that at the moment Okay, so this is a bit more realistic flow of printing and And this is why you know it needs someone who has the time to put in yeah, this is this is a convenience appliance This is a time-consuming hobby But that's okay, and actually when you look at it That's that's virtually identical to the to the flow for writing software and we're all you know prepared to put up with The process for doing that so it's really just transferring your tolerance for failure and ability to learn to a new domain and so We're going to design this thing this bracket for the stereo The first thing you need to decide is how are we going to? model that in In this solid modeling environment Constructive solar geometry is is the first broad technique that we can use and let's you define Primitive shapes cuboids spheres cylinders cones and perform operations on them, you know Intersections difference union so the top we've got the the solid python version You know I've got a simple cube sphere a cylinder for the hole and a cylinder for the rod and we and the operators Asterisk has been overridden to perform an intersection function Minus has been overridden to perform a difference and a rod performs a union so If you compare this python with With this open scat that it generates No, the python's quite nice and I'd be more than happy to to Define my things and in the python version In addition, you get all the advantages of you know being in python you can You know you've got dicks you can slice your lists you can You know do functions which? You know iteration why not recurse So it's Yeah, for me it works pretty well enough, you know, I think I've pretty much settled on using the solid python for for all of my design purposes so apart from constructive solar geometry another option is Defining a 2d shape and then extruding that somehow You can either do a rotational exclusion extrusion or a linear extrusion stretching it out This is actually a working garden hose fitting Which I've printed and used in anger, so it's another useful thing You can see here. I'm defining a polygon bunch of XY points and then just doing a rotational extrusion extrusion Apart from those two Low-level techniques. There's the some higher order Operations which can come in quite useful like the Minkowski some I need to skip on here convex hull like creates a skin over the objects that you define Okay, so let's get into Seeing what we've got here So I'm gonna make a bracket It's gonna it's basically gonna be a cube cuboid And then with a bunch of elements Subtracted from that cuboid to give me the final shape so there's gonna be a a Slot for for whether he's a Where that mounting? Bar goes through I need to Round off the slot because there's a fillet that might get in the way I've got a screw hole which is a big hole for the for the entire screw to go up and then a small hole for the for the thread to go through Need two of those holes in different places And we've got these convenience functions to move them around so I'm moving it right And another extra we slot for some wires to pass through and so the final object is the body minus all the things that we don't want so This final nice. It's completely linear linear scripts. There's no branching or Looping at all. So if I execute this by then If I execute this Okay, so this is generated a scared file. Let's have a look at it Look, I've got a thing and So we'll just quickly look at the So here we've got here's the actual cube. We've got the difference of the difference of the difference of the difference of the difference Of the difference of all the things we're taking away So that's fine. So let's let's generate the actual 3d model for this I've got a Make job to do this on a space dot this Tl So this invokes the open-scan environment to actually generate the 3d model file So now we've got we've completed the design phase. So let's bring up the the slice Okay, so here we have a printing bed so I can arrange things that's it's not going to print like that So I'm going to select it and Lie down flat So I don't I don't need any scaffolding to to stop things from collapsing There's all the options you need there is a quick print mode which has a least minor chance of actually creating something that will just print But you know generally as you as you get to know it you'll you'll want to change the that the options Based on you know all of the factors that you will learn with time And in this case I'm also got a little bit of Python to extend it because my printer needs compiled gcode I Will be running this GPX thing. So let's just have a quick look at the GPX scripts So all it's doing is it's grabbing the Generated gcode out of cura properties Running out against GPX binary and then and then saving it and then if I've got my SD card plugged in then I can also It'll also automatically get copied to it so I can just trot it down to the printer so and the end result is Done and it works and I'm quite happy with it And so There's one thing missing from this flow and that is Once I've once I've done it. I should really share it. This is all about open source So thingy versus a is a great website It's you know, it's the Internet of useful things. So they say in reality It's it's often more like the Internet of things that aren't really completely useless You know, I mean that in a nice way But recently they they added a feature where you can actually upload open-scaled files You don't have to upload the compiled 3d model artifact Which is which is good But the really good thing is that you can define variables in your open-scaled files And they will be presented in a user interface that you can customize So when I got into when I started thinking about 3d printing this to me was the thing which makes 3d printers much more useful to consumers If you can customize a thing, you know, everyone's a different shape the the situations that things are going into require tweaks so You know, that's that this is something that's that's much more compelling than being able to print a static thing Which could be just as easily mass produced So if you see this up open in customizer here So if we pop back, I'm running out of time, but if we pop back and look at the Generator g-code from this so I defined a bunch of bunch of variables And I want them to be for some of them to be in my open-scaled file But they won't come through because it's it's been evaluated in Python all of all I've got is the final operations So crap, you know, I'm so close. I've almost got my perfect development environment for designing the things and I can almost Offer these parametric files for other people to customize. So So Modified solar python, I haven't proposed it upstream so I have no idea if it will be accepted, but I've created this this variables where you can define some variables Give some common annotations, which is used by Thingiverse to to build the the UI and then you can just use them as you did before and the result is Customizable part In this case, all you can customize is the screw holes because you know, you don't mount it with the screws you want You mount it with the screws you have So this this way at least, you know, you won't have screws poking up through the bench or You know things splitting or whatever Um So when you end up designing a thing, please consider using solid Python or open scad Share it on github and Thingiverse. Thingiverse, there's a lot of forking But there's no merging, but it's not Thingiverse's fault. It's the nature of the design tools But if the design tool is a text editor then we can use all those tools that we can have used the entire flow that we already used to You know collaborate on a common design And finally, please consider defining parameters to allow others to customize your thing any questions questions also This is more about 3d printing than about the tool chain, but um So a couple of different things first you mentioned, you know that you use this plastic and that plastic and I was just curious to know whenever I very few occasions I've actually been able to touch something that's come out of a 3d printer It's got a sort of sense of it the plastic is relatively low in density So it feels quite like is it is there any likelihood in the future that a 3d printer will be producing something that is a little more bulky feeling is The feedstock Ever likely to be something that will then be something a bit The reason it feels that way is likely because it's mostly hollow There's no point printing a solid lump of plastic and you know with that thermal effect of things shrinking You actually don't want to do that. You want to use the then the number of plastic for it to be strong enough to performance function So and by default, you know the settings on cure for example is that it's only 25% plastic on the inside So you can always ramp up ramp up that value to a hundred if you want a solid thing Okay, okay, and the other thing was we had a little picture of your 3d printer in amongst your coffee mehendazda But what is that and would you recommend it? This is a flash ford's creator pro It's one of the make about two clones. It's an American company It's manufactured in China and you buy directly from a Chinese supplier on Alibaba or something It's it's it's like a good combination of really cheap I probably landed it for about $1800 and it's a solid dependable printer. It's you know got a steel chassis It's got two extruders And and any every practical senses just like any other make about two so If you're looking for something cheap and reliable, I would recommend it While someone's thinking of a question I saw a picture recently landed get the solid python for ipython notebook support So I had a wee crack and it actually works It's not in a released version on pip yet, but you can also Do solid python snippets and actually render them to a preview image in your notebook. It's very cool Did I say that that? Example that you had used eight meters of And I was just curious about about how much is that with Yeah, I I'd buy my plastic by the using by weight So about a kilo of plastic is hundreds of meters. I think Yeah, so eight meters is nothing You know, it's frustrating when a print fails, but but really all the all the blasters is print time and a little bit of It feels like compiling software really it's a really quite a long compile time Hi Is the thingy verse is that strictly sort of for 3d printing or is can you also put in designs on that that might be more For something that you build out of like wood or steel or that kind of thing. Yeah, I don't think it's limited to 3d printing There's like laser cut designs I don't know about things that are entirely handmade, but you know anything that that is a design file could could be done I So thinking this is now accepting open Gad files. Yeah, I think they might get a bit more method and just take the solid Python With the parameters or is there any accepted common? Setting on open to get wouldn't wouldn't be terrible You know, it's a functional language, so it's probably a bit easier to contain and execute on the server Then something more general purpose like Python so You know as a compiled artifact, I think you know, I think it does a lot. It doesn't do everything You can extend it quite a lot to do more But you know, but layering tools on top of that isn't a terrible approach Yeah, yeah, so you can Anything you've ever you can have a whole description metadata of your of your things so you can include links back to the source code and encourage people to collaborate with their Yeah Pull requests welcome. All right, that's all the time we have. Let's thank Steve again. Thank you