mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-08-14 07:45:58 +08:00
Merge remote-tracking branch 'upstream/master'
This commit is contained in:
commit
a2d327af7f
2
.gitignore
vendored
2
.gitignore
vendored
@ -45,6 +45,8 @@ plugins/cura-big-flame-graph
|
||||
plugins/cura-siemensnx-plugin
|
||||
plugins/CuraVariSlicePlugin
|
||||
plugins/CuraLiveScriptingPlugin
|
||||
plugins/CuraPrintProfileCreator
|
||||
plugins/OctoPrintPlugin
|
||||
|
||||
#Build stuff
|
||||
CMakeCache.txt
|
||||
|
@ -3,7 +3,7 @@ Cura
|
||||
|
||||
This is the new, shiny frontend for Cura. [daid/Cura](https://github.com/daid/Cura.git) is the old legacy Cura that everyone knows and loves/hates.
|
||||
|
||||
We re-worked the whole GUI code at Ultimaker, because the old code started to become a unmaintainable.
|
||||
We re-worked the whole GUI code at Ultimaker, because the old code started to become unmaintainable.
|
||||
|
||||
|
||||
Logging Issues
|
||||
|
@ -1,6 +1,5 @@
|
||||
# Copyright (c) 2017 Ultimaker B.V.
|
||||
# Cura is released under the terms of the LGPLv3 or higher.
|
||||
|
||||
from PyQt5.QtNetwork import QLocalServer
|
||||
from PyQt5.QtNetwork import QLocalSocket
|
||||
|
||||
@ -32,6 +31,7 @@ from UM.Operations.AddSceneNodeOperation import AddSceneNodeOperation
|
||||
from UM.Operations.RemoveSceneNodeOperation import RemoveSceneNodeOperation
|
||||
from UM.Operations.GroupedOperation import GroupedOperation
|
||||
from UM.Operations.SetTransformOperation import SetTransformOperation
|
||||
|
||||
from cura.Arrange import Arrange
|
||||
from cura.ShapeArray import ShapeArray
|
||||
from cura.ConvexHullDecorator import ConvexHullDecorator
|
||||
@ -128,6 +128,7 @@ class CuraApplication(QtApplication):
|
||||
stacksValidationFinished = pyqtSignal() # Emitted whenever a validation is finished
|
||||
|
||||
def __init__(self):
|
||||
|
||||
# this list of dir names will be used by UM to detect an old cura directory
|
||||
for dir_name in ["extruders", "machine_instances", "materials", "plugins", "quality", "user", "variants"]:
|
||||
Resources.addExpectedDirNameInData(dir_name)
|
||||
@ -156,7 +157,6 @@ class CuraApplication(QtApplication):
|
||||
|
||||
SettingDefinition.addSettingType("extruder", None, str, Validator)
|
||||
SettingDefinition.addSettingType("optional_extruder", None, str, None)
|
||||
|
||||
SettingDefinition.addSettingType("[int]", None, str, None)
|
||||
|
||||
SettingFunction.registerOperator("extruderValues", ExtruderManager.getExtruderValues)
|
||||
@ -181,7 +181,8 @@ class CuraApplication(QtApplication):
|
||||
ContainerRegistry.getInstance().addResourceType(self.ResourceTypes.DefinitionChangesContainer)
|
||||
|
||||
## Initialise the version upgrade manager with Cura's storage paths.
|
||||
import UM.VersionUpgradeManager #Needs to be here to prevent circular dependencies.
|
||||
# Needs to be here to prevent circular dependencies.
|
||||
import UM.VersionUpgradeManager
|
||||
|
||||
UM.VersionUpgradeManager.VersionUpgradeManager.getInstance().setCurrentVersions(
|
||||
{
|
||||
@ -227,7 +228,9 @@ class CuraApplication(QtApplication):
|
||||
"TranslateTool",
|
||||
"FileLogger",
|
||||
"XmlMaterialProfile",
|
||||
"PluginBrowser"
|
||||
"PluginBrowser",
|
||||
"PrepareStage",
|
||||
"MonitorStage"
|
||||
])
|
||||
self._physics = None
|
||||
self._volume = None
|
||||
@ -388,7 +391,6 @@ class CuraApplication(QtApplication):
|
||||
def needToShowUserAgreement(self):
|
||||
return self._need_to_show_user_agreement
|
||||
|
||||
|
||||
def setNeedToShowUserAgreement(self, set_value = True):
|
||||
self._need_to_show_user_agreement = set_value
|
||||
|
||||
@ -666,14 +668,14 @@ class CuraApplication(QtApplication):
|
||||
|
||||
controller = self.getController()
|
||||
|
||||
controller.setActiveStage("PrepareStage")
|
||||
controller.setActiveView("SolidView")
|
||||
|
||||
controller.setCameraTool("CameraTool")
|
||||
controller.setSelectionTool("SelectionTool")
|
||||
|
||||
t = controller.getTool("TranslateTool")
|
||||
if t:
|
||||
t.setEnabledAxis([ToolHandle.XAxis, ToolHandle.YAxis,ToolHandle.ZAxis])
|
||||
t.setEnabledAxis([ToolHandle.XAxis, ToolHandle.YAxis, ToolHandle.ZAxis])
|
||||
|
||||
Selection.selectionChanged.connect(self.onSelectionChanged)
|
||||
|
||||
@ -717,6 +719,7 @@ class CuraApplication(QtApplication):
|
||||
run_headless = self.getCommandLineOption("headless", False)
|
||||
if not run_headless:
|
||||
self.initializeEngine()
|
||||
controller.setActiveStage("PrepareStage")
|
||||
|
||||
if run_headless or self._engine.rootObjects:
|
||||
self.closeSplash()
|
||||
|
@ -356,14 +356,16 @@ class ExtruderManager(QObject):
|
||||
# \return \type{List[ContainerStack]} a list of
|
||||
def getActiveExtruderStacks(self) -> List["ExtruderStack"]:
|
||||
global_stack = Application.getInstance().getGlobalContainerStack()
|
||||
if not global_stack:
|
||||
return None
|
||||
|
||||
result = []
|
||||
machine_extruder_count = global_stack.getProperty("machine_extruder_count", "value")
|
||||
|
||||
if global_stack and global_stack.getId() in self._extruder_trains:
|
||||
if global_stack.getId() in self._extruder_trains:
|
||||
for extruder in sorted(self._extruder_trains[global_stack.getId()]):
|
||||
result.append(self._extruder_trains[global_stack.getId()][extruder])
|
||||
|
||||
machine_extruder_count = global_stack.getProperty("machine_extruder_count", "value")
|
||||
|
||||
return result[:machine_extruder_count]
|
||||
|
||||
def __globalContainerStackChanged(self) -> None:
|
||||
|
@ -498,6 +498,7 @@ class MachineManager(QObject):
|
||||
@pyqtProperty("QVariantList", notify=activeVariantChanged)
|
||||
def activeVariantNames(self) -> List[str]:
|
||||
result = []
|
||||
|
||||
active_stacks = ExtruderManager.getInstance().getActiveGlobalAndExtruderStacks()
|
||||
if active_stacks is not None:
|
||||
for stack in active_stacks:
|
||||
@ -510,6 +511,7 @@ class MachineManager(QObject):
|
||||
@pyqtProperty("QVariantList", notify = activeMaterialChanged)
|
||||
def activeMaterialNames(self) -> List[str]:
|
||||
result = []
|
||||
|
||||
active_stacks = ExtruderManager.getInstance().getActiveGlobalAndExtruderStacks()
|
||||
if active_stacks is not None:
|
||||
for stack in active_stacks:
|
||||
@ -530,6 +532,7 @@ class MachineManager(QObject):
|
||||
@pyqtProperty("QVariantMap", notify = activeVariantChanged)
|
||||
def allActiveVariantIds(self) -> Dict[str, str]:
|
||||
result = {}
|
||||
|
||||
active_stacks = ExtruderManager.getInstance().getActiveExtruderStacks()
|
||||
if active_stacks is not None: #If we have a global stack.
|
||||
for stack in active_stacks:
|
||||
@ -548,10 +551,8 @@ class MachineManager(QObject):
|
||||
@pyqtProperty("QVariantMap", notify = activeMaterialChanged)
|
||||
def allActiveMaterialIds(self) -> Dict[str, str]:
|
||||
result = {}
|
||||
|
||||
active_stacks = ExtruderManager.getInstance().getActiveExtruderStacks()
|
||||
|
||||
result[self._global_container_stack.getId()] = self._global_container_stack.material.getId()
|
||||
|
||||
if active_stacks is not None: # If we have extruder stacks
|
||||
for stack in active_stacks:
|
||||
material_container = stack.material
|
||||
|
22
cura/Stages/CuraStage.py
Normal file
22
cura/Stages/CuraStage.py
Normal file
@ -0,0 +1,22 @@
|
||||
# Copyright (c) 2017 Ultimaker B.V.
|
||||
# Cura is released under the terms of the LGPLv3 or higher.
|
||||
from PyQt5.QtCore import pyqtProperty, QUrl, QObject
|
||||
|
||||
from UM.Stage import Stage
|
||||
|
||||
class CuraStage(Stage):
|
||||
|
||||
def __init__(self, parent = None):
|
||||
super().__init__(parent)
|
||||
|
||||
@pyqtProperty(str, constant = True)
|
||||
def stageId(self):
|
||||
return self.getPluginId()
|
||||
|
||||
@pyqtProperty(QUrl, constant = True)
|
||||
def mainComponent(self):
|
||||
return self.getDisplayComponent("main")
|
||||
|
||||
@pyqtProperty(QUrl, constant = True)
|
||||
def sidebarComponent(self):
|
||||
return self.getDisplayComponent("sidebar")
|
2
cura/Stages/__init__.py
Normal file
2
cura/Stages/__init__.py
Normal file
@ -0,0 +1,2 @@
|
||||
# Copyright (c) 2017 Ultimaker B.V.
|
||||
# Cura is released under the terms of the LGPLv3 or higher.
|
11
cura_app.py
11
cura_app.py
@ -12,7 +12,8 @@ from UM.Platform import Platform
|
||||
#WORKAROUND: GITHUB-88 GITHUB-385 GITHUB-612
|
||||
if Platform.isLinux(): # Needed for platform.linux_distribution, which is not available on Windows and OSX
|
||||
# For Ubuntu: https://bugs.launchpad.net/ubuntu/+source/python-qt4/+bug/941826
|
||||
if platform.linux_distribution()[0] in ("debian", "Ubuntu", "LinuxMint"): # TODO: Needs a "if X11_GFX == 'nvidia'" here. The workaround is only needed on Ubuntu+NVidia drivers. Other drivers are not affected, but fine with this fix.
|
||||
linux_distro_name = platform.linux_distribution()[0].lower()
|
||||
if linux_distro_name in ("debian", "ubuntu", "linuxmint", "fedora"): # TODO: Needs a "if X11_GFX == 'nvidia'" here. The workaround is only needed on Ubuntu+NVidia drivers. Other drivers are not affected, but fine with this fix.
|
||||
import ctypes
|
||||
from ctypes.util import find_library
|
||||
libGL = find_library("GL")
|
||||
@ -22,9 +23,10 @@ if Platform.isLinux(): # Needed for platform.linux_distribution, which is not av
|
||||
if Platform.isWindows() and hasattr(sys, "frozen"):
|
||||
try:
|
||||
del os.environ["PYTHONPATH"]
|
||||
except KeyError: pass
|
||||
except KeyError:
|
||||
pass
|
||||
|
||||
#WORKAROUND: GITHUB-704 GITHUB-708
|
||||
# WORKAROUND: GITHUB-704 GITHUB-708
|
||||
# It looks like setuptools creates a .pth file in
|
||||
# the default /usr/lib which causes the default site-packages
|
||||
# to be inserted into sys.path before PYTHONPATH.
|
||||
@ -45,6 +47,7 @@ def exceptHook(hook_type, value, traceback):
|
||||
_crash_handler = CrashHandler(hook_type, value, traceback)
|
||||
_crash_handler.show()
|
||||
|
||||
|
||||
sys.excepthook = exceptHook
|
||||
|
||||
# Workaround for a race condition on certain systems where there
|
||||
@ -75,7 +78,7 @@ faulthandler.enable()
|
||||
# Force an instance of CuraContainerRegistry to be created and reused later.
|
||||
cura.Settings.CuraContainerRegistry.CuraContainerRegistry.getInstance()
|
||||
|
||||
# This prestart up check is needed to determine if we should start the application at all.
|
||||
# This pre-start up check is needed to determine if we should start the application at all.
|
||||
if not cura.CuraApplication.CuraApplication.preStartUp():
|
||||
sys.exit(0)
|
||||
|
||||
|
@ -59,7 +59,9 @@ class ThreeMFWorkspaceWriter(WorkspaceWriter):
|
||||
version_file = zipfile.ZipInfo("Cura/version.ini")
|
||||
version_config_parser = configparser.ConfigParser()
|
||||
version_config_parser.add_section("versions")
|
||||
version_config_parser.set("versions", "cura_version", Application.getStaticVersion())
|
||||
version_config_parser.set("versions", "cura_version", Application.getInstance().getVersion())
|
||||
version_config_parser.set("versions", "build_type", Application.getInstance().getBuildType())
|
||||
version_config_parser.set("versions", "is_debug_mode", str(Application.getInstance().getIsDebugMode()))
|
||||
|
||||
version_file_string = StringIO()
|
||||
version_config_parser.write(version_file_string)
|
||||
|
@ -11,8 +11,20 @@ The existing Layer View has been updated in order to see a live simulation of al
|
||||
*Quick camera controls
|
||||
New buttons have been added to the interface that can quickly reposition the camera view of the buildplate.
|
||||
|
||||
*Increased processing speeds and performance
|
||||
A 5-10% speed increase when calculating normals, loading models and slicing.
|
||||
*Lock model on platform
|
||||
The move tool has a new option to lock a selected model to the platform.
|
||||
|
||||
*Faster profile switching speed
|
||||
Duplicating and removing a profile could take Ultimaker Cura quite some time, it now happens instantly.
|
||||
|
||||
*Faster printer selection
|
||||
Removing a printer from the library is now instant. No more unresponsive screens.
|
||||
|
||||
*Faster processing speed
|
||||
A 5 - 10 % speed increase when calculating normals, loading models, and slicing.
|
||||
|
||||
*Feedrate visualization
|
||||
Feedrate visualization has been added to the Layer view. Using this gives the user an idea of the print speeds per model part, allowing for better control over prints.
|
||||
|
||||
*Jogging
|
||||
It allows the printhead to be moved with on-screen controls. Contributed by fieldOfView.
|
||||
@ -52,8 +64,8 @@ If profile settings have been modified in recommended mode under custom mode, a
|
||||
- Fix for Ultimaker Cura engine crashes on certain models
|
||||
- Fix for Uninstalling previous versions of Cura on Windows platforms
|
||||
- Fix for displaying visible settings
|
||||
- Fix for loading legacy profiles
|
||||
- Fix for importing custom single extrusion profile
|
||||
- Fix for importing legacy .ini files
|
||||
- Prevent skipping user agreement dialog by pressing escape
|
||||
|
||||
[3.0.4]
|
||||
*Bug fixes
|
||||
@ -97,7 +109,7 @@ The build plate now shows graduations of 10 mm and 1 mm for easy model positioni
|
||||
Extruder tabs have become buttons and icons have been updated.
|
||||
|
||||
*Add an "Export to Cura" button in SOLIDWORKS
|
||||
SOLIDWORKS plugin can now be installed using an automatic installer.
|
||||
A macro can be added to your SOLIDWORKS installation that loads your model into Ultimaker Cura.
|
||||
|
||||
*Siemens NX macro
|
||||
When a user updates models in Siemens NX and clicks the button, the updated models replace the models opened in Ultimaker Cura.
|
||||
|
@ -61,7 +61,9 @@ class ProcessSlicedLayersJob(Job):
|
||||
|
||||
def run(self):
|
||||
start_time = time()
|
||||
if Application.getInstance().getController().getActiveView().getPluginId() == "SimulationView":
|
||||
view = Application.getInstance().getController().getActiveView()
|
||||
if view.getPluginId() == "SimulationView":
|
||||
view.resetLayerData()
|
||||
self._progress_message.show()
|
||||
Job.yieldThread()
|
||||
if self._abort_requested:
|
||||
@ -226,10 +228,6 @@ class ProcessSlicedLayersJob(Job):
|
||||
if self._progress_message:
|
||||
self._progress_message.setProgress(100)
|
||||
|
||||
view = Application.getInstance().getController().getActiveView()
|
||||
if view.getPluginId() == "SimulationView":
|
||||
view.resetLayerData()
|
||||
|
||||
if self._progress_message:
|
||||
self._progress_message.hide()
|
||||
|
||||
|
@ -22,7 +22,7 @@ Cura.MachineAction
|
||||
onModelChanged:
|
||||
{
|
||||
var extruderCount = base.extrudersModel.rowCount();
|
||||
base.extruderTabsCount = extruderCount > 1 ? extruderCount : 0;
|
||||
base.extruderTabsCount = extruderCount;
|
||||
}
|
||||
}
|
||||
|
||||
@ -241,7 +241,6 @@ Cura.MachineAction
|
||||
|
||||
UM.TooltipArea
|
||||
{
|
||||
visible: manager.definedExtruderCount > 1
|
||||
height: childrenRect.height
|
||||
width: childrenRect.width
|
||||
text: machineExtruderCountProvider.properties.description
|
||||
@ -291,15 +290,6 @@ Cura.MachineAction
|
||||
property var afterOnEditingFinished: manager.updateMaterialForDiameter
|
||||
property string label: catalog.i18nc("@label", "Material diameter")
|
||||
}
|
||||
Loader
|
||||
{
|
||||
id: nozzleSizeField
|
||||
visible: !Cura.MachineManager.hasVariants && machineExtruderCountProvider.properties.value == 1
|
||||
sourceComponent: numericTextFieldWithUnit
|
||||
property string settingKey: "machine_nozzle_size"
|
||||
property string label: catalog.i18nc("@label", "Nozzle size")
|
||||
property string unit: catalog.i18nc("@label", "mm")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
44
plugins/MonitorStage/MonitorMainView.qml
Normal file
44
plugins/MonitorStage/MonitorMainView.qml
Normal file
@ -0,0 +1,44 @@
|
||||
// Copyright (c) 2017 Ultimaker B.V.
|
||||
|
||||
import QtQuick 2.2
|
||||
import QtQuick.Controls 1.1
|
||||
|
||||
import UM 1.3 as UM
|
||||
import Cura 1.0 as Cura
|
||||
|
||||
Item
|
||||
{
|
||||
width: parent.width
|
||||
height: parent.height
|
||||
|
||||
// We show a nice overlay on the 3D viewer when the current output device has no monitor view
|
||||
Rectangle
|
||||
{
|
||||
id: viewportOverlay
|
||||
|
||||
color: UM.Theme.getColor("viewport_overlay")
|
||||
width: parent.width
|
||||
height: parent.height
|
||||
|
||||
MouseArea
|
||||
{
|
||||
anchors.fill: parent
|
||||
acceptedButtons: Qt.AllButtons
|
||||
onWheel: wheel.accepted = true
|
||||
}
|
||||
}
|
||||
|
||||
Loader
|
||||
{
|
||||
id: monitorViewComponent
|
||||
|
||||
width: parent.width
|
||||
height: parent.height
|
||||
|
||||
property real maximumWidth: parent.width
|
||||
property real maximumHeight: parent.height
|
||||
|
||||
sourceComponent: Cura.MachineManager.printerOutputDevices.length > 0 ? Cura.MachineManager.printerOutputDevices[0].monitorItem: null
|
||||
visible: sourceComponent != null
|
||||
}
|
||||
}
|
73
plugins/MonitorStage/MonitorStage.py
Normal file
73
plugins/MonitorStage/MonitorStage.py
Normal file
@ -0,0 +1,73 @@
|
||||
# Copyright (c) 2017 Ultimaker B.V.
|
||||
# Cura is released under the terms of the LGPLv3 or higher.
|
||||
import os.path
|
||||
from UM.Application import Application
|
||||
from UM.PluginRegistry import PluginRegistry
|
||||
from UM.Resources import Resources
|
||||
from cura.Stages.CuraStage import CuraStage
|
||||
|
||||
|
||||
## Stage for monitoring a 3D printing while it's printing.
|
||||
class MonitorStage(CuraStage):
|
||||
|
||||
def __init__(self, parent = None):
|
||||
super().__init__(parent)
|
||||
|
||||
# Wait until QML engine is created, otherwise creating the new QML components will fail
|
||||
Application.getInstance().engineCreatedSignal.connect(self._setComponents)
|
||||
|
||||
# Update the status icon when the output device is changed
|
||||
Application.getInstance().getOutputDeviceManager().activeDeviceChanged.connect(self._setIconSource)
|
||||
|
||||
def _setComponents(self):
|
||||
self._setMainOverlay()
|
||||
self._setSidebar()
|
||||
self._setIconSource()
|
||||
|
||||
def _setMainOverlay(self):
|
||||
main_component_path = os.path.join(PluginRegistry.getInstance().getPluginPath("MonitorStage"), "MonitorMainView.qml")
|
||||
self.addDisplayComponent("main", main_component_path)
|
||||
|
||||
def _setSidebar(self):
|
||||
# TODO: currently the sidebar component for prepare and monitor stages is the same, this will change with the printer output device refactor!
|
||||
sidebar_component_path = os.path.join(Resources.getPath(Application.getInstance().ResourceTypes.QmlFiles), "Sidebar.qml")
|
||||
self.addDisplayComponent("sidebar", sidebar_component_path)
|
||||
|
||||
def _setIconSource(self):
|
||||
if Application.getInstance().getTheme() is not None:
|
||||
icon_name = self._getActiveOutputDeviceStatusIcon()
|
||||
self.setIconSource(Application.getInstance().getTheme().getIcon(icon_name))
|
||||
|
||||
## Find the correct status icon depending on the active output device state
|
||||
def _getActiveOutputDeviceStatusIcon(self):
|
||||
output_device = Application.getInstance().getOutputDeviceManager().getActiveDevice()
|
||||
|
||||
if not output_device:
|
||||
return "tab_status_unknown"
|
||||
|
||||
if hasattr(output_device, "acceptsCommands") and not output_device.acceptsCommands:
|
||||
return "tab_status_unknown"
|
||||
|
||||
if not hasattr(output_device, "printerState") or not hasattr(output_device, "jobState"):
|
||||
return "tab_status_unknown"
|
||||
|
||||
# TODO: refactor to use enum instead of hardcoded strings?
|
||||
if output_device.printerState == "maintenance":
|
||||
return "tab_status_busy"
|
||||
|
||||
if output_device.jobState in ["printing", "pre_print", "pausing", "resuming"]:
|
||||
return "tab_status_busy"
|
||||
|
||||
if output_device.jobState == "wait_cleanup":
|
||||
return "tab_status_finished"
|
||||
|
||||
if output_device.jobState in ["ready", ""]:
|
||||
return "tab_status_connected"
|
||||
|
||||
if output_device.jobState == "paused":
|
||||
return "tab_status_paused"
|
||||
|
||||
if output_device.jobState == "error":
|
||||
return "tab_status_stopped"
|
||||
|
||||
return "tab_status_unknown"
|
20
plugins/MonitorStage/__init__.py
Normal file
20
plugins/MonitorStage/__init__.py
Normal file
@ -0,0 +1,20 @@
|
||||
# Copyright (c) 2017 Ultimaker B.V.
|
||||
# Cura is released under the terms of the LGPLv3 or higher.
|
||||
|
||||
from . import MonitorStage
|
||||
|
||||
from UM.i18n import i18nCatalog
|
||||
i18n_catalog = i18nCatalog("cura")
|
||||
|
||||
def getMetaData():
|
||||
return {
|
||||
"stage": {
|
||||
"name": i18n_catalog.i18nc("@item:inmenu", "Monitor"),
|
||||
"weight": 1
|
||||
}
|
||||
}
|
||||
|
||||
def register(app):
|
||||
return {
|
||||
"stage": MonitorStage.MonitorStage()
|
||||
}
|
8
plugins/MonitorStage/plugin.json
Normal file
8
plugins/MonitorStage/plugin.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"name": "Monitor Stage",
|
||||
"author": "Ultimaker B.V.",
|
||||
"version": "1.0.0",
|
||||
"description": "Provides a monitor stage in Cura.",
|
||||
"api": 4,
|
||||
"i18n-catalog": "cura"
|
||||
}
|
18
plugins/PrepareStage/PrepareStage.py
Normal file
18
plugins/PrepareStage/PrepareStage.py
Normal file
@ -0,0 +1,18 @@
|
||||
# Copyright (c) 2017 Ultimaker B.V.
|
||||
# Cura is released under the terms of the LGPLv3 or higher.
|
||||
import os.path
|
||||
from UM.Application import Application
|
||||
from UM.Resources import Resources
|
||||
from cura.Stages.CuraStage import CuraStage
|
||||
|
||||
|
||||
## Stage for preparing model (slicing).
|
||||
class PrepareStage(CuraStage):
|
||||
|
||||
def __init__(self, parent = None):
|
||||
super().__init__(parent)
|
||||
Application.getInstance().engineCreatedSignal.connect(self._engineCreated)
|
||||
|
||||
def _engineCreated(self):
|
||||
sidebar_component_path = os.path.join(Resources.getPath(Application.getInstance().ResourceTypes.QmlFiles), "Sidebar.qml")
|
||||
self.addDisplayComponent("sidebar", sidebar_component_path)
|
20
plugins/PrepareStage/__init__.py
Normal file
20
plugins/PrepareStage/__init__.py
Normal file
@ -0,0 +1,20 @@
|
||||
# Copyright (c) 2017 Ultimaker B.V.
|
||||
# Cura is released under the terms of the LGPLv3 or higher.
|
||||
|
||||
from . import PrepareStage
|
||||
|
||||
from UM.i18n import i18nCatalog
|
||||
i18n_catalog = i18nCatalog("cura")
|
||||
|
||||
def getMetaData():
|
||||
return {
|
||||
"stage": {
|
||||
"name": i18n_catalog.i18nc("@item:inmenu", "Prepare"),
|
||||
"weight": 0
|
||||
}
|
||||
}
|
||||
|
||||
def register(app):
|
||||
return {
|
||||
"stage": PrepareStage.PrepareStage()
|
||||
}
|
8
plugins/PrepareStage/plugin.json
Normal file
8
plugins/PrepareStage/plugin.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"name": "Prepare Stage",
|
||||
"author": "Ultimaker B.V.",
|
||||
"version": "1.0.0",
|
||||
"description": "Provides a prepare stage in Cura.",
|
||||
"api": 4,
|
||||
"i18n-catalog": "cura"
|
||||
}
|
@ -39,7 +39,7 @@ class SliceInfo(Extension):
|
||||
Preferences.getInstance().addPreference("info/send_slice_info", True)
|
||||
Preferences.getInstance().addPreference("info/asked_send_slice_info", False)
|
||||
|
||||
if not Preferences.getInstance().getValue("info/asked_send_slice_info"):
|
||||
if not Preferences.getInstance().getValue("info/asked_send_slice_info") and Preferences.getInstance().getValue("info/send_slice_info"):
|
||||
self.send_slice_info_message = Message(catalog.i18nc("@info", "Cura collects anonymised slicing statistics. You can disable this in the preferences."),
|
||||
lifetime = 0,
|
||||
dismissable = False,
|
||||
|
@ -698,7 +698,7 @@ class NetworkClusterPrinterOutputDevice(NetworkPrinterOutputDevice.NetworkPrinte
|
||||
if self._reply:
|
||||
self._reply.abort()
|
||||
self._stage = OutputStage.ready
|
||||
Application.getInstance().showPrintMonitor.emit(False)
|
||||
Application.getInstance().getController().setActiveStage("PrepareStage")
|
||||
|
||||
@pyqtSlot(int, result=str)
|
||||
def formatDuration(self, seconds):
|
||||
|
@ -672,7 +672,7 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice):
|
||||
Logger.log("d", "Attempting to perform an action without authentication for printer %s. Auth state is %s", self._key, self._authentication_state)
|
||||
return
|
||||
|
||||
Application.getInstance().showPrintMonitor.emit(True)
|
||||
Application.getInstance().getController().setActiveStage("MonitorStage")
|
||||
self._print_finished = True
|
||||
self.writeStarted.emit(self)
|
||||
self._gcode = getattr(Application.getInstance().getController().getScene(), "gcode_list")
|
||||
@ -767,7 +767,7 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice):
|
||||
if button == QMessageBox.Yes:
|
||||
self.startPrint()
|
||||
else:
|
||||
Application.getInstance().showPrintMonitor.emit(False)
|
||||
Application.getInstance().getController().setActiveStage("PrepareStage")
|
||||
# For some unknown reason Cura on OSX will hang if we do the call back code
|
||||
# immediately without first returning and leaving QML's event system.
|
||||
QTimer.singleShot(100, delayedCallback)
|
||||
@ -850,7 +850,7 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice):
|
||||
self._write_finished = True # post_reply does not always exist, so make sure we unblock writing
|
||||
if self._post_reply:
|
||||
self._finalizePostReply()
|
||||
Application.getInstance().showPrintMonitor.emit(False)
|
||||
Application.getInstance().getController().setActiveStage("PrepareStage")
|
||||
|
||||
## Attempt to start a new print.
|
||||
# This function can fail to actually start a print due to not being authenticated or another print already
|
||||
|
@ -490,7 +490,7 @@ class USBPrinterOutputDevice(PrinterOutputDevice):
|
||||
self.setJobName(file_name)
|
||||
self._print_estimated_time = int(Application.getInstance().getPrintInformation().currentPrintTime.getDisplayString(DurationFormat.Format.Seconds))
|
||||
|
||||
Application.getInstance().showPrintMonitor.emit(True)
|
||||
Application.getInstance().getController().setActiveStage("MonitorStage")
|
||||
self.startPrint()
|
||||
|
||||
def _setEndstopState(self, endstop_key, value):
|
||||
@ -698,7 +698,7 @@ class USBPrinterOutputDevice(PrinterOutputDevice):
|
||||
self._is_printing = False
|
||||
self._is_paused = False
|
||||
self._updateJobState("ready")
|
||||
Application.getInstance().showPrintMonitor.emit(False)
|
||||
Application.getInstance().getController().setActiveStage("PrepareStage")
|
||||
|
||||
## Check if the process did not encounter an error yet.
|
||||
def hasError(self):
|
||||
|
@ -3379,7 +3379,6 @@
|
||||
"unit": "s",
|
||||
"type": "float",
|
||||
"default_value": 10,
|
||||
"minimum_value": "cool_min_layer_time",
|
||||
"maximum_value_warning": "600",
|
||||
"settable_per_mesh": false,
|
||||
"settable_per_extruder": true
|
||||
|
@ -8,7 +8,7 @@ msgstr ""
|
||||
"Project-Id-Version: Cura 3.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-11-21 16:58+0100\n"
|
||||
"PO-Revision-Date: 2017-10-05 12:20-0300\n"
|
||||
"PO-Revision-Date: 2017-12-04 10:20-0300\n"
|
||||
"Last-Translator: Cláudio Sampaio <patola@makerlinux.com.br>\n"
|
||||
"Language-Team: Cláudio Sampaio <patola@makerlinux.com.br> and CoderSquirrel <jasaneschio@gmail.com>\n"
|
||||
"Language: pt_BR\n"
|
||||
@ -92,7 +92,7 @@ msgstr "Arquivo enviado ao Doodle3D Connect"
|
||||
#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214
|
||||
msgctxt "@action:button"
|
||||
msgid "Open Connect..."
|
||||
msgstr ""
|
||||
msgstr "Abrir Connect..."
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214
|
||||
msgctxt "@info:tooltip"
|
||||
@ -142,7 +142,7 @@ msgstr "Incapaz de iniciar novo trabalho porque a impressora está ocupada ou n
|
||||
#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154
|
||||
msgctxt "@info:title"
|
||||
msgid "Printer Unavailable"
|
||||
msgstr ""
|
||||
msgstr "Impressora Não Disponível"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457
|
||||
msgctxt "@info:status"
|
||||
@ -594,7 +594,7 @@ msgstr "Conectar pela rede"
|
||||
#, python-brace-format
|
||||
msgctxt "@info Don't translate {machine_name}, since it gets replaced by a printer name!"
|
||||
msgid "New features are available for your {machine_name}! It is recommended to update the firmware on your printer."
|
||||
msgstr ""
|
||||
msgstr "Novos recursos estão disponível para sua {machine_name}! Recomenda-se atualizar o firmware da impressora."
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:65
|
||||
#, python-format
|
||||
@ -605,7 +605,7 @@ msgstr "Novo firmware de %s disponível"
|
||||
#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:66
|
||||
msgctxt "@action:button"
|
||||
msgid "How to update"
|
||||
msgstr ""
|
||||
msgstr "Como atualizar"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:77
|
||||
msgctxt "@info"
|
||||
@ -640,7 +640,7 @@ msgstr "Erro ao iniciar %s!"
|
||||
#: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:14
|
||||
msgctxt "@item:inlistbox"
|
||||
msgid "Simulation view"
|
||||
msgstr ""
|
||||
msgstr "Visão simulada"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:100
|
||||
msgctxt "@info:status"
|
||||
@ -650,7 +650,7 @@ msgstr "O Cura não mostra as camadas corretamente quando Impressão em Arame es
|
||||
#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:101
|
||||
msgctxt "@info:title"
|
||||
msgid "Simulation View"
|
||||
msgstr ""
|
||||
msgstr "Visão Simulada"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:26
|
||||
msgid "Modify G-Code"
|
||||
@ -731,7 +731,7 @@ msgstr "Incapaz de fatiar com os ajustes atuais. Os seguintes ajustes têm erros
|
||||
#, python-brace-format
|
||||
msgctxt "@info:status"
|
||||
msgid "Unable to slice due to some per-model settings. The following settings have errors on one or more models: {error_labels}"
|
||||
msgstr ""
|
||||
msgstr "Incapaz de fatiar devido a alguns ajustes por modelo. Os seguintes ajustes têm erros em um ou mais dos modelos: {error_labels}"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:326
|
||||
msgctxt "@info:status"
|
||||
@ -766,25 +766,25 @@ msgstr "Configurar ajustes por Modelo"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:23
|
||||
msgid "Install"
|
||||
msgstr ""
|
||||
msgstr "Instalar"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:43
|
||||
msgid "Failed to copy Siemens NX plugins files. Please check your UGII_USER_DIR. It is not set to a directory."
|
||||
msgstr ""
|
||||
msgstr "Erro ao copiar arquivos de plugins Siemens NX. Por favor verifique seu UGII_USER_DIR. Ele não está configurado para um diretório."
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:50
|
||||
#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:59
|
||||
#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:81
|
||||
msgid "Successfully installed Siemens NX Cura plugin."
|
||||
msgstr ""
|
||||
msgstr "Plugin Siemens NX do Cura instalado com sucesso."
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:65
|
||||
msgid "Failed to copy Siemens NX plugins files. Please check your UGII_USER_DIR."
|
||||
msgstr ""
|
||||
msgstr "Erro ao copiar arquivos de plugins Siemens NX. Por favor, verifique seu UGII_USER_DIR."
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:85
|
||||
msgid "Failed to install Siemens NX plugin. Could not set environment variable UGII_USER_DIR for Siemens NX."
|
||||
msgstr ""
|
||||
msgstr "Erro ao instalar arquivos de plugins Siemens NX. Não foi possível ajustar a variável de ambiente UGII_USER_DIR para o Simenes NX."
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167
|
||||
#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:585
|
||||
@ -947,7 +947,7 @@ msgstr "Outros"
|
||||
#: /home/ruben/Projects/Cura/cura/PrintInformation.py:199
|
||||
msgctxt "@label unknown material"
|
||||
msgid "Unknown"
|
||||
msgstr ""
|
||||
msgstr "Desconhecido"
|
||||
|
||||
#: /home/ruben/Projects/Cura/cura/PrintInformation.py:284
|
||||
#, python-brace-format
|
||||
@ -1012,12 +1012,12 @@ msgstr "Material Personalizado"
|
||||
#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:182
|
||||
msgctxt "@menuitem"
|
||||
msgid "Global"
|
||||
msgstr ""
|
||||
msgstr "Global"
|
||||
|
||||
#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:229
|
||||
msgctxt "@menuitem"
|
||||
msgid "Not overridden"
|
||||
msgstr ""
|
||||
msgstr "Não sobrepujado"
|
||||
|
||||
#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:117
|
||||
msgctxt "@info:status"
|
||||
@ -1066,7 +1066,7 @@ msgstr "Perfil exportado para <filename>{0}</filename>"
|
||||
#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:157
|
||||
msgctxt "@info:title"
|
||||
msgid "Export succeeded"
|
||||
msgstr ""
|
||||
msgstr "Exportação concluída"
|
||||
|
||||
#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:183
|
||||
#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:205
|
||||
@ -1139,84 +1139,87 @@ msgid ""
|
||||
" <p>Please use the \"Send report\" button to post a bug report automatically to our servers</p>\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"<p><b>Uma exceção fatal aocorreu. Por favor nos envie este Relatório de Erros para consertarmos o problema</p></b>\n"
|
||||
" <p>Por favor use o botão \"Enviar relatório\" para postar um relato de bug automaticamente em nossos servidores</p>\n"
|
||||
" "
|
||||
|
||||
#: /home/ruben/Projects/Cura/cura/CrashHandler.py:101
|
||||
msgctxt "@title:groupbox"
|
||||
msgid "System information"
|
||||
msgstr ""
|
||||
msgstr "Informação do Sistema"
|
||||
|
||||
#: /home/ruben/Projects/Cura/cura/CrashHandler.py:109
|
||||
msgctxt "@label unknown version of Cura"
|
||||
msgid "Unknown"
|
||||
msgstr ""
|
||||
msgstr "Desconhecida"
|
||||
|
||||
#: /home/ruben/Projects/Cura/cura/CrashHandler.py:111
|
||||
#, python-brace-format
|
||||
msgctxt "@label Cura version"
|
||||
msgid "<b>Cura version:</b> {version}<br/>"
|
||||
msgstr ""
|
||||
msgstr "<b>Versão do Cura:</b> {version}<br/>"
|
||||
|
||||
#: /home/ruben/Projects/Cura/cura/CrashHandler.py:112
|
||||
#, python-brace-format
|
||||
msgctxt "@label Platform"
|
||||
msgid "<b>Platform:</b> {platform}<br/>"
|
||||
msgstr ""
|
||||
msgstr "<b>Plataforma:</b> {platform}<br/>"
|
||||
|
||||
#: /home/ruben/Projects/Cura/cura/CrashHandler.py:113
|
||||
#, python-brace-format
|
||||
msgctxt "@label Qt version"
|
||||
msgid "<b>Qt version:</b> {qt}<br/>"
|
||||
msgstr ""
|
||||
msgstr "<b>Versão da Qt:</b> {qt}<br/>"
|
||||
|
||||
#: /home/ruben/Projects/Cura/cura/CrashHandler.py:114
|
||||
#, python-brace-format
|
||||
msgctxt "@label PyQt version"
|
||||
msgid "<b>PyQt version:</b> {pyqt}<br/>"
|
||||
msgstr ""
|
||||
msgstr "<b>Versão da PyQt:</b> {pyqt}<br/>"
|
||||
|
||||
#: /home/ruben/Projects/Cura/cura/CrashHandler.py:115
|
||||
#, python-brace-format
|
||||
msgctxt "@label OpenGL"
|
||||
msgid "<b>OpenGL:</b> {opengl}<br/>"
|
||||
msgstr ""
|
||||
msgstr "<b>OpenGL:</b> {opengl}<br/>"
|
||||
|
||||
#: /home/ruben/Projects/Cura/cura/CrashHandler.py:130
|
||||
#, python-brace-format
|
||||
msgctxt "@label OpenGL version"
|
||||
msgid "<li>OpenGL Version: {version}</li>"
|
||||
msgstr ""
|
||||
msgstr "<li>Versão da OpenGL: {version}</li>"
|
||||
|
||||
#: /home/ruben/Projects/Cura/cura/CrashHandler.py:131
|
||||
#, python-brace-format
|
||||
msgctxt "@label OpenGL vendor"
|
||||
msgid "<li>OpenGL Vendor: {vendor}</li>"
|
||||
msgstr ""
|
||||
msgstr "<li>Fornecedor da OpenGL: {vendor}</li>"
|
||||
|
||||
#: /home/ruben/Projects/Cura/cura/CrashHandler.py:132
|
||||
#, python-brace-format
|
||||
msgctxt "@label OpenGL renderer"
|
||||
msgid "<li>OpenGL Renderer: {renderer}</li>"
|
||||
msgstr ""
|
||||
msgstr "<li>Renderizador da OpenGL: {renderer}</li>"
|
||||
|
||||
#: /home/ruben/Projects/Cura/cura/CrashHandler.py:141
|
||||
msgctxt "@title:groupbox"
|
||||
msgid "Exception traceback"
|
||||
msgstr ""
|
||||
msgstr "Traceback de exceção"
|
||||
|
||||
#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208
|
||||
msgctxt "@title:groupbox"
|
||||
msgid "Logs"
|
||||
msgstr ""
|
||||
msgstr "Registros"
|
||||
|
||||
#: /home/ruben/Projects/Cura/cura/CrashHandler.py:231
|
||||
msgctxt "@title:groupbox"
|
||||
msgid "User description"
|
||||
msgstr ""
|
||||
msgstr "Descrição do usuário"
|
||||
|
||||
#: /home/ruben/Projects/Cura/cura/CrashHandler.py:246
|
||||
msgctxt "@action:button"
|
||||
msgid "Send report"
|
||||
msgstr ""
|
||||
msgstr "Enviar relatório"
|
||||
|
||||
#: /home/ruben/Projects/Cura/cura/CuraApplication.py:256
|
||||
msgctxt "@info:progress"
|
||||
@ -1254,7 +1257,7 @@ msgstr "Não é possível abrir nenhum outro arquivo se G-Code estiver sendo car
|
||||
#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1416
|
||||
msgctxt "@info:status"
|
||||
msgid "The selected model was too small to load."
|
||||
msgstr ""
|
||||
msgstr "O modelo selecionado é pequenos demais para carregar."
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:59
|
||||
msgctxt "@title"
|
||||
@ -1632,7 +1635,7 @@ msgstr "%1 não está configurada para hospedar um grupo de impressora Ultimaker
|
||||
#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/OpenPanelButton.qml:14
|
||||
msgctxt "@info:tooltip"
|
||||
msgid "Opens the print jobs page with your default web browser."
|
||||
msgstr ""
|
||||
msgstr "Abre a página de trabalhos de impressão com seu navegador default."
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/OpenPanelButton.qml:15
|
||||
#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:131
|
||||
@ -1667,7 +1670,7 @@ msgstr "A conexão à impressora foi perdida"
|
||||
#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:257
|
||||
msgctxt "@label:status"
|
||||
msgid "Disabled"
|
||||
msgstr ""
|
||||
msgstr "Desabilitado"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:273
|
||||
msgctxt "@label:status"
|
||||
@ -1682,12 +1685,12 @@ msgstr "Finalizado"
|
||||
#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:290
|
||||
msgctxt "@label:status"
|
||||
msgid "Paused"
|
||||
msgstr ""
|
||||
msgstr "Pausado"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:292
|
||||
msgctxt "@label:status"
|
||||
msgid "Resuming"
|
||||
msgstr ""
|
||||
msgstr "Continuando"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:294
|
||||
msgctxt "@label:status"
|
||||
@ -1829,12 +1832,12 @@ msgstr "Tipo de Linha"
|
||||
#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:104
|
||||
msgctxt "@label:listbox"
|
||||
msgid "Feedrate"
|
||||
msgstr ""
|
||||
msgstr "Taxa de alimentação"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:108
|
||||
msgctxt "@label:listbox"
|
||||
msgid "Layer thickness"
|
||||
msgstr ""
|
||||
msgstr "Largura de camada"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:148
|
||||
msgctxt "@label"
|
||||
@ -1884,12 +1887,12 @@ msgstr "Parede Interna"
|
||||
#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:378
|
||||
msgctxt "@label"
|
||||
msgid "min"
|
||||
msgstr ""
|
||||
msgstr "mín"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:420
|
||||
msgctxt "@label"
|
||||
msgid "max"
|
||||
msgstr ""
|
||||
msgstr "máx"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:18
|
||||
msgctxt "@title:window"
|
||||
@ -2127,7 +2130,7 @@ msgstr "%1 de %2"
|
||||
#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:368
|
||||
msgctxt "@action:warning"
|
||||
msgid "Loading a project will clear all models on the build plate."
|
||||
msgstr ""
|
||||
msgstr "Carregar um projeto limpará todos os modelos da mesa de impressão."
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:386
|
||||
msgctxt "@action:button"
|
||||
@ -2171,6 +2174,9 @@ msgid ""
|
||||
"You need to accept this license to install this plugin.\n"
|
||||
"Do you agree with the terms below?"
|
||||
msgstr ""
|
||||
"Este plugin contém uma licença.\n"
|
||||
"Você precisa aceitar esta licença para instalar este plugin.\n"
|
||||
"Você concorda com os termos abaixo?"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:242
|
||||
msgctxt "@action:button"
|
||||
@ -2185,7 +2191,7 @@ msgstr "Recusar"
|
||||
#: /home/ruben/Projects/Cura/plugins/UserAgreementPlugin/UserAgreement.qml:16
|
||||
msgctxt "@title:window"
|
||||
msgid "User Agreement"
|
||||
msgstr ""
|
||||
msgstr "Termos de Acordo do Usuário"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:25
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25
|
||||
@ -3068,7 +3074,7 @@ msgstr "Sobre o Cura"
|
||||
#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:43
|
||||
msgctxt "@label"
|
||||
msgid "version: %1"
|
||||
msgstr ""
|
||||
msgstr "versão: %1"
|
||||
|
||||
#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:56
|
||||
msgctxt "@label"
|
||||
@ -3167,7 +3173,7 @@ msgstr "Biblioteca de recorte de polígonos"
|
||||
#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:135
|
||||
msgctxt "@Label"
|
||||
msgid "Python HTTP library"
|
||||
msgstr ""
|
||||
msgstr "Biblioteca de HTTP Python"
|
||||
|
||||
#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:137
|
||||
msgctxt "@label"
|
||||
@ -3187,7 +3193,7 @@ msgstr "Perfil:"
|
||||
#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:66
|
||||
msgctxt "@"
|
||||
msgid "No Profile Available"
|
||||
msgstr ""
|
||||
msgstr "Nenhum Perfil Disponível"
|
||||
|
||||
#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:104
|
||||
msgctxt "@tooltip"
|
||||
@ -3298,44 +3304,44 @@ msgstr ""
|
||||
#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:336
|
||||
msgctxt "@label Hours and minutes"
|
||||
msgid "00h 00min"
|
||||
msgstr ""
|
||||
msgstr "00h 00min"
|
||||
|
||||
#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:354
|
||||
msgctxt "@tooltip"
|
||||
msgid "<b>Time specification</b><br/><table>"
|
||||
msgstr ""
|
||||
msgstr "<b>Especificação de tempo</b><br/><table>"
|
||||
|
||||
#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:429
|
||||
msgctxt "@label"
|
||||
msgid "Cost specification"
|
||||
msgstr ""
|
||||
msgstr "Especificação de custo"
|
||||
|
||||
#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:434
|
||||
#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:445
|
||||
msgctxt "@label m for meter"
|
||||
msgid "%1m"
|
||||
msgstr ""
|
||||
msgstr "%1m"
|
||||
|
||||
#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:435
|
||||
#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:446
|
||||
msgctxt "@label g for grams"
|
||||
msgid "%1g"
|
||||
msgstr ""
|
||||
msgstr "%1g"
|
||||
|
||||
#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:444
|
||||
msgctxt "@label"
|
||||
msgid "Total:"
|
||||
msgstr ""
|
||||
msgstr "Total:"
|
||||
|
||||
#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:498
|
||||
msgctxt "@label Print estimates: m for meters, g for grams, %4 is currency and %3 is print cost"
|
||||
msgid "%1m / ~ %2g / ~ %4 %3"
|
||||
msgstr ""
|
||||
msgstr "%1m / ~ %2g / ~ %4 %3"
|
||||
|
||||
#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:503
|
||||
msgctxt "@label Print estimates: m for meters, g for grams"
|
||||
msgid "%1m / ~ %2g"
|
||||
msgstr ""
|
||||
msgstr "%1m / ~ %2g"
|
||||
|
||||
#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:586
|
||||
msgctxt "@tooltip"
|
||||
@ -3460,27 +3466,27 @@ msgstr "Aquecer a mesa antes de imprimir. Você pode continuar ajustando sua imp
|
||||
#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:703
|
||||
msgctxt "@label"
|
||||
msgid "Printer control"
|
||||
msgstr ""
|
||||
msgstr "Controle da Impressora"
|
||||
|
||||
#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:717
|
||||
msgctxt "@label"
|
||||
msgid "Jog Position"
|
||||
msgstr ""
|
||||
msgstr "Posição de Trote"
|
||||
|
||||
#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:735
|
||||
msgctxt "@label"
|
||||
msgid "X/Y"
|
||||
msgstr ""
|
||||
msgstr "X/Y"
|
||||
|
||||
#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:842
|
||||
msgctxt "@label"
|
||||
msgid "Z"
|
||||
msgstr ""
|
||||
msgstr "Z"
|
||||
|
||||
#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:907
|
||||
msgctxt "@label"
|
||||
msgid "Jog Distance"
|
||||
msgstr ""
|
||||
msgstr "Distância de Trote"
|
||||
|
||||
#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1018
|
||||
msgctxt "@label"
|
||||
@ -3525,7 +3531,7 @@ msgstr "&Sair"
|
||||
#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:107
|
||||
msgctxt "@action:inmenu menubar:view"
|
||||
msgid "&Reset camera position"
|
||||
msgstr ""
|
||||
msgstr "&Recompor posições de câmera"
|
||||
|
||||
#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:114
|
||||
msgctxt "@action:inmenu"
|
||||
@ -3767,7 +3773,7 @@ msgstr "Importar todos como modelos"
|
||||
#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:19
|
||||
msgctxt "@title:window"
|
||||
msgid "Ultimaker Cura"
|
||||
msgstr ""
|
||||
msgstr "Ultimaker Cura"
|
||||
|
||||
#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:81
|
||||
msgctxt "@title:menu menubar:toplevel"
|
||||
@ -3924,7 +3930,7 @@ msgstr "Altura de Camada"
|
||||
#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:323
|
||||
msgctxt "@tooltip"
|
||||
msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab"
|
||||
msgstr ""
|
||||
msgstr "Um perfil personalizado está atualmente ativo. Para habilitar o controle deslizante de qualidade, escolha um perfil de qualidade default na aba Personalizado"
|
||||
|
||||
#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:340
|
||||
msgctxt "@label"
|
||||
@ -3944,7 +3950,7 @@ msgstr "Mais Rápido"
|
||||
#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:388
|
||||
msgctxt "@tooltip"
|
||||
msgid "You have modified some profile settings. If you want to change these go to custom mode."
|
||||
msgstr ""
|
||||
msgstr "Você modificou alguns ajustes de perfil. Se você quiser alterá-los, use o modo personalizado."
|
||||
|
||||
#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:413
|
||||
msgctxt "@label"
|
||||
@ -4036,7 +4042,7 @@ msgstr "Material"
|
||||
#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:349
|
||||
msgctxt "@label"
|
||||
msgid "<a href='%1'>Check compatibility</a>"
|
||||
msgstr ""
|
||||
msgstr "<a href='%1'>Verificar compatibilidade</a>"
|
||||
|
||||
#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:369
|
||||
msgctxt "@tooltip"
|
||||
@ -4176,12 +4182,12 @@ msgstr "Integração ao SolidWorks"
|
||||
#: SimulationView/plugin.json
|
||||
msgctxt "description"
|
||||
msgid "Provides the Simulation view."
|
||||
msgstr ""
|
||||
msgstr "Provê a Visão Simulada."
|
||||
|
||||
#: SimulationView/plugin.json
|
||||
msgctxt "name"
|
||||
msgid "Simulation View"
|
||||
msgstr ""
|
||||
msgstr "Visão Simulada"
|
||||
|
||||
#: PostProcessingPlugin/plugin.json
|
||||
msgctxt "description"
|
||||
@ -4266,12 +4272,12 @@ msgstr "Atualização de Versão de 2.7 para 3.0"
|
||||
#: VersionUpgrade/VersionUpgrade30to31/plugin.json
|
||||
msgctxt "description"
|
||||
msgid "Upgrades configurations from Cura 3.0 to Cura 3.1."
|
||||
msgstr ""
|
||||
msgstr "Atualiza configurações do Cura 3.0 para o Cura 3.1."
|
||||
|
||||
#: VersionUpgrade/VersionUpgrade30to31/plugin.json
|
||||
msgctxt "name"
|
||||
msgid "Version Upgrade 3.0 to 3.1"
|
||||
msgstr ""
|
||||
msgstr "Atualização de Versão 3.0 para 3.1"
|
||||
|
||||
#: VersionUpgrade/VersionUpgrade26to27/plugin.json
|
||||
msgctxt "description"
|
||||
@ -4336,12 +4342,12 @@ msgstr "Ferramenta de Ajustes Por Modelo"
|
||||
#: cura-siemensnx-plugin/plugin.json
|
||||
msgctxt "description"
|
||||
msgid "Helps you to install an 'export to Cura' button in Siemens NX."
|
||||
msgstr ""
|
||||
msgstr "Auxilia na instalação de um botão 'exportar para o Cura' no Siemens NX."
|
||||
|
||||
#: cura-siemensnx-plugin/plugin.json
|
||||
msgctxt "name"
|
||||
msgid "Siemens NX Integration"
|
||||
msgstr ""
|
||||
msgstr "Integração ao Siemens NX"
|
||||
|
||||
#: 3MFReader/plugin.json
|
||||
msgctxt "description"
|
||||
@ -4406,12 +4412,12 @@ msgstr "Gerador de 3MF"
|
||||
#: UserAgreementPlugin/plugin.json
|
||||
msgctxt "description"
|
||||
msgid "Ask the user once if he/she agrees with our license"
|
||||
msgstr ""
|
||||
msgstr "Pergunta ao usuário uma única vez sobre concordância com a licença"
|
||||
|
||||
#: UserAgreementPlugin/plugin.json
|
||||
msgctxt "name"
|
||||
msgid "UserAgreement"
|
||||
msgstr ""
|
||||
msgstr "Acordo de Usuário"
|
||||
|
||||
#: UltimakerMachineActions/plugin.json
|
||||
msgctxt "description"
|
||||
|
@ -8,7 +8,7 @@ msgstr ""
|
||||
"Project-Id-Version: Cura 3.0\n"
|
||||
"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n"
|
||||
"POT-Creation-Date: 2017-11-21 16:58+0000\n"
|
||||
"PO-Revision-Date: 2017-10-06 08:00-0300\n"
|
||||
"PO-Revision-Date: 2017-12-04 09:00-0300\n"
|
||||
"Last-Translator: Cláudio Sampaio <patola@makerlinux.com.br>\n"
|
||||
"Language-Team: Cláudio Sampaio <patola@makerlinux.com.br> and CoderSquirrel <jasaneschio@gmail.com>\n"
|
||||
"Language: pt_BR\n"
|
||||
|
@ -8,7 +8,7 @@ msgstr ""
|
||||
"Project-Id-Version: Cura 3.0\n"
|
||||
"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n"
|
||||
"POT-Creation-Date: 2017-11-21 16:58+0000\n"
|
||||
"PO-Revision-Date: 2017-10-06 10:00-0300\n"
|
||||
"PO-Revision-Date: 2017-12-04 10:20-0300\n"
|
||||
"Last-Translator: Cláudio Sampaio <patola@makerlinux.com.br>\n"
|
||||
"Language-Team: Cláudio Sampaio <patola@makerlinux.com.br> and CoderSquirrel <jasaneschio@gmail.com>\n"
|
||||
"Language: pt_BR\n"
|
||||
@ -613,27 +613,27 @@ msgstr "A altura da camada inicial em mm. Uma camada inicial mais espessa faz a
|
||||
#: fdmprinter.def.json
|
||||
msgctxt "slicing_tolerance label"
|
||||
msgid "Slicing Tolerance"
|
||||
msgstr ""
|
||||
msgstr "Tolerância de Fatiamento"
|
||||
|
||||
#: fdmprinter.def.json
|
||||
msgctxt "slicing_tolerance description"
|
||||
msgid "How to slice layers with diagonal surfaces. The areas of a layer can be generated based on where the middle of the layer intersects the surface (Middle). Alternatively each layer can have the areas which fall inside of the volume throughout the height of the layer (Exclusive) or a layer has the areas which fall inside anywhere within the layer (Inclusive). Exclusive retains the most details, Inclusive makes for the best fit and Middle takes the least time to process."
|
||||
msgstr ""
|
||||
msgstr "Como fatiar camadas com superfícies diagonais. As áreas de uma camada podem ser geradas baseadas em onde o meio da camada interseciona a superfície (Meio). Alternativamente, cada camada pode ter as áreas que se encontram dentro do volume por toda a altura da camada (Exclusivo) ou a camada pode abranger todas as áreas que tenham qualquer penetração dentro do volume (Inclusivo). Exclusivo retém mais detalhes, Inclusivo é melhor para encaixes e Meio toma menos tempo para processar."
|
||||
|
||||
#: fdmprinter.def.json
|
||||
msgctxt "slicing_tolerance option middle"
|
||||
msgid "Middle"
|
||||
msgstr ""
|
||||
msgstr "Meio"
|
||||
|
||||
#: fdmprinter.def.json
|
||||
msgctxt "slicing_tolerance option exclusive"
|
||||
msgid "Exclusive"
|
||||
msgstr ""
|
||||
msgstr "Exclusivo"
|
||||
|
||||
#: fdmprinter.def.json
|
||||
msgctxt "slicing_tolerance option inclusive"
|
||||
msgid "Inclusive"
|
||||
msgstr ""
|
||||
msgstr "Inclusivo"
|
||||
|
||||
#: fdmprinter.def.json
|
||||
msgctxt "line_width label"
|
||||
@ -808,7 +808,7 @@ msgstr "O carro extrusor usado para imprimir a parede externa. Este ajuste é us
|
||||
#: fdmprinter.def.json
|
||||
msgctxt "wall_x_extruder_nr label"
|
||||
msgid "Inner Wall Extruder"
|
||||
msgstr ""
|
||||
msgstr "Extrusor da Parede Interior"
|
||||
|
||||
#: fdmprinter.def.json
|
||||
msgctxt "wall_x_extruder_nr description"
|
||||
@ -1388,7 +1388,7 @@ msgstr "Padrão de Preenchimento"
|
||||
#: fdmprinter.def.json
|
||||
msgctxt "infill_pattern description"
|
||||
msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, tri-hexagon, cubic, octet, quarter cubic, cross and concentric patterns are fully printed every layer. Cubic, quarter cubic and octet infill change with every layer to provide a more equal distribution of strength over each direction."
|
||||
msgstr ""
|
||||
msgstr "O padrão do material de preenchimento da impressão. Preenchimento de Linhas e Ziguezague trocam direções em camadas alternadas, reduzindo custo do material. Os padrões de Grade, Triângulo, Tri-Hexágono, Cúbico, Octeto, Quarto Cúbico, Cruzado e Concêntrico são totalmente impressos em cada camada. Os preenchimentos Cúbico, Quarto Cúbico e Octeto mudam em cada camada para prover uma distribuição mais uniforme de forças em cada direção."
|
||||
|
||||
#: fdmprinter.def.json
|
||||
msgctxt "infill_pattern option grid"
|
||||
@ -1408,7 +1408,7 @@ msgstr "Triângulos"
|
||||
#: fdmprinter.def.json
|
||||
msgctxt "infill_pattern option trihexagon"
|
||||
msgid "Tri-Hexagon"
|
||||
msgstr ""
|
||||
msgstr "Tri-Hexágono"
|
||||
|
||||
#: fdmprinter.def.json
|
||||
msgctxt "infill_pattern option cubic"
|
||||
@ -1463,7 +1463,7 @@ msgstr "Conectar Linhas de Preenchimento"
|
||||
#: fdmprinter.def.json
|
||||
msgctxt "zig_zaggify_infill description"
|
||||
msgid "Connect the ends where the infill pattern meets the inner wall using a line which follows the shape of the inner wall. Enabling this setting can make the infill adhere to the walls better and reduce the effects of infill on the quality of vertical surfaces. Disabling this setting reduces the amount of material used."
|
||||
msgstr ""
|
||||
msgstr "Conecta as extremidades onde o padrão de preenchimento toca a parede interna usando uma linha que segue a forma da parede interna. Habilitar este ajuste pode fazer o preenchimento aderir melhor às paredes e reduzir o efeito do preenchimento na qualidade de superfícies verticais. Desabilitar este ajuda diminui a quantidade de material usado."
|
||||
|
||||
#: fdmprinter.def.json
|
||||
msgctxt "infill_angles label"
|
||||
@ -1478,22 +1478,22 @@ msgstr "Uma lista de direções de filetes em números inteiros a usar. Elemento
|
||||
#: fdmprinter.def.json
|
||||
msgctxt "infill_offset_x label"
|
||||
msgid "Infill X Offset"
|
||||
msgstr ""
|
||||
msgstr "Deslocamento X do Preenchimento"
|
||||
|
||||
#: fdmprinter.def.json
|
||||
msgctxt "infill_offset_x description"
|
||||
msgid "The infill pattern is offset this distance along the X axis."
|
||||
msgstr ""
|
||||
msgstr "O padrão de preenchimento é corrigido/deslocado nesta distância no eixo X."
|
||||
|
||||
#: fdmprinter.def.json
|
||||
msgctxt "infill_offset_y label"
|
||||
msgid "Infill Y Offset"
|
||||
msgstr ""
|
||||
msgstr "Deslocamento do Preenchimento Y"
|
||||
|
||||
#: fdmprinter.def.json
|
||||
msgctxt "infill_offset_y description"
|
||||
msgid "The infill pattern is offset this distance along the Y axis."
|
||||
msgstr ""
|
||||
msgstr "O padrão de preenchimento é corrigido/deslocado nesta distância no eixo Y."
|
||||
|
||||
#: fdmprinter.def.json
|
||||
msgctxt "sub_div_rad_add label"
|
||||
@ -1643,7 +1643,7 @@ msgstr "Distância de Expansão do Contorno"
|
||||
#: fdmprinter.def.json
|
||||
msgctxt "expand_skins_expand_distance description"
|
||||
msgid "The distance the skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on neighboring layers adhere better to the skin. Lower values save amount of material used."
|
||||
msgstr ""
|
||||
msgstr "A distância em que os contornos são expandidos pra dentro do preenchimento. Valores mais altos fazem o contorno aderir melhor ao padrão de preenchimento e faz as paredes de camadas vizinhas aderirem melhor ao contorno. Valores menores diminuem a quantidade de material usado."
|
||||
|
||||
#: fdmprinter.def.json
|
||||
msgctxt "top_skin_expand_distance label"
|
||||
@ -1808,22 +1808,22 @@ msgstr "Ajusta o diâmetro do filamento utilizado. Acerte este valor com o diâm
|
||||
#: fdmprinter.def.json
|
||||
msgctxt "material_adhesion_tendency label"
|
||||
msgid "Adhesion Tendency"
|
||||
msgstr ""
|
||||
msgstr "Tendência à Aderência"
|
||||
|
||||
#: fdmprinter.def.json
|
||||
msgctxt "material_adhesion_tendency description"
|
||||
msgid "Surface adhesion tendency."
|
||||
msgstr ""
|
||||
msgstr "Tendência de aderência da superfície"
|
||||
|
||||
#: fdmprinter.def.json
|
||||
msgctxt "material_surface_energy label"
|
||||
msgid "Surface Energy"
|
||||
msgstr ""
|
||||
msgstr "Energia de Superfície"
|
||||
|
||||
#: fdmprinter.def.json
|
||||
msgctxt "material_surface_energy description"
|
||||
msgid "Surface energy."
|
||||
msgstr ""
|
||||
msgstr "Energia de superfície."
|
||||
|
||||
#: fdmprinter.def.json
|
||||
msgctxt "material_flow label"
|
||||
@ -3556,6 +3556,8 @@ msgid ""
|
||||
"The horizontal distance between the skirt and the first layer of the print.\n"
|
||||
"This is the minimum distance. Multiple skirt lines will extend outwards from this distance."
|
||||
msgstr ""
|
||||
"A distância horizontal entre o skirt a primeira camada da impressão.\n"
|
||||
"Esta é a distância mínima. Linhas múltiplas de skirt estenderão além desta distância."
|
||||
|
||||
#: fdmprinter.def.json
|
||||
msgctxt "skirt_brim_minimal_length label"
|
||||
@ -3615,7 +3617,7 @@ msgstr "Amaciamento do Raft"
|
||||
#: fdmprinter.def.json
|
||||
msgctxt "raft_smoothing description"
|
||||
msgid "This setting controls how much inner corners in the raft outline are rounded. Inward corners are rounded to a semi circle with a radius equal to the value given here. This setting also removes holes in the raft outline which are smaller than such a circle."
|
||||
msgstr ""
|
||||
msgstr "Este ajuste controla quanto os cantos internos do contorno do raft são arredondados. Esses cantos internos são convertidos em semicírculos com raio igual ao valor dado aqui. Este ajuste também remove furos no contorno do raft que forem menores que o círculo equivalente."
|
||||
|
||||
#: fdmprinter.def.json
|
||||
msgctxt "raft_airgap label"
|
||||
@ -4090,12 +4092,12 @@ msgstr "Normalmente o Cura tenta costurar pequenos furos na malha e remover part
|
||||
#: fdmprinter.def.json
|
||||
msgctxt "meshfix_maximum_resolution label"
|
||||
msgid "Maximum Resolution"
|
||||
msgstr ""
|
||||
msgstr "Resolução Máxima"
|
||||
|
||||
#: fdmprinter.def.json
|
||||
msgctxt "meshfix_maximum_resolution description"
|
||||
msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway."
|
||||
msgstr ""
|
||||
msgstr "O tamanho mínimo de um segmento de linha após o fatiamento. Se você aumentar este valor, a malha terá uma resolução menor. Isto pode permitir que a impressora mantenha a velocidade que precisa para processar o G-Code e aumentará a velocidade de fatiamento ao remover detalhes da malha que não poderia processar de qualquer jeito."
|
||||
|
||||
#: fdmprinter.def.json
|
||||
msgctxt "multiple_mesh_overlap label"
|
||||
@ -4130,12 +4132,12 @@ msgstr "Troca quais volumes sobrepondo malhas vão pertencer a cada camada, de m
|
||||
#: fdmprinter.def.json
|
||||
msgctxt "remove_empty_first_layers label"
|
||||
msgid "Remove Empty First Layers"
|
||||
msgstr ""
|
||||
msgstr "Remover Camadas Iniciais Vazias"
|
||||
|
||||
#: fdmprinter.def.json
|
||||
msgctxt "remove_empty_first_layers description"
|
||||
msgid "Remove empty layers beneath the first printed layer if they are present. Disabling this setting can cause empty first layers if the Slicing Tolerance setting is set to Exclusive or Middle."
|
||||
msgstr ""
|
||||
msgstr "Remove camadas vazias entre a primeira camada impressa se estiverem presentes. Desabilitar este ajuste pode criar camadas iniciais vazias se a Tolerância de Fatiamento estiver configurada para Exclusivo ou Meio."
|
||||
|
||||
#: fdmprinter.def.json
|
||||
msgctxt "blackmagic label"
|
||||
@ -4665,22 +4667,22 @@ msgstr "A distância média entre os pontos aleatórios introduzidos em cada seg
|
||||
#: fdmprinter.def.json
|
||||
msgctxt "flow_rate_max_extrusion_offset label"
|
||||
msgid "Flow rate compensation max extrusion offset"
|
||||
msgstr ""
|
||||
msgstr "Deslocamento de extrusão máxima da compensação de taxa de fluxo."
|
||||
|
||||
#: fdmprinter.def.json
|
||||
msgctxt "flow_rate_max_extrusion_offset description"
|
||||
msgid "The maximum distance in mm to compensate."
|
||||
msgstr ""
|
||||
msgstr "A distância máxima em mm a compensar."
|
||||
|
||||
#: fdmprinter.def.json
|
||||
msgctxt "flow_rate_extrusion_offset_factor label"
|
||||
msgid "Flow rate compensation factor"
|
||||
msgstr ""
|
||||
msgstr "Fator de compensaçõ de taxa de fluxo"
|
||||
|
||||
#: fdmprinter.def.json
|
||||
msgctxt "flow_rate_extrusion_offset_factor description"
|
||||
msgid "The multiplication factor for the flow rate -> distance translation."
|
||||
msgstr ""
|
||||
msgstr "O fator de multiplicação para a tradução entre taxa de fluxo -> distância."
|
||||
|
||||
#: fdmprinter.def.json
|
||||
msgctxt "wireframe_enabled label"
|
||||
|
@ -20,14 +20,16 @@ UM.MainWindow
|
||||
viewportRect: Qt.rect(0, 0, (base.width - sidebar.width) / base.width, 1.0)
|
||||
property bool showPrintMonitor: false
|
||||
|
||||
// This connection is here to support legacy printer output devices that use the showPrintMonitor signal on Application to switch to the monitor stage
|
||||
// It should be phased out in newer plugin versions.
|
||||
Connections
|
||||
{
|
||||
target: Printer
|
||||
onShowPrintMonitor: {
|
||||
if (show) {
|
||||
topbar.startMonitoringPrint()
|
||||
UM.Controller.setActiveStage("MonitorStage")
|
||||
} else {
|
||||
topbar.stopMonitoringPrint()
|
||||
UM.Controller.setActiveStage("PrepareStage")
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -331,7 +333,7 @@ UM.MainWindow
|
||||
text: catalog.i18nc("@action:button","Open File");
|
||||
iconSource: UM.Theme.getIcon("load")
|
||||
style: UM.Theme.styles.tool_button
|
||||
tooltip: '';
|
||||
tooltip: ""
|
||||
anchors
|
||||
{
|
||||
top: topbar.bottom;
|
||||
@ -358,62 +360,49 @@ UM.MainWindow
|
||||
Topbar
|
||||
{
|
||||
id: topbar
|
||||
anchors.left:parent.left
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
anchors.top: parent.top
|
||||
monitoringPrint: base.showPrintMonitor
|
||||
onStartMonitoringPrint: base.showPrintMonitor = true
|
||||
onStopMonitoringPrint: base.showPrintMonitor = false
|
||||
}
|
||||
|
||||
Sidebar
|
||||
{
|
||||
id: sidebar;
|
||||
|
||||
anchors
|
||||
{
|
||||
top: topbar.bottom;
|
||||
bottom: parent.bottom;
|
||||
right: parent.right;
|
||||
}
|
||||
z: 1
|
||||
width: UM.Theme.getSize("sidebar").width;
|
||||
monitoringPrint: base.showPrintMonitor
|
||||
}
|
||||
|
||||
Rectangle
|
||||
{
|
||||
id: viewportOverlay
|
||||
|
||||
color: UM.Theme.getColor("viewport_overlay")
|
||||
anchors
|
||||
{
|
||||
top: topbar.bottom
|
||||
bottom: parent.bottom
|
||||
left:parent.left
|
||||
right: sidebar.left
|
||||
}
|
||||
visible: opacity > 0
|
||||
opacity: base.showPrintMonitor ? 1 : 0
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
acceptedButtons: Qt.AllButtons
|
||||
|
||||
onWheel: wheel.accepted = true
|
||||
}
|
||||
}
|
||||
|
||||
Loader
|
||||
{
|
||||
sourceComponent: Cura.MachineManager.printerOutputDevices.length > 0 ? Cura.MachineManager.printerOutputDevices[0].monitorItem: null
|
||||
visible: base.showPrintMonitor
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.horizontalCenterOffset: - UM.Theme.getSize("sidebar").width / 2
|
||||
anchors.verticalCenterOffset: UM.Theme.getSize("sidebar_header").height / 2
|
||||
property real maximumWidth: viewportOverlay.width
|
||||
property real maximumHeight: viewportOverlay.height
|
||||
id: sidebar
|
||||
|
||||
anchors
|
||||
{
|
||||
top: topbar.bottom
|
||||
bottom: parent.bottom
|
||||
right: parent.right
|
||||
}
|
||||
|
||||
width: UM.Theme.getSize("sidebar").width
|
||||
z: 1
|
||||
|
||||
source: UM.Controller.activeStage.sidebarComponent
|
||||
}
|
||||
|
||||
Loader
|
||||
{
|
||||
id: main
|
||||
|
||||
anchors
|
||||
{
|
||||
top: topbar.bottom
|
||||
bottom: parent.bottom
|
||||
left: parent.left
|
||||
right: sidebar.left
|
||||
}
|
||||
|
||||
MouseArea
|
||||
{
|
||||
visible: UM.Controller.activeStage.mainComponent != ""
|
||||
anchors.fill: parent
|
||||
acceptedButtons: Qt.AllButtons
|
||||
onWheel: wheel.accepted = true
|
||||
}
|
||||
|
||||
source: UM.Controller.activeStage.mainComponent
|
||||
}
|
||||
|
||||
UM.MessageStack
|
||||
|
@ -12,21 +12,23 @@ Menu
|
||||
title: catalog.i18nc("@title:menu menubar:toplevel", "&View");
|
||||
id: menu
|
||||
enabled: !PrintInformation.preSliced
|
||||
|
||||
// main views
|
||||
Instantiator
|
||||
{
|
||||
model: UM.ViewModel { }
|
||||
model: UM.ViewModel{}
|
||||
MenuItem
|
||||
{
|
||||
text: model.name;
|
||||
checkable: true;
|
||||
checked: model.active;
|
||||
exclusiveGroup: group;
|
||||
onTriggered: UM.Controller.setActiveView(model.id);
|
||||
text: model.name
|
||||
checkable: true
|
||||
checked: model.active
|
||||
exclusiveGroup: group
|
||||
onTriggered: UM.Controller.setActiveView(model.id)
|
||||
}
|
||||
onObjectAdded: menu.insertItem(index, object)
|
||||
onObjectRemoved: menu.removeItem(object)
|
||||
}
|
||||
ExclusiveGroup { id: group; }
|
||||
ExclusiveGroup { id: group }
|
||||
|
||||
MenuSeparator {}
|
||||
MenuItem { action: Cura.Actions.homeCamera; }
|
||||
|
@ -18,7 +18,6 @@ Item
|
||||
property bool printerConnected: Cura.MachineManager.printerOutputDevices.length != 0
|
||||
property bool printerAcceptsCommands: printerConnected && Cura.MachineManager.printerOutputDevices[0].acceptsCommands
|
||||
property real progress: printerConnected ? Cura.MachineManager.printerOutputDevices[0].progress : 0
|
||||
property int backendState: UM.Backend.state
|
||||
|
||||
property bool showProgress: {
|
||||
// determine if we need to show the progress bar + percentage
|
||||
|
@ -28,6 +28,10 @@ Item {
|
||||
return catalog.i18nc("@label:PrintjobStatus", "Please load a 3D model");
|
||||
}
|
||||
|
||||
if (base.backendState == "undefined") {
|
||||
return ""
|
||||
}
|
||||
|
||||
switch(base.backendState)
|
||||
{
|
||||
case 1:
|
||||
@ -46,7 +50,7 @@ Item {
|
||||
}
|
||||
|
||||
function sliceOrStopSlicing() {
|
||||
if ([1, 5].indexOf(UM.Backend.state) != -1) {
|
||||
if (backend != "undefined" && [1, 5].indexOf(UM.Backend.state) != -1) {
|
||||
backend.forceSlice();
|
||||
} else {
|
||||
backend.stopSlicing();
|
||||
@ -81,7 +85,7 @@ Item {
|
||||
height: parent.height
|
||||
color: UM.Theme.getColor("progressbar_control")
|
||||
radius: UM.Theme.getSize("progressbar_radius").width
|
||||
visible: base.backendState == 2 ? true : false
|
||||
visible: (base.backendState != "undefined" && base.backendState == 2) ? true : false
|
||||
}
|
||||
}
|
||||
|
||||
@ -159,10 +163,8 @@ Item {
|
||||
|
||||
tooltip: [1, 5].indexOf(UM.Backend.state) != -1 ? catalog.i18nc("@info:tooltip","Slice current printjob") : catalog.i18nc("@info:tooltip","Cancel slicing process")
|
||||
// 1 = not started, 2 = Processing
|
||||
enabled: (base.backendState == 1 || base.backendState == 2) && base.activity == true
|
||||
visible: {
|
||||
return !autoSlice && (base.backendState == 1 || base.backendState == 2) && base.activity == true;
|
||||
}
|
||||
enabled: base.backendState != "undefined" && (base.backendState == 1 || base.backendState == 2) && base.activity == true
|
||||
visible: base.backendState != "undefined" && !autoSlice && (base.backendState == 1 || base.backendState == 2) && base.activity == true
|
||||
property bool autoSlice
|
||||
height: UM.Theme.getSize("save_button_save_to_button").height
|
||||
|
||||
@ -235,10 +237,8 @@ Item {
|
||||
|
||||
tooltip: UM.OutputDeviceManager.activeDeviceDescription;
|
||||
// 3 = done, 5 = disabled
|
||||
enabled: (base.backendState == 3 || base.backendState == 5) && base.activity == true
|
||||
visible: {
|
||||
return autoSlice || ((base.backendState == 3 || base.backendState == 5) && base.activity == true);
|
||||
}
|
||||
enabled: base.backendState != "undefined" && (base.backendState == 3 || base.backendState == 5) && base.activity == true
|
||||
visible: base.backendState != "undefined" && autoSlice || ((base.backendState == 3 || base.backendState == 5) && base.activity == true)
|
||||
property bool autoSlice
|
||||
height: UM.Theme.getSize("save_button_save_to_button").height
|
||||
|
||||
@ -315,8 +315,8 @@ Item {
|
||||
width: UM.Theme.getSize("save_button_save_to_button").height
|
||||
height: UM.Theme.getSize("save_button_save_to_button").height
|
||||
// 3 = Done, 5 = Disabled
|
||||
enabled: (base.backendState == 3 || base.backendState == 5) && base.activity == true
|
||||
visible: (devicesModel.deviceCount > 1) && (base.backendState == 3 || base.backendState == 5) && base.activity == true
|
||||
enabled: base.backendState != "undefined" && (base.backendState == 3 || base.backendState == 5) && base.activity == true
|
||||
visible: base.backendState != "undefined" && (devicesModel.deviceCount > 1) && (base.backendState == 3 || base.backendState == 5) && base.activity == true
|
||||
|
||||
|
||||
style: ButtonStyle {
|
||||
|
@ -24,7 +24,7 @@ Rectangle
|
||||
property var connectedPrinter: Cura.MachineManager.printerOutputDevices.length >= 1 ? Cura.MachineManager.printerOutputDevices[0] : null
|
||||
property int backendState: UM.Backend.state
|
||||
|
||||
property bool monitoringPrint: false
|
||||
property bool monitoringPrint: UM.Controller.activeStage.stageId == "MonitorStage"
|
||||
|
||||
property variant printDuration: PrintInformation.currentPrintTime
|
||||
property variant printMaterialLengths: PrintInformation.materialLengths
|
||||
@ -263,7 +263,7 @@ Rectangle
|
||||
{
|
||||
id: controlItem
|
||||
anchors.bottom: footerSeparator.top
|
||||
anchors.top: headerSeparator.bottom
|
||||
anchors.top: monitoringPrint ? base.top : headerSeparator.bottom
|
||||
anchors.left: base.left
|
||||
anchors.right: base.right
|
||||
sourceComponent:
|
||||
@ -282,7 +282,7 @@ Rectangle
|
||||
Loader
|
||||
{
|
||||
anchors.bottom: footerSeparator.top
|
||||
anchors.top: headerSeparator.bottom
|
||||
anchors.top: monitoringPrint ? base.top : headerSeparator.bottom
|
||||
anchors.left: base.left
|
||||
anchors.right: base.right
|
||||
source:
|
||||
|
@ -34,6 +34,7 @@ Column
|
||||
width: height
|
||||
}
|
||||
|
||||
// Extruder Row
|
||||
Item
|
||||
{
|
||||
id: extruderSelectionRow
|
||||
|
@ -403,8 +403,6 @@ Item
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//
|
||||
// Infill
|
||||
//
|
||||
@ -568,18 +566,20 @@ Item
|
||||
model: infillModel
|
||||
anchors.fill: parent
|
||||
|
||||
property int activeIndex: {
|
||||
function activeIndex () {
|
||||
for (var i = 0; i < infillModel.count; i++) {
|
||||
var density = parseInt(infillDensity.properties.value)
|
||||
var steps = parseInt(infillSteps.properties.value)
|
||||
var infillModelItem = infillModel.get(i)
|
||||
|
||||
if (density >= infillModelItem.percentageMin
|
||||
if (infillModelItem != "undefined"
|
||||
&& density >= infillModelItem.percentageMin
|
||||
&& density <= infillModelItem.percentageMax
|
||||
&& steps >= infillModelItem.stepsMin
|
||||
&& steps <= infillModelItem.stepsMax){
|
||||
return i
|
||||
}
|
||||
&& steps <= infillModelItem.stepsMax
|
||||
){
|
||||
return i
|
||||
}
|
||||
}
|
||||
return -1
|
||||
}
|
||||
@ -587,7 +587,7 @@ Item
|
||||
Rectangle
|
||||
{
|
||||
anchors.fill: parent
|
||||
visible: infillIconList.activeIndex == index
|
||||
visible: infillIconList.activeIndex() == index
|
||||
|
||||
border.width: UM.Theme.getSize("default_lining").width
|
||||
border.color: UM.Theme.getColor("quality_slider_unavailable")
|
||||
|
@ -6,7 +6,7 @@ import QtQuick.Controls 1.1
|
||||
import QtQuick.Controls.Styles 1.1
|
||||
import QtQuick.Layouts 1.1
|
||||
|
||||
import UM 1.2 as UM
|
||||
import UM 1.4 as UM
|
||||
import Cura 1.0 as Cura
|
||||
import "Menus"
|
||||
|
||||
@ -16,27 +16,10 @@ Rectangle
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
height: UM.Theme.getSize("sidebar_header").height
|
||||
color: base.monitoringPrint ? UM.Theme.getColor("topbar_background_color_monitoring") : UM.Theme.getColor("topbar_background_color")
|
||||
color: UM.Controller.activeStage.stageId == "MonitorStage" ? UM.Theme.getColor("topbar_background_color_monitoring") : UM.Theme.getColor("topbar_background_color")
|
||||
|
||||
property bool printerConnected: Cura.MachineManager.printerOutputDevices.length != 0
|
||||
property bool printerAcceptsCommands: printerConnected && Cura.MachineManager.printerOutputDevices[0].acceptsCommands
|
||||
property bool monitoringPrint: false
|
||||
|
||||
// outgoing signal
|
||||
signal startMonitoringPrint()
|
||||
signal stopMonitoringPrint()
|
||||
|
||||
// update monitoring status when event was triggered outside topbar
|
||||
Component.onCompleted: {
|
||||
startMonitoringPrint.connect(function () {
|
||||
base.monitoringPrint = true
|
||||
UM.Controller.disableModelRendering()
|
||||
})
|
||||
stopMonitoringPrint.connect(function () {
|
||||
base.monitoringPrint = false
|
||||
UM.Controller.enableModelRendering()
|
||||
})
|
||||
}
|
||||
|
||||
UM.I18nCatalog
|
||||
{
|
||||
@ -67,92 +50,30 @@ Rectangle
|
||||
anchors.rightMargin: UM.Theme.getSize("default_margin").width
|
||||
spacing: UM.Theme.getSize("default_margin").width
|
||||
|
||||
Button
|
||||
// The topbar is dynamically filled with all available stages
|
||||
Repeater
|
||||
{
|
||||
id: showSettings
|
||||
height: UM.Theme.getSize("sidebar_header").height
|
||||
text: catalog.i18nc("@title:tab", "Prepare")
|
||||
checkable: true
|
||||
checked: isChecked()
|
||||
exclusiveGroup: sidebarHeaderBarGroup
|
||||
style: UM.Theme.styles.topbar_header_tab
|
||||
id: stagesMenu
|
||||
|
||||
// We use a Qt.binding to re-bind the checkbox state after manually setting it
|
||||
// https://stackoverflow.com/questions/38798450/qt-5-7-qml-why-are-my-checkbox-property-bindings-disappearing
|
||||
onClicked: {
|
||||
base.stopMonitoringPrint()
|
||||
checked = Qt.binding(isChecked)
|
||||
}
|
||||
model: UM.StageModel{}
|
||||
|
||||
function isChecked () {
|
||||
return !base.monitoringPrint
|
||||
}
|
||||
|
||||
property color overlayColor: "transparent"
|
||||
property string overlayIconSource: ""
|
||||
}
|
||||
|
||||
Button
|
||||
{
|
||||
id: showMonitor
|
||||
width: UM.Theme.getSize("topbar_button").width
|
||||
height: UM.Theme.getSize("sidebar_header").height
|
||||
text: catalog.i18nc("@title:tab", "Monitor")
|
||||
checkable: true
|
||||
checked: isChecked()
|
||||
exclusiveGroup: sidebarHeaderBarGroup
|
||||
style: UM.Theme.styles.topbar_header_tab_no_overlay
|
||||
|
||||
// We use a Qt.binding to re-bind the checkbox state after manually setting it
|
||||
// https://stackoverflow.com/questions/38798450/qt-5-7-qml-why-are-my-checkbox-property-bindings-disappearing
|
||||
onClicked: {
|
||||
base.startMonitoringPrint()
|
||||
checked = Qt.binding(isChecked)
|
||||
}
|
||||
|
||||
function isChecked () {
|
||||
return base.monitoringPrint
|
||||
}
|
||||
|
||||
property string iconSource:
|
||||
delegate: Button
|
||||
{
|
||||
if (!printerConnected)
|
||||
{
|
||||
return UM.Theme.getIcon("tab_status_unknown");
|
||||
}
|
||||
else if (!printerAcceptsCommands)
|
||||
{
|
||||
return UM.Theme.getIcon("tab_status_unknown");
|
||||
}
|
||||
text: model.name
|
||||
checkable: true
|
||||
checked: model.active
|
||||
exclusiveGroup: topbarMenuGroup
|
||||
style: (model.stage.iconSource != "") ? UM.Theme.styles.topbar_header_tab_no_overlay : UM.Theme.styles.topbar_header_tab
|
||||
height: UM.Theme.getSize("sidebar_header").height
|
||||
onClicked: UM.Controller.setActiveStage(model.id)
|
||||
iconSource: model.stage.iconSource
|
||||
|
||||
if (Cura.MachineManager.printerOutputDevices[0].printerState == "maintenance")
|
||||
{
|
||||
return UM.Theme.getIcon("tab_status_busy");
|
||||
}
|
||||
|
||||
switch (Cura.MachineManager.printerOutputDevices[0].jobState)
|
||||
{
|
||||
case "printing":
|
||||
case "pre_print":
|
||||
case "pausing":
|
||||
case "resuming":
|
||||
return UM.Theme.getIcon("tab_status_busy");
|
||||
case "wait_cleanup":
|
||||
return UM.Theme.getIcon("tab_status_finished");
|
||||
case "ready":
|
||||
case "":
|
||||
return UM.Theme.getIcon("tab_status_connected")
|
||||
case "paused":
|
||||
return UM.Theme.getIcon("tab_status_paused")
|
||||
case "error":
|
||||
return UM.Theme.getIcon("tab_status_stopped")
|
||||
default:
|
||||
return UM.Theme.getIcon("tab_status_unknown")
|
||||
}
|
||||
property color overlayColor: "transparent"
|
||||
property string overlayIconSource: ""
|
||||
}
|
||||
}
|
||||
|
||||
ExclusiveGroup { id: sidebarHeaderBarGroup }
|
||||
ExclusiveGroup { id: topbarMenuGroup }
|
||||
}
|
||||
|
||||
ToolButton
|
||||
@ -220,17 +141,16 @@ Rectangle
|
||||
menu: PrinterMenu { }
|
||||
}
|
||||
|
||||
//View orientation Item
|
||||
// View orientation Item
|
||||
Row
|
||||
{
|
||||
id: viewOrientationControl
|
||||
height: 30
|
||||
|
||||
spacing: 2
|
||||
visible: UM.Controller.activeStage.stageId != "MonitorStage"
|
||||
|
||||
visible: !base.monitoringPrint
|
||||
|
||||
anchors {
|
||||
anchors
|
||||
{
|
||||
verticalCenter: base.verticalCenter
|
||||
right: viewModeButton.right
|
||||
rightMargin: UM.Theme.getSize("default_margin").width + viewModeButton.width
|
||||
@ -308,7 +228,7 @@ Rectangle
|
||||
}
|
||||
|
||||
style: UM.Theme.styles.combobox
|
||||
visible: !base.monitoringPrint
|
||||
visible: UM.Controller.activeStage.stageId != "MonitorStage"
|
||||
|
||||
model: UM.ViewModel { }
|
||||
textRole: "name"
|
||||
|
@ -14,7 +14,6 @@ setting_version = 4
|
||||
cool_fan_speed = 40
|
||||
infill_overlap = 15
|
||||
material_final_print_temperature = =material_print_temperature - 5
|
||||
prime_tower_enable = True
|
||||
prime_tower_purge_volume = 0.6
|
||||
prime_tower_size = 12
|
||||
prime_tower_wall_thickness = 0.9
|
||||
|
@ -11,7 +11,6 @@ weight = 0
|
||||
setting_version = 4
|
||||
|
||||
[values]
|
||||
infill_overlap = =10 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0
|
||||
prime_tower_size = 12
|
||||
prime_tower_wall_thickness = 0.9
|
||||
retraction_extrusion_window = 0.5
|
||||
|
@ -14,9 +14,8 @@ setting_version = 4
|
||||
cool_min_layer_time_fan_speed_max = 20
|
||||
cool_min_speed = 12
|
||||
infill_line_width = =round(line_width * 0.5 / 0.4, 2)
|
||||
infill_overlap = =10 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0
|
||||
machine_nozzle_cool_down_speed = 0.9
|
||||
machine_nozzle_heat_up_speed = 2.0
|
||||
machine_nozzle_heat_up_speed = 1.4
|
||||
ooze_shield_angle = 40
|
||||
raft_acceleration = =acceleration_layer_0
|
||||
raft_airgap = =round(layer_height_0 * 0.85, 2)
|
||||
@ -24,7 +23,7 @@ raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 3)
|
||||
raft_jerk = =jerk_layer_0
|
||||
raft_margin = 10
|
||||
raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2)
|
||||
retraction_min_travel = =line_width * 2
|
||||
retraction_min_travel = 5
|
||||
skin_overlap = 50
|
||||
speed_print = 70
|
||||
speed_topbottom = =math.ceil(speed_print * 30 / 70)
|
||||
|
@ -28,6 +28,9 @@ machine_min_cool_heat_time_window = 15
|
||||
multiple_mesh_overlap = 0
|
||||
ooze_shield_angle = 40
|
||||
prime_tower_enable = True
|
||||
prime_tower_wipe_enabled = True
|
||||
raft_airgap = 0.25
|
||||
raft_interface_thickness = =max(layer_height * 1.5, 0.225)
|
||||
retraction_count_max = 80
|
||||
retraction_hop = 2
|
||||
retraction_hop_enabled = True
|
||||
|
@ -17,7 +17,7 @@ cool_min_speed = 10
|
||||
infill_overlap = 10
|
||||
infill_pattern = grid
|
||||
machine_nozzle_cool_down_speed = 0.9
|
||||
machine_nozzle_heat_up_speed = 2.0
|
||||
machine_nozzle_heat_up_speed = 1.4
|
||||
material_final_print_temperature = =max(-273.15, material_print_temperature - 15)
|
||||
material_initial_print_temperature = =max(-273.15, material_print_temperature - 10)
|
||||
material_print_temperature = 190
|
||||
|
@ -57,4 +57,3 @@ travel_avoid_distance = 3
|
||||
wall_0_inset = 0
|
||||
wall_line_width_x = =line_width
|
||||
wall_thickness = =line_width * 3
|
||||
|
||||
|
@ -11,7 +11,6 @@ setting_version = 4
|
||||
[values]
|
||||
brim_width = 7
|
||||
infill_line_width = 0.23
|
||||
infill_overlap = 0
|
||||
layer_height_0 = 0.17
|
||||
line_width = 0.23
|
||||
machine_nozzle_cool_down_speed = 0.85
|
||||
@ -21,10 +20,18 @@ machine_nozzle_size = 0.25
|
||||
machine_nozzle_tip_outer_diameter = 0.65
|
||||
material_final_print_temperature = =material_print_temperature - 10
|
||||
material_initial_print_temperature = =material_print_temperature - 5
|
||||
raft_airgap = 0.3
|
||||
raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2
|
||||
raft_interface_line_spacing = =raft_interface_line_width + 0.2
|
||||
raft_interface_line_width = =line_width * 2
|
||||
raft_interface_thickness = =layer_height * 1.5
|
||||
raft_jerk = =jerk_print
|
||||
raft_margin = 15
|
||||
raft_surface_layers = 2
|
||||
retraction_count_max = 25
|
||||
retraction_extrusion_window = 1
|
||||
retraction_min_travel = 0.7
|
||||
retraction_prime_speed = =retraction_speed
|
||||
skin_overlap = 15
|
||||
speed_layer_0 = 20
|
||||
speed_print = 55
|
||||
@ -32,9 +39,12 @@ speed_topbottom = 20
|
||||
speed_wall = =math.ceil(speed_print * 30 / 55)
|
||||
support_angle = 60
|
||||
support_bottom_distance = =support_z_distance / 2
|
||||
support_pattern = zigzag
|
||||
support_top_distance = =support_z_distance
|
||||
support_use_towers = True
|
||||
support_z_distance = =layer_height * 2
|
||||
switch_extruder_prime_speed = =switch_extruder_retraction_speeds
|
||||
switch_extruder_retraction_amount = =machine_heat_zone_length
|
||||
top_bottom_thickness = 1.2
|
||||
wall_line_width_x = 0.23
|
||||
wall_thickness = 1.3
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user