What if you just use support blockers instead of the minimum support areas trick?
It's sad to say that I have never gotten the hang of support blocking. The areas I would want to block need support material at the bottom end of the part, but the need stops about 15mm off the bed. The bogus surfaces are another 12 or 15cm off the bed. I'm using the 0.25mm nozzle, so I'm limited to 0.1mm layer height, so that's 1200 to 1500 trips to the prime tower with multiple laps around the tower each time. Here's an example part to illustrate the problem. I have min support size set to 100 which keeps support material out of some small pockets near the base where the support material usually breaks up and makes a bit of a mess out of the part. The real problem is the roughly horizontal hole up near the top of the part. Cura wants to support the ends of the hole, so some minimum value of "minimum support area" is needed, but the prime tower grows up that level whether or not there is support material there.
It seems that some of the parameters that affect where support goes will correctly adjust the prime tower height, but other parameters do not. It seems like it should be fixable.
Just click the support blocker tool (left, bottom) and click the location on the model where you don't want support. There's really not that much to get the hang of.
It sounds easy, but I can never get it to block where I want. In this case I would need to start blocking about 15mm off the build plate. I guess I just need to spend some time with it. Still, this seems like a manual workaround for a software bug.
Of course. Automatic support generation is rather complex to get right.
To me the minimum support area setting sounds like a workaround for some manual change you want. If those areas don't satisfy the overhang angle then you shouldn't remove those areas based on their size. Size dependent support removal means that some small details will never be supported, no matter how bad the overhang is.
It's really easy to get it to block exactly where you want, because you can simply click the location.
17 hours ago, bagel-orb said:Of course. Automatic support generation is rather complex to get right.
To me the minimum support area setting sounds like a workaround for some manual change you want. If those areas don't satisfy the overhang angle then you shouldn't remove those areas based on their size. Size dependent support removal means that some small details will never be supported, no matter how bad the overhang is.
It's really easy to get it to block exactly where you want, because you can simply click the location.
If you have time, please have a look at the attached model, and see if you can find a way to support the small inset at one end, without building exterior support walls up the exterior faces. I've eliminated the support walls by increasing min support area to 200mm^2, but I still get a prime tower up to the top of the part which increases build time by about 9 hours. The prime tower is only needed for the 1st 1mm of the build. After that it is just a waste of resources.
Small inset? I'm not sure what you are talking about.
Could you grab a screenshot and (e.g. in MS Paint) draw a circle around the 'smal inset' you want to have supported?
Oh you mean at the bottom?
I don't normally do case-work like this, but here I am helkping you anyway. 😄
Problem situation:
Adjusted settings: Support touching build plate only, minimum support area
These settings didn't cut it.
Solution:
Remove customized settings and start fresh 🙂
Add support blocker:
Select and scale the support blocker:
Result:
Here's the project file for you! [attached]
Happy printing!
8 hours ago, bagel-orb said:Oh you mean at the bottom?
I don't normally do case-work like this, but here I am helkping you anyway. 😄
Problem situation:
Adjusted settings: Support touching build plate only, minimum support area
These settings didn't cut it.
Solution:
Remove customized settings and start fresh 🙂
Select and scale the support blocker:
![]()
Result:
Here's the project file for you! [attached]
Happy printing!
UMS5_890022685_UMS5_WingV4.2b-OBFpart2.3mf 598.72 kB · 0 downloads
Thanks for taking the time. I'm having trouble figuring out why this worked. It looks like you are blocking support starting about half way up the piece, and that prevents all the superfluous support up the side walls. Do you know what that support material was trying to accomplish? Is there something about the shape that would make it want to add support? Oddly, I've printed the same shape, but instead of shelling the part and adding interior support manually, I used Cura to do a low density fill, with one wall layer and something like 2% fill, and in that case it does not try to build support up the sidewalls. The exterior of the part is the same either way.
Support was being added for the top of the part, but the support is a bit wider than the overhang. That's meant to be able to support that top surface better, but in this case it was so far removed from the top surface that it ended up outside.
You could also have prevented the support by reducing the support horizontal expansion setting.
Now I just tell the program not to see the top surface as overhang at all, so no support is generated in the first place.
The support blockers are actually blocking overhang, not the support structure itself.
Interesting. It is a lofted part , so may have infinitesimal overhang, on the order of numerical resolution. Looks like I need to spend some time getting to know the blocker function.
Now that I'm seeing this part and some similar parts actually printed, I'm not sure that my effort to shell the parts out in CAD is really that helpful. I tried to make the shell with the ideal wall thickness for two layers. This part, with nearly vertical walls is coming out OK, but other parts with more angled walls are a bit of a mess. It ends up trying to make walls 2 plus a small fraction thick, and the walls end up being a bit of a mess - lots of texture in some areas. If I use Cura with 2 wall layers and zero fill, I get really good walls, but it's a bit of effort to get support structure inside the part as needed. I can add in low percentage fill, but again, it's challenging to get material where I want it and still keep the part density low enough to be useful.
Yeah. Minimizing infill can be difficult.
You could look at gradual infill and infill meshes. Those are some advanced functionality to be able to control the infill better. But truth be told, it's not easy to understand. Maybe first get the hang of support blockers (*overhang* blockers).
- 2 years later...
We're 2022 and this bug is still in the latest cura. I made a script that detects the last extruder switch and removes the prime tower from all higher layers. You'll need to switch on relative extrusion (under Special Modes) for it to work. Hope this helps anyone running into this issue.
from ..Script import Script
from UM.Application import Application #To get the current printer's settings.
from UM.Logger import Logger
from typing import List, Tuple
class FixPrimeTower(Script):
def __init__(self) -> None:
super().__init__()
def getSettingDataString(self) -> str:
return """{
"name": "Fix Prime Tower",
"key": "FixPrimeTower",
"metadata": {},
"version": 2,
"settings":
{
}
}"""
def initialize(self) -> None:
super().initialize()
def execute(self, data: List[str]) -> List[str]:
lastTlayer = 0;
for index, layer in reversed(list(enumerate(data))):
lines = layer.split("\n")
hasT = False
for line in lines:
hasT |= line.startswith("T")
if hasT:
lastTlayer = index
break
for index, layer in enumerate(data):
if index <= lastTlayer:
continue;
lines = layer.split("\n")
cnt = 0
nlst = []
inPrimeTower = False
# Scroll each line of instruction for each layer in the G-code
for line in lines:
if not inPrimeTower:
if ";TYPE:PRIME-TOWER" in line:
inPrimeTower = True
nlst.pop()
nlst.pop()
else:
nlst.append(line)
else:
if self.getValue(line, "E") is not None and float(self.getValue(line, "E")) < 0:
inPrimeTower = False
newLayer = ""
for line in nlst:
newLayer += line + "\n"
data[index] = newLayer
return data
Recommended Posts
jones4642 0
Sorry - pinging this one again.
I really need a fix for this. It's costing me many days of wasted print time. The logic for determining the top of the prime tower seems to be a bit dodgy. If I can prevent a surface from getting support material using the angle limiter, then the prime tower ends when the support ends, but if I use the "minimum support area" setting, then the prime tower goes all the way up to the surface that was eliminated by the use of that setting, even though there is no support material.
Additionally, on the particular part I'm dealing with at the moment, the face that it is trying to support should not even be supported I think. It a hole in the side of a vertical face. I'm only using support from the build plate, and there is no surface hanging over the build plate. It's one of those spots where Cura likes to build a tiny but tall support tower all the way up to the face, but then doesn't actually do anything to support the face.
A related issue - every time I get in a situation where Cura is trying to build a tiny support tower, where that tower is the only remaining support, the feeder ends up grinding away the material, I guess due to rapidly shoving it in and out without actually feeding any significant material, and then the printer pauses claiming that it is out of material. I have to unload, cut off most of a meter of material and reload, and then restart, only to have it repeat this 20 or 30 minutes later. Using the "minimum support area" setting, I can generally prevent it from building support structures like this (as long as I actually catch them while I'm in Cura), but I still get the prime tower going to the original height of the useless support structure that I just eliminated.
A fix in Cura would be ideal, but if anyone has any suggestions to help me defeat this, I would really appreciate the help.
Link to post
Share on other sites