Skip to content
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

Support material z-distance: wrong variable used #3376

Open
Ricky1975 opened this issue Jun 25, 2016 · 21 comments
Open

Support material z-distance: wrong variable used #3376

Ricky1975 opened this issue Jun 25, 2016 · 21 comments
Labels
Milestone

Comments

@Ricky1975
Copy link

Ricky1975 commented Jun 25, 2016

Version

1.3.0-dev
1.2.9-265-gcb72967

Operating system type + version

Win7x64 (any)

Behavior

Distance between support material and first object layer is calculated wrong: $nozzle_diameter is added but not usefull, if distance is set manually. Maybe I'm wrong, but please check this.

Current SupportMaterial.pm:

sub contact_distance {
    my ($self, $layer_height, $nozzle_diameter) = @_;

    my $extra = $self->object_config->support_material_contact_distance;
    if ($extra == 0) {
        return $layer_height;
    } else {
        return $nozzle_diameter + $extra;
    }
}

==> Maybe should be:

sub contact_distance {
    my ($self, $layer_height, $nozzle_diameter) = @_;

    my $extra = $self->object_config->support_material_contact_distance;
    if ($extra == 0) {
        return $layer_height;
    } else {
        return $layer_height + $extra;
    }
}

br
Hendrik

@Ricky1975
Copy link
Author

Also a question: Why is the nozzle width always used to calculate support layer heights? Why is there a hard coded factor of 0.75?
Wouldn't it be much more efficient, if there is a user controllable parameters to define "Print Support every x layers" affecting only the layers below the interface?

@lordofhyphens
Copy link
Member

lordofhyphens commented Jun 26, 2016

Because of a general rule of thumb that you get poor adhesion/extrusion
with several layers > 75% of nozzle width.

@Ricky1975 Slic3r picks the object's layer height or 75% of the nozzle width, whichever is greater.
https://github.com/alexrj/Slic3r/blob/master/lib/Slic3r/Print/SupportMaterial.pm#L340

References:
https://ultimaker.com/en/community/2099-max-layer-thickness
http://reprap.org/wiki/Triffid_Hunter's_Calibration_Guide

@lordofhyphens
Copy link
Member

Yeah, I'm not sure why it's doing this. Easy enough to test to see if it does anything weird though with the change :) Suggest running a few print tests with the variable changed (if you can run a build, it's trivial to change stuff like this and try again because you just need to restart Slic3r and not rebuild).

If anything the way it is biases at being slightly more distant from the previous layer. The distance used to be nozzle width * 1.5.

@alexrj any reason why this is the way it is? I see it's been there since the option was added.

@lordofhyphens lordofhyphens added this to the 1.3.5 milestone Jun 26, 2016
@Ricky1975
Copy link
Author

@lordofhyphens
Thx for fast reply, in regard of the rule of thumb. This is ok. I think, relying on the nozzle diameter as limiting factor is reasonable, but using the nozzle diameter for not user controllable calculations is worth thinking of.

In regard of the formula above to calculate the support layer distance I would suggest to change it to min(layer_height*2,nozzle_diameter * 0.75). Because you should not assume a 0.75 * nozzle_diameter is always the best solution for every printer. (Or at least make the "security factor" 0.75 user configurable).

@alexrj & @lordofhyphens
I implemented my change mentioned in the entry post in my local code and it works perfectly as I need a 0.15mm spacing for 0.1mm layers with a .4mm nozzle. In the original version I always ended with 0.4mm or more.
I think, this is just a bug not found for a long time, as a lot of people using slic3r try to use no support or rely on meshmixer as myself.

@lordofhyphens
Copy link
Member

lordofhyphens commented Jun 26, 2016 via email

@lordofhyphens
Copy link
Member

Looking over the other change I think it needs some more experimenting or testing with different layer heights, so I'll put a separate PR in for it. The comments indicate that the max() is used to avoid inserting a ton of ultra-thin support layers; that is, it defaults to as thick as layers as it can manage for the non-contact areas.

Moreover, slic3r won't even let you choose layer heights > nozzle diameter to begin with. If you're having flow issues at 75% of the stated nozzle width I'm wondering if you're lying to slic3r about the nozzle width (in which case you deserve what you get ;) )

