Set Ironing angle setting to be a relative degree offset from top surface infill direction (#10841)

* Change ironing angle setting to be an offset angle from the top surface angle rather offset from the layer 0 angle that changes on each layer.

* Change Ironing angle offset range from [-1,359] to [0,359].
-1 is redundant because it is the same behavior as 0 offset.

* Change ironing_angle new default value to 0.

* Update existing print profiles' hardcoded ironing_angles from -1 to 0 to reflect new default value.

* Add migration for old -1 ironing_angle settings. Remove logic for -1 ironing_angle.

* Add u8 prefix for degree symbol string

* Use solid_infill_direction instead of infill_direction for top surface infill direction. Use calculate_infill_rotation_angle to add offset to solid_infill_rotate_template if used.

* Update quality settings wiki for Ironing

* Set f->is_using_template_angle when making ironing filler objects

* Update quality_settings_ironing link from #angle to #angle-offset

---------

Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
This commit is contained in:
Anson Liu
2025-10-19 18:01:53 -07:00
committed by GitHub
parent d786aec255
commit fcb640bee1
47 changed files with 76 additions and 83 deletions

View File

@@ -33,7 +33,9 @@ The pattern that will be used when ironing. Usually, the best pattern is the one
## Flow ## Flow
The amount of material to extrude during ironing. The amount of material to extrude during ironing.
This % is a percentage of the normal flow rate. A lower value will result in a smoother finish but may not cover the surface completely. A higher value may cover the surface better but can lead to over extrusion or rougher finish. This % is a percentage of the normal flow rate. A lower value will result in a smoother finish but may not cover the surface completely. A higher value may cover the surface better but can lead to over extrusion or rougher finish.
A lower layer height may require higher flow due to less volumetric extrusion per distance.
## Line spacing ## Line spacing
@@ -48,10 +50,9 @@ The distance to keep from the edges, which can help prevent over-extrusion at th
If this value is set to 0, the ironing toolpath will start directly at the perimeter edges without any inward offset. This means the [ironing pattern](#pattern) will extend all the way to the outer boundaries of the top surface being ironed. If this value is set to 0, the ironing toolpath will start directly at the perimeter edges without any inward offset. This means the [ironing pattern](#pattern) will extend all the way to the outer boundaries of the top surface being ironed.
## Angle ## Angle Offset
The angle ironing is done at. The angle of ironing lines offset relative to the top surface solid infill direction. Commonly used ironing angle offsets are 0°, 45°, and 90° each producing a [different surface finish](https://github.com/SoftFever/OrcaSlicer/issues/10834#issuecomment-3322628589) which will depend on your printer nozzle.
A negative number disables this function and uses the [sparse infill direction](strength_settings_infill#direction).
## Speed ## Speed

View File

@@ -91,7 +91,7 @@
"internal_solid_infill_line_width": "0.42", "internal_solid_infill_line_width": "0.42",
"internal_solid_infill_pattern": "zig-zag", "internal_solid_infill_pattern": "zig-zag",
"internal_solid_infill_speed": "200", "internal_solid_infill_speed": "200",
"ironing_angle": "-1", "ironing_angle": "0",
"ironing_flow": "15%", "ironing_flow": "15%",
"ironing_pattern": "zig-zag", "ironing_pattern": "zig-zag",
"ironing_spacing": "0.1", "ironing_spacing": "0.1",

View File

@@ -91,7 +91,7 @@
"internal_solid_infill_line_width": "0.22", "internal_solid_infill_line_width": "0.22",
"internal_solid_infill_pattern": "zig-zag", "internal_solid_infill_pattern": "zig-zag",
"internal_solid_infill_speed": "120", "internal_solid_infill_speed": "120",
"ironing_angle": "-1", "ironing_angle": "0",
"ironing_flow": "15%", "ironing_flow": "15%",
"ironing_pattern": "zig-zag", "ironing_pattern": "zig-zag",
"ironing_spacing": "0.1", "ironing_spacing": "0.1",

View File

@@ -91,7 +91,7 @@
"internal_solid_infill_line_width": "0.42", "internal_solid_infill_line_width": "0.42",
"internal_solid_infill_pattern": "zig-zag", "internal_solid_infill_pattern": "zig-zag",
"internal_solid_infill_speed": "200", "internal_solid_infill_speed": "200",
"ironing_angle": "-1", "ironing_angle": "0",
"ironing_flow": "15%", "ironing_flow": "15%",
"ironing_pattern": "zig-zag", "ironing_pattern": "zig-zag",
"ironing_spacing": "0.1", "ironing_spacing": "0.1",

View File

@@ -91,7 +91,7 @@
"internal_solid_infill_line_width": "0.42", "internal_solid_infill_line_width": "0.42",
"internal_solid_infill_pattern": "monotonic", "internal_solid_infill_pattern": "monotonic",
"internal_solid_infill_speed": "240", "internal_solid_infill_speed": "240",
"ironing_angle": "-1", "ironing_angle": "0",
"ironing_flow": "10%", "ironing_flow": "10%",
"ironing_pattern": "zig-zag", "ironing_pattern": "zig-zag",
"ironing_spacing": "0.15", "ironing_spacing": "0.15",

View File

@@ -91,7 +91,7 @@
"internal_solid_infill_line_width": "0.42", "internal_solid_infill_line_width": "0.42",
"internal_solid_infill_pattern": "zig-zag", "internal_solid_infill_pattern": "zig-zag",
"internal_solid_infill_speed": "150", "internal_solid_infill_speed": "150",
"ironing_angle": "-1", "ironing_angle": "0",
"ironing_flow": "15%", "ironing_flow": "15%",
"ironing_pattern": "zig-zag", "ironing_pattern": "zig-zag",
"ironing_spacing": "0.1", "ironing_spacing": "0.1",

View File

@@ -91,7 +91,7 @@
"internal_solid_infill_line_width": "0.42", "internal_solid_infill_line_width": "0.42",
"internal_solid_infill_pattern": "monotonic", "internal_solid_infill_pattern": "monotonic",
"internal_solid_infill_speed": "130", "internal_solid_infill_speed": "130",
"ironing_angle": "-1", "ironing_angle": "0",
"ironing_flow": "10%", "ironing_flow": "10%",
"ironing_pattern": "zig-zag", "ironing_pattern": "zig-zag",
"ironing_spacing": "0.15", "ironing_spacing": "0.15",

View File

@@ -91,7 +91,7 @@
"internal_solid_infill_line_width": "0.42", "internal_solid_infill_line_width": "0.42",
"internal_solid_infill_pattern": "zig-zag", "internal_solid_infill_pattern": "zig-zag",
"internal_solid_infill_speed": "100", "internal_solid_infill_speed": "100",
"ironing_angle": "-1", "ironing_angle": "0",
"ironing_flow": "15%", "ironing_flow": "15%",
"ironing_pattern": "zig-zag", "ironing_pattern": "zig-zag",
"ironing_spacing": "0.1", "ironing_spacing": "0.1",

View File

@@ -91,7 +91,7 @@
"internal_solid_infill_line_width": "0.42", "internal_solid_infill_line_width": "0.42",
"internal_solid_infill_pattern": "monotonic", "internal_solid_infill_pattern": "monotonic",
"internal_solid_infill_speed": "130", "internal_solid_infill_speed": "130",
"ironing_angle": "-1", "ironing_angle": "0",
"ironing_flow": "10%", "ironing_flow": "10%",
"ironing_pattern": "zig-zag", "ironing_pattern": "zig-zag",
"ironing_spacing": "0.15", "ironing_spacing": "0.15",

View File

@@ -91,7 +91,7 @@
"internal_solid_infill_line_width": "0.42", "internal_solid_infill_line_width": "0.42",
"internal_solid_infill_pattern": "monotonic", "internal_solid_infill_pattern": "monotonic",
"internal_solid_infill_speed": "130", "internal_solid_infill_speed": "130",
"ironing_angle": "-1", "ironing_angle": "0",
"ironing_flow": "10%", "ironing_flow": "10%",
"ironing_pattern": "zig-zag", "ironing_pattern": "zig-zag",
"ironing_spacing": "0.15", "ironing_spacing": "0.15",

View File

@@ -91,7 +91,7 @@
"internal_solid_infill_line_width": "0.42", "internal_solid_infill_line_width": "0.42",
"internal_solid_infill_pattern": "zig-zag", "internal_solid_infill_pattern": "zig-zag",
"internal_solid_infill_speed": "130", "internal_solid_infill_speed": "130",
"ironing_angle": "-1", "ironing_angle": "0",
"ironing_flow": "15%", "ironing_flow": "15%",
"ironing_pattern": "zig-zag", "ironing_pattern": "zig-zag",
"ironing_spacing": "0.1", "ironing_spacing": "0.1",

View File

@@ -90,7 +90,7 @@
"internal_solid_infill_line_width": "0.42", "internal_solid_infill_line_width": "0.42",
"internal_solid_infill_pattern": "monotonic", "internal_solid_infill_pattern": "monotonic",
"internal_solid_infill_speed": "250", "internal_solid_infill_speed": "250",
"ironing_angle": "-1", "ironing_angle": "0",
"ironing_flow": "10%", "ironing_flow": "10%",
"ironing_pattern": "zig-zag", "ironing_pattern": "zig-zag",
"ironing_spacing": "0.15", "ironing_spacing": "0.15",

View File

@@ -91,7 +91,7 @@
"internal_solid_infill_line_width": "0.45", "internal_solid_infill_line_width": "0.45",
"internal_solid_infill_pattern": "zig-zag", "internal_solid_infill_pattern": "zig-zag",
"internal_solid_infill_speed": "200", "internal_solid_infill_speed": "200",
"ironing_angle": "-1", "ironing_angle": "0",
"ironing_flow": "15%", "ironing_flow": "15%",
"ironing_pattern": "zig-zag", "ironing_pattern": "zig-zag",
"ironing_spacing": "0.1", "ironing_spacing": "0.1",

View File

@@ -91,7 +91,7 @@
"internal_solid_infill_line_width": "0.42", "internal_solid_infill_line_width": "0.42",
"internal_solid_infill_pattern": "monotonic", "internal_solid_infill_pattern": "monotonic",
"internal_solid_infill_speed": "120", "internal_solid_infill_speed": "120",
"ironing_angle": "-1", "ironing_angle": "0",
"ironing_flow": "10%", "ironing_flow": "10%",
"ironing_pattern": "zig-zag", "ironing_pattern": "zig-zag",
"ironing_spacing": "0.15", "ironing_spacing": "0.15",

View File

@@ -91,7 +91,7 @@
"internal_solid_infill_line_width": "0.42", "internal_solid_infill_line_width": "0.42",
"internal_solid_infill_pattern": "zig-zag", "internal_solid_infill_pattern": "zig-zag",
"internal_solid_infill_speed": "180", "internal_solid_infill_speed": "180",
"ironing_angle": "-1", "ironing_angle": "0",
"ironing_flow": "15%", "ironing_flow": "15%",
"ironing_pattern": "zig-zag", "ironing_pattern": "zig-zag",
"ironing_spacing": "0.1", "ironing_spacing": "0.1",

View File

@@ -91,7 +91,7 @@
"internal_solid_infill_line_width": "0.62", "internal_solid_infill_line_width": "0.62",
"internal_solid_infill_pattern": "monotonic", "internal_solid_infill_pattern": "monotonic",
"internal_solid_infill_speed": "150", "internal_solid_infill_speed": "150",
"ironing_angle": "-1", "ironing_angle": "0",
"ironing_flow": "15%", "ironing_flow": "15%",
"ironing_pattern": "zig-zag", "ironing_pattern": "zig-zag",
"ironing_spacing": "0.1", "ironing_spacing": "0.1",

View File

@@ -91,7 +91,7 @@
"internal_solid_infill_line_width": "0.82", "internal_solid_infill_line_width": "0.82",
"internal_solid_infill_pattern": "zig-zag", "internal_solid_infill_pattern": "zig-zag",
"internal_solid_infill_speed": "150", "internal_solid_infill_speed": "150",
"ironing_angle": "-1", "ironing_angle": "0",
"ironing_flow": "15%", "ironing_flow": "15%",
"ironing_pattern": "zig-zag", "ironing_pattern": "zig-zag",
"ironing_spacing": "0.1", "ironing_spacing": "0.1",

View File

@@ -101,7 +101,7 @@
"internal_solid_infill_acceleration": "100%", "internal_solid_infill_acceleration": "100%",
"internal_solid_infill_pattern": "monotonic", "internal_solid_infill_pattern": "monotonic",
"internal_solid_infill_speed": "300", "internal_solid_infill_speed": "300",
"ironing_angle": "-1", "ironing_angle": "0",
"ironing_flow": "15%", "ironing_flow": "15%",
"ironing_pattern": "zig-zag", "ironing_pattern": "zig-zag",
"ironing_spacing": "0.1", "ironing_spacing": "0.1",

View File

@@ -93,7 +93,7 @@
"internal_solid_infill_line_width": "0.22", "internal_solid_infill_line_width": "0.22",
"internal_solid_infill_pattern": "zig-zag", "internal_solid_infill_pattern": "zig-zag",
"internal_solid_infill_speed": "150", "internal_solid_infill_speed": "150",
"ironing_angle": "-1", "ironing_angle": "0",
"ironing_flow": "15%", "ironing_flow": "15%",
"ironing_pattern": "zig-zag", "ironing_pattern": "zig-zag",
"ironing_spacing": "0.1", "ironing_spacing": "0.1",

View File

@@ -98,7 +98,7 @@
"internal_bridge_speed": "150%", "internal_bridge_speed": "150%",
"internal_solid_infill_acceleration": "100%", "internal_solid_infill_acceleration": "100%",
"internal_solid_infill_pattern": "monotonic", "internal_solid_infill_pattern": "monotonic",
"ironing_angle": "-1", "ironing_angle": "0",
"ironing_flow": "15%", "ironing_flow": "15%",
"ironing_pattern": "zig-zag", "ironing_pattern": "zig-zag",
"ironing_spacing": "0.1", "ironing_spacing": "0.1",

View File

@@ -99,7 +99,7 @@
"internal_solid_infill_acceleration": "100%", "internal_solid_infill_acceleration": "100%",
"internal_solid_infill_pattern": "monotonic", "internal_solid_infill_pattern": "monotonic",
"internal_solid_infill_speed": "300", "internal_solid_infill_speed": "300",
"ironing_angle": "-1", "ironing_angle": "0",
"ironing_flow": "15%", "ironing_flow": "15%",
"ironing_pattern": "zig-zag", "ironing_pattern": "zig-zag",
"ironing_spacing": "0.1", "ironing_spacing": "0.1",

View File

@@ -99,7 +99,7 @@
"internal_bridge_speed": "150%", "internal_bridge_speed": "150%",
"internal_solid_infill_acceleration": "100%", "internal_solid_infill_acceleration": "100%",
"internal_solid_infill_pattern": "monotonic", "internal_solid_infill_pattern": "monotonic",
"ironing_angle": "-1", "ironing_angle": "0",
"ironing_flow": "15%", "ironing_flow": "15%",
"ironing_pattern": "zig-zag", "ironing_pattern": "zig-zag",
"ironing_spacing": "0.1", "ironing_spacing": "0.1",

View File

@@ -100,7 +100,7 @@
"internal_bridge_speed": "150%", "internal_bridge_speed": "150%",
"internal_solid_infill_acceleration": "100%", "internal_solid_infill_acceleration": "100%",
"internal_solid_infill_pattern": "monotonic", "internal_solid_infill_pattern": "monotonic",
"ironing_angle": "-1", "ironing_angle": "0",
"ironing_flow": "15%", "ironing_flow": "15%",
"ironing_pattern": "zig-zag", "ironing_pattern": "zig-zag",
"ironing_spacing": "0.1", "ironing_spacing": "0.1",

View File

@@ -102,7 +102,7 @@
"internal_bridge_speed": "150%", "internal_bridge_speed": "150%",
"internal_solid_infill_acceleration": "100%", "internal_solid_infill_acceleration": "100%",
"internal_solid_infill_pattern": "monotonic", "internal_solid_infill_pattern": "monotonic",
"ironing_angle": "-1", "ironing_angle": "0",
"ironing_flow": "15%", "ironing_flow": "15%",
"ironing_pattern": "zig-zag", "ironing_pattern": "zig-zag",
"ironing_spacing": "0.1", "ironing_spacing": "0.1",

View File

@@ -103,7 +103,7 @@
"internal_solid_infill_line_width": "0.42", "internal_solid_infill_line_width": "0.42",
"internal_solid_infill_pattern": "monotonic", "internal_solid_infill_pattern": "monotonic",
"internal_solid_infill_speed": "250", "internal_solid_infill_speed": "250",
"ironing_angle": "-1", "ironing_angle": "0",
"ironing_flow": "15%", "ironing_flow": "15%",
"ironing_pattern": "zig-zag", "ironing_pattern": "zig-zag",
"ironing_spacing": "0.1", "ironing_spacing": "0.1",

View File

@@ -87,7 +87,7 @@
"internal_solid_infill_line_width": "0.42", "internal_solid_infill_line_width": "0.42",
"internal_solid_infill_pattern": "monotonic", "internal_solid_infill_pattern": "monotonic",
"internal_solid_infill_speed": "150", "internal_solid_infill_speed": "150",
"ironing_angle": "-1", "ironing_angle": "0",
"ironing_flow": "15%", "ironing_flow": "15%",
"ironing_pattern": "zig-zag", "ironing_pattern": "zig-zag",
"ironing_spacing": "0.1", "ironing_spacing": "0.1",

View File

@@ -87,7 +87,7 @@
"internal_solid_infill_line_width": "0.42", "internal_solid_infill_line_width": "0.42",
"internal_solid_infill_pattern": "monotonic", "internal_solid_infill_pattern": "monotonic",
"internal_solid_infill_speed": "150", "internal_solid_infill_speed": "150",
"ironing_angle": "-1", "ironing_angle": "0",
"ironing_flow": "15%", "ironing_flow": "15%",
"ironing_pattern": "zig-zag", "ironing_pattern": "zig-zag",
"ironing_spacing": "0.1", "ironing_spacing": "0.1",

View File

@@ -87,7 +87,7 @@
"internal_solid_infill_line_width": "0.42", "internal_solid_infill_line_width": "0.42",
"internal_solid_infill_pattern": "monotonic", "internal_solid_infill_pattern": "monotonic",
"internal_solid_infill_speed": "300", "internal_solid_infill_speed": "300",
"ironing_angle": "-1", "ironing_angle": "0",
"ironing_flow": "15%", "ironing_flow": "15%",
"ironing_pattern": "zig-zag", "ironing_pattern": "zig-zag",
"ironing_spacing": "0.1", "ironing_spacing": "0.1",

View File

@@ -87,7 +87,7 @@
"internal_solid_infill_line_width": "0.42", "internal_solid_infill_line_width": "0.42",
"internal_solid_infill_pattern": "monotonic", "internal_solid_infill_pattern": "monotonic",
"internal_solid_infill_speed": "300", "internal_solid_infill_speed": "300",
"ironing_angle": "-1", "ironing_angle": "0",
"ironing_flow": "15%", "ironing_flow": "15%",
"ironing_pattern": "zig-zag", "ironing_pattern": "zig-zag",
"ironing_spacing": "0.1", "ironing_spacing": "0.1",

View File

@@ -98,7 +98,7 @@
"internal_solid_infill_line_width": "0.42", "internal_solid_infill_line_width": "0.42",
"internal_solid_infill_pattern": "monotonic", "internal_solid_infill_pattern": "monotonic",
"internal_solid_infill_speed": "300", "internal_solid_infill_speed": "300",
"ironing_angle": "-1", "ironing_angle": "0",
"ironing_flow": "15%", "ironing_flow": "15%",
"ironing_pattern": "zig-zag", "ironing_pattern": "zig-zag",
"ironing_spacing": "0.1", "ironing_spacing": "0.1",

View File

@@ -96,7 +96,7 @@
"internal_solid_infill_line_width": "0.42", "internal_solid_infill_line_width": "0.42",
"internal_solid_infill_pattern": "monotonic", "internal_solid_infill_pattern": "monotonic",
"internal_solid_infill_speed": "300", "internal_solid_infill_speed": "300",
"ironing_angle": "-1", "ironing_angle": "0",
"ironing_flow": "15%", "ironing_flow": "15%",
"ironing_pattern": "zig-zag", "ironing_pattern": "zig-zag",
"ironing_spacing": "0.1", "ironing_spacing": "0.1",

View File

@@ -93,7 +93,7 @@
"internal_solid_infill_line_width": "0.62", "internal_solid_infill_line_width": "0.62",
"internal_solid_infill_pattern": "monotonic", "internal_solid_infill_pattern": "monotonic",
"internal_solid_infill_speed": "150", "internal_solid_infill_speed": "150",
"ironing_angle": "-1", "ironing_angle": "0",
"ironing_flow": "15%", "ironing_flow": "15%",
"ironing_pattern": "zig-zag", "ironing_pattern": "zig-zag",
"ironing_spacing": "0.1", "ironing_spacing": "0.1",

View File

@@ -93,7 +93,7 @@
"internal_solid_infill_line_width": "0.82", "internal_solid_infill_line_width": "0.82",
"internal_solid_infill_pattern": "monotonic", "internal_solid_infill_pattern": "monotonic",
"internal_solid_infill_speed": "150", "internal_solid_infill_speed": "150",
"ironing_angle": "-1", "ironing_angle": "0",
"ironing_flow": "15%", "ironing_flow": "15%",
"ironing_pattern": "zig-zag", "ironing_pattern": "zig-zag",
"ironing_spacing": "0.1", "ironing_spacing": "0.1",

View File

@@ -99,7 +99,7 @@
"internal_solid_infill_line_width": "0.42", "internal_solid_infill_line_width": "0.42",
"internal_solid_infill_pattern": "monotonic", "internal_solid_infill_pattern": "monotonic",
"internal_solid_infill_speed": "300", "internal_solid_infill_speed": "300",
"ironing_angle": "-1", "ironing_angle": "0",
"ironing_flow": "15%", "ironing_flow": "15%",
"ironing_pattern": "zig-zag", "ironing_pattern": "zig-zag",
"ironing_spacing": "0.1", "ironing_spacing": "0.1",

View File

@@ -87,7 +87,7 @@
"internal_solid_infill_line_width": "0.4", "internal_solid_infill_line_width": "0.4",
"internal_solid_infill_pattern": "monotonic", "internal_solid_infill_pattern": "monotonic",
"internal_solid_infill_speed": "250", "internal_solid_infill_speed": "250",
"ironing_angle": "-1", "ironing_angle": "0",
"ironing_flow": "10%", "ironing_flow": "10%",
"ironing_pattern": "zig-zag", "ironing_pattern": "zig-zag",
"ironing_spacing": "0.15", "ironing_spacing": "0.15",

View File

@@ -94,7 +94,7 @@
"internal_solid_infill_line_width": "0.4", "internal_solid_infill_line_width": "0.4",
"internal_solid_infill_pattern": "monotonic", "internal_solid_infill_pattern": "monotonic",
"internal_solid_infill_speed": "90", "internal_solid_infill_speed": "90",
"ironing_angle": "-1", "ironing_angle": "0",
"ironing_flow": "10%", "ironing_flow": "10%",
"ironing_pattern": "zig-zag", "ironing_pattern": "zig-zag",
"ironing_spacing": "0.15", "ironing_spacing": "0.15",

View File

@@ -76,7 +76,7 @@
"internal_solid_infill_line_width": "0", "internal_solid_infill_line_width": "0",
"internal_solid_infill_pattern": "monotonic", "internal_solid_infill_pattern": "monotonic",
"internal_solid_infill_speed": "200", "internal_solid_infill_speed": "200",
"ironing_angle": "-1", "ironing_angle": "0",
"ironing_flow": "15%", "ironing_flow": "15%",
"ironing_pattern": "zig-zag", "ironing_pattern": "zig-zag",
"ironing_spacing": "0.25", "ironing_spacing": "0.25",

View File

@@ -89,7 +89,7 @@
"internal_solid_infill_line_width": "0.42", "internal_solid_infill_line_width": "0.42",
"internal_solid_infill_pattern": "monotonic", "internal_solid_infill_pattern": "monotonic",
"internal_solid_infill_speed": "500", "internal_solid_infill_speed": "500",
"ironing_angle": "-1", "ironing_angle": "0",
"ironing_flow": "15%", "ironing_flow": "15%",
"ironing_pattern": "zig-zag", "ironing_pattern": "zig-zag",
"ironing_spacing": "0.1", "ironing_spacing": "0.1",

View File

@@ -89,7 +89,7 @@
"internal_solid_infill_line_width": "0.42", "internal_solid_infill_line_width": "0.42",
"internal_solid_infill_pattern": "monotonic", "internal_solid_infill_pattern": "monotonic",
"internal_solid_infill_speed": "500", "internal_solid_infill_speed": "500",
"ironing_angle": "-1", "ironing_angle": "0",
"ironing_flow": "15%", "ironing_flow": "15%",
"ironing_pattern": "zig-zag", "ironing_pattern": "zig-zag",
"ironing_spacing": "0.1", "ironing_spacing": "0.1",

View File

@@ -104,7 +104,7 @@
"internal_solid_infill_line_width": "0.42", "internal_solid_infill_line_width": "0.42",
"internal_solid_infill_pattern": "zig-zag", "internal_solid_infill_pattern": "zig-zag",
"internal_solid_infill_speed": "250", "internal_solid_infill_speed": "250",
"ironing_angle": "-1", "ironing_angle": "0",
"ironing_flow": "10%", "ironing_flow": "10%",
"ironing_inset": "0", "ironing_inset": "0",
"ironing_pattern": "zig-zag", "ironing_pattern": "zig-zag",

View File

@@ -80,7 +80,7 @@
"internal_solid_infill_line_width": "0.42", "internal_solid_infill_line_width": "0.42",
"internal_solid_infill_pattern": "monotonic", "internal_solid_infill_pattern": "monotonic",
"internal_solid_infill_speed": "250", "internal_solid_infill_speed": "250",
"ironing_angle": "-1", "ironing_angle": "0",
"ironing_flow": "10%", "ironing_flow": "10%",
"ironing_pattern": "zig-zag", "ironing_pattern": "zig-zag",
"ironing_spacing": "0.15", "ironing_spacing": "0.15",

View File

@@ -83,7 +83,7 @@
"internal_solid_infill_line_width": "0.42", "internal_solid_infill_line_width": "0.42",
"internal_solid_infill_pattern": "monotonic", "internal_solid_infill_pattern": "monotonic",
"internal_solid_infill_speed": "250", "internal_solid_infill_speed": "250",
"ironing_angle": "-1", "ironing_angle": "0",
"ironing_flow": "15%", "ironing_flow": "15%",
"ironing_pattern": "zig-zag", "ironing_pattern": "zig-zag",
"ironing_spacing": "0.1", "ironing_spacing": "0.1",

View File

@@ -84,7 +84,7 @@
"internal_solid_infill_line_width": "3", "internal_solid_infill_line_width": "3",
"internal_solid_infill_pattern": "monotonic", "internal_solid_infill_pattern": "monotonic",
"internal_solid_infill_speed": "100", "internal_solid_infill_speed": "100",
"ironing_angle": "-1", "ironing_angle": "0",
"ironing_flow": "10%", "ironing_flow": "10%",
"ironing_pattern": "zig-zag", "ironing_pattern": "zig-zag",
"ironing_spacing": "0.1", "ironing_spacing": "0.1",

View File

@@ -90,7 +90,7 @@
"internal_solid_infill_line_width": "0.42", "internal_solid_infill_line_width": "0.42",
"internal_solid_infill_pattern": "monotonic", "internal_solid_infill_pattern": "monotonic",
"internal_solid_infill_speed": "250", "internal_solid_infill_speed": "250",
"ironing_angle": "-1", "ironing_angle": "0",
"ironing_flow": "10%", "ironing_flow": "10%",
"ironing_pattern": "zig-zag", "ironing_pattern": "zig-zag",
"ironing_spacing": "0.15", "ironing_spacing": "0.15",

View File

@@ -1461,43 +1461,31 @@ void Layer::make_ironing()
double height; double height;
double speed; double speed;
double angle; double angle;
bool is_using_template_angle;
double inset; double inset;
bool operator<(const IroningParams &rhs) const { bool operator<(const IroningParams &rhs) const {
if (this->extruder < rhs.extruder) RETURN_COMPARE_NON_EQUAL(extruder);
return true; RETURN_COMPARE_NON_EQUAL(just_infill);
if (this->extruder > rhs.extruder) RETURN_COMPARE_NON_EQUAL(line_spacing);
return false; RETURN_COMPARE_NON_EQUAL(height);
if (int(this->just_infill) < int(rhs.just_infill)) RETURN_COMPARE_NON_EQUAL(speed);
return true; RETURN_COMPARE_NON_EQUAL(angle);
if (int(this->just_infill) > int(rhs.just_infill)) RETURN_COMPARE_NON_EQUAL(is_using_template_angle);
return false; RETURN_COMPARE_NON_EQUAL(inset);
if (this->line_spacing < rhs.line_spacing)
return true;
if (this->line_spacing > rhs.line_spacing)
return false;
if (this->height < rhs.height)
return true;
if (this->height > rhs.height)
return false;
if (this->speed < rhs.speed)
return true;
if (this->speed > rhs.speed)
return false;
if (this->angle < rhs.angle)
return true;
if (this->angle > rhs.angle)
return false;
if (this->inset < rhs.inset)
return true;
if (this->inset > rhs.inset)
return false;
return false; return false;
} }
bool operator==(const IroningParams &rhs) const { bool operator==(const IroningParams &rhs) const {
return this->extruder == rhs.extruder && this->just_infill == rhs.just_infill && return this->extruder == rhs.extruder &&
this->line_spacing == rhs.line_spacing && this->height == rhs.height && this->speed == rhs.speed && this->angle == rhs.angle && this->pattern == rhs.pattern && this->inset == rhs.inset; this->just_infill == rhs.just_infill &&
this->line_spacing == rhs.line_spacing &&
this->height == rhs.height &&
this->speed == rhs.speed &&
this->angle == rhs.angle &&
this->is_using_template_angle == rhs.is_using_template_angle &&
this->pattern == rhs.pattern &&
this->inset == rhs.inset;
} }
LayerRegion *layerm = nullptr; LayerRegion *layerm = nullptr;
@@ -1544,7 +1532,8 @@ void Layer::make_ironing()
ironing_params.inset = config.ironing_inset; ironing_params.inset = config.ironing_inset;
ironing_params.height = default_layer_height * 0.01 * config.ironing_flow; ironing_params.height = default_layer_height * 0.01 * config.ironing_flow;
ironing_params.speed = config.ironing_speed; ironing_params.speed = config.ironing_speed;
ironing_params.angle = (config.ironing_angle >= 0 ? config.ironing_angle : config.infill_direction) * M_PI / 180.; ironing_params.angle = calculate_infill_rotation_angle(this->object(), this->id(), config.solid_infill_direction.value, config.solid_infill_rotate_template.value) + config.ironing_angle * M_PI / 180.;
ironing_params.is_using_template_angle = !config.solid_infill_rotate_template.value.empty();
ironing_params.pattern = config.ironing_pattern; ironing_params.pattern = config.ironing_pattern;
ironing_params.layerm = layerm; ironing_params.layerm = layerm;
by_extruder.emplace_back(ironing_params); by_extruder.emplace_back(ironing_params);
@@ -1640,6 +1629,7 @@ void Layer::make_ironing()
// Create the filler object. // Create the filler object.
f->spacing = ironing_params.line_spacing; f->spacing = ironing_params.line_spacing;
f->angle = float(ironing_params.angle); f->angle = float(ironing_params.angle);
f->is_using_template_angle = ironing_params.is_using_template_angle;
f->link_max_length = (coord_t) scale_(3. * f->spacing); f->link_max_length = (coord_t) scale_(3. * f->spacing);
double extrusion_height = ironing_params.height * f->spacing / nozzle_dmr; double extrusion_height = ironing_params.height * f->spacing / nozzle_dmr;
float extrusion_width = Flow::rounded_rectangle_extrusion_width_from_spacing(float(nozzle_dmr), float(extrusion_height)); float extrusion_width = Flow::rounded_rectangle_extrusion_width_from_spacing(float(nozzle_dmr), float(extrusion_height));

View File

@@ -3497,14 +3497,14 @@ void PrintConfigDef::init_fff_params()
def->set_default_value(new ConfigOptionFloat(20)); def->set_default_value(new ConfigOptionFloat(20));
def = this->add("ironing_angle", coFloat); def = this->add("ironing_angle", coFloat);
def->label = L("Ironing angle"); def->label = L("Ironing angle offset");
def->category = L("Quality"); def->category = L("Quality");
def->tooltip = L("The angle ironing is done at. A negative number disables this function and uses the default method."); def->tooltip = L("The angle of ironing lines offset from the top surface.");
def->sidetext = u8"°"; // degrees, don't need translation def->sidetext = u8"°"; // degrees, don't need translation
def->min = -1; def->min = 0;
def->max = 359; def->max = 359;
def->mode = comAdvanced; def->mode = comAdvanced;
def->set_default_value(new ConfigOptionFloat(-1)); def->set_default_value(new ConfigOptionFloat(0));
def = this->add("layer_change_gcode", coString); def = this->add("layer_change_gcode", coString);
def->label = L("Layer change G-code"); def->label = L("Layer change G-code");
@@ -6863,6 +6863,8 @@ void PrintConfigDef::handle_legacy(t_config_option_key &opt_key, std::string &va
opt_key = "bottom_solid_infill_flow_ratio"; opt_key = "bottom_solid_infill_flow_ratio";
} else if (opt_key == "ironing_direction") { } else if (opt_key == "ironing_direction") {
opt_key = "ironing_angle"; opt_key = "ironing_angle";
} else if (opt_key == "ironing_angle" && boost::starts_with(value, "-")) {
value = "0";
} else if (opt_key == "counterbole_hole_bridging") { } else if (opt_key == "counterbole_hole_bridging") {
opt_key = "counterbore_hole_bridging"; opt_key = "counterbore_hole_bridging";
} else if (opt_key == "draft_shield" && value == "limited") { } else if (opt_key == "draft_shield" && value == "limited") {

View File

@@ -2163,7 +2163,7 @@ void TabPrint::build()
optgroup->append_single_option_line("ironing_flow", "quality_settings_ironing#flow"); optgroup->append_single_option_line("ironing_flow", "quality_settings_ironing#flow");
optgroup->append_single_option_line("ironing_spacing", "quality_settings_ironing#line-spacing"); optgroup->append_single_option_line("ironing_spacing", "quality_settings_ironing#line-spacing");
optgroup->append_single_option_line("ironing_inset", "quality_settings_ironing#inset"); optgroup->append_single_option_line("ironing_inset", "quality_settings_ironing#inset");
optgroup->append_single_option_line("ironing_angle", "quality_settings_ironing#angle"); optgroup->append_single_option_line("ironing_angle", "quality_settings_ironing#angle-offset");
optgroup = page->new_optgroup(L("Wall generator"), L"param_wall_generator"); optgroup = page->new_optgroup(L("Wall generator"), L"param_wall_generator");
optgroup->append_single_option_line("wall_generator", "quality_settings_wall_generator"); optgroup->append_single_option_line("wall_generator", "quality_settings_wall_generator");