diff --git a/CHANGELOG.md b/CHANGELOG.md
index 002984f..c2d3ba6 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,17 @@
# Changelog
+## 04/11/2020 - v1.3.5
+
+* (Add) Pixel Dimming: Chamfer - Allow the number of walls pixels to be gradually varied as the operation progresses from the starting layer to the ending layer (#106)
+* (Add) PrusaSlicer print profiles: 0.01, 0.02, 0.03, 0.04, 0.15, 0.2
+* (Change) Morph: "Fade" to "Chamfer" naming, created profiles need redo
+* (Change) Pixel Dimming: Allow start with 0px walls when using "Walls Only"
+* (Change) PrusaSlicer print profiles names, reduced bottom layers and raft height
+* (Remove) PrusaSlicer print profiles with 3 digit z precision (0.025 and 0.035)
+* (Fix) PW0, PWS, PWMX, PWMO, PWMS, PWX file formats, where 4 offsets (16 bytes) were missing on preview image, leading to wrong table size. Previous converted files with UVtools wont open from now on, you need to reconvert them. (ezrec/uv3dp#124)
+* (Fix) Unable to run Re-Height tool due a rounding problem on some cases (#101)
+* (Fix) Layer preview end with exception when no per layer settings are available (SL1 case)
+
## 26/11/2020 - v1.3.4
* (Add) Infill: CubicDynamicLink - Alternates centers with lateral links, consume same resin as center linked and make model/infill stronger.
diff --git a/PrusaSlicer/sla_print/Universal 0.025 UltraDetail - Heavy Supports.ini b/PrusaSlicer/sla_print/Universal 0.01 - Heavy Supports.ini
similarity index 91%
rename from PrusaSlicer/sla_print/Universal 0.025 UltraDetail - Heavy Supports.ini
rename to PrusaSlicer/sla_print/Universal 0.01 - Heavy Supports.ini
index b50c910..f488711 100644
--- a/PrusaSlicer/sla_print/Universal 0.025 UltraDetail - Heavy Supports.ini
+++ b/PrusaSlicer/sla_print/Universal 0.01 - Heavy Supports.ini
@@ -1,4 +1,4 @@
-# generated by PrusaSlicer 2.2.0+win64 on 2020-06-11 at 02:37:18 UTC
+# generated by PrusaSlicer 2.2.0+win64 on 2020-11-29 at 22:52:44 UTC
compatible_printers =
compatible_printers_condition =
default_sla_print_profile =
@@ -8,7 +8,7 @@ hollowing_enable = 0
hollowing_min_thickness = 3
hollowing_quality = 0.5
inherits = 0.025 UltraDetail
-layer_height = 0.025
+layer_height = 0.01
output_filename_format = {input_filename_base}_{material_type}{layer_height}mm_{printer_model}_{print_time}.sl1
pad_around_object = 0
pad_around_object_everywhere = 0
@@ -21,7 +21,7 @@ pad_object_connector_width = 0.5
pad_object_gap = 1
pad_wall_height = 0
pad_wall_slope = 90
-pad_wall_thickness = 1
+pad_wall_thickness = 0.4
sla_print_settings_id =
slice_closing_radius = 0.005
support_base_diameter = 3
diff --git a/PrusaSlicer/sla_print/Universal 0.025 UltraDetail - Medium Supports.ini b/PrusaSlicer/sla_print/Universal 0.01 - Medium Supports.ini
similarity index 91%
rename from PrusaSlicer/sla_print/Universal 0.025 UltraDetail - Medium Supports.ini
rename to PrusaSlicer/sla_print/Universal 0.01 - Medium Supports.ini
index ed59379..9601136 100644
--- a/PrusaSlicer/sla_print/Universal 0.025 UltraDetail - Medium Supports.ini
+++ b/PrusaSlicer/sla_print/Universal 0.01 - Medium Supports.ini
@@ -1,4 +1,4 @@
-# generated by PrusaSlicer 2.2.0+win64 on 2020-06-11 at 02:36:13 UTC
+# generated by PrusaSlicer 2.2.0+win64 on 2020-11-29 at 22:52:52 UTC
compatible_printers =
compatible_printers_condition =
default_sla_print_profile =
@@ -8,7 +8,7 @@ hollowing_enable = 0
hollowing_min_thickness = 3
hollowing_quality = 0.5
inherits = 0.025 UltraDetail
-layer_height = 0.025
+layer_height = 0.01
output_filename_format = {input_filename_base}_{material_type}{layer_height}mm_{printer_model}_{print_time}.sl1
pad_around_object = 0
pad_around_object_everywhere = 0
@@ -21,7 +21,7 @@ pad_object_connector_width = 0.5
pad_object_gap = 1
pad_wall_height = 0
pad_wall_slope = 90
-pad_wall_thickness = 1
+pad_wall_thickness = 0.4
sla_print_settings_id =
slice_closing_radius = 0.005
support_base_diameter = 3
diff --git a/PrusaSlicer/sla_print/Universal 0.02 - Heavy Supports.ini b/PrusaSlicer/sla_print/Universal 0.02 - Heavy Supports.ini
new file mode 100644
index 0000000..4ea1a87
--- /dev/null
+++ b/PrusaSlicer/sla_print/Universal 0.02 - Heavy Supports.ini
@@ -0,0 +1,44 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-11-29 at 22:51:04 UTC
+compatible_printers =
+compatible_printers_condition =
+default_sla_print_profile =
+faded_layers = 6
+hollowing_closing_distance = 2
+hollowing_enable = 0
+hollowing_min_thickness = 3
+hollowing_quality = 0.5
+inherits = 0.025 UltraDetail
+layer_height = 0.02
+output_filename_format = {input_filename_base}_{material_type}{layer_height}mm_{printer_model}_{print_time}.sl1
+pad_around_object = 0
+pad_around_object_everywhere = 0
+pad_brim_size = 1.6
+pad_enable = 1
+pad_max_merge_distance = 50
+pad_object_connector_penetration = 0.3
+pad_object_connector_stride = 10
+pad_object_connector_width = 0.5
+pad_object_gap = 1
+pad_wall_height = 0
+pad_wall_slope = 90
+pad_wall_thickness = 0.4
+sla_print_settings_id =
+slice_closing_radius = 0.005
+support_base_diameter = 3
+support_base_height = 1
+support_base_safety_distance = 1
+support_buildplate_only = 0
+support_critical_angle = 45
+support_head_front_diameter = 1
+support_head_penetration = 0.6
+support_head_width = 2
+support_max_bridge_length = 10
+support_max_bridges_on_pillar = 3
+support_max_pillar_link_distance = 10
+support_object_elevation = 5
+support_pillar_connection_mode = zigzag
+support_pillar_diameter = 1.5
+support_pillar_widening_factor = 0
+support_points_density_relative = 100
+support_points_minimal_distance = 1
+supports_enable = 1
diff --git a/PrusaSlicer/sla_print/Universal 0.02 - Medium Supports.ini b/PrusaSlicer/sla_print/Universal 0.02 - Medium Supports.ini
new file mode 100644
index 0000000..687dcce
--- /dev/null
+++ b/PrusaSlicer/sla_print/Universal 0.02 - Medium Supports.ini
@@ -0,0 +1,44 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-11-29 at 22:50:13 UTC
+compatible_printers =
+compatible_printers_condition =
+default_sla_print_profile =
+faded_layers = 6
+hollowing_closing_distance = 2
+hollowing_enable = 0
+hollowing_min_thickness = 3
+hollowing_quality = 0.5
+inherits = 0.025 UltraDetail
+layer_height = 0.02
+output_filename_format = {input_filename_base}_{material_type}{layer_height}mm_{printer_model}_{print_time}.sl1
+pad_around_object = 0
+pad_around_object_everywhere = 0
+pad_brim_size = 1.6
+pad_enable = 1
+pad_max_merge_distance = 50
+pad_object_connector_penetration = 0.3
+pad_object_connector_stride = 10
+pad_object_connector_width = 0.5
+pad_object_gap = 1
+pad_wall_height = 0
+pad_wall_slope = 90
+pad_wall_thickness = 0.4
+sla_print_settings_id =
+slice_closing_radius = 0.005
+support_base_diameter = 3
+support_base_height = 1
+support_base_safety_distance = 1
+support_buildplate_only = 0
+support_critical_angle = 45
+support_head_front_diameter = 0.8
+support_head_penetration = 0.4
+support_head_width = 2
+support_max_bridge_length = 10
+support_max_bridges_on_pillar = 3
+support_max_pillar_link_distance = 10
+support_object_elevation = 5
+support_pillar_connection_mode = zigzag
+support_pillar_diameter = 1.2
+support_pillar_widening_factor = 0
+support_points_density_relative = 100
+support_points_minimal_distance = 1
+supports_enable = 1
diff --git a/PrusaSlicer/sla_print/Universal 0.035 Detail - Heavy Supports.ini b/PrusaSlicer/sla_print/Universal 0.03 - Heavy Supports.ini
similarity index 90%
rename from PrusaSlicer/sla_print/Universal 0.035 Detail - Heavy Supports.ini
rename to PrusaSlicer/sla_print/Universal 0.03 - Heavy Supports.ini
index a46b970..328c178 100644
--- a/PrusaSlicer/sla_print/Universal 0.035 Detail - Heavy Supports.ini
+++ b/PrusaSlicer/sla_print/Universal 0.03 - Heavy Supports.ini
@@ -1,14 +1,14 @@
-# generated by PrusaSlicer 2.2.0+win64 on 2020-06-11 at 02:34:54 UTC
+# generated by PrusaSlicer 2.2.0+win64 on 2020-11-29 at 22:52:05 UTC
compatible_printers =
compatible_printers_condition =
default_sla_print_profile =
-faded_layers = 10
+faded_layers = 4
hollowing_closing_distance = 2
hollowing_enable = 0
hollowing_min_thickness = 3
hollowing_quality = 0.5
inherits = 0.035 Detail
-layer_height = 0.035
+layer_height = 0.03
output_filename_format = {input_filename_base}_{material_type}{layer_height}mm_{printer_model}_{print_time}.sl1
pad_around_object = 0
pad_around_object_everywhere = 0
@@ -21,7 +21,7 @@ pad_object_connector_width = 0.5
pad_object_gap = 1
pad_wall_height = 0
pad_wall_slope = 90
-pad_wall_thickness = 1
+pad_wall_thickness = 0.4
sla_print_settings_id =
slice_closing_radius = 0.005
support_base_diameter = 3
diff --git a/PrusaSlicer/sla_print/Universal 0.035 Detail - Medium Supports.ini b/PrusaSlicer/sla_print/Universal 0.03 - Medium Supports.ini
similarity index 90%
rename from PrusaSlicer/sla_print/Universal 0.035 Detail - Medium Supports.ini
rename to PrusaSlicer/sla_print/Universal 0.03 - Medium Supports.ini
index fa0c748..0d6956f 100644
--- a/PrusaSlicer/sla_print/Universal 0.035 Detail - Medium Supports.ini
+++ b/PrusaSlicer/sla_print/Universal 0.03 - Medium Supports.ini
@@ -1,14 +1,14 @@
-# generated by PrusaSlicer 2.2.0+win64 on 2020-06-11 at 02:34:31 UTC
+# generated by PrusaSlicer 2.2.0+win64 on 2020-11-29 at 22:52:15 UTC
compatible_printers =
compatible_printers_condition =
default_sla_print_profile =
-faded_layers = 10
+faded_layers = 4
hollowing_closing_distance = 2
hollowing_enable = 0
hollowing_min_thickness = 3
hollowing_quality = 0.5
inherits = 0.035 Detail
-layer_height = 0.035
+layer_height = 0.03
output_filename_format = {input_filename_base}_{material_type}{layer_height}mm_{printer_model}_{print_time}.sl1
pad_around_object = 0
pad_around_object_everywhere = 0
@@ -21,7 +21,7 @@ pad_object_connector_width = 0.5
pad_object_gap = 1
pad_wall_height = 0
pad_wall_slope = 90
-pad_wall_thickness = 1
+pad_wall_thickness = 0.4
sla_print_settings_id =
slice_closing_radius = 0.005
support_base_diameter = 3
diff --git a/PrusaSlicer/sla_print/Universal 0.04 - Heavy Supports.ini b/PrusaSlicer/sla_print/Universal 0.04 - Heavy Supports.ini
new file mode 100644
index 0000000..083e3d8
--- /dev/null
+++ b/PrusaSlicer/sla_print/Universal 0.04 - Heavy Supports.ini
@@ -0,0 +1,44 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-11-29 at 22:53:43 UTC
+compatible_printers =
+compatible_printers_condition =
+default_sla_print_profile =
+faded_layers = 4
+hollowing_closing_distance = 2
+hollowing_enable = 0
+hollowing_min_thickness = 3
+hollowing_quality = 0.5
+inherits = 0.05 Normal
+layer_height = 0.04
+output_filename_format = {input_filename_base}_{material_type}{layer_height}mm_{printer_model}_{print_time}.sl1
+pad_around_object = 0
+pad_around_object_everywhere = 0
+pad_brim_size = 1.6
+pad_enable = 1
+pad_max_merge_distance = 50
+pad_object_connector_penetration = 0.3
+pad_object_connector_stride = 10
+pad_object_connector_width = 0.5
+pad_object_gap = 1
+pad_wall_height = 0
+pad_wall_slope = 90
+pad_wall_thickness = 0.4
+sla_print_settings_id =
+slice_closing_radius = 0.005
+support_base_diameter = 3
+support_base_height = 1
+support_base_safety_distance = 1
+support_buildplate_only = 0
+support_critical_angle = 45
+support_head_front_diameter = 1
+support_head_penetration = 0.6
+support_head_width = 3
+support_max_bridge_length = 10
+support_max_bridges_on_pillar = 3
+support_max_pillar_link_distance = 10
+support_object_elevation = 5
+support_pillar_connection_mode = zigzag
+support_pillar_diameter = 1.5
+support_pillar_widening_factor = 0
+support_points_density_relative = 100
+support_points_minimal_distance = 1
+supports_enable = 1
diff --git a/PrusaSlicer/sla_print/Universal 0.04 - Medium Supports.ini b/PrusaSlicer/sla_print/Universal 0.04 - Medium Supports.ini
new file mode 100644
index 0000000..ffcc1ff
--- /dev/null
+++ b/PrusaSlicer/sla_print/Universal 0.04 - Medium Supports.ini
@@ -0,0 +1,44 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-11-29 at 22:53:55 UTC
+compatible_printers =
+compatible_printers_condition =
+default_sla_print_profile =
+faded_layers = 4
+hollowing_closing_distance = 2
+hollowing_enable = 0
+hollowing_min_thickness = 3
+hollowing_quality = 0.5
+inherits = 0.05 Normal
+layer_height = 0.04
+output_filename_format = {input_filename_base}_{material_type}{layer_height}mm_{printer_model}_{print_time}.sl1
+pad_around_object = 0
+pad_around_object_everywhere = 0
+pad_brim_size = 1.6
+pad_enable = 1
+pad_max_merge_distance = 50
+pad_object_connector_penetration = 0.3
+pad_object_connector_stride = 10
+pad_object_connector_width = 0.5
+pad_object_gap = 1
+pad_wall_height = 0
+pad_wall_slope = 90
+pad_wall_thickness = 0.4
+sla_print_settings_id =
+slice_closing_radius = 0.005
+support_base_diameter = 3
+support_base_height = 1
+support_base_safety_distance = 1
+support_buildplate_only = 0
+support_critical_angle = 45
+support_head_front_diameter = 0.8
+support_head_penetration = 0.4
+support_head_width = 3
+support_max_bridge_length = 10
+support_max_bridges_on_pillar = 3
+support_max_pillar_link_distance = 10
+support_object_elevation = 5
+support_pillar_connection_mode = zigzag
+support_pillar_diameter = 1.2
+support_pillar_widening_factor = 0
+support_points_density_relative = 100
+support_points_minimal_distance = 1
+supports_enable = 1
diff --git a/PrusaSlicer/sla_print/Universal 0.05 Normal - Heavy Supports.ini b/PrusaSlicer/sla_print/Universal 0.05 - Heavy Supports.ini
similarity index 92%
rename from PrusaSlicer/sla_print/Universal 0.05 Normal - Heavy Supports.ini
rename to PrusaSlicer/sla_print/Universal 0.05 - Heavy Supports.ini
index 10e334d..8acc0c9 100644
--- a/PrusaSlicer/sla_print/Universal 0.05 Normal - Heavy Supports.ini
+++ b/PrusaSlicer/sla_print/Universal 0.05 - Heavy Supports.ini
@@ -1,8 +1,8 @@
-# generated by PrusaSlicer 2.2.0+win64 on 2020-06-11 at 02:24:57 UTC
+# generated by PrusaSlicer 2.2.0+win64 on 2020-11-29 at 22:54:04 UTC
compatible_printers =
compatible_printers_condition =
default_sla_print_profile =
-faded_layers = 10
+faded_layers = 3
hollowing_closing_distance = 2
hollowing_enable = 0
hollowing_min_thickness = 3
@@ -21,7 +21,7 @@ pad_object_connector_width = 0.5
pad_object_gap = 1
pad_wall_height = 0
pad_wall_slope = 90
-pad_wall_thickness = 1
+pad_wall_thickness = 0.4
sla_print_settings_id =
slice_closing_radius = 0.005
support_base_diameter = 3
diff --git a/PrusaSlicer/sla_print/Universal 0.05 Normal - Medium Supports.ini b/PrusaSlicer/sla_print/Universal 0.05 - Medium Supports.ini
similarity index 92%
rename from PrusaSlicer/sla_print/Universal 0.05 Normal - Medium Supports.ini
rename to PrusaSlicer/sla_print/Universal 0.05 - Medium Supports.ini
index 79511c7..8db1a15 100644
--- a/PrusaSlicer/sla_print/Universal 0.05 Normal - Medium Supports.ini
+++ b/PrusaSlicer/sla_print/Universal 0.05 - Medium Supports.ini
@@ -1,8 +1,8 @@
-# generated by PrusaSlicer 2.2.0+win64 on 2020-06-11 at 02:23:55 UTC
+# generated by PrusaSlicer 2.2.0+win64 on 2020-11-29 at 22:54:10 UTC
compatible_printers =
compatible_printers_condition =
default_sla_print_profile =
-faded_layers = 10
+faded_layers = 3
hollowing_closing_distance = 2
hollowing_enable = 0
hollowing_min_thickness = 3
@@ -21,7 +21,7 @@ pad_object_connector_width = 0.5
pad_object_gap = 1
pad_wall_height = 0
pad_wall_slope = 90
-pad_wall_thickness = 1
+pad_wall_thickness = 0.4
sla_print_settings_id =
slice_closing_radius = 0.005
support_base_diameter = 3
diff --git a/PrusaSlicer/sla_print/Universal 0.1 Fast - Heavy Supports.ini b/PrusaSlicer/sla_print/Universal 0.10 - Heavy Supports.ini
similarity index 92%
rename from PrusaSlicer/sla_print/Universal 0.1 Fast - Heavy Supports.ini
rename to PrusaSlicer/sla_print/Universal 0.10 - Heavy Supports.ini
index 825330a..99826a8 100644
--- a/PrusaSlicer/sla_print/Universal 0.1 Fast - Heavy Supports.ini
+++ b/PrusaSlicer/sla_print/Universal 0.10 - Heavy Supports.ini
@@ -1,8 +1,8 @@
-# generated by PrusaSlicer 2.2.0+win64 on 2020-06-11 at 02:30:54 UTC
+# generated by PrusaSlicer 2.2.0+win64 on 2020-11-29 at 22:55:43 UTC
compatible_printers =
compatible_printers_condition =
default_sla_print_profile =
-faded_layers = 10
+faded_layers = 3
hollowing_closing_distance = 2
hollowing_enable = 0
hollowing_min_thickness = 3
@@ -21,7 +21,7 @@ pad_object_connector_width = 0.5
pad_object_gap = 1
pad_wall_height = 0
pad_wall_slope = 90
-pad_wall_thickness = 1
+pad_wall_thickness = 0.4
sla_print_settings_id =
slice_closing_radius = 0.005
support_base_diameter = 3
diff --git a/PrusaSlicer/sla_print/Universal 0.1 Fast - Medium Supports.ini b/PrusaSlicer/sla_print/Universal 0.10 - Medium Supports.ini
similarity index 92%
rename from PrusaSlicer/sla_print/Universal 0.1 Fast - Medium Supports.ini
rename to PrusaSlicer/sla_print/Universal 0.10 - Medium Supports.ini
index c43832c..675a61b 100644
--- a/PrusaSlicer/sla_print/Universal 0.1 Fast - Medium Supports.ini
+++ b/PrusaSlicer/sla_print/Universal 0.10 - Medium Supports.ini
@@ -1,8 +1,8 @@
-# generated by PrusaSlicer 2.2.0+win64 on 2020-09-05 at 15:51:14 UTC
+# generated by PrusaSlicer 2.2.0+win64 on 2020-11-29 at 22:55:50 UTC
compatible_printers =
compatible_printers_condition =
default_sla_print_profile =
-faded_layers = 10
+faded_layers = 3
hollowing_closing_distance = 2
hollowing_enable = 0
hollowing_min_thickness = 3
@@ -21,7 +21,7 @@ pad_object_connector_width = 0.5
pad_object_gap = 1
pad_wall_height = 0
pad_wall_slope = 90
-pad_wall_thickness = 1
+pad_wall_thickness = 0.4
sla_print_settings_id =
slice_closing_radius = 0.005
support_base_diameter = 3
diff --git a/PrusaSlicer/sla_print/Universal 0.15 - Heavy Supports.ini b/PrusaSlicer/sla_print/Universal 0.15 - Heavy Supports.ini
new file mode 100644
index 0000000..acdf018
--- /dev/null
+++ b/PrusaSlicer/sla_print/Universal 0.15 - Heavy Supports.ini
@@ -0,0 +1,44 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-11-29 at 22:57:42 UTC
+compatible_printers =
+compatible_printers_condition =
+default_sla_print_profile =
+faded_layers = 3
+hollowing_closing_distance = 2
+hollowing_enable = 0
+hollowing_min_thickness = 3
+hollowing_quality = 0.5
+inherits = 0.1 Fast
+layer_height = 0.15
+output_filename_format = {input_filename_base}_{material_type}{layer_height}mm_{printer_model}_{print_time}.sl1
+pad_around_object = 0
+pad_around_object_everywhere = 0
+pad_brim_size = 1.6
+pad_enable = 1
+pad_max_merge_distance = 50
+pad_object_connector_penetration = 0.3
+pad_object_connector_stride = 10
+pad_object_connector_width = 0.5
+pad_object_gap = 1
+pad_wall_height = 0
+pad_wall_slope = 90
+pad_wall_thickness = 0.4
+sla_print_settings_id =
+slice_closing_radius = 0.005
+support_base_diameter = 3
+support_base_height = 1
+support_base_safety_distance = 1
+support_buildplate_only = 0
+support_critical_angle = 45
+support_head_front_diameter = 1
+support_head_penetration = 0.7
+support_head_width = 3
+support_max_bridge_length = 10
+support_max_bridges_on_pillar = 3
+support_max_pillar_link_distance = 10
+support_object_elevation = 5
+support_pillar_connection_mode = zigzag
+support_pillar_diameter = 1.5
+support_pillar_widening_factor = 0
+support_points_density_relative = 100
+support_points_minimal_distance = 1
+supports_enable = 1
diff --git a/PrusaSlicer/sla_print/Universal 0.15 - Medium Supports.ini b/PrusaSlicer/sla_print/Universal 0.15 - Medium Supports.ini
new file mode 100644
index 0000000..5a6b036
--- /dev/null
+++ b/PrusaSlicer/sla_print/Universal 0.15 - Medium Supports.ini
@@ -0,0 +1,44 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-11-29 at 22:57:49 UTC
+compatible_printers =
+compatible_printers_condition =
+default_sla_print_profile =
+faded_layers = 3
+hollowing_closing_distance = 2
+hollowing_enable = 0
+hollowing_min_thickness = 3
+hollowing_quality = 0.5
+inherits = 0.1 Fast
+layer_height = 0.15
+output_filename_format = {input_filename_base}_{material_type}{layer_height}mm_{printer_model}_{print_time}.sl1
+pad_around_object = 0
+pad_around_object_everywhere = 0
+pad_brim_size = 1.6
+pad_enable = 1
+pad_max_merge_distance = 50
+pad_object_connector_penetration = 0.3
+pad_object_connector_stride = 10
+pad_object_connector_width = 0.5
+pad_object_gap = 1
+pad_wall_height = 0
+pad_wall_slope = 90
+pad_wall_thickness = 0.4
+sla_print_settings_id =
+slice_closing_radius = 0.005
+support_base_diameter = 3
+support_base_height = 1
+support_base_safety_distance = 1
+support_buildplate_only = 0
+support_critical_angle = 45
+support_head_front_diameter = 0.9
+support_head_penetration = 0.5
+support_head_width = 3
+support_max_bridge_length = 10
+support_max_bridges_on_pillar = 3
+support_max_pillar_link_distance = 10
+support_object_elevation = 5
+support_pillar_connection_mode = zigzag
+support_pillar_diameter = 1.3
+support_pillar_widening_factor = 0
+support_points_density_relative = 100
+support_points_minimal_distance = 1
+supports_enable = 1
diff --git a/PrusaSlicer/sla_print/Universal 0.20 - Heavy Supports.ini b/PrusaSlicer/sla_print/Universal 0.20 - Heavy Supports.ini
new file mode 100644
index 0000000..bd5f3b4
--- /dev/null
+++ b/PrusaSlicer/sla_print/Universal 0.20 - Heavy Supports.ini
@@ -0,0 +1,44 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-11-29 at 22:58:16 UTC
+compatible_printers =
+compatible_printers_condition =
+default_sla_print_profile =
+faded_layers = 3
+hollowing_closing_distance = 2
+hollowing_enable = 0
+hollowing_min_thickness = 3
+hollowing_quality = 0.5
+inherits = 0.1 Fast
+layer_height = 0.2
+output_filename_format = {input_filename_base}_{material_type}{layer_height}mm_{printer_model}_{print_time}.sl1
+pad_around_object = 0
+pad_around_object_everywhere = 0
+pad_brim_size = 1.6
+pad_enable = 1
+pad_max_merge_distance = 50
+pad_object_connector_penetration = 0.3
+pad_object_connector_stride = 10
+pad_object_connector_width = 0.5
+pad_object_gap = 1
+pad_wall_height = 0
+pad_wall_slope = 90
+pad_wall_thickness = 0.4
+sla_print_settings_id =
+slice_closing_radius = 0.005
+support_base_diameter = 3
+support_base_height = 1
+support_base_safety_distance = 1
+support_buildplate_only = 0
+support_critical_angle = 45
+support_head_front_diameter = 1
+support_head_penetration = 0.7
+support_head_width = 3
+support_max_bridge_length = 10
+support_max_bridges_on_pillar = 3
+support_max_pillar_link_distance = 10
+support_object_elevation = 5
+support_pillar_connection_mode = zigzag
+support_pillar_diameter = 1.5
+support_pillar_widening_factor = 0
+support_points_density_relative = 100
+support_points_minimal_distance = 1
+supports_enable = 1
diff --git a/PrusaSlicer/sla_print/Universal 0.20 - Medium Supports.ini b/PrusaSlicer/sla_print/Universal 0.20 - Medium Supports.ini
new file mode 100644
index 0000000..4996e9f
--- /dev/null
+++ b/PrusaSlicer/sla_print/Universal 0.20 - Medium Supports.ini
@@ -0,0 +1,44 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-11-29 at 22:58:26 UTC
+compatible_printers =
+compatible_printers_condition =
+default_sla_print_profile =
+faded_layers = 3
+hollowing_closing_distance = 2
+hollowing_enable = 0
+hollowing_min_thickness = 3
+hollowing_quality = 0.5
+inherits = 0.1 Fast
+layer_height = 0.2
+output_filename_format = {input_filename_base}_{material_type}{layer_height}mm_{printer_model}_{print_time}.sl1
+pad_around_object = 0
+pad_around_object_everywhere = 0
+pad_brim_size = 1.6
+pad_enable = 1
+pad_max_merge_distance = 50
+pad_object_connector_penetration = 0.3
+pad_object_connector_stride = 10
+pad_object_connector_width = 0.5
+pad_object_gap = 1
+pad_wall_height = 0
+pad_wall_slope = 90
+pad_wall_thickness = 0.4
+sla_print_settings_id =
+slice_closing_radius = 0.005
+support_base_diameter = 3
+support_base_height = 1
+support_base_safety_distance = 1
+support_buildplate_only = 0
+support_critical_angle = 45
+support_head_front_diameter = 0.9
+support_head_penetration = 0.5
+support_head_width = 3
+support_max_bridge_length = 10
+support_max_bridges_on_pillar = 3
+support_max_pillar_link_distance = 10
+support_object_elevation = 5
+support_pillar_connection_mode = zigzag
+support_pillar_diameter = 1.3
+support_pillar_widening_factor = 0
+support_points_density_relative = 100
+support_points_minimal_distance = 1
+supports_enable = 1
diff --git a/UVtools.Cmd/UVtools.Cmd.csproj b/UVtools.Cmd/UVtools.Cmd.csproj
index 20b4889..9e25a50 100644
--- a/UVtools.Cmd/UVtools.Cmd.csproj
+++ b/UVtools.Cmd/UVtools.Cmd.csproj
@@ -20,7 +20,7 @@
-
+
diff --git a/UVtools.Core/Extensions/MathExtensions.cs b/UVtools.Core/Extensions/MathExtensions.cs
index df90b77..2020744 100644
--- a/UVtools.Core/Extensions/MathExtensions.cs
+++ b/UVtools.Core/Extensions/MathExtensions.cs
@@ -7,6 +7,7 @@
*/
using System;
+using System.Globalization;
namespace UVtools.Core.Extensions
{
@@ -76,5 +77,38 @@ namespace UVtools.Core.Extensions
return value;
}
+
+ public static uint DecimalDigits(this float val)
+ {
+ var valStr = val.ToString(CultureInfo.InvariantCulture).TrimEnd('0');
+ if (string.IsNullOrEmpty(valStr)) return 0;
+
+ var index = valStr.IndexOf('.');
+ if (index < 0) return 0;
+
+ return (uint) (valStr.Substring(index).Length - 1);
+ }
+
+ public static uint DecimalDigits(this double val)
+ {
+ var valStr = val.ToString(CultureInfo.InvariantCulture).TrimEnd('0');
+ if (string.IsNullOrEmpty(valStr)) return 0;
+
+ var index = valStr.IndexOf('.');
+ if (index < 0) return 0;
+
+ return (uint)(valStr.Substring(index).Length - 1);
+ }
+
+ public static uint DecimalDigits(this decimal val)
+ {
+ var valStr = val.ToString(CultureInfo.InvariantCulture).TrimEnd('0');
+ if (string.IsNullOrEmpty(valStr) || valStr[valStr.Length-1] == '.') return 0;
+
+ var index = valStr.IndexOf('.');
+ if (index < 0) return 0;
+
+ return (uint)(valStr.Substring(index).Length - 1);
+ }
}
}
diff --git a/UVtools.Core/FileFormats/PhotonWorkshopFile.cs b/UVtools.Core/FileFormats/PhotonWorkshopFile.cs
index 617c92f..80b3f81 100644
--- a/UVtools.Core/FileFormats/PhotonWorkshopFile.cs
+++ b/UVtools.Core/FileFormats/PhotonWorkshopFile.cs
@@ -268,6 +268,11 @@ namespace UVtools.Core.FileFormats
///
[FieldOrder(3)] public uint Height { get; set; } = 168;
+ [FieldOrder(4)] public uint Offset1 { get; set; }
+ [FieldOrder(5)] public uint Offset2 { get; set; }
+ [FieldOrder(6)] public uint Offset3 { get; set; }
+ [FieldOrder(7)] public uint Offset4 { get; set; }
+
[Ignore] public uint DataSize => Width * Height * 2;
// little-endian 16bit colors, RGB 565 encoded.
@@ -1133,7 +1138,7 @@ namespace UVtools.Core.FileFormats
Debug.Write("Preview -> ");
Debug.WriteLine(PreviewSettings);
- //PreviewSettings.Validate((int) PreviewSettings.DataSize);
+ PreviewSettings.Validate((int) PreviewSettings.DataSize);
PreviewSettings.Data = new byte[PreviewSettings.DataSize];
inputFile.ReadBytes(PreviewSettings.Data);
diff --git a/UVtools.Core/Layer/Layer.cs b/UVtools.Core/Layer/Layer.cs
index 55db86d..4ae83a8 100644
--- a/UVtools.Core/Layer/Layer.cs
+++ b/UVtools.Core/Layer/Layer.cs
@@ -839,13 +839,24 @@ namespace UVtools.Core
alternatePatternMask = patternMask;
}
+ int wallThickness = LayerManager.MutateGetIterationChamfer(
+ Index,
+ operation.LayerIndexStart,
+ operation.LayerIndexEnd,
+ (int)operation.WallThicknessStart,
+ (int)operation.WallThicknessEnd,
+ operation.Chamfer
+ );
+
+
using (Mat dst = LayerMat)
using (Mat erode = new Mat())
using (Mat diff = new Mat())
{
Mat target = operation.GetRoiOrDefault(dst);
- CvInvoke.Erode(target, erode, kernel, anchor, (int) operation.WallThickness, BorderType.Reflect101, default);
+
+ CvInvoke.Erode(target, erode, kernel, anchor, wallThickness, BorderType.Reflect101, default);
CvInvoke.Subtract(target, erode, diff);
diff --git a/UVtools.Core/Layer/LayerManager.cs b/UVtools.Core/Layer/LayerManager.cs
index 79cf506..95f41a4 100644
--- a/UVtools.Core/Layer/LayerManager.cs
+++ b/UVtools.Core/Layer/LayerManager.cs
@@ -494,7 +494,7 @@ namespace UVtools.Core
});
}
- private void MutateGetVarsIterationFade(uint startLayerIndex, uint endLayerIndex, int iterationsStart, int iterationsEnd, ref bool isFade, out float iterationSteps, out int maxIteration)
+ public static void MutateGetVarsIterationChamfer(uint startLayerIndex, uint endLayerIndex, int iterationsStart, int iterationsEnd, ref bool isFade, out float iterationSteps, out int maxIteration)
{
iterationSteps = 0;
maxIteration = 0;
@@ -504,7 +504,7 @@ namespace UVtools.Core
maxIteration = Math.Max(iterationsStart, iterationsEnd);
}
- private int MutateGetIterationVar(bool isFade, int iterationsStart, int iterationsEnd, float iterationSteps, int maxIteration, uint startLayerIndex, uint layerIndex)
+ public static int MutateGetIterationVar(bool isFade, int iterationsStart, int iterationsEnd, float iterationSteps, int maxIteration, uint startLayerIndex, uint layerIndex)
{
if (!isFade) return iterationsStart;
// calculate iterations based on range
@@ -513,7 +513,15 @@ namespace UVtools.Core
: iterationsStart - (layerIndex - startLayerIndex) * iterationSteps);
// constrain
- return Math.Min(Math.Max(1, iterations), maxIteration);
+ return Math.Min(Math.Max(0, iterations), maxIteration);
+ }
+
+ public static int MutateGetIterationChamfer(uint layerIndex, uint startLayerIndex, uint endLayerIndex, int iterationsStart,
+ int iterationsEnd, bool isFade)
+ {
+ MutateGetVarsIterationChamfer(startLayerIndex, endLayerIndex, iterationsStart, iterationsEnd, ref isFade,
+ out float iterationSteps, out int maxIteration);
+ return MutateGetIterationVar(isFade, iterationsStart, iterationsEnd, iterationSteps, maxIteration, startLayerIndex, layerIndex);
}
public void Morph(OperationMorph operation, BorderType borderType = BorderType.Default, MCvScalar borderValue = default, OperationProgress progress = null)
@@ -521,8 +529,8 @@ namespace UVtools.Core
if (progress is null) progress = new OperationProgress();
progress.Reset(operation.ProgressAction, operation.LayerRangeCount);
- var isFade = operation.FadeInOut;
- MutateGetVarsIterationFade(
+ var isFade = operation.Chamfer;
+ MutateGetVarsIterationChamfer(
operation.LayerIndexStart,
operation.LayerIndexEnd,
(int) operation.IterationsStart,
diff --git a/UVtools.Core/Operations/OperationLayerReHeight.cs b/UVtools.Core/Operations/OperationLayerReHeight.cs
index f92c7ce..aa9dea2 100644
--- a/UVtools.Core/Operations/OperationLayerReHeight.cs
+++ b/UVtools.Core/Operations/OperationLayerReHeight.cs
@@ -10,6 +10,7 @@ using System;
using System.Collections.Generic;
using System.Globalization;
using System.Text;
+using UVtools.Core.Extensions;
using UVtools.Core.Objects;
namespace UVtools.Core.Operations
@@ -65,32 +66,24 @@ namespace UVtools.Core.Operations
public static OperationLayerReHeightItem[] GetItems(uint layerCount, decimal layerHeight)
{
- List list = new List();
- for (byte i = 2; i < 255; i++) // Lower
+ var list = new List();
+ for (byte i = 2; i < 255; i++) // Go lower heights
{
if (layerHeight / i < 0.01m) break;
- var countStr = (layerCount / (decimal)i).ToString(CultureInfo.InvariantCulture);
- if (countStr.IndexOf(".", StringComparison.Ordinal) >= 0) continue; // Cant multiply layers
- countStr = (layerHeight / i).ToString(CultureInfo.InvariantCulture);
- int decimalCount = countStr.Substring(countStr.IndexOf(".", StringComparison.Ordinal)).Length - 1;
- if (decimalCount > 2) continue; // Cant multiply height
+ if ((layerCount * (decimal)i).DecimalDigits() > 0) continue; // Cant multiply layers, no half layers!
+ if ((layerHeight / i).DecimalDigits() > 2) continue; // Cant divide height, more than 2 digits
- var item = new OperationLayerReHeightItem(false, i, layerHeight / i, layerCount * i);
+ var item = new OperationLayerReHeightItem(false, i, Math.Round(layerHeight / i, 2), layerCount * i);
list.Add(item);
}
- for (byte i = 2; i < 255; i++) // Higher
+ for (byte i = 2; i < 255; i++) // Go higher heights
{
if (layerHeight * i > 0.2m) break;
- var countStr = (layerCount / (decimal)i).ToString(CultureInfo.InvariantCulture);
- if (countStr.IndexOf(".", StringComparison.Ordinal) >= 0) continue; // Cant multiply layers
+ if ((layerCount / (decimal)i).DecimalDigits() > 0) continue; // Cant divide layers, no half layers!
+ if ((layerHeight * i).DecimalDigits() > 2) continue; // Cant multiply height, more than 2 digits
-
- countStr = (layerHeight * i).ToString(CultureInfo.InvariantCulture);
- int decimalCount = countStr.Substring(countStr.IndexOf(".", StringComparison.Ordinal)).Length - 1;
- if (decimalCount > 2) continue; // Cant multiply height
-
- var item = new OperationLayerReHeightItem(true, i, layerHeight * i, layerCount / i);
+ var item = new OperationLayerReHeightItem(true, i, Math.Round(layerHeight * i, 2), layerCount / i);
list.Add(item);
}
diff --git a/UVtools.Core/Operations/OperationMorph.cs b/UVtools.Core/Operations/OperationMorph.cs
index a16d92c..116c658 100644
--- a/UVtools.Core/Operations/OperationMorph.cs
+++ b/UVtools.Core/Operations/OperationMorph.cs
@@ -19,7 +19,7 @@ namespace UVtools.Core.Operations
private MorphOp _morphOperation = MorphOp.Erode;
private uint _iterationsStart = 1;
private uint _iterationsEnd = 1;
- private bool _fadeInOut;
+ private bool _chamfer;
#region Overrides
@@ -80,10 +80,10 @@ namespace UVtools.Core.Operations
set => RaiseAndSetIfChanged(ref _iterationsEnd, value);
}
- public bool FadeInOut
+ public bool Chamfer
{
- get => _fadeInOut;
- set => RaiseAndSetIfChanged(ref _fadeInOut, value);
+ get => _chamfer;
+ set => RaiseAndSetIfChanged(ref _chamfer, value);
}
[XmlIgnore]
@@ -91,7 +91,7 @@ namespace UVtools.Core.Operations
public override string ToString()
{
- var result = $"[{_morphOperation}] [Iterations: {_iterationsStart}/{_iterationsEnd}] [Fade: {_fadeInOut}]" + LayerRangeString;
+ var result = $"[{_morphOperation}] [Iterations: {_iterationsStart}/{_iterationsEnd}] [Chamfer: {_chamfer}]" + LayerRangeString;
if (!string.IsNullOrEmpty(ProfileName)) result = $"{ProfileName}: {result}";
return result;
}
@@ -102,7 +102,7 @@ namespace UVtools.Core.Operations
private bool Equals(OperationMorph other)
{
- return _morphOperation == other._morphOperation && _iterationsStart == other._iterationsStart && _iterationsEnd == other._iterationsEnd && _fadeInOut == other._fadeInOut;
+ return _morphOperation == other._morphOperation && _iterationsStart == other._iterationsStart && _iterationsEnd == other._iterationsEnd && _chamfer == other._chamfer;
}
public override bool Equals(object obj)
@@ -117,7 +117,7 @@ namespace UVtools.Core.Operations
var hashCode = (int) _morphOperation;
hashCode = (hashCode * 397) ^ (int) _iterationsStart;
hashCode = (hashCode * 397) ^ (int) _iterationsEnd;
- hashCode = (hashCode * 397) ^ _fadeInOut.GetHashCode();
+ hashCode = (hashCode * 397) ^ _chamfer.GetHashCode();
return hashCode;
}
}
diff --git a/UVtools.Core/Operations/OperationPixelDimming.cs b/UVtools.Core/Operations/OperationPixelDimming.cs
index c099e15..182227b 100644
--- a/UVtools.Core/Operations/OperationPixelDimming.cs
+++ b/UVtools.Core/Operations/OperationPixelDimming.cs
@@ -17,8 +17,10 @@ namespace UVtools.Core.Operations
[Serializable]
public class OperationPixelDimming : Operation
{
- private uint _wallThickness = 5;
+ private uint _wallThicknessStart = 5;
+ private uint _wallThicknessEnd = 5;
private bool _wallsOnly;
+ private bool _chamfer;
private Matrix _pattern;
private Matrix _alternatePattern;
private ushort _alternatePatternPerLayers = 1;
@@ -44,10 +46,10 @@ namespace UVtools.Core.Operations
public override StringTag Validate(params object[] parameters)
{
var sb = new StringBuilder();
- if (WallThickness == 0 && WallsOnly)
+ /*if (WallThicknessStart == 0 && WallsOnly)
{
sb.AppendLine("Border size must be positive in order to use \"Dim only borders\" function.");
- }
+ }*/
if (Pattern is null && AlternatePattern is null)
{
@@ -60,10 +62,16 @@ namespace UVtools.Core.Operations
#region Properties
- public uint WallThickness
+ public uint WallThicknessStart
{
- get => _wallThickness;
- set => RaiseAndSetIfChanged(ref _wallThickness, value);
+ get => _wallThicknessStart;
+ set => RaiseAndSetIfChanged(ref _wallThicknessStart, value);
+ }
+
+ public uint WallThicknessEnd
+ {
+ get => _wallThicknessEnd;
+ set => RaiseAndSetIfChanged(ref _wallThicknessEnd, value);
}
public bool WallsOnly
@@ -72,6 +80,12 @@ namespace UVtools.Core.Operations
set => RaiseAndSetIfChanged(ref _wallsOnly, value);
}
+ public bool Chamfer
+ {
+ get => _chamfer;
+ set => RaiseAndSetIfChanged(ref _chamfer, value);
+ }
+
///
/// Use the alternate pattern every layers
///
@@ -108,7 +122,7 @@ namespace UVtools.Core.Operations
public override string ToString()
{
- var result = $"[Border: {_wallThickness}px] [Only borders: {_wallsOnly}] [Alternate every: {_alternatePatternPerLayers}]" + LayerRangeString;
+ var result = $"[Border: {_wallThicknessStart}px to {_wallThicknessEnd}px] [Chamfer: {_chamfer}] [Only borders: {_wallsOnly}] [Alternate every: {_alternatePatternPerLayers}]" + LayerRangeString;
if (!string.IsNullOrEmpty(ProfileName)) result = $"{ProfileName}: {result}";
return result;
}
@@ -119,7 +133,7 @@ namespace UVtools.Core.Operations
protected bool Equals(OperationPixelDimming other)
{
- return _wallThickness == other._wallThickness && _wallsOnly == other._wallsOnly;
+ return _wallThicknessStart == other._wallThicknessStart && _wallsOnly == other._wallsOnly;
}
public override bool Equals(object obj)
@@ -134,7 +148,7 @@ namespace UVtools.Core.Operations
{
unchecked
{
- return ((int) _wallThickness * 397) ^ _wallsOnly.GetHashCode();
+ return ((int) _wallThicknessStart * 397) ^ _wallsOnly.GetHashCode();
}
}
diff --git a/UVtools.Core/UVtools.Core.csproj b/UVtools.Core/UVtools.Core.csproj
index d7b51a1..566debb 100644
--- a/UVtools.Core/UVtools.Core.csproj
+++ b/UVtools.Core/UVtools.Core.csproj
@@ -10,7 +10,7 @@
https://github.com/sn4k3/UVtools
https://github.com/sn4k3/UVtools
MSLA/DLP, file analysis, repair, conversion and manipulation
- 1.3.4
+ 1.3.5
Copyright © 2020 PTRTECH
UVtools.png
AnyCPU;x64
diff --git a/UVtools.GUI/Controls/Tools/CtrlToolMorph.cs b/UVtools.GUI/Controls/Tools/CtrlToolMorph.cs
index 991f382..84f38a7 100644
--- a/UVtools.GUI/Controls/Tools/CtrlToolMorph.cs
+++ b/UVtools.GUI/Controls/Tools/CtrlToolMorph.cs
@@ -36,7 +36,7 @@ namespace UVtools.GUI.Controls.Tools
base.UpdateOperation();
Operation.IterationsStart = (uint) nmIterationsStart.Value;
Operation.IterationsEnd = (uint) nmIterationsEnd.Value;
- Operation.FadeInOut = cbIterationsFade.Checked;
+ Operation.Chamfer = cbIterationsFade.Checked;
Operation.MorphOperation = (MorphOp)((StringTag) cbMorphOperation.SelectedItem).Tag;
Operation.Kernel.Anchor = ctrlKernel.KernelAnchor;
Operation.Kernel.Matrix = ctrlKernel.GetMatrix();
diff --git a/UVtools.GUI/Controls/Tools/CtrlToolPixelDimming.cs b/UVtools.GUI/Controls/Tools/CtrlToolPixelDimming.cs
index f9cfbf3..0b22734 100644
--- a/UVtools.GUI/Controls/Tools/CtrlToolPixelDimming.cs
+++ b/UVtools.GUI/Controls/Tools/CtrlToolPixelDimming.cs
@@ -43,7 +43,7 @@ namespace UVtools.GUI.Controls.Tools
public override bool UpdateOperation()
{
base.UpdateOperation();
- Operation.WallThickness = (uint) nmBorderSize.Value;
+ Operation.WallThicknessStart = (uint) nmBorderSize.Value;
Operation.WallsOnly = cbDimsOnlyBorders.Checked;
diff --git a/UVtools.InstallerMM/UVtools.InstallerMM.wxs b/UVtools.InstallerMM/UVtools.InstallerMM.wxs
index ad09b47..2d577ec 100644
--- a/UVtools.InstallerMM/UVtools.InstallerMM.wxs
+++ b/UVtools.InstallerMM/UVtools.InstallerMM.wxs
@@ -1003,29 +1003,53 @@
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/UVtools.WPF/Controls/Tools/ToolLayerReHeightControl.axaml.cs b/UVtools.WPF/Controls/Tools/ToolLayerReHeightControl.axaml.cs
index feb5e56..09d3ebb 100644
--- a/UVtools.WPF/Controls/Tools/ToolLayerReHeightControl.axaml.cs
+++ b/UVtools.WPF/Controls/Tools/ToolLayerReHeightControl.axaml.cs
@@ -8,7 +8,7 @@ namespace UVtools.WPF.Controls.Tools
{
public OperationLayerReHeight Operation => BaseOperation as OperationLayerReHeight;
- public OperationLayerReHeight.OperationLayerReHeightItem[] Presets { get; } = OperationLayerReHeight.GetItems(
+ public OperationLayerReHeight.OperationLayerReHeightItem[] Presets => OperationLayerReHeight.GetItems(
App.SlicerFile.LayerCount,
(decimal)App.SlicerFile.LayerHeight);
diff --git a/UVtools.WPF/Controls/Tools/ToolMorphControl.axaml b/UVtools.WPF/Controls/Tools/ToolMorphControl.axaml
index 27f5d8f..f9297f2 100644
--- a/UVtools.WPF/Controls/Tools/ToolMorphControl.axaml
+++ b/UVtools.WPF/Controls/Tools/ToolMorphControl.axaml
@@ -10,7 +10,7 @@
@@ -30,19 +30,19 @@
+ IsEnabled="{Binding Operation.Chamfer}"/>
diff --git a/UVtools.WPF/Controls/Tools/ToolPixelDimmingControl.axaml b/UVtools.WPF/Controls/Tools/ToolPixelDimmingControl.axaml
index 2dd9dbe..9119b55 100644
--- a/UVtools.WPF/Controls/Tools/ToolPixelDimmingControl.axaml
+++ b/UVtools.WPF/Controls/Tools/ToolPixelDimmingControl.axaml
@@ -14,11 +14,33 @@
Minimum="0"
Maximum="1000"
Width="80"
- Value="{Binding Operation.WallThickness}"
+ Value="{Binding Operation.WallThicknessStart}"
+ />
+
+
+
+
+
+
(nameof(layer.LiftSpeed), $"{layer.LiftSpeed.ToString(CultureInfo.InvariantCulture)}mm/min"));
if (SlicerFile.PrintParameterPerLayerModifiers.Contains(FileFormat.PrintParameterModifier.RetractSpeed))
- CurrentLayerProperties.Add(new StringTag(nameof(layer.RetractSpeed), $"{layer.RetractSpeed.ToString(CultureInfo.InvariantCulture)}mm/min"));
+ CurrentLayerProperties.Add(new StringTag(nameof(layer.RetractSpeed),
+ $"{layer.RetractSpeed.ToString(CultureInfo.InvariantCulture)}mm/min"));
if (SlicerFile.PrintParameterPerLayerModifiers.Contains(FileFormat.PrintParameterModifier.LayerOffTime))
- CurrentLayerProperties.Add(new StringTag(nameof(layer.LayerOffTime), $"{layer.LayerOffTime.ToString(CultureInfo.InvariantCulture)}s"));
+ CurrentLayerProperties.Add(new StringTag(nameof(layer.LayerOffTime),
+ $"{layer.LayerOffTime.ToString(CultureInfo.InvariantCulture)}s"));
if (SlicerFile.PrintParameterPerLayerModifiers.Contains(FileFormat.PrintParameterModifier.LightPWM))
CurrentLayerProperties.Add(new StringTag(nameof(layer.LightPWM), layer.LightPWM.ToString()));
}
diff --git a/UVtools.WPF/UVtools.WPF.csproj b/UVtools.WPF/UVtools.WPF.csproj
index bbc8ed9..70be849 100644
--- a/UVtools.WPF/UVtools.WPF.csproj
+++ b/UVtools.WPF/UVtools.WPF.csproj
@@ -12,7 +12,7 @@
LICENSE
https://github.com/sn4k3/UVtools
Git
- 1.3.4
+ 1.3.5