slic3r / Slic3r

Open Source toolpath generator for 3D printers
https://slic3r.org/
GNU Affero General Public License v3.0
3.32k stars 1.29k forks source link

huge gap between support and the rest #1942

Closed cuthulino closed 9 years ago

cuthulino commented 10 years ago

Hello, Ich just Printed a simple part with a hole for a bearing. Had to print it with support. But the support was kinda useless. between the first layer ontop of the support and the support itself there is min. 2 LAyers of support missing!? It is not easy to see in the picture but between the red lines are 2 layers missing. Like this the upper layer just drops down to the last support.

missing support

Shouldnt the support be exactly the same heigth like the last layer? So the next can lay down exactly?

Here are my Settings if they help:

# generated by Slic3r 1.0.0 on Fri Apr 18 13:12:29 2014
avoid_crossing_perimeters = 0
bed_size = 195,174
bed_temperature = 110
bottom_solid_layers = 3
bridge_acceleration = 0
bridge_fan_speed = 100
bridge_flow_ratio = 1
bridge_speed = 40
brim_width = 0
complete_objects = 0
cooling = 1
default_acceleration = 0
disable_fan_first_layers = 1
duplicate = 1
duplicate_distance = 6
duplicate_grid = 1,1
end_gcode = M104 S0\nM140 S0\nG91\nG00 Z+2.5\nG28 X0 Y0\nG1 Y165 F5500\nM84
external_perimeter_speed = 25
external_perimeters_first = 0
extra_perimeters = 1
extruder_clearance_height = 20
extruder_clearance_radius = 20
extruder_offset = 0x0
extrusion_axis = E
extrusion_multiplier = 0.95
extrusion_width = 0.5
fan_always_on = 0
fan_below_layer_time = 60
filament_diameter = 2.9
fill_angle = 45
fill_density = 0.3
fill_pattern = honeycomb
first_layer_acceleration = 0
first_layer_bed_temperature = 125
first_layer_extrusion_width = 0.5
first_layer_height = 0.2
first_layer_speed = 50%
first_layer_temperature = 250
g0 = 0
gap_fill_speed = 20
gcode_arcs = 0
gcode_comments = 0
gcode_flavor = reprap
infill_acceleration = 0
infill_every_layers = 2
infill_extruder = 1
infill_extrusion_width = 0.6
infill_first = 0
infill_only_where_needed = 0
infill_speed = 50
layer_gcode = 
layer_height = 0.2
max_fan_speed = 100
min_fan_speed = 35
min_print_speed = 15
min_skirt_length = 0
notes = 
nozzle_diameter = 0.5
only_retract_when_crossing_perimeters = 1
ooze_prevention = 0
output_filename_format = [input_filename_base].gcode
overhangs = 1
perimeter_acceleration = 0
perimeter_extruder = 1
perimeter_extrusion_width = 0.5
perimeter_speed = 30
perimeters = 3
post_process = 
print_center = 97.5,87
raft_layers = 0
randomize_start = 0
resolution = 0
retract_before_travel = 2
retract_layer_change = 1
retract_length = 1.2
retract_length_toolchange = 10
retract_lift = 0
retract_restart_extra = 0
retract_restart_extra_toolchange = 0
retract_speed = 35
rotate = 0
scale = 1
skirt_distance = 6
skirt_height = 1
skirts = 1
slowdown_below_layer_time = 30
small_perimeter_speed = 25
solid_fill_pattern = rectilinear
solid_infill_below_area = 50
solid_infill_every_layers = 0
solid_infill_extrusion_width = 0.5
solid_infill_speed = 50
spiral_vase = 0
standby_temperature_delta = -5
start_gcode = G28 X0 Y0\nG00 X15 Y15 F5500\nG28 Z0\nG1 Z5 F200
start_perimeters_at_concave_points = 0
start_perimeters_at_non_overhang = 1
support_material = 1
support_material_angle = 0
support_material_enforce_layers = 0
support_material_extruder = 1
support_material_extrusion_width = 0.5
support_material_interface_extruder = 1
support_material_interface_layers = 3
support_material_interface_spacing = 0.25
support_material_pattern = rectilinear
support_material_spacing = 2
support_material_speed = 40
support_material_threshold = 0
temperature = 250
thin_walls = 1
threads = 2
toolchange_gcode = 
top_infill_extrusion_width = 0.5
top_solid_infill_speed = 40
top_solid_layers = 3
travel_speed = 150
use_firmware_retraction = 0
use_relative_e_distances = 0
vibration_limit = 69120
wipe = 1
z_offset = 0.16
kefir- commented 10 years ago