@Ricky1975
Copy link
Author

@lordofhyphens
Of course, the adaption of layer heights need some testing, as it only is an idea. Yes, I have flow issues if using .75 * nozzle_diameter (without lying :-) ) I create technical designs and this depends on mechanical stiffness. I also do not care of printing time very much. Quality is the key for me (and therefore I switched so slic3r as nearly everything can be configured by hand).
So this is no issue of slic3r itself but an issue of my quality expectations - and as slic3r is the best tool with the most user tweak able settings, I suggest to make this factor tweak able, too. Maybe by just making the 0.75 security factor tweak able by the user for all calculations. I would prefer .5 for my personal usage.
Thx for adding the other fix - I hope it will find it's way into the official code soon :-)

@lordofhyphens
Copy link
Member

@Ricky1975 #3377.

There's a win32 package for that and other things at https://github.com/alexrj/Slic3r/files/336282/slic3r-most_prs.zip

@lordofhyphens lordofhyphens added the Fixed with PR available to merge There is an update to address this issue in an open pull request. label Jun 29, 2016
@lordofhyphens
Copy link
Member

The PR needs a bit more work I think though; I can just see a bunch of users complaining that their support contact distance is too close now with this PR.

@Ricky1975
Copy link
Author

First of all - I don't see the complaints - please tell me where.
On the other hand, of course this will happen if they do not change their values to reasonable settings (default). If they used something like 0.00001 before to minimize the distance (just keep extra above 0) and tweaked their nozzle size to .25 they got a distance of about 0.25mm before and will now get 0.00001 (extra) + 0.1mm (layerheight).
So everybody complaining should reset their values to reasonable settings (just an idea where this error might come from, because we should not assume, everybody understands the change but the setting are kept).

@lordofhyphens
Copy link
Member

lordofhyphens commented Jun 30, 2016 via email

@lordofhyphens
Copy link
Member

lordofhyphens commented Jun 30, 2016 via email

@Mikk36
Copy link

Mikk36 commented Jun 30, 2016

Did some prints today, worked just as expected. Finding a good value is an art though, but that's how it's supposed to be, there is no single best value.

lordofhyphens added a commit to lordofhyphens/Slic3r that referenced this issue Jul 9, 2016
@lordofhyphens
Copy link
Member

@alexrj I would appreciate your input on this problem. I think that the addition of the nozzle diameter to the extra when non-soluable does constitute a UI bug at minimum and causes failures at smaller layer heights.

The referenced PR removes the special casing, permitting support separation values 0> and <= nozzle_diameter.

@Martronic-SA
Copy link

Ok I better understand why the support material doesn't follow my settings!
When I'm printing 0.1mm layer height with distance set to 0.1mm, the real support distance is always much greater and the upper part doesn't rely on the support.
If I set 0.1 mm, I was expecting to get 0.1mm even if it's not enough and my piece sticks to the support.

@lordofhyphens
Copy link
Member

Try the branch referenced on the pull request @Martronic-SA

@VanessaE
Copy link
Collaborator

VanessaE commented Jan 15, 2017

There hasn't been much movement on this PR; would this also fix the case where the actual contact distance is affected by the angle of the supported face? If so, can we please get this merged to master?

Seems like no matter what I do, I can't get a consistent contact distance between support and object, even at routine 0.1mm layer height. Even a distance of 0 doesn't result in full contact if the supported face is too far beyond the configured overhang threshold (I think).

The wings in this model, http://www.thingiverse.com/thing:824995 , when turned with the concave side (that is, the bottom side) of the wings facing down, will expose this issue pretty readily.

@bubnikv
Copy link
Contributor

bubnikv commented Jan 15, 2017 via email

@VanessaE
Copy link
Collaborator

I was referring to top contacts.

@bubnikv
Copy link
Contributor

bubnikv commented Jan 15, 2017 via email

@VanessaE
Copy link
Collaborator

Yes, I meant exactly that.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

6 participants