-
-
Notifications
You must be signed in to change notification settings - Fork 2.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Allow support z distance to be smaller than layer height #6105
Comments
Also, am I correct in understanding that the raft z offset is in fact not rounded, but that an exact custom layer height of void is left between the raft and the model? |
This is harder than it seems. There is a circular dependency here so the proposed solution won't work. The circular dependency is this:
Apart from this, I'm also worried that changing the layer height across the entire print will result in terrible banding, because when the layer height changes you typically also want to adjust a whole lot of other settings and there is no way for Cura to know which settings to use then. You'd also have a big flow change there, which is why Adaptive Layers has a smoothing function to make sure there are no sudden layer height changes. An alternative that can be considered is to have an entirely disparate set of layers for support. But this has other problems, not just with CuraEngine's architecture but also with preventing collisions when travelling across the support areas; we're then in a 3D space instead of simplifying collision checking to the 2D space of a layer. So I'm rejecting this feature request. It is currently infeasible to implement Z distances that are not rounded to layers. |
@Ghostkeeper ok thanks for the explaination. How complex would it be to do the disparate set of layers solution? We could force z-hops with a height larger than the difference between final model layer height and final support layer height to overcome for it, so collisions would be fixed, right? Separate question: am I correct in understanding that the raft z offset is in fact not rounded, but that an exact custom layer height of void is left between the raft and the model? Thanks again |
Z hops can leave a blob on the surface with some materials, so it's not a good solution to force that upon everyone. The disparate set of layers is a difficult solution because of multiple reasons:
Yes! The raft air gap is not rounded and can be anything. The raft air gap also doesn't apply to supports (supports are allowed to stick to the raft), so in that case it behaves more or less as your feature request. One of the layers gets made thinner or thicker. In this case it was doable to write some exceptions as to where the Z coordinates of the layers land. This works because:
|
very interesting thanks. you said that with a raft - indirectly - this acts more or less as my FR, so as a final question, may i ask you then:
IIUC, x many 0.2 layers for the raft will be printer, then a lower 0.15 layer of supports will be printed, then the first model layer and the second support layer will be printed at 0.2, and so on at 0.2. But at this point, will the first model layer and second support layer be exactly at the same Z height [since they're in the same layer]? if my supports have 0.2 [1 layer] support-to-model air gap, will the actual support-to-model gap be 0.2 or 0.15 as an indirect consequence of the raft air gap? Thanks again |
You will get 0.2mm support-to-model gap, exactly 1 layer. Here's what it will print.
|
The disparate set of layers solution is technically feasible, but we don't consider it worth our time right now. |
@Ghostkeeper thanks both for your latest reply and you considering this, i was printing an extremely simple mechanical object at 0.4 layer height today but since a small area of it starts up off the ground and 0.4mm support z-distance would make the above surface collapse, i had to print the entire part at 0.2 layer height, or - as I did - switch over to simplify to actually meet the delivery deadline. Hope this can be implemented in the future. Thanks again! |
Hi guys, I got to the same idea by having the need to get finer support Z distance, finer than mutiplicity of the current layer height. I saw others struggling from this too: video I saw other ideas (#6408) by setting a base offset, but I don't think either it would be a good way to offset the whole support structure's layers (placing them on different height Z plane for all the layers). However, I got to a different, hopefully more achievable solution in my mind. My idea would be to have a different layer height only for the topmost interface layer of the support structure! The reason I think it's a more achiavable way, is because it does not affect the model, not even the other layers of the support structure (or maybe the previous interface layer, see later). For eg.: (weird by design) 0.15 Z-distance, with 0.20 layer height (so in this case we want a smaller gap than the layer height, as seen on the picture). Basically the workflow would remain the same (as I see): "skipping out" the rounded up numbers of layers (by multiplicity of the current layer height), but adding and EXTRA interface layer on top, to achieve the finer Z distance. And as the EXTRA layer is thinner than layer height, it should not make any trouble with any already printed layers. We just have to temporarily lower in Z distance (and of course to compensate flow to have the line width smaller too) to have the thinner EXTRA layer, and then go back to current, full 0.2 layer's Z position and continue as nothing special happened :) Of course there are corner cases and things to consider:
What do you guys think about my idea? Does it look to be more achievable than formerly proposed solutions? |
Your new solution still has the same problem of disparate layer sets but limits the problem to only the layers just underneath overhang. On organic prints this is quite often still most of the layers. I agree it makes it simpler, but not simple enough that we'll increase the priority of this issue. It still requires us to build some system where there are extra layers in between the normal layers and work out the collisions with multiple layers.
No. Pretty much all plastic types have a minimum extrusion rate, where you just can't smear out the plastic that thin. Something to do with the surface tension and viscosity of the material. 10 microns is below this minimum for pretty much all FFF materials. I think the minimum extra layer height is a better solution than reordering the layers, for complexity's sake. All of these solutions also have the problem of changing the flow rate drastically. When you suddenly need to extrude 10% of the flow rate, you're going to overextrude for a few seconds. And when you go back to 100% flow rate you're going to underextrude for a few seconds. |
Ok, thanks for your detailed response and considering my idea. About the flow rate change: didn't really thought about that even this could cause some side effects. For bowden type extrusion systems it might happen, but I believe for direct drives it should not really cause any issues (and if the next line will be a support too, or inner wall/infill, it will not really count even if cause a very small overextrusion). Although this little side effect could be left to the user to decide if he/she takes the possibility for such issue, however I think the real problem is not the flow rate change, but the thin layer's handling (collision handling) that you mentioned. Building some complex system for such solution could be painful. For such small thing maybe it's not even worth it, however could be a new brainstorm what other feature such system could be used for... maybe then it would be more worthy. But I hope once there will be some solution to this to have finer control over the Z distance. |
I'm glad to see someone else has similar ideas. nordurljosahvida's idea has a feature that can be realized in Simplify3D (S3D). S3D allows you to change the print profile for each print height. By dividing the area around the contact surface of the support and the printed material, an optimal gap can be created. When printing at a print pitch of 0.24mm, Z_Distance can be 0.24mm, which is twice as high as RaftAirGap. I often cite S3D as an example. Maybe you will be offended. Please consider how to control the distance of support and printouts. |
@Ghostkeeper If we print at 0.2mm layer height and want a distance of 0.1mm, have Cura first calculate that as 0 distance in regards to calculating how to slice everything just like normal. So instead of rounding the Z-distance up, if this is active, round it down instead. Define variable allow_half_layer_Z = true ;true when the user has activated "allow half layers" If half_layer_active = true And then restore it to normal once the support is finished for that layer. Does this violate the engine? The function is activated by a check-box "allow half layer z distance". An intuitive way would be to also be able to select Z-distance by number of layers in addition to the default mm input. #9155 |
I often see that by presenting a specific shape pattern for an idea that negates it, the idea itself is no longer considered. |
I understand but I will keep hoping for something like this to become reality in the future 👍 Out of curiosity if you have the time to answer: Or:
I haven't taken extrusion into account yet but I think I can figure that out. |
@viper0078 The current implementation creates logical output for all shapes. This is not necessarily perfect output for all shapes, but there is output and the output is reasonably logical to expect it to work okay, and easy to reason about why the output is the way it is. We need to implement an algorithm that produces logical output for all shapes. If it's not logical, that's both a print quality problem and a user experience problem. In your case, we would frequently get bug reports like "I've set my layer height to 0.2mm, but Cura produces layers of 0.1mm instead, so Cura is broken." If people see that their layer height is greatly reduced and varies a lot, they will not think to blame one of the support settings for it because that's not logical. So they will not be able to fix the problem and they will not be able to print their model properly and/or not on time. It's not Ultimaker's policy to reject all solutions that don't produce perfect results for all shapes. But for the user we do need to keep things logical. For your case it's easy enough to see that the layer height is reduced at the same height of an air gap, so the air gap is probably the cause. But for the general case most models have air gaps at all sorts of heights so most models will have a wrong layer height in large parts of the print and there is no way for the user to figure out what is causing that then unless they are already in the know.
Only Cura's front-end has a plug-in system. That means that plug-ins generally can't influence the slicing result much. Plug-ins can do a post-processing on the g-code. But there they get the g-code as a text file. So it's pretty much impossible to get the original shape of the model back or the shape of structures (e.g. support). You can't really create new slices (at different layer height) or different polygons. Things like adjusting coordinates or E values is possible. But it'll be hard to figure out which area is going to be filled with support on a different layer, to see which support lines are on top to see which should get reduced flow. Or to adjust travel moves to the newly optimal path |
In Prusa Slicer it looks like support layers are at their own layer Z values from the beginning, separate from object layer Z values. Objects do not need any special treatment nor recursive adjustments and their layer heights are not altered by the supports. Finally layers are printed starting from lowest Z, be it support or object. Making Cura engine do that, would it be more or less work than Arachne? |
I think it's more of a "we made certain choices in the start that are now biting us in the ass" kind of situation. The entire code kinda assumes that each thing printed on a layer has the same height (or at the very least; multiples of a layer). It could be that there is a smart way of "breaking" this assumption within Cura, but I'm not really convinced that it's going to be easy and/ or maintainable (but by all means, i'd love to be proven wrong!). So as it stands, I think it's in the same-ish ballpark of amount of work as Arachne. |
Perhaps we are attacking the problem from the wrong direction. |
Hi 👋, If this is still something that you think can improve how you and others use Cura, can you please leave a comment? If it has been resolved or don't need it to be improved anymore, you don't have to do anything, and this issue will be automatically closed in 14 days. |
We already have an Adaptive Layer function, wouldn't it be easier to modify its input to make it think the model has slopes on every layer with support interfaces so it reduces the layer height, increasing the resolution and getting closer to the set Z distance? This is definitely only a mitigation, not a fix, and it works best on more functional models or models where the support interfaces are only on a few layers rather than organic ones but without knowledge of the code seems simpler to implement. it would be nice to have a setting that's independent of the "Topography size" so if you want you can only use adaptive layers on the support interfaces. |
Quick update from our side 👋 The new Cura 5.6 Beta, has an option to only enter values different from your layer height, which I believe should resolve this issue. |
This is great, thank you! Testing this now. |
This issue has been automatically closed because there has been no response to our request for more information from the original author. With only the information that is currently in the issue, we don't have enough information to take action. Please reach out if you have or find the answers we need so that we can investigate further. |
Is your feature request related to a problem? Please describe.
I always use support z-distances of between 0.1 and 0.15mm, I should be able to make a 0.3mm layer height print with supports that still are 0.15mm below the model, not be forced to a round-up to 0.3mm, which will make the first layer above supports crappy.
Describe the solution you'd like
Allow smaller than layer height support z-distances, and instead of rounding up, make the entire single next layer lower and print every part of the model on that layer with a lower layer height so that the next layer, which will include the supported model area in addition to the non-supported model area, will be printed at the desired height above the support.
Affected users and/or printers
Everyone
Additional context
This would be groundbraking, especially in Cura where we don't have multiple processes like in simplify. Thanks.
The text was updated successfully, but these errors were encountered: