slic3r / Slic3r

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

Change_layer without retract produces cleaner edges #116

Closed canadaduane closed 12 years ago

canadaduane commented 12 years ago

I find that whenever the layer changes, the automatic retract is unnecessary, and in fact produces a poorer quality output. By commenting out the following line in change_layer, I get less oozing near corners and edges (i.e. whenever the layer changes):

$gcode .= $self->retract(move_z => $z);

Why was this introduced there in the first place?

koolatron commented 12 years ago

Maybe this should be made optional?

canadaduane commented 12 years ago

Optional would be fine. I kept increasing the retract-before-travel distance until it was obvious that the value was being completely ignored in some retract scenarios. That's how I eventually tracked it down to that line. Being able to switch it off would be helpful.

alranel commented 12 years ago

Can you please provide your config.ini?

canadaduane commented 12 years ago

Sure, here it is:

bottom_layer_speed_ratio = 0.2
bridge_flow_ratio = 1
bridge_speed = 120
duplicate_distance = 6
duplicate_x = 1
duplicate_y = 1
end_gcode = M104 S0 ; turn off temperature\nG91 ; rel movement\nG1 F1800 E-5 retract;\nG1 Z+30 ; move Z up a bit and retract filament by 5mm\nG28 X0  ; home X axis\nM84     ; disable motors\nM107 ; turn fan off
extrusion_axis = E
extrusion_multiplier = 1.06
extrusion_width_ratio = 0
filament_diameter = 3
fill_angle = 30
fill_density = 0.4
fill_pattern = rectilinear
first_layer_height_ratio = 0.5
g0 = 0
gcode_arcs = 0
infill_every_layers = 1
infill_speed = 120
layer_height = 0.2
nozzle_diameter = 0.3
overlap_ratio = 0.15
perimeter_speed = 80
perimeters = 2
print_center = 100,100
retract_before_travel = 2
retract_length = 3
retract_lift = 0
retract_restart_extra = 0
retract_speed = 30
rotate = 0
scale = 1
skirt_distance = 12
skirt_height = 1
skirts = 1
small_perimeter_speed = 80
solid_fill_pattern = rectilinear
solid_infill_speed = 120
solid_layers = 2
start_gcode = M92 X78.7402 Y78.7402 E926\nG28 ; home all axes\nM106 ; turn fan on
temperature = 225
travel_speed = 250
use_relative_e_distances = 0
z_offset = 0
alranel commented 12 years ago

With this config, layer change is not happening on the edges. It will happen on the last point if the infill, which is an internal point. This is the sequence:

Thus I don't get how the retraction would affect quality of exterior parts, since it's always happening in internal points. I'm getting very clean parts with my setup. Can you give some insight on this? Maybe pictures, videos of whatever.

canadaduane commented 12 years ago

I'm trying to figure out how to get more details to you. I wish I had a camera here. The basic problem seems to be that there is a little pool of plastic extruded whenever a retract occurs. It's quite small, and mostly unnoticeable, except when it's on the edge. In that case (and especially when a bunch of these line up layer after layer) the spillover gets pretty bad. I will try to find a camera to explain further.

alranel commented 12 years ago

Did you try adjusting the Retract Extra Distance by setting it to a negative value? What hot-end do you have?

canadaduane commented 12 years ago

0.4 mm Ultimaker hot end. I'm not sure if they have version numbers like the MakerBot (MK7 or whatever). I'm fairly new to all of this :) Are there any specific specs your looking for in describing the hot end?

I gave the negative Retract Extra Distance a try, but it didn't seem to help. Thanks for the suggestions though. I will provide more information when I have it. Closing issue for now (I will be away for the next 2 weeks).