Bridge perimeters not anchored properly #2258

Closed
darrenfreeman opened this Issue Sep 3, 2014 · 8 comments

Projects

None yet

3 participants

@darrenfreeman

1.2.0-exp trying to print 50mm Bridge Torture Test from Thingiverse:
http://www.thingiverse.com/thing:12925

Unlike in 0.9.9, Slic3r correctly detects the perimeters that are part of the bridge, and uses the correct speed. But there is a problem in the way that they anchor.

The inner part of the bridge prints as parallel tool-paths running the full length of the bridge, from about the middle of one post to the middle of the other post. This gives them plenty of overlap with the post, so as to stick to it and maintain the tension. I can get this to print pretty much horizontally without sagging.

But the first two tool-paths, which I'm guessing count as perimeters because they print on either side of the others, and just before the others (which I assume are treated as infill), they don't overlap with the posts at all. I'm guessing they start right on one corner, and run to the other corner. With slight errors in starting and stopping extrusion, they seem to always sag very badly; they're not stuck down.

I'm attaching the g-code. In the tool-path preview within Slic3r, the perimeters go all the way around, but I expect they are output broken into bridge parts and non-bridge parts, which occur not in sequence. I would be happy for the speed to change abruptly between the two, if it extruded as one continuous movement, but that isn't what happens, so it collapses.

I think this is a bug, but if not, then it's an urgent feature request. I have bridges 99% perfectly horizontal, but the perimeters are stuffed with no hope of simply changing parameters to fix them.

@darrenfreeman

I actually don't know how to attach g-code.. what an awful issue tracker this is :/ I'm putting it aside, ask me for an email if you need it. Hopefully this is easy to reproduce. Here is the start and the end of the g-code, so you can read off the settings:

; generated by Slic3r 1.2.0 on 2014-09-04 at 00:46:15

; external perimeters extrusion width = 0.50mm
; perimeters extrusion width = 0.50mm
; infill extrusion width = 0.50mm
; solid infill extrusion width = 0.50mm
; top infill extrusion width = 0.50mm

