I always find it hard to determine what audience is appropriate for what I write. In this case I specifically didn't want to spend time on explaining what I consider basic terminology, and as deep as I am into 3D printing it can be hard to know what is at what level.
I don't think it's important to specify the target audience's required knowledge or level.
I often start to read article outside of my knowledge/competences and yes, often stop because I'm lost in terminology and don't want to read further.
But, it also happens that I want to know more and discover what specialists consider "basic knowledge".
This is the exact pattern that made me want to read your text.
I knew vase mode existed but never cared for it because it's outside of my requirements for 3d printing.
Just leave that remark out. You're likely to be wrong for the majority of readers. Just let the reader decide whether the article is right or wrong for them.
I often wonder if there should be something like a "folded outline" mode in slicers. For example, it would make the outer left wall of an object:
│││││││
│││││││
│││││││
│││││││ Inside of the object
│││││││ is here
│││││││
│││││││
│││││││
Look like this instead:
┌────
└─────┐
┌─────┘
└─────┐ Inside of the object
┌─────┘ is here
└─────┐
┌─────┘
└─────
The seam (where the print head moves up a layer) could then be on the inside of the object:
┌────
└─────┐
┌─────┘
└───── <-- Print head moves up here
┌─────┘
└─────┐
┌─────┘
└─────
This might result in having no visible seam but instead evenly distributed vertical lines, similar to the horizontal lines that all 3D prints have. The horizontal lines look quite nice when the print is otherwise perfect. So maybe doing this and having horizontal AND vertical lines would look good overall?
I like this idea. Hiding the seam in a crack or sharp corner (convex or concave) is already a thing, and your idea builds on that.
I'm also curious what it would do for part strength. If you offset the zig-zags from layer to layer it will not be as pretty obviously, but it should act like offset bricks in a brick wall. Worth exploring (but I don't have the equipment to test part strength).
One effect of this would be to make the print dramatically slower though, you would never get up to max speed due to all the cornering.
You could do this sort of pattern already while modelling (though that offset version would be very fiddly). Less practical than the slicer but useful for a quick proof of concept.
Thinking about it some more, this is not that far from the existing fuzzy skin pattern already in slicers, and I believe that the relatively obscure slicer IdeaMaker does allow to apply arbitrary textures as height maps on the sides of parts. That could be another way to explore this.
I am not sure, but "fuzzy skin" seems to intentionally sacrifice some adherence to the object's exact shape? "folded outline" would not do that. If the printer prints it exactly, the print would match the object just as precisely as a normal outline.
The IdeaMaker repo on GitHub says it is abandoned. Maybe there are other options? An open source slicer written in Python without dependencies that works on the command line would be my favorite starting point. If there is none, writing a new one might also be feasible?
Yes, fuzzy skin does that, in order to create a rough texture. But your idea won't be perfectly conforming to the original shape either, the physics of molten plastic means you will likely get unevenness still.
You could consider writing a post processing script, or perhaps experimenting with https://github.com/FullControlXYZ/fullcontrol (not a slicer but a toolkit for generating gcode from python). I suspect that a full on slicer in pure python would be rather slow though.
I don't think IdeaMaker is abandoned, but it is closed source freeware.
I just started 3D printing a few weeks ago. I already realized that I need to write my own CAD software. None of the existing ones are the way I want to design objects. That will probably take a few months. Then I will probably want to control the prints down to the gcode level and look into the situation then.
That is rather ambitious. I don't know how you prefer CAD, but if you don't like parametric CAD (Fusion, Onshape, FreeCAD, etc), nor sculpting (Blender, and various other artistic things) there is also code based CAD such as OpenSCAD and iirc some others.
For me, parametric CAD is what clicked. I suspect making your own CAD engine is going to be quite a lot of work though, as unlike most 3D modelling for games etc, proper CAD works with mathematically perfect shapes, rather than tesselated approximations. (I believe OpenSCAD doesn't, it tesselates but let's you define the resolution dynamically as the script is executed.)
For 3D prints, this is something that you can live with: the imperfections of the technology will hide the triangles mostly if you use a high enough resolution. But for subtractive CNC, this is a problem: If you mill from metal you will see the imperfections.
From what I have seen so far, OpenScad is the closest to how I would like to build my objects.
The two main differences to how I want to work are:
1: I want to use a web-based solution. I don't like to install software. I just want to open a website. No matter if I am on Linux, Android or iOS - it should just work.
2: Instead of the SCAD language, I want to use Python.
I saw a programatic Web cad tool before, took a moment to find it (and along the way I found a few others). Caveat: of these I have only used Onshape, and I tend to use it via the graphical interface.
- First up Onshape is web based, but is actually programmable behind the scenes (and all documents are scripts under the hood). This is used to let you write plugins it for it.
- The one I was thinking of used to be called KittyCAD but has since been renamed: https://zoo.dev/ (looked at it briefly but it was in very early stages then).
- https://www.fornjot.app/ is a work in progress CAD engine that can compile to WASM. Written in Rust (so big plus for me there, I have switched from C++ to Rust for most things).
There are a few python cad things already as well: SolidPython, PythonSCAD and CadQuery. FreeCAD is also scriptable in python. Due to the large size, python really isn't suitable for embedding in wasm though.
For the core of my engine, I just need to build some basic mesh tools like mesh(), combine(), intersect(), difference(). Everything else, common objects like cube(), sphere(), disk() and common operations like move() and rotate() is then simple.
SolidPython: This seems to rely on OpenScad. I think a solution without dependencies will fare better in the long run.
PythonSCAD: This also seems to be heavily interwoven with OpenScad.
CadQuery: This might be interesting. I will probably start with some code for mesh(), combine(), intersect(), difference() that I write myself and then look into libraries like this one and evaluate if it makes sense to swap out my own for one of them. But I have the feeling they will not match my preferred architecture closely enough.
What do you mean by "Due to the large size, python really isn't suitable for embedding in wasm"? In what regard is Python "big"?
Not seen web-based python CAD but IMO any time spent going too deep into OpenSCAD is wasted if you plan to do really complex things: it is limited. You might find Replicad useful if you combined it with some wasm Python thing.
Another alternative is Rhino+Grasshopper with direct g-code generation, which allows for some wild tricks, including full colour printing: https://www.instagram.com/medium_things/
There’s an expensive but interesting package, Rhinoceros 3D, which has an add-on called Grasshopper that is used for quite unconventional GCODE generators; people in the textiles and furniture industry are using this with 3D printing.
This would work in theory but quality would be exceptionally reliant on a well-calibrated printer, because you are asking it to do the thing that introduces the most motion variation: abrupt changes of direction.
You can create fast to print objects consuming very little filament, however to have some kind of texture on the surfaces is absolutely needed for strength.
That is a neat model. It seems like unlike printables, makersworld doesn't have a 3D preview on the website (or maybe you need to be logged in, or use an app or something)? As I have a Prusa printer, I have naturally falles into using printables (and Thingyverse back before printables was launched).
I will have to download the model and take a proper look in the slicer or CAD program when I'm no longer on my mobile phone. (I will probably not print it, as I'm not currently in the need of a desk organiser, and I don't like wasting plastic.)
For the benefit of those who don't know (I assume you do): Texture absolutely helps rigidity in any part, since if the surface is already curved or creased in one direction it resists bending in other directions. (This is why a rolled up paper is stiffer than a sheet.)
Ah, I have a Mk3.9s, and definitely don't need more than one printer.
I looked at the model on printables, and have a followup question: why does the slit go all the way through? You can make the first few layers print normal and solid (in fact this is very common), so I'm slightly confused as to why you didn't (it would probably increase the strength a bit).
It was an attempt at using less plastic, in vase mode there is this absurd thing that the first few solid layers are accountable often from 30% or more of the whole object weight! However, yes, it would be more robust that way.
Your blog post made me thing that we would almost need a specialized vase mode site for models of that kind :D
Moreover, there is no reason why the top surface could not be closed with bridging. The slicers have a lot of odd limitations in the context of vase mode.
Agreed, I would like to be able to specify vase mode as a height range modifier in the slicer, so I could shift back to non-vase mode near the top.
If you want full control though, you might want to look at https://github.com/FullControlXYZ/fullcontrol (using python to directly generate gcode). Perhaps a bit over the top, but their examples are cool and show things that can't currently be done any other way. You could definitely switch back and forth between vase and normal with it.
Thanks, yep I know ControlXYZ, it's cool but far from practical, I have the feeling their contribution would be a lot more impactful if working with OrcaSlicer.
A few reasons. First, foaming filaments, especially PLAs, are very, very, very stringy -- you can't really cut off the feed by stopping the extruder, because the small remnant in the heating head will continue to absorb heat and expand out of the head. So having a single continuous path is almost required for decent quality. Second, minimum weight (both for a given strength, and absolutely) is achieved at a single wall; and vase mode is designed to exactly meet both of those constraints.
That is a neat design. From what I can tell though, the split base/top is overly complex. You can simply set (in PrusaSlicer at least) the number of layers to print normally before switching to vase mode.
Other than that, it seems to deriving strength from having sides that are not flat (same reason a rolled up paper is stiffer than a flat pice of paper), a fairly common trick when working with thin flat material of any kind (e.g. bent metal or cardboard have the same concerns). No "unusual" vase mode tricks that I can see.
Interesting and useful article, but:
> If you are new to 3D printing and/or CAD for 3D printing, this is not the right article for you.
I feel like I would have been fine with this article about a week into my 3d printing journey.
Original author here. Thanks for the feedback.
I always find it hard to determine what audience is appropriate for what I write. In this case I specifically didn't want to spend time on explaining what I consider basic terminology, and as deep as I am into 3D printing it can be hard to know what is at what level.
I don't think it's important to specify the target audience's required knowledge or level.
I often start to read article outside of my knowledge/competences and yes, often stop because I'm lost in terminology and don't want to read further.
But, it also happens that I want to know more and discover what specialists consider "basic knowledge".
This is the exact pattern that made me want to read your text. I knew vase mode existed but never cared for it because it's outside of my requirements for 3d printing.
Now I know and you explained it perfectly!
Just leave that remark out. You're likely to be wrong for the majority of readers. Just let the reader decide whether the article is right or wrong for them.
I often wonder if there should be something like a "folded outline" mode in slicers. For example, it would make the outer left wall of an object:
Look like this instead: The seam (where the print head moves up a layer) could then be on the inside of the object: This might result in having no visible seam but instead evenly distributed vertical lines, similar to the horizontal lines that all 3D prints have. The horizontal lines look quite nice when the print is otherwise perfect. So maybe doing this and having horizontal AND vertical lines would look good overall?I like this idea. Hiding the seam in a crack or sharp corner (convex or concave) is already a thing, and your idea builds on that.
I'm also curious what it would do for part strength. If you offset the zig-zags from layer to layer it will not be as pretty obviously, but it should act like offset bricks in a brick wall. Worth exploring (but I don't have the equipment to test part strength).
One effect of this would be to make the print dramatically slower though, you would never get up to max speed due to all the cornering.
You could do this sort of pattern already while modelling (though that offset version would be very fiddly). Less practical than the slicer but useful for a quick proof of concept.
Thinking about it some more, this is not that far from the existing fuzzy skin pattern already in slicers, and I believe that the relatively obscure slicer IdeaMaker does allow to apply arbitrary textures as height maps on the sides of parts. That could be another way to explore this.
I wouldn't mind long print times.
I am not sure, but "fuzzy skin" seems to intentionally sacrifice some adherence to the object's exact shape? "folded outline" would not do that. If the printer prints it exactly, the print would match the object just as precisely as a normal outline.
The IdeaMaker repo on GitHub says it is abandoned. Maybe there are other options? An open source slicer written in Python without dependencies that works on the command line would be my favorite starting point. If there is none, writing a new one might also be feasible?
Yes, fuzzy skin does that, in order to create a rough texture. But your idea won't be perfectly conforming to the original shape either, the physics of molten plastic means you will likely get unevenness still.
You could consider writing a post processing script, or perhaps experimenting with https://github.com/FullControlXYZ/fullcontrol (not a slicer but a toolkit for generating gcode from python). I suspect that a full on slicer in pure python would be rather slow though.
I don't think IdeaMaker is abandoned, but it is closed source freeware.
Fullcontrol looks interesting, thanks!
I just started 3D printing a few weeks ago. I already realized that I need to write my own CAD software. None of the existing ones are the way I want to design objects. That will probably take a few months. Then I will probably want to control the prints down to the gcode level and look into the situation then.
That is rather ambitious. I don't know how you prefer CAD, but if you don't like parametric CAD (Fusion, Onshape, FreeCAD, etc), nor sculpting (Blender, and various other artistic things) there is also code based CAD such as OpenSCAD and iirc some others.
For me, parametric CAD is what clicked. I suspect making your own CAD engine is going to be quite a lot of work though, as unlike most 3D modelling for games etc, proper CAD works with mathematically perfect shapes, rather than tesselated approximations. (I believe OpenSCAD doesn't, it tesselates but let's you define the resolution dynamically as the script is executed.)
For 3D prints, this is something that you can live with: the imperfections of the technology will hide the triangles mostly if you use a high enough resolution. But for subtractive CNC, this is a problem: If you mill from metal you will see the imperfections.
From what I have seen so far, OpenScad is the closest to how I would like to build my objects.
The two main differences to how I want to work are:
1: I want to use a web-based solution. I don't like to install software. I just want to open a website. No matter if I am on Linux, Android or iOS - it should just work.
2: Instead of the SCAD language, I want to use Python.
I saw a programatic Web cad tool before, took a moment to find it (and along the way I found a few others). Caveat: of these I have only used Onshape, and I tend to use it via the graphical interface.
- First up Onshape is web based, but is actually programmable behind the scenes (and all documents are scripts under the hood). This is used to let you write plugins it for it.
- The one I was thinking of used to be called KittyCAD but has since been renamed: https://zoo.dev/ (looked at it briefly but it was in very early stages then).
- https://www.fornjot.app/ is a work in progress CAD engine that can compile to WASM. Written in Rust (so big plus for me there, I have switched from C++ to Rust for most things).
There are a few python cad things already as well: SolidPython, PythonSCAD and CadQuery. FreeCAD is also scriptable in python. Due to the large size, python really isn't suitable for embedding in wasm though.
For the core of my engine, I just need to build some basic mesh tools like mesh(), combine(), intersect(), difference(). Everything else, common objects like cube(), sphere(), disk() and common operations like move() and rotate() is then simple.
SolidPython: This seems to rely on OpenScad. I think a solution without dependencies will fare better in the long run.
PythonSCAD: This also seems to be heavily interwoven with OpenScad.
CadQuery: This might be interesting. I will probably start with some code for mesh(), combine(), intersect(), difference() that I write myself and then look into libraries like this one and evaluate if it makes sense to swap out my own for one of them. But I have the feeling they will not match my preferred architecture closely enough.
What do you mean by "Due to the large size, python really isn't suitable for embedding in wasm"? In what regard is Python "big"?
Not seen web-based python CAD but IMO any time spent going too deep into OpenSCAD is wasted if you plan to do really complex things: it is limited. You might find Replicad useful if you combined it with some wasm Python thing.
Other code-CAD: Build123D/CadQuery, DeclaraCAD, Cascade Studio and Replicad, ShapeScript, zoo.dev, codecad.xyz.
Another alternative is Rhino+Grasshopper with direct g-code generation, which allows for some wild tricks, including full colour printing: https://www.instagram.com/medium_things/
You can read more here:
https://controlmad.com/en/training/10h-grasshopper-g-code-fo...
https://interactivetextbooks.tudelft.nl/rhino-grasshopper/Gr...
I think it shouldn't be too hard to just output g-code via a Python program?
That is the direction I will probably first look into when I get to the g-code level of my 3d-journey.
There’s an expensive but interesting package, Rhinoceros 3D, which has an add-on called Grasshopper that is used for quite unconventional GCODE generators; people in the textiles and furniture industry are using this with 3D printing.
I love the ambition! Good luck!
> If you offset the zig-zags from layer to layer it will not be as pretty
It would probably just be a slightly less random fuzzy skin effect.
This is an interesting idea but I suspect print times would put most people off.
This would work in theory but quality would be exceptionally reliant on a well-calibrated printer, because you are asking it to do the thing that introduces the most motion variation: abrupt changes of direction.
Some time ago based on the same set of ideas I made this:
https://makerworld.com/it/models/99219-olivetti-style-vase-m...
You can create fast to print objects consuming very little filament, however to have some kind of texture on the surfaces is absolutely needed for strength.
(Original author of the blog post here.)
That is a neat model. It seems like unlike printables, makersworld doesn't have a 3D preview on the website (or maybe you need to be logged in, or use an app or something)? As I have a Prusa printer, I have naturally falles into using printables (and Thingyverse back before printables was launched).
I will have to download the model and take a proper look in the slicer or CAD program when I'm no longer on my mobile phone. (I will probably not print it, as I'm not currently in the need of a desk organiser, and I don't like wasting plastic.)
For the benefit of those who don't know (I assume you do): Texture absolutely helps rigidity in any part, since if the surface is already curved or creased in one direction it resists bending in other directions. (This is why a rolled up paper is stiffer than a sheet.)
Thank you for your comment! The model can be also found on Printables. I have both an MK4 and a Bambulab A1 :D Thanks.
Ah, I have a Mk3.9s, and definitely don't need more than one printer.
I looked at the model on printables, and have a followup question: why does the slit go all the way through? You can make the first few layers print normal and solid (in fact this is very common), so I'm slightly confused as to why you didn't (it would probably increase the strength a bit).
It was an attempt at using less plastic, in vase mode there is this absurd thing that the first few solid layers are accountable often from 30% or more of the whole object weight! However, yes, it would be more robust that way.
I have a long love affair with vase mode and abusing it, and always saving time/weight is my main goal, like in this other case: https://makerworld.com/it/models/840291-vase-mode-gear-phone...
Your blog post made me thing that we would almost need a specialized vase mode site for models of that kind :D Moreover, there is no reason why the top surface could not be closed with bridging. The slicers have a lot of odd limitations in the context of vase mode.
Agreed, I would like to be able to specify vase mode as a height range modifier in the slicer, so I could shift back to non-vase mode near the top.
If you want full control though, you might want to look at https://github.com/FullControlXYZ/fullcontrol (using python to directly generate gcode). Perhaps a bit over the top, but their examples are cool and show things that can't currently be done any other way. You could definitely switch back and forth between vase and normal with it.
Thanks, yep I know ControlXYZ, it's cool but far from practical, I have the feeling their contribution would be a lot more impactful if working with OrcaSlicer.
Original author of the blog post here. Cool to see that people like this post enough for it to show up on HN (never had a account here until now).
If you have questions related to the blog post, feel free ask.
A lot of these tricks are used to print UAV / RC wings with internal structure, often out of foaming filaments to reduce weight.
Why not use normal printing techniques with low or no infill? Or just design the parts with internal cavities
A few reasons. First, foaming filaments, especially PLAs, are very, very, very stringy -- you can't really cut off the feed by stopping the extruder, because the small remnant in the heating head will continue to absorb heat and expand out of the head. So having a single continuous path is almost required for decent quality. Second, minimum weight (both for a given strength, and absolutely) is achieved at a single wall; and vase mode is designed to exactly meet both of those constraints.
There are some great vase mode designs for gridfinity boxes that minimize filament usage and maximize print speed.
https://www.printables.com/model/324102-vase-mode-parametric...
(Original author of the blog post here.)
That is a neat design. From what I can tell though, the split base/top is overly complex. You can simply set (in PrusaSlicer at least) the number of layers to print normally before switching to vase mode.
Other than that, it seems to deriving strength from having sides that are not flat (same reason a rolled up paper is stiffer than a flat pice of paper), a fairly common trick when working with thin flat material of any kind (e.g. bent metal or cardboard have the same concerns). No "unusual" vase mode tricks that I can see.
Vase mode has been around for quite some time and a very popular way to print quickly.