Your layer height is 0.2mm and your nozzle diameter is 0.5mm. If you want the support to snap away and not be fused to your part, the support must be about 0.5mm away from the first part layer, so that the part only rests on top of the support. If it was closer, you'd have a lot of trouble getting it off.

cuthulino commented 10 years ago

But like you say, every supported part would hang down to the support!? Thats not nice!

Kisslicer as example makes the support like the usual print on the same heigth.

munzp commented 10 years ago

Hi,

I am also experiencing a gap between support structures and models and it occurs wherever supports are used regardless of the support angle or model.

To investigate the issue further I made a simple model resembling a short piece of angle iron and sliced it such that it was standing on a short edge and the other leg of the angle iron section formed a horizontal overhang that would require supporting (the model was sliced this way so it would require support and would not ordinarily be done in this orientation). I then investigated how the gap between the support and the model changed for a few settings. I tested layer thickness and included the effects of a different first layer thicknesses, I also looked at different support thickness and nozzle diameter as well as wether using interface layers had any effect. In every case I found that the top of the support structure was 1.5 nozzle diameters below the top of the first model layer that would require the support. None of the settings tested changed this distance except, of course, nozzle diameter to which the gap seems to be directly related. Even for a directly supported layer that is the thickness of the nozzle diameter this results in a half nozzle diameter gap into which the extruded plastic will sag and form "stringy" layers.

I think that the support structure should be built up until it reaches the surface of the model and any variance to the thickness of the supported areas should be accounted for inside the model rather than as extra material hanging below it; although, this may already be the case if things are working properly.

I am having this support issue with the x64 precompiled 1.1.0 experimental version of Slic3r running on Windows 8.1. I have also seen this issue occur with Windows 7. Slic3r 0.9.9 and 0.9.8 support worked well for me under both operating systems.

alranel commented 10 years ago

See this blog post for an explanation: http://hydraraptor.blogspot.it/2012/08/peel-able-support.html

nophead commented 10 years ago

I only offset by the difference between the layer height and the diameter of the filament if the same volume was extruded as a cylinder. I.e. sqrt(4wh/pi) - h. That is much less than 1.5 times the nozzle diameter.

alranel commented 10 years ago

@nophead, speaking of values: with a 0.35mm nozzle the first object layer will be printed at +0.525mm, which means that a gap is left between support and object that is <= 0. 175mm (basically, 0.525mm - die swell diameter). Is this much different than what you do?

nophead commented 10 years ago

The examples on my blog are 0.4mm layers 0.6mm wide. When extruded as a cylinder that is 0.55mm diameter, so the offset is only 0.15mm. That is with ABS and a 0.45mm nozzle, so the offset is a third of the nozzle diameter, not 1.5 times it.

Die swell is not relevant to the calculation because the plastic is not extruded into mid air. It is still being stretched to the correct length, so its diameter is defined by volume over length, not the die swell value. Die swell simply defines the maximum diameter you can possibly extrude and affects how much tension is generated stretching it down to the cross section defined by volume / over length.

alranel commented 10 years ago

You mean 0.15mm extra distance? Then it's not much less than 0.175mm Slic3r uses in the example above.

nophead commented 10 years ago

Indeed but the OP says he has a gap between the top of the support and the bottom of the layer above of 1.5 times the nozzle unless I miss-understood.

The OP's settings say 0.2mm layers 0.5mm wide with a 0.5mm nozzle. That would give a round diameter of 0.36mm, so the extra offset should be 0.16mm by my reckoning.

nophead commented 10 years ago

For the infill you have 0.2mm * 0.6mm, so that would be 0.39mm diameter giving an offset of 0.19mm, which is nearly a whole layer gap.

alranel commented 10 years ago

@nophead, Slic3r uses bridge math (flow and line spacing) for both perimeters and infill whenever they're bridging or are printed above support material. Layer height and extrusion width(s) are completely ignored in this context, since bridge flow depends only on nozzle diameter. Extra gap for a 0.35mm nozzle is 0.175mm, regardless of other settings. (It's unclear whether OP only trusts the 3D rendering -which is generally wrong when it comes to bridges- or whether he actually tried printing.)

It's nice (...not really) how people perceive some complex feature, like this extra gap based on your precious work, as if it was just a bug. It took quite some time to me for implementing it. :-) In terms of UX, this is a problem.

munzp commented 10 years ago

Hi,

I had read the referenced blog post a while ago but since I was being redirected to it I figured that I had missed something and I had. As nophead has reiterated here the size of the support gap should be related to the area of the extrusion immediately above the support whereas I was investigating effects of the nozzle diameter on the support and model interface. I just did a quick check of how the extrusion width affects the support gap - which I should have checked earlier - and have found that it doesn't have any effect. Despite the error in my methodology my conclusion remains the same: the support gap appears to be based only on the nozzle diameter.

