Skip to content

Commit

Permalink
feat: add settings for auto fan speed adjustments
Browse files Browse the repository at this point in the history
  • Loading branch information
lvjonok committed Feb 16, 2025
1 parent 582b921 commit 38177e1
Show file tree
Hide file tree
Showing 3 changed files with 80 additions and 0 deletions.
4 changes: 4 additions & 0 deletions settings.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,10 @@ slicing:
m32: 0.0
m33: 1.0
wall_thickness: 0.8
auto_fan:
enabled: false
area: 0.1
fan_speed: 100
supports:
enabled: true
xy_offset: 0.3
Expand Down
7 changes: 7 additions & 0 deletions src/locales.py
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,10 @@ class Locale:

ShouldCreateWalls = "Create wall in support"

AutoFanEnabled = "Enable auto fan speed adjustment"
AutoFanArea = "Auto fan max area, mm²:"
AutoFanSpeed = "Auto fan speed:"

def __init__(self, **entries):
self.__dict__.update(entries)

Expand Down Expand Up @@ -312,6 +316,9 @@ def __init__(self, **entries):
WarningPathNotClosed="При разрезании модели были обнаружены незамкнутые участки! Проверьте корректность расположения фигур",
CannotDropHere="Фигура не может быть перенесена сюда",
ShouldCreateWalls="Создавать стенки в поддержках",
AutoFanEnabled="Включить автоматическое управление обдувом",
AutoFanArea="Максимальная площадь для автоматического обдува, мм²:",
AutoFanSpeed="Скорость автоматического обдува:",
),
}

Expand Down
69 changes: 69 additions & 0 deletions src/settings_widget.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,9 @@ class SettingsWidget(QWidget):
"pressure_advance",
"random_layer_start",
"is_wall_outside_in",
"auto_fan_enabled",
"auto_fan_area",
"auto_fan_speed",
# TODO: add separate dummy setting to mark the beginning of supports settings
"supports_on",
"support_density",
Expand Down Expand Up @@ -1478,6 +1481,72 @@ def on_change():
"label": create_walls_label,
"checkbox": create_walls_box,
}
elif name == "auto_fan_enabled":
self.ensure_sett("slicing.auto_fan.enabled")

auto_fan_enabled_label = QLabel(self.locale.AutoFanEnabled)
auto_fan_enabled_box = QCheckBox()
if self.sett().slicing.auto_fan.enabled:
auto_fan_enabled_box.setCheckState(QtCore.Qt.Checked)

self.panel.addWidget(auto_fan_enabled_label, self.next_row, 1)
self.panel.addWidget(
auto_fan_enabled_box, self.cur_row, 2, 1, self.col2_cells
)

def on_change():
self.sett().slicing.auto_fan.enabled = auto_fan_enabled_box.isChecked()

auto_fan_enabled_box.stateChanged.connect(on_change)

self.__elements[name] = {
"label": auto_fan_enabled_label,
"checkbox": auto_fan_enabled_box,
}
elif name == "auto_fan_area":
self.ensure_sett("slicing.auto_fan.area")

auto_fan_area_label = QLabel(self.locale.AutoFanArea)
auto_fan_area_value = LineEdit(str(self.sett().slicing.auto_fan.area))
auto_fan_area_value.setValidator(self.intValidator)
self.panel.addWidget(auto_fan_area_label, self.next_row, 1)
self.panel.addWidget(
auto_fan_area_value, self.cur_row, 2, 1, self.col2_cells
)

def on_change():
self.sett().slicing.auto_fan.area = self.__smart_float(
auto_fan_area_value.text()
)

auto_fan_area_value.textChanged.connect(on_change)

self.__elements[name] = {
"label": auto_fan_area_label,
"edit": auto_fan_area_value,
}
elif name == "auto_fan_speed":
self.ensure_sett("slicing.auto_fan.fan_speed")

auto_fan_speed_label = QLabel(self.locale.AutoFanSpeed)
auto_fan_speed_value = LineEdit(str(self.sett().slicing.auto_fan.fan_speed))
auto_fan_speed_value.setValidator(self.intValidator)
self.panel.addWidget(auto_fan_speed_label, self.next_row, 1)
self.panel.addWidget(
auto_fan_speed_value, self.cur_row, 2, 1, self.col2_cells
)

def on_change():
self.sett().slicing.auto_fan.fan_speed = self.__smart_float(
auto_fan_speed_value.text()
)

auto_fan_speed_value.textChanged.connect(on_change)

self.__elements[name] = {
"label": auto_fan_speed_label,
"edit": auto_fan_speed_value,
}

# add row index for element
self.__elements[name]["row_idx"] = self.cur_row
Expand Down

0 comments on commit 38177e1

Please sign in to comment.