- Panelize Tool - add a new option for the panels of type Geometry named Path Optimiztion. If the checkbox is checked then all the LineStrings that are overlapped in the resulting multigeo Geometry panel object will keep only one of the paths thus minimizing the tool cuts.

This commit is contained in:
Marius Stanciu
2020-06-18 18:50:02 +03:00
committed by Marius
parent 7be4d98172
commit 8dc4eecbf4
5 changed files with 92 additions and 26 deletions

View File

@@ -437,6 +437,7 @@ class PreferencesUIManager:
"tools_panelize_spacing_rows": self.ui.tools_defaults_form.tools_panelize_group.pspacing_rows,
"tools_panelize_columns": self.ui.tools_defaults_form.tools_panelize_group.pcolumns,
"tools_panelize_rows": self.ui.tools_defaults_form.tools_panelize_group.prows,
"tools_panelize_optimization": self.ui.tools_defaults_form.tools_panelize_group.poptimization_cb,
"tools_panelize_constrain": self.ui.tools_defaults_form.tools_panelize_group.pconstrain_cb,
"tools_panelize_constrainx": self.ui.tools_defaults_form.tools_panelize_group.px_width_entry,
"tools_panelize_constrainy": self.ui.tools_defaults_form.tools_panelize_group.py_height_entry,

View File

@@ -106,6 +106,16 @@ class ToolsPanelizePrefGroupUI(OptionsGroupUI):
grid0.addWidget(self.panel_type_label, 4, 0)
grid0.addWidget(self.panel_type_radio, 4, 1)
# Path optimization
self.poptimization_cb = FCCheckBox('%s' % _("Path Optimization"))
self.poptimization_cb.setToolTip(
_("Active only for Geometry panel type.\n"
"When checked the application will find\n"
"any two overlapping Line elements in the panel\n"
"and remove the overlapping parts, keeping only one of them.")
)
grid0.addWidget(self.poptimization_cb, 5, 0, 1, 2)
# ## Constrains
self.pconstrain_cb = FCCheckBox('%s:' % _("Constrain within"))
self.pconstrain_cb.setToolTip(
@@ -115,7 +125,7 @@ class ToolsPanelizePrefGroupUI(OptionsGroupUI):
"the final panel will have as many columns and rows as\n"
"they fit completely within selected area.")
)
grid0.addWidget(self.pconstrain_cb, 5, 0, 1, 2)
grid0.addWidget(self.pconstrain_cb, 10, 0, 1, 2)
self.px_width_entry = FCDoubleSpinner()
self.px_width_entry.set_range(0.000001, 9999.9999)
@@ -127,8 +137,8 @@ class ToolsPanelizePrefGroupUI(OptionsGroupUI):
_("The width (DX) within which the panel must fit.\n"
"In current units.")
)
grid0.addWidget(self.x_width_lbl, 6, 0)
grid0.addWidget(self.px_width_entry, 6, 1)
grid0.addWidget(self.x_width_lbl, 12, 0)
grid0.addWidget(self.px_width_entry, 12, 1)
self.py_height_entry = FCDoubleSpinner()
self.py_height_entry.set_range(0.000001, 9999.9999)
@@ -140,7 +150,7 @@ class ToolsPanelizePrefGroupUI(OptionsGroupUI):
_("The height (DY)within which the panel must fit.\n"
"In current units.")
)
grid0.addWidget(self.y_height_lbl, 7, 0)
grid0.addWidget(self.py_height_entry, 7, 1)
grid0.addWidget(self.y_height_lbl, 17, 0)
grid0.addWidget(self.py_height_entry, 17, 1)
self.layout.addStretch()