In my earlier post were I was talking about "1.5 nozzle diameters" what I meant was the distance between the top of the support structure and the "top", or extrusion height, of the first supported layer. The first supported layer is printed within the "1.5 nozzle diameters" height which makes the air gap between the support and the bottom of the supported layer somewhat less than "1.5 nozzle diameters". In some of the work that I did for my previous post the extrusion width for perimeters and solid infill was 0.7mm and the layer height was 0.3mm. In this case, based on nophead's theory, the extruded cylinder diameter would be 0.52mm and the resulting air gap between the support and this cylinder would be 0.23mm for a 0.5mm nozzle. 0.23mm is almost one layer thickness. In order to fill the air gap and extrude onto the support I would need an extrusion width of 1.5mm for a layer height and nozzle diameter of 0.3mm and 0.5mm respectively.

nophead commented 10 years ago

@alexrj, I don't know why you say "bridge flow depends only on nozzle diameter". Flow never depends on nozzle diameter. The cross sectional area is always exactly determined by flow rate / feed rate and the shape and hence width is determined by the nozzle height. The nozzle diameter never appears in any of my equations.

@munzp, If you have 0.3mm layers by 0.7mm then, yes, the filament will be a cylinder 0.52mm if it is not squashed. So the support layer top should be 0.22mm too low, leaving a gap of 0.52mm to the nozzle so the filament forms a cylinder that just touches the support and is not squashed onto it.

whosawhatsis commented 10 years ago

@nophead That assumes that the strand does not droop (making it longer than expected). With nothing underneath to compress it, you need to make sure the filament is stretched across the bridge, which requires properly balancing the plastic's elasticity at extrusion temperature with die swell and the expected cross-sectional diameter. Bridging at a higher speed (with plastic moving through the extruder faster) will result in more die swell pulling it tight, but will make the strands more likely to break. Theoretically, the ideal diameter for bridging strands should be the height of the rest of the layer, with the speed tuned so that the die swell produces just the right tension to span the gap tightly without breaking.

alranel commented 10 years ago

@nophead, when I talk about "flow" I'm probably assuming the programmer's point of view. "Flow" for me means: "how much volume do I need to extrude during 1mm of travel in order to get a resulting width equal to X mm?". For bridges, the default target width in Slic3r is equal to nozzle diameter (but user has the ability to adjust it). In this case, the answer to the previous question is: width²*PI/4 mm³. Bridges in Slic3r generally work quite well.

@munzp, as I wrote above, the first object layer does NOT take into account layer height nor perimeter/infill extrusion width. The entire overhanging layer is extruded as if it was a bridge, thus generating round extrusions, whose diameter is equal to nozzle diameter. In order to have a single point of tangency and no squashing, the ∆Z between the two layers needs to be equal to the extrusion width/height/diameter (it's circular, so they are all the same), in other words equal to nozzle diameter. Slic3r adds some extra gap to this, quantified as 0.5*nozzle diameter. Thus, 0.175mm for 0.35 nozzles and 0.25mm for 0.5 nozzles. To be honest, I have personally only tested this with 0.35 nozzles and it looks like a fair compromise. Not sure about 0.5mm nozzles.

nophead commented 10 years ago

@whosawhatsis, very true that when bridging the tension is defined by the diameter relative to the die swell diameter (which depends on flow rate), but again this is not the nozzle diameter. In this case the filament can't droop because it should rest on the support layer below, so its diameter will be purely defined by flow rate, and for bridges to work they should have enough tension not to droop, so again the diameter is defined by flow rate.

@alexrj, I see, so you extrude just enough plastic to give the diameter equal to the nozzle diameter. That is quite arbitrary especially when bridging on top of support, which is not really bridging at all.

I bridge at the same settings that I extrude at. I don't change the flow or the speed. So for the example on my blog that would be 0.55mm with a nozzle of 0.45mm. Quite a big difference considering the linear tension will be proportional to the square of the diameter change.

For@munzp's case that would be 0.5mm nozzle with 0.3mm layers so the support should be lowered by exactly 0.2mm, not 0.25mm.

alranel commented 9 years ago

Okay, I added an option for defining the extra vertical distance between object and support, that is added to the offset caused by considering a cylindric extrusion. Testing and massive amount of feedback from users showed that an extra distance of 0mm (thus just making room for the cylinder) is too close. OTOH, an extra distance of half the nozzle diameter is good for 0.35mm nozzles but not for 0.5mm where it's too much. Thus the decision to make this configurable as absolute value, with default = 0.2mm.