; avoid_crossing_perimeters = 0
; bed_shape = -122.5x-110,122.5x-110,122.5x110,-122.5x110
; bed_temperature = 120
; bridge_acceleration = 0
; bridge_fan_speed = 99
; brim_width = 0
; complete_objects = 0
; cooling = 0
; default_acceleration = 0
; disable_fan_first_layers = 1
; duplicate_distance = 6
; end_gcode = G1 F6000 X126 Y129 ; move off the part to stop nozzle drips\nG92 E-1\nG1 F3000 E-50 ; retract a further 50-1 mm\n;M104 S0 ; turn off hotend\n;M140 S0 ; turn off bed\n;G1 F210 Z200\nM84 ; disable motors
; extruder_clearance_height = 20
; extruder_clearance_radius = 20
; extruder_offset = 0x0
; extrusion_axis = E
; extrusion_multiplier = 0.93
; fan_always_on = 0
; fan_below_layer_time = 15
; filament_diameter = 2.9
; first_layer_acceleration = 0
; first_layer_bed_temperature = 120
; first_layer_extrusion_width = 0.5
; first_layer_speed = 66%
; first_layer_temperature = 240
; g0 = 0
; gcode_arcs = 0
; gcode_comments = 0
; gcode_flavor = reprap
; infill_acceleration = 0
; infill_first = 0
; layer_gcode =
; max_fan_speed = 0
; min_fan_speed = 0
; min_print_speed = 5
; min_skirt_length = 10
; notes =
; nozzle_diameter = 0.5
; only_retract_when_crossing_perimeters = 0
; ooze_prevention = 0
; output_filename_format = [input_filename_base].gcode
; perimeter_acceleration = 0
; post_process =
; resolution = 0
; retract_before_travel = 0.1
; retract_layer_change = 1
; retract_length = 2
; retract_length_toolchange = 10
; retract_lift = 0
; retract_restart_extra = 0
; retract_restart_extra_toolchange = 0
; retract_speed = 60
; skirt_distance = 6
; skirt_height = 1
; skirts = 1
; slowdown_below_layer_time = 15
; spiral_vase = 0
; standby_temperature_delta = -5
; start_gcode = ;G28 ; home all axes\nG1 F6000 X126 Y0 ; move to the side\nG1 F210 Z0.1 ; lower nozzle to the bed height\nG92 E-60\nG1 F300 E0 ; unretract by 60 mm\nG1 F6000 X119 ; wipe off the dribble\nG1 F210 Z1 ; raise again for the next moves
; temperature = 240
; threads = 2
; toolchange_gcode =
; travel_speed = 100
; use_firmware_retraction = 0
; use_relative_e_distances = 0
; vibration_limit = 0
; wipe = 0
; z_offset = 0
; dont_support_bridges = 1
; extrusion_width = 0.5
; first_layer_height = 100%
; infill_only_where_needed = 0
; interface_shells = 0
; layer_height = 0.2
; raft_layers = 0
; seam_position = aligned
; support_material = 0
; 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 = 0
; support_material_interface_spacing = 0
; support_material_interface_speed = 100%
; support_material_pattern = rectilinear
; support_material_spacing = 2.5
; support_material_speed = 60
; support_material_threshold = 0
; xy_size_compensation = 0
; bottom_solid_layers = 2
; bridge_flow_ratio = 0.5
; bridge_speed = 5
; external_perimeter_extrusion_width = 0
; external_perimeter_speed = 100%
; external_perimeters_first = 1
; extra_perimeters = 0
; fill_angle = 45
; fill_density = 100%
; fill_pattern = rectilinear
; gap_fill_speed = 20
; infill_every_layers = 1
; infill_extruder = 1
; infill_extrusion_width = 0.5
; infill_speed = 60
; overhangs = 1
; perimeter_extruder = 1
; perimeter_extrusion_width = 0.5
; perimeter_speed = 30
; perimeters = 1
; small_perimeter_speed = 20
; solid_fill_pattern = rectilinear
; solid_infill_below_area = 70
; solid_infill_every_layers = 0
; solid_infill_extrusion_width = 0.5
; solid_infill_speed = 60
; thin_walls = 1
; top_infill_extrusion_width = 0.5
; top_solid_infill_speed = 30
; top_solid_layers = 2

@ThorsenRune

Hi, Im new to 3D but I have the same issue with my Ormerod printer. Putting up a digital microscope I observe that the printhead is just running back and fourth between pillars and the extrusion just falls down without binding to the pillars. My test object is simply to 2mm rectangular pillars with 10mm spacing and a 2mm rectangular overhang.
Anybody having success?

@ThorsenRune

expanded on this one on #2262
#2262
Rune

@alexrj
Owner
alexrj commented Dec 23, 2014

@darrenfreeman, ouch, that's a bug indeed. It's doing the non-bridge parts of the perimeter first, and then it comes back to complete the bridging parts. It should be a continuous loop instead, with varying speeds and flow.

@alexrj alexrj added this to the 1.2.2 milestone Dec 23, 2014
@alexrj alexrj added the Fixed label Dec 23, 2014
@alexrj alexrj added a commit that referenced this issue Dec 23, 2014
@alexrj Bugfix: a typo caused wrong loop splitting, thus wrong ordering of pe…
…rimeters having bridging parts. Includes regression test. #2258
91bc4d8
@alexrj
Owner
alexrj commented Dec 23, 2014

I fixed this, and added a regression test.

@alexrj alexrj closed this Dec 23, 2014
@darrenfreeman

Thanks :)

@darrenfreeman

I went to d/l the new version from the downloads page, but it's still showing 1.2.1 as the latest experimental. Please don't forget to generate new binaries, as this is quite an important bug that you've fixed. (And it would be good to get everyone testing it.)

@alexrj
Owner
alexrj commented Dec 24, 2014

I don't forget - releases follow milestones. See the 1.2.2 milestone here on GitHub for tracking that release.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment