mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-06 14:37:29 -06:00
Now using ThreeMFWriter to save PCB files
CURA-11561
This commit is contained in:
parent
38b67f8015
commit
b931029f1c
14 changed files with 207 additions and 545 deletions
130
plugins/3MFWriter/SettingsExportModel.py
Normal file
130
plugins/3MFWriter/SettingsExportModel.py
Normal file
|
@ -0,0 +1,130 @@
|
|||
# Copyright (c) 2024 Ultimaker B.V.
|
||||
# Cura is released under the terms of the LGPLv3 or higher.
|
||||
|
||||
from dataclasses import asdict
|
||||
from typing import Optional, cast, List, Dict, Pattern, Set
|
||||
|
||||
from PyQt6.QtCore import QObject, pyqtProperty
|
||||
|
||||
from UM.Settings.SettingDefinition import SettingDefinition
|
||||
from UM.Settings.InstanceContainer import InstanceContainer
|
||||
from UM.Settings.SettingFunction import SettingFunction
|
||||
|
||||
from cura.CuraApplication import CuraApplication
|
||||
from cura.Settings.ExtruderManager import ExtruderManager
|
||||
from cura.Settings.GlobalStack import GlobalStack
|
||||
|
||||
from .SettingsExportGroup import SettingsExportGroup
|
||||
from .SettingExport import SettingExport
|
||||
|
||||
|
||||
class SettingsExportModel(QObject):
|
||||
|
||||
EXPORTABLE_SETTINGS = {'infill_sparse_density',
|
||||
'adhesion_type',
|
||||
'support_enable',
|
||||
'infill_pattern',
|
||||
'support_type',
|
||||
'support_structure',
|
||||
'support_angle',
|
||||
'support_infill_rate',
|
||||
'ironing_enabled',
|
||||
'fill_outline_gaps',
|
||||
'coasting_enable',
|
||||
'skin_monotonic',
|
||||
'z_seam_position',
|
||||
'infill_before_walls',
|
||||
'ironing_only_highest_layer',
|
||||
'xy_offset',
|
||||
'adaptive_layer_height_enabled',
|
||||
'brim_gap',
|
||||
'support_offset',
|
||||
'brim_outside_only',
|
||||
'magic_spiralize',
|
||||
'slicing_tolerance',
|
||||
'outer_inset_first',
|
||||
'magic_fuzzy_skin_outside_only',
|
||||
'conical_overhang_enabled',
|
||||
'min_infill_area',
|
||||
'small_hole_max_size',
|
||||
'magic_mesh_surface_mode',
|
||||
'carve_multiple_volumes',
|
||||
'meshfix_union_all_remove_holes',
|
||||
'support_tree_rest_preference',
|
||||
'small_feature_max_length',
|
||||
'draft_shield_enabled',
|
||||
'brim_smart_ordering',
|
||||
'ooze_shield_enabled',
|
||||
'bottom_skin_preshrink',
|
||||
'skin_edge_support_thickness',
|
||||
'alternate_carve_order',
|
||||
'top_skin_preshrink',
|
||||
'interlocking_enable'}
|
||||
|
||||
def __init__(self, parent = None):
|
||||
super().__init__(parent)
|
||||
self._settings_groups = []
|
||||
|
||||
application = CuraApplication.getInstance()
|
||||
|
||||
# Display global settings
|
||||
global_stack = application.getGlobalContainerStack()
|
||||
self._settings_groups.append(SettingsExportGroup(global_stack,
|
||||
"Global settings",
|
||||
SettingsExportGroup.Category.Global,
|
||||
self._exportSettings(global_stack)))
|
||||
|
||||
# Display per-extruder settings
|
||||
extruders_stacks = ExtruderManager.getInstance().getUsedExtruderStacks()
|
||||
for extruder_stack in extruders_stacks:
|
||||
color = ""
|
||||
if extruder_stack.material:
|
||||
color = extruder_stack.material.getMetaDataEntry("color_code")
|
||||
|
||||
self._settings_groups.append(SettingsExportGroup(extruder_stack,
|
||||
"Extruder settings",
|
||||
SettingsExportGroup.Category.Extruder,
|
||||
self._exportSettings(extruder_stack),
|
||||
extruder_index=extruder_stack.position,
|
||||
extruder_color=color))
|
||||
|
||||
# Display per-model settings
|
||||
scene_root = application.getController().getScene().getRoot()
|
||||
for scene_node in scene_root.getChildren():
|
||||
per_model_stack = scene_node.callDecoration("getStack")
|
||||
if per_model_stack is not None:
|
||||
self._settings_groups.append(SettingsExportGroup(per_model_stack,
|
||||
"Model settings",
|
||||
SettingsExportGroup.Category.Model,
|
||||
self._exportSettings(per_model_stack),
|
||||
scene_node.getName()))
|
||||
|
||||
@pyqtProperty(list, constant=True)
|
||||
def settingsGroups(self) -> List[SettingsExportGroup]:
|
||||
return self._settings_groups
|
||||
|
||||
@staticmethod
|
||||
def _exportSettings(settings_stack):
|
||||
user_settings_container = settings_stack.getTop()
|
||||
user_keys = user_settings_container.getAllKeys()
|
||||
|
||||
settings_export = []
|
||||
|
||||
for setting_to_export in user_keys:
|
||||
label = settings_stack.getProperty(setting_to_export, "label")
|
||||
value = settings_stack.getProperty(setting_to_export, "value")
|
||||
unit = settings_stack.getProperty(setting_to_export, "unit")
|
||||
|
||||
setting_type = settings_stack.getProperty(setting_to_export, "type")
|
||||
if setting_type is not None:
|
||||
# This is not very good looking, but will do for now
|
||||
value = SettingDefinition.settingValueToString(setting_type, value) + " " + unit
|
||||
else:
|
||||
value = str(value)
|
||||
|
||||
settings_export.append(SettingExport(setting_to_export,
|
||||
label,
|
||||
value,
|
||||
setting_to_export in SettingsExportModel.EXPORTABLE_SETTINGS))
|
||||
|
||||
return settings_export
|
Loading…
Add table
Add a link
Reference in a new issue