mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-06 14:37:29 -06:00
Merge branch '2.1'
Conflicts: plugins/RemovableDriveOutputDevice/OSXRemovableDrivePlugin.py plugins/RemovableDriveOutputDevice/WindowsRemovableDrivePlugin.py plugins/USBPrinting/PrinterConnection.py resources/machines/fdmprinter.json resources/profiles/ultimaker2+/abs_0.4_high.curaprofile
This commit is contained in:
commit
de9a66e1f4
47 changed files with 248 additions and 154 deletions
|
@ -47,25 +47,41 @@ if(NOT ${URANIUM_SCRIPTS_DIR} STREQUAL "")
|
|||
add_custom_command(TARGET translations POST_BUILD COMMAND mkdir ARGS -p ${CMAKE_BINARY_DIR}/resources/i18n/${lang}/LC_MESSAGES/ COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} ARGS ${po_file} -o ${mo_file} -f)
|
||||
endforeach()
|
||||
endforeach()
|
||||
install(DIRECTORY ${CMAKE_BINARY_DIR}/resources DESTINATION ${CMAKE_INSTALL_DATADIR}/cura)
|
||||
install(DIRECTORY ${CMAKE_BINARY_DIR}/resources
|
||||
DESTINATION ${CMAKE_INSTALL_DATADIR}/cura)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
find_package(PythonInterp 3.4.0 REQUIRED)
|
||||
|
||||
install(DIRECTORY resources DESTINATION ${CMAKE_INSTALL_DATADIR}/cura)
|
||||
install(DIRECTORY plugins DESTINATION lib/cura)
|
||||
install(FILES cura_app.py DESTINATION ${CMAKE_INSTALL_BINDIR} PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
|
||||
install(DIRECTORY resources
|
||||
DESTINATION ${CMAKE_INSTALL_DATADIR}/cura)
|
||||
install(DIRECTORY plugins
|
||||
DESTINATION lib/cura)
|
||||
if(NOT APPLE AND NOT WIN32)
|
||||
install(DIRECTORY cura DESTINATION lib/python${PYTHON_VERSION_MAJOR}/dist-packages FILES_MATCHING PATTERN *.py)
|
||||
install(FILES ${CMAKE_BINARY_DIR}/CuraVersion.py DESTINATION lib/python${PYTHON_VERSION_MAJOR}/dist-packages/cura)
|
||||
install(FILES cura.desktop DESTINATION ${CMAKE_INSTALL_DATADIR}/applications)
|
||||
install(FILES cura_app.py
|
||||
DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
|
||||
RENAME cura)
|
||||
install(DIRECTORY cura
|
||||
DESTINATION lib/python${PYTHON_VERSION_MAJOR}/dist-packages
|
||||
FILES_MATCHING PATTERN *.py)
|
||||
install(FILES ${CMAKE_BINARY_DIR}/CuraVersion.py
|
||||
DESTINATION lib/python${PYTHON_VERSION_MAJOR}/dist-packages/cura)
|
||||
install(FILES cura.desktop
|
||||
DESTINATION ${CMAKE_INSTALL_DATADIR}/applications)
|
||||
install(FILES cura.sharedmimeinfo
|
||||
DESTINATION ${CMAKE_INSTALL_DATADIR}/mime/packages/
|
||||
RENAME cura.xml )
|
||||
else()
|
||||
install(DIRECTORY cura DESTINATION lib/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages FILES_MATCHING PATTERN *.py)
|
||||
install(FILES ${CMAKE_BINARY_DIR}/CuraVersion.py DESTINATION lib/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages/cura)
|
||||
install(FILES cura_app.py
|
||||
DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
|
||||
install(DIRECTORY cura
|
||||
DESTINATION lib/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages
|
||||
FILES_MATCHING PATTERN *.py)
|
||||
install(FILES ${CMAKE_BINARY_DIR}/CuraVersion.py
|
||||
DESTINATION lib/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages/cura)
|
||||
endif()
|
||||
|
||||
include(CPackConfig.cmake)
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
[Desktop Entry]
|
||||
Version=15.06.01
|
||||
Version=1
|
||||
Name=Cura
|
||||
Name[de]=Cura
|
||||
GenericName=3D Printing Software
|
||||
GenericName[de]=3D-Druck-Software
|
||||
Comment=
|
||||
Exec=/usr/bin/cura_app.py %f
|
||||
TryExec=/usr/bin/cura_app.py %f
|
||||
Comment=Cura converts 3D models into paths for a 3D printer. It prepares your print for maximum accuracy, minimum printing time and good reliability with many extra features that make your print come out great.
|
||||
Exec=/usr/bin/cura %F
|
||||
TryExec=/usr/bin/cura
|
||||
Icon=/usr/share/cura/resources/images/cura-icon.png
|
||||
Terminal=false
|
||||
Type=Application
|
||||
|
|
|
@ -89,8 +89,6 @@ class PlatformPhysics:
|
|||
job.start()
|
||||
node.callDecoration("setConvexHullJob", job)
|
||||
|
||||
elif Selection.isSelected(node):
|
||||
pass
|
||||
elif Preferences.getInstance().getValue("physics/automatic_push_free"):
|
||||
# Check for collisions between convex hulls
|
||||
for other_node in BreadthFirstIterator(root):
|
||||
|
|
|
@ -157,6 +157,7 @@ class CuraEngineBackend(Backend):
|
|||
self._process = None
|
||||
except: # terminating a process that is already terminating causes an exception, silently ignore this.
|
||||
pass
|
||||
Logger.log("d", "Engine process is killed")
|
||||
|
||||
def _onStartSliceCompleted(self, job):
|
||||
if job.getError() or job.getResult() != True:
|
||||
|
|
|
@ -105,7 +105,7 @@ class StartSliceJob(Job):
|
|||
|
||||
Logger.log("d", "Sending data to engine for slicing.")
|
||||
self._socket.sendMessage(slice_message)
|
||||
|
||||
Logger.log("d", "Sending data to engine is completed")
|
||||
self.setResult(True)
|
||||
|
||||
def _expandGcodeTokens(self, key, value, settings):
|
||||
|
|
|
@ -8,7 +8,6 @@
|
|||
"layer_height": "layer_height",
|
||||
"layer_height_0": "bottom_thickness",
|
||||
"wall_thickness": "wall_thickness",
|
||||
"top_bottom_thickness": "solid_layer_thickness",
|
||||
"top_thickness": "0 if (solid_top == \"False\") else solid_layer_thickness",
|
||||
"bottom_thickness": "0 if (solid_bottom == \"False\") else solid_layer_thickness",
|
||||
"infill_sparse_density": "fill_density",
|
||||
|
|
|
@ -237,7 +237,7 @@ Item {
|
|||
|
||||
delegate: ToolButton {
|
||||
id: button;
|
||||
x: model.depth * UM.Theme.getSize("default_margin").width;
|
||||
x: model.visible_depth * UM.Theme.getSize("default_margin").width;
|
||||
text: model.name;
|
||||
tooltip: model.description;
|
||||
visible: !model.global_only
|
||||
|
|
|
@ -25,6 +25,7 @@ class RemovableDriveOutputDevice(OutputDevice):
|
|||
self._writing = False
|
||||
|
||||
def requestWrite(self, node, file_name = None, filter_by_machine = False):
|
||||
filter_by_machine = True # This plugin is indended to be used by machine (regardless of what it was told to do)
|
||||
if self._writing:
|
||||
raise OutputDeviceError.DeviceBusyError()
|
||||
|
||||
|
|
|
@ -6,9 +6,10 @@ import time
|
|||
|
||||
from UM.Message import Message
|
||||
from UM.OutputDevice.OutputDevicePlugin import OutputDevicePlugin
|
||||
from UM.Logger import Logger
|
||||
|
||||
from . import RemovableDriveOutputDevice
|
||||
|
||||
from UM.Logger import Logger
|
||||
from UM.i18n import i18nCatalog
|
||||
catalog = i18nCatalog("cura")
|
||||
|
||||
|
@ -37,11 +38,14 @@ class RemovableDrivePlugin(OutputDevicePlugin):
|
|||
|
||||
def ejectDevice(self, device):
|
||||
try:
|
||||
Logger.log("i", "Attempting to eject the device")
|
||||
result = self.performEjectDevice(device)
|
||||
except Exception as e:
|
||||
Logger.log("e", "Ejection failed due to: %s" % str(e))
|
||||
result = False
|
||||
|
||||
if result:
|
||||
Logger.log("i", "Succesfully ejected the device")
|
||||
message = Message(catalog.i18nc("@info:status", "Ejected {0}. You can now safely remove the drive.").format(device.getName()))
|
||||
message.show()
|
||||
else:
|
||||
|
|
|
@ -10,6 +10,9 @@ from . import RemovableDrivePlugin
|
|||
import string
|
||||
import ctypes
|
||||
|
||||
from UM.i18n import i18nCatalog
|
||||
catalog = i18nCatalog("cura")
|
||||
|
||||
# WinAPI Constants that we need
|
||||
# Hardcoded here due to stupid WinDLL stuff that does not give us access to these values.
|
||||
DRIVE_REMOVABLE = 2 # [CodeStyle: Windows Enum value]
|
||||
|
@ -24,6 +27,21 @@ IOCTL_STORAGE_EJECT_MEDIA = 2967560 # [CodeStyle: Windows Enum value]
|
|||
|
||||
OPEN_EXISTING = 3 # [CodeStyle: Windows Enum value]
|
||||
|
||||
# Setup the DeviceIoControl function arguments and return type.
|
||||
# See ctypes documentation for details on how to call C functions from python, and why this is important.
|
||||
windll.kernel32.DeviceIoControl.argtypes = [
|
||||
wintypes.HANDLE, # _In_ HANDLE hDevice
|
||||
wintypes.DWORD, # _In_ DWORD dwIoControlCode
|
||||
wintypes.LPVOID, # _In_opt_ LPVOID lpInBuffer
|
||||
wintypes.DWORD, # _In_ DWORD nInBufferSize
|
||||
wintypes.LPVOID, # _Out_opt_ LPVOID lpOutBuffer
|
||||
wintypes.DWORD, # _In_ DWORD nOutBufferSize
|
||||
ctypes.POINTER(wintypes.DWORD), # _Out_opt_ LPDWORD lpBytesReturned
|
||||
wintypes.LPVOID # _Inout_opt_ LPOVERLAPPED lpOverlapped
|
||||
]
|
||||
windll.kernel32.DeviceIoControl.restype = wintypes.BOOL
|
||||
|
||||
|
||||
## Removable drive support for windows
|
||||
class WindowsRemovableDrivePlugin(RemovableDrivePlugin.RemovableDrivePlugin):
|
||||
def checkRemovableDrives(self):
|
||||
|
@ -75,16 +93,31 @@ class WindowsRemovableDrivePlugin(RemovableDrivePlugin.RemovableDrivePlugin):
|
|||
handle = ctypes.windll.kernel32.CreateFileA("\\\\.\\{0}".format(device.getId()[:-1]).encode("ascii"), GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, None, OPEN_EXISTING, 0, None )
|
||||
|
||||
if handle == -1:
|
||||
print(ctypes.windll.kernel32.GetLastError())
|
||||
return
|
||||
# ctypes.WinError sets up an GetLastError API call for windows as an Python OSError exception.
|
||||
# So we use this to raise the error to our caller.
|
||||
raise ctypes.WinError()
|
||||
|
||||
# The DeviceIoControl requires a bytes_returned pointer to be a valid pointer.
|
||||
# So create a ctypes DWORD to reference. (Without this pointer the DeviceIoControl function will crash with an access violation after doing its job.
|
||||
bytes_returned = wintypes.DWORD(0)
|
||||
|
||||
error = None
|
||||
|
||||
result = None
|
||||
# Then, try and tell it to eject
|
||||
if not ctypes.windll.kernel32.DeviceIoControl(handle, IOCTL_STORAGE_EJECT_MEDIA, None, None, None, None, None, None):
|
||||
result = False
|
||||
else:
|
||||
result = True
|
||||
return_code = windll.kernel32.DeviceIoControl(handle, IOCTL_STORAGE_EJECT_MEDIA, None, 0, None, 0, ctypes.pointer(bytes_returned), None)
|
||||
# DeviceIoControl with IOCTL_STORAGE_EJECT_MEDIA return 0 on error.
|
||||
if return_code == 0:
|
||||
# ctypes.WinError sets up an GetLastError API call for windows as an Python OSError exception.
|
||||
# So we use this to raise the error to our caller.
|
||||
error = ctypes.WinError()
|
||||
# Do not raise an error here yet, so we can properly close the handle.
|
||||
|
||||
# Finally, close the handle
|
||||
ctypes.windll.kernel32.CloseHandle(handle)
|
||||
return result
|
||||
windll.kernel32.CloseHandle(handle)
|
||||
|
||||
# If an error happened in the DeviceIoControl, raise it now.
|
||||
if error:
|
||||
raise error
|
||||
|
||||
# Return success
|
||||
return True
|
|
@ -366,15 +366,33 @@ class PrinterConnection(OutputDevice, QObject, SignalEmitter):
|
|||
Logger.log("d", "Setting bed temperature to %s", temperature)
|
||||
self._sendCommand("M140 S%s" % temperature)
|
||||
|
||||
@pyqtSlot()
|
||||
def setMoveToRelative(self):
|
||||
self._sendCommand("G91")
|
||||
|
||||
@pyqtSlot()
|
||||
def setMoveToAbsolute(self):
|
||||
self._sendCommand("G90")
|
||||
|
||||
@pyqtSlot("long", "long","long")
|
||||
def moveHead(self, x, y, z):
|
||||
Logger.log("d","Moving head to %s, %s , %s", x, y, z)
|
||||
self._sendCommand("G0 X%s Y%s Z%s"%(x,y,z))
|
||||
self._sendCommand("G0 X%s Y%s Z%s F3000" % (x, y, z))
|
||||
|
||||
@pyqtSlot("long", "long","long")
|
||||
def moveHeadRelative(self, x, y, z):
|
||||
self.setMoveToRelative()
|
||||
self.moveHead(x,y,z)
|
||||
self.setMoveToAbsolute()
|
||||
|
||||
@pyqtSlot()
|
||||
def homeHead(self):
|
||||
self._sendCommand("G28")
|
||||
|
||||
@pyqtSlot()
|
||||
def homeBed(self):
|
||||
self._sendCommand("G28 Z")
|
||||
|
||||
## Directly send the command, withouth checking connection state (eg; printing).
|
||||
# \param cmd string with g-code
|
||||
def _sendCommand(self, cmd):
|
||||
|
@ -466,7 +484,7 @@ class PrinterConnection(OutputDevice, QObject, SignalEmitter):
|
|||
self._bed_temperature = temperature
|
||||
self.bedTemperatureChanged.emit()
|
||||
|
||||
def requestWrite(self, node, file_name = None):
|
||||
def requestWrite(self, node, file_name = None, filter_by_machine = False):
|
||||
self.showControlInterface()
|
||||
|
||||
def _setEndstopState(self, endstop_key, value):
|
||||
|
|
|
@ -8,14 +8,14 @@ msgstr ""
|
|||
"Project-Id-Version: Cura 2.1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-01-18 11:54+0100\n"
|
||||
"PO-Revision-Date: 2016-02-07 16:01+0100\n"
|
||||
"PO-Revision-Date: 2016-03-09 15:28+0100\n"
|
||||
"Language: de\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Last-Translator: Thomas Karl Pietrowski <thopiekar@googlemail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"X-Generator: Poedit 1.8.4\n"
|
||||
"X-Generator: Poedit 1.8.7.1\n"
|
||||
|
||||
#: /home/tamara/2.1/Cura/cura/CrashHandler.py:26
|
||||
msgctxt "@title:window"
|
||||
|
@ -249,7 +249,7 @@ msgstr "Über USB drucken"
|
|||
#: /home/tamara/2.1/Cura/plugins/USBPrinting/PrinterConnection.py:37
|
||||
msgctxt "@info:tooltip"
|
||||
msgid "Print with USB"
|
||||
msgstr "Über USB drucken"
|
||||
msgstr "Drucken über USB"
|
||||
|
||||
#: /home/tamara/2.1/Cura/plugins/USBPrinting/__init__.py:13
|
||||
msgctxt "@label"
|
||||
|
|
|
@ -350,6 +350,7 @@
|
|||
"min_value_warning": "0.2",
|
||||
"max_value_warning": "5",
|
||||
"visible": false,
|
||||
"enabled": "False",
|
||||
"children": {
|
||||
"wall_thickness": {
|
||||
"label": "Wall Thickness",
|
||||
|
@ -357,8 +358,8 @@
|
|||
"unit": "mm",
|
||||
"default": 0.8,
|
||||
"min_value": "0",
|
||||
"min_value_warning": "0.2",
|
||||
"max_value_warning": "5",
|
||||
"min_value_warning": "line_width",
|
||||
"max_value_warning": "5 * line_width",
|
||||
"type": "float",
|
||||
"visible": true,
|
||||
"children": {
|
||||
|
@ -449,12 +450,22 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
|
||||
"alternate_extra_perimeter": {
|
||||
"label": "Alternate Extra Wall",
|
||||
"description": "Make an extra wall at every second layer, so that infill will be caught between an extra wall above and one below. This results in a better cohesion between infill and walls, but might have an impact on the surface quality.",
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"visible": false,
|
||||
"inherit": false
|
||||
},
|
||||
"remove_overlapping_walls_enabled": {
|
||||
"label": "Remove Overlapping Wall Parts",
|
||||
"description": "Remove parts of a wall which share an overlap which would result in overextrusion in some places. These overlaps occur in thin pieces in a model and sharp corners.",
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"visible": false,
|
||||
"enabled": "False",
|
||||
"children": {
|
||||
"remove_overlapping_walls_0_enabled": {
|
||||
"label": "Remove Overlapping Outer Wall Parts",
|
||||
|
@ -462,7 +473,8 @@
|
|||
"type": "boolean",
|
||||
"default": false,
|
||||
"visible": false,
|
||||
"inherit": true
|
||||
"inherit": true,
|
||||
"enabled": "False"
|
||||
},
|
||||
"remove_overlapping_walls_x_enabled": {
|
||||
"label": "Remove Overlapping Other Wall Parts",
|
||||
|
@ -676,6 +688,8 @@
|
|||
"default": 150,
|
||||
"min_value": "0",
|
||||
"max_value_warning": "260",
|
||||
"enabled": "False",
|
||||
"enabled_before_removal": "material_flow_dependent_temperature",
|
||||
"global_only": true
|
||||
},
|
||||
"material_extrusion_cool_down_speed": {
|
||||
|
@ -687,7 +701,8 @@
|
|||
"min_value": "0",
|
||||
"max_value_warning": "10.0",
|
||||
"global_only": "True",
|
||||
"enabled": "material_flow_dependent_temperature or machine_extruder_count > 1",
|
||||
"enabled": "False",
|
||||
"enabled_before_removal": "material_flow_dependent_temperature or machine_extruder_count > 1",
|
||||
"visible": false
|
||||
},
|
||||
"material_bed_temperature": {
|
||||
|
@ -1015,8 +1030,8 @@
|
|||
"default": true,
|
||||
"visible": false,
|
||||
"enabled": "retraction_combing",
|
||||
"global_only": "True",
|
||||
"children": {
|
||||
"global_only": "True"
|
||||
},
|
||||
"travel_avoid_distance": {
|
||||
"label": "Avoid Distance",
|
||||
"description": "The distance to stay clear of parts which are avoided during travel.",
|
||||
|
@ -1027,10 +1042,8 @@
|
|||
"max_value_warning": "machine_nozzle_tip_outer_diameter * 5",
|
||||
"visible": false,
|
||||
"inherit": false,
|
||||
"enabled": "retraction_combing",
|
||||
"enabled": "retraction_combing and travel_avoid_other_parts",
|
||||
"global_only": "True"
|
||||
}
|
||||
}
|
||||
},
|
||||
"coasting_enable": {
|
||||
"label": "Enable Coasting",
|
||||
|
@ -1090,8 +1103,8 @@
|
|||
"description": "Enable the cooling fan during the print. The extra cooling from the cooling fan helps parts with small cross sections that print each layer quickly.",
|
||||
"type": "boolean",
|
||||
"default": true,
|
||||
"global_only": "True",
|
||||
"children": {
|
||||
"global_only": "True"
|
||||
},
|
||||
"cool_fan_speed": {
|
||||
"label": "Fan Speed",
|
||||
"description": "Fan speed used for the print cooling fan on the printer head.",
|
||||
|
@ -1101,7 +1114,8 @@
|
|||
"max_value": "100",
|
||||
"default": 100,
|
||||
"visible": false,
|
||||
"inherit_function": "100.0 if parent_value else 0.0",
|
||||
"inherit_function": "100.0 if cool_fan_enabled else 0.0",
|
||||
"enabled": "cool_fan_enabled",
|
||||
"global_only": "True",
|
||||
"children": {
|
||||
"cool_fan_speed_min": {
|
||||
|
@ -1110,10 +1124,10 @@
|
|||
"unit": "%",
|
||||
"type": "float",
|
||||
"min_value": "0",
|
||||
"max_value": "min(100, cool_fan_speed_max)",
|
||||
"inherit_function": "parent_value",
|
||||
"max_value": "100",
|
||||
"default": 100,
|
||||
"visible": false,
|
||||
"enabled": "cool_fan_enabled",
|
||||
"global_only": "True"
|
||||
},
|
||||
"cool_fan_speed_max": {
|
||||
|
@ -1121,16 +1135,14 @@
|
|||
"description": "Normally the fan runs at the minimum fan speed. If the layer is slowed down due to minimum layer time, the fan speed adjusts between minimum and maximum fan speed.",
|
||||
"unit": "%",
|
||||
"type": "float",
|
||||
"min_value": "max(0, cool_fan_speed_min)",
|
||||
"min_value": "0",
|
||||
"max_value": "100",
|
||||
"inherit": false,
|
||||
"default": 100,
|
||||
"visible": false,
|
||||
"enabled": "cool_fan_enabled",
|
||||
"global_only": "True"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"cool_fan_full_at_height": {
|
||||
"label": "Fan Full on at Height",
|
||||
|
@ -1480,8 +1492,8 @@
|
|||
"min_value_warning": "support_minimal_diameter",
|
||||
"max_value_warning": "10",
|
||||
"visible": false,
|
||||
"enabled": "support_enable and support_use_towers",
|
||||
"children": {
|
||||
"enabled": "support_enable and support_use_towers"
|
||||
},
|
||||
"support_minimal_diameter": {
|
||||
"label": "Minimum Diameter",
|
||||
"description": "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower.",
|
||||
|
@ -1494,8 +1506,6 @@
|
|||
"inherit": true,
|
||||
"visible": false,
|
||||
"enabled": "support_enable and support_use_towers"
|
||||
}
|
||||
}
|
||||
},
|
||||
"support_tower_roof_angle": {
|
||||
"label": "Tower Roof Angle",
|
||||
|
@ -1576,6 +1586,7 @@
|
|||
"raft": "Raft"
|
||||
},
|
||||
"default": "skirt",
|
||||
"inherit_function": "\"skirt\" if machine_heated_bed else \"brim\"",
|
||||
"global_only": "True"
|
||||
},
|
||||
"skirt_line_count": {
|
||||
|
|
|
@ -40,8 +40,8 @@
|
|||
"machine_settings": {
|
||||
"machine_start_gcode" : { "default": "" },
|
||||
"machine_end_gcode" : { "default": "" },
|
||||
"machine_width": { "default": 230 },
|
||||
"machine_depth": { "default": 225 },
|
||||
"machine_width": { "default": 223 },
|
||||
"machine_depth": { "default": 223 },
|
||||
"machine_height": { "default": 205 },
|
||||
"machine_heated_bed": { "default": true },
|
||||
|
||||
|
|
|
@ -5,8 +5,5 @@ name = PLA
|
|||
|
||||
[settings]
|
||||
material_bed_temperature = 60
|
||||
platform_adhesion = skirt
|
||||
material_flow = 100
|
||||
material_print_temperature = 210
|
||||
cool_fan_speed = 100
|
||||
cool_fan_speed_max = 100
|
|
@ -19,7 +19,6 @@ speed_print = 20
|
|||
cool_min_speed = 25
|
||||
line_width = 0.22
|
||||
infill_sparse_density = 22
|
||||
machine_nozzle_size = 0.22
|
||||
speed_wall_0 = 20
|
||||
cool_min_layer_time = 2
|
||||
cool_lift_head = True
|
||||
|
|
|
@ -19,7 +19,6 @@ cool_min_layer_time = 3
|
|||
cool_min_speed = 20
|
||||
line_width = 0.35
|
||||
infill_sparse_density = 18
|
||||
machine_nozzle_size = 0.35
|
||||
speed_travel = 150
|
||||
speed_wall_0 = 30
|
||||
adhesion_type = brim
|
||||
|
|
|
@ -19,7 +19,6 @@ adhesion_type = brim
|
|||
cool_min_speed = 20
|
||||
line_width = 0.35
|
||||
infill_sparse_density = 22
|
||||
machine_nozzle_size = 0.35
|
||||
speed_wall_0 = 20
|
||||
cool_min_layer_time = 3
|
||||
cool_lift_head = True
|
||||
|
|
|
@ -16,7 +16,6 @@ speed_topbottom = 20
|
|||
cool_min_layer_time = 3
|
||||
cool_min_speed = 20
|
||||
line_width = 0.35
|
||||
machine_nozzle_size = 0.35
|
||||
speed_wall_0 = 20
|
||||
adhesion_type = brim
|
||||
cool_lift_head = True
|
||||
|
|
|
@ -18,7 +18,6 @@ speed_topbottom = 20
|
|||
adhesion_type = brim
|
||||
cool_min_speed = 20
|
||||
line_width = 0.53
|
||||
machine_nozzle_size = 0.53
|
||||
speed_wall_0 = 20
|
||||
cool_min_layer_time = 3
|
||||
cool_lift_head = True
|
||||
|
|
|
@ -18,7 +18,6 @@ speed_topbottom = 20
|
|||
adhesion_type = brim
|
||||
cool_min_speed = 15
|
||||
line_width = 0.7
|
||||
machine_nozzle_size = 0.7
|
||||
speed_wall_0 = 20
|
||||
cool_min_layer_time = 3
|
||||
cool_lift_head = True
|
||||
|
|
|
@ -19,7 +19,6 @@ cool_min_layer_time = 2
|
|||
speed_print = 20
|
||||
line_width = 0.22
|
||||
infill_sparse_density = 22
|
||||
machine_nozzle_size = 0.22
|
||||
speed_wall_0 = 20
|
||||
adhesion_type = brim
|
||||
cool_lift_head = True
|
||||
|
|
|
@ -20,7 +20,6 @@ speed_topbottom = 20
|
|||
speed_travel = 150
|
||||
line_width = 0.35
|
||||
infill_sparse_density = 18
|
||||
machine_nozzle_size = 0.35
|
||||
speed_wall_0 = 30
|
||||
adhesion_type = brim
|
||||
cool_lift_head = True
|
||||
|
|
|
@ -18,7 +18,6 @@ speed_topbottom = 20
|
|||
adhesion_type = brim
|
||||
line_width = 0.35
|
||||
infill_sparse_density = 22
|
||||
machine_nozzle_size = 0.35
|
||||
speed_wall_0 = 20
|
||||
cool_min_layer_time = 3
|
||||
cool_lift_head = True
|
||||
|
|
|
@ -15,7 +15,6 @@ speed_infill = 45
|
|||
speed_topbottom = 20
|
||||
cool_min_layer_time = 3
|
||||
line_width = 0.35
|
||||
machine_nozzle_size = 0.35
|
||||
speed_wall_0 = 20
|
||||
adhesion_type = brim
|
||||
cool_lift_head = True
|
||||
|
|
|
@ -18,7 +18,6 @@ speed_topbottom = 20
|
|||
cool_min_layer_time = 3
|
||||
speed_print = 20
|
||||
line_width = 0.53
|
||||
machine_nozzle_size = 0.53
|
||||
speed_wall_0 = 20
|
||||
adhesion_type = brim
|
||||
cool_lift_head = True
|
||||
|
|
|
@ -18,7 +18,6 @@ speed_topbottom = 20
|
|||
cool_min_layer_time = 3
|
||||
speed_print = 20
|
||||
line_width = 0.7
|
||||
machine_nozzle_size = 0.7
|
||||
speed_wall_0 = 20
|
||||
adhesion_type = brim
|
||||
cool_lift_head = True
|
||||
|
|
|
@ -7,7 +7,7 @@ material = PLA
|
|||
weight = -2
|
||||
|
||||
[settings]
|
||||
machine_nozzle_size = 0.22
|
||||
line_width = 0.22
|
||||
layer_height = 0.06
|
||||
layer_height_0 = 0.15
|
||||
shell_thickness = 0.88
|
||||
|
@ -18,7 +18,6 @@ infill_wipe_dist = 0.1
|
|||
retraction_amount = 6
|
||||
retraction_min_travel = 0.5
|
||||
retraction_count_max = 30
|
||||
retraction_extrusion_window = 6
|
||||
speed_infill = 30
|
||||
speed_wall_0 = 20
|
||||
speed_wall_x = 25
|
||||
|
|
|
@ -7,7 +7,7 @@ material = PLA
|
|||
weight = -1
|
||||
|
||||
[settings]
|
||||
machine_nozzle_size = 0.35
|
||||
line_width = 0.35
|
||||
layer_height = 0.15
|
||||
layer_height_0 = 0.26
|
||||
shell_thickness = 0.7
|
||||
|
@ -18,7 +18,6 @@ infill_wipe_dist = 0.2
|
|||
retraction_amount = 5.5
|
||||
retraction_min_travel = 0.5
|
||||
retraction_count_max = 30
|
||||
retraction_extrusion_window = 6
|
||||
speed_infill = 60
|
||||
speed_wall_0 = 40
|
||||
speed_wall_x = 50
|
||||
|
|
|
@ -7,7 +7,7 @@ material = PLA
|
|||
weight = -3
|
||||
|
||||
[settings]
|
||||
machine_nozzle_size = 0.35
|
||||
line_width = 0.35
|
||||
layer_height = 0.06
|
||||
layer_height_0 = 0.26
|
||||
shell_thickness = 1.05
|
||||
|
@ -18,7 +18,6 @@ infill_wipe_dist = 0.18
|
|||
retraction_amount = 5.5
|
||||
retraction_min_travel = 0.5
|
||||
retraction_count_max = 30
|
||||
retraction_extrusion_window = 6
|
||||
speed_infill = 50
|
||||
speed_wall_0 = 30
|
||||
speed_wall_x = 40
|
||||
|
|
|
@ -7,7 +7,7 @@ material = PLA
|
|||
weight = -2
|
||||
|
||||
[settings]
|
||||
machine_nozzle_size = 0.35
|
||||
line_width = 0.35
|
||||
layer_height = 0.1
|
||||
layer_height_0 = 0.26
|
||||
shell_thickness = 1.05
|
||||
|
@ -18,7 +18,6 @@ infill_wipe_dist = 0.2
|
|||
retraction_amount = 5.5
|
||||
retraction_min_travel = 0.5
|
||||
retraction_count_max = 30
|
||||
retraction_extrusion_window = 6
|
||||
speed_infill = 50
|
||||
speed_wall_0 = 30
|
||||
speed_wall_x = 40
|
||||
|
|
|
@ -7,7 +7,7 @@ material = PLA
|
|||
weight = -4
|
||||
|
||||
[settings]
|
||||
machine_nozzle_size = 0.35
|
||||
line_width = 0.35
|
||||
layer_height = 0.04
|
||||
layer_height_0 = 0.26
|
||||
shell_thickness = 1.4
|
||||
|
|
|
@ -7,7 +7,7 @@ material = PLA
|
|||
weight = -2
|
||||
|
||||
[settings]
|
||||
machine_nozzle_size = 0.53
|
||||
line_width = 0.53
|
||||
layer_height = 0.15
|
||||
layer_height_0 = 0.4
|
||||
shell_thickness = 1.59
|
||||
|
@ -18,7 +18,6 @@ infill_wipe_dist = 0.3
|
|||
retraction_amount = 6
|
||||
retraction_min_travel = 0.5
|
||||
retraction_count_max = 30
|
||||
retraction_extrusion_window = 6
|
||||
speed_infill = 55
|
||||
speed_wall_0 = 25
|
||||
speed_wall_x = 40
|
||||
|
|
|
@ -7,7 +7,7 @@ material = PLA
|
|||
weight = -2
|
||||
|
||||
[settings]
|
||||
machine_nozzle_size = 0.7
|
||||
line_width = 0.7
|
||||
layer_height = 0.2
|
||||
layer_height_0 = 0.5
|
||||
shell_thickness = 2.1
|
||||
|
@ -18,7 +18,6 @@ infill_wipe_dist = 0.4
|
|||
retraction_amount = 6
|
||||
retraction_min_travel = 0.5
|
||||
retraction_count_max = 30
|
||||
retraction_extrusion_window = 6
|
||||
speed_infill = 40
|
||||
speed_wall_0 = 20
|
||||
speed_wall_x = 30
|
||||
|
|
|
@ -6,7 +6,7 @@ machine_variant = 0.25 mm
|
|||
weight = -2
|
||||
|
||||
[settings]
|
||||
machine_nozzle_size = 0.22
|
||||
line_width = 0.22
|
||||
layer_height = 0.06
|
||||
layer_height_0 = 0.15
|
||||
shell_thickness = 0.88
|
||||
|
|
|
@ -6,7 +6,7 @@ machine_variant = 0.4 mm
|
|||
weight = -1
|
||||
|
||||
[settings]
|
||||
machine_nozzle_size = 0.35
|
||||
line_width = 0.35
|
||||
layer_height = 0.15
|
||||
layer_height_0 = 0.26
|
||||
shell_thickness = 0.7
|
||||
|
|
|
@ -6,7 +6,7 @@ machine_variant = 0.4 mm
|
|||
weight = -3
|
||||
|
||||
[settings]
|
||||
machine_nozzle_size = 0.35
|
||||
line_width = 0.35
|
||||
layer_height = 0.06
|
||||
layer_height_0 = 0.26
|
||||
shell_thickness = 1.05
|
||||
|
|
|
@ -6,7 +6,7 @@ machine_variant = 0.4 mm
|
|||
weight = -2
|
||||
|
||||
[settings]
|
||||
machine_nozzle_size = 0.35
|
||||
line_width = 0.35
|
||||
layer_height = 0.1
|
||||
layer_height_0 = 0.26
|
||||
shell_thickness = 1.05
|
||||
|
|
|
@ -6,7 +6,7 @@ machine_variant = 0.4 mm
|
|||
weight = -4
|
||||
|
||||
[settings]
|
||||
machine_nozzle_size = 0.35
|
||||
line_width = 0.35
|
||||
layer_height = 0.04
|
||||
layer_height_0 = 0.26
|
||||
shell_thickness = 1.4
|
||||
|
|
|
@ -6,7 +6,7 @@ machine_variant = 0.6 mm
|
|||
weight = -2
|
||||
|
||||
[settings]
|
||||
machine_nozzle_size = 0.53
|
||||
line_width = 0.53
|
||||
layer_height = 0.15
|
||||
layer_height_0 = 0.4
|
||||
shell_thickness = 1.59
|
||||
|
|
|
@ -6,7 +6,7 @@ machine_variant = 0.8 mm
|
|||
weight = -2
|
||||
|
||||
[settings]
|
||||
machine_nozzle_size = 0.7
|
||||
line_width = 0.7
|
||||
layer_height = 0.2
|
||||
layer_height_0 = 0.5
|
||||
shell_thickness = 2.1
|
||||
|
|
|
@ -124,17 +124,14 @@ Rectangle {
|
|||
anchors.right: printJobPencilIcon.left
|
||||
anchors.rightMargin: UM.Theme.getSize("default_margin").width/2
|
||||
height: UM.Theme.getSize("jobspecs_line").height
|
||||
width: __contentWidth + UM.Theme.getSize("default_margin").width
|
||||
width: Math.max(__contentWidth + UM.Theme.getSize("default_margin").width, 50)
|
||||
maximumLength: 120
|
||||
property int unremovableSpacing: 5
|
||||
text: ''
|
||||
horizontalAlignment: TextInput.AlignRight
|
||||
onTextChanged: {
|
||||
if(text != ''){
|
||||
//Prevent that jobname is set to an empty string
|
||||
Printer.setJobName(text)
|
||||
}
|
||||
}
|
||||
onEditingFinished: {
|
||||
if (printJobTextfield.text != ''){
|
||||
printJobTextfield.focus = false
|
||||
|
@ -161,7 +158,7 @@ Rectangle {
|
|||
anchors.right: parent.right
|
||||
height: UM.Theme.getSize("jobspecs_line").height
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
font: UM.Theme.getFont("small")
|
||||
font: UM.Theme.getFont("small_bold")
|
||||
color: UM.Theme.getColor("text_subtext")
|
||||
text: Printer.getSceneBoundingBoxString
|
||||
}
|
||||
|
@ -193,7 +190,7 @@ Rectangle {
|
|||
anchors.right: lengthIcon.left
|
||||
anchors.rightMargin: UM.Theme.getSize("default_margin").width
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
font: UM.Theme.getFont("small")
|
||||
font: UM.Theme.getFont("small_bold")
|
||||
color: UM.Theme.getColor("text_subtext")
|
||||
text: (!base.printDuration || !base.printDuration.valid) ? catalog.i18nc("@label", "00h 00min") : base.printDuration.getDisplayString(UM.DurationFormat.Short)
|
||||
}
|
||||
|
@ -213,7 +210,7 @@ Rectangle {
|
|||
id: lengthSpec
|
||||
anchors.right: parent.right
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
font: UM.Theme.getFont("small")
|
||||
font: UM.Theme.getFont("small_bold")
|
||||
color: UM.Theme.getColor("text_subtext")
|
||||
text: base.printMaterialAmount <= 0 ? catalog.i18nc("@label", "0.0 m") : catalog.i18nc("@label", "%1 m").arg(base.printMaterialAmount)
|
||||
}
|
||||
|
|
|
@ -19,7 +19,12 @@ Item
|
|||
property int platform_height: UM.MachineManager.getSettingValue("machine_depth")
|
||||
anchors.fill: parent;
|
||||
property variant printer_connection: UM.USBPrinterManager.connectedPrinterList.getItem(0).printer
|
||||
Component.onCompleted: printer_connection.homeHead()
|
||||
Component.onCompleted:
|
||||
{
|
||||
printer_connection.homeBed()
|
||||
printer_connection.moveHeadRelative(0, 0, 3)
|
||||
printer_connection.homeHead()
|
||||
}
|
||||
UM.I18nCatalog { id: catalog; name:"cura"}
|
||||
property variant wizard: null;
|
||||
|
||||
|
@ -79,15 +84,23 @@ Item
|
|||
{
|
||||
if(wizardPage.leveling_state == 0)
|
||||
{
|
||||
printer_connection.moveHead(platform_width, 0 ,0)
|
||||
printer_connection.moveHeadRelative(0, 0, 3)
|
||||
printer_connection.homeHead()
|
||||
printer_connection.moveHeadRelative(0, 0, 3)
|
||||
printer_connection.moveHeadRelative(platform_width - 10, 0, 0)
|
||||
printer_connection.moveHeadRelative(0, 0, -3)
|
||||
}
|
||||
if(wizardPage.leveling_state == 1)
|
||||
{
|
||||
printer_connection.moveHead(platform_width/2, platform_height, 0)
|
||||
printer_connection.moveHeadRelative(0, 0, 3)
|
||||
printer_connection.moveHeadRelative(-platform_width/2, platform_height - 10, 0)
|
||||
printer_connection.moveHeadRelative(0, 0, -3)
|
||||
}
|
||||
if(wizardPage.leveling_state == 2)
|
||||
{
|
||||
printer_connection.moveHead(0, 0, 0)
|
||||
printer_connection.moveHeadRelative(0, 0, 3)
|
||||
printer_connection.moveHeadRelative(-platform_width/2 + 10, -(platform_height + 10), 0)
|
||||
printer_connection.moveHeadRelative(0, 0, -3)
|
||||
}
|
||||
wizardPage.leveling_state++
|
||||
if (wizardPage.leveling_state >= 3){
|
||||
|
|
17
resources/themes/cura/icons/notice.svg
Normal file
17
resources/themes/cura/icons/notice.svg
Normal file
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 16.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="1792px" height="1792px" viewBox="0 0 1792 1792" enable-background="new 0 0 1792 1792" xml:space="preserve">
|
||||
<path d="M896,2.071c162.18,0,311.75,39.963,448.71,119.889c136.961,79.926,245.403,188.37,325.33,325.33
|
||||
C1749.966,584.25,1789.929,733.82,1789.929,896s-39.963,311.749-119.889,448.71c-79.927,136.961-188.369,245.403-325.33,325.33
|
||||
c-136.96,79.926-286.53,119.889-448.71,119.889c-162.179,0-311.75-39.963-448.71-119.889
|
||||
c-136.96-79.927-245.404-188.369-325.33-325.33C42.035,1207.749,2.071,1058.18,2.071,896S42.035,584.25,121.96,447.29
|
||||
c79.926-136.96,188.369-245.404,325.33-325.33C584.25,42.034,733.821,2.071,896,2.071z M1044.988,1453.541v-221.154
|
||||
c0-10.863-3.492-19.981-10.476-27.353c-6.984-7.372-15.52-11.058-25.607-11.058H785.423c-10.088,0-19.011,3.879-26.771,11.64
|
||||
c-7.76,7.76-11.64,16.683-11.64,26.771v221.154c0,10.089,3.88,19.012,11.64,26.771c7.76,7.761,16.684,11.64,26.771,11.64h223.482
|
||||
c10.088,0,18.623-3.686,25.607-11.058C1041.496,1473.523,1044.988,1464.404,1044.988,1453.541z M1042.66,1053.136l20.951-722.825
|
||||
c0-9.312-3.879-16.295-11.64-20.951c-7.76-6.208-17.071-9.312-27.935-9.312H767.963c-10.863,0-20.175,3.104-27.935,9.312
|
||||
c-7.76,4.656-11.64,11.64-11.64,20.951l19.788,722.825c0,7.761,3.879,14.55,11.64,20.369c7.76,5.82,17.072,8.73,27.936,8.73h215.334
|
||||
c10.863,0,19.982-2.91,27.354-8.73C1037.81,1067.686,1041.884,1060.896,1042.66,1053.136z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 1.7 KiB |
1
resources/themes/cura/icons/warning.svg
Normal file
1
resources/themes/cura/icons/warning.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1024 1375v-190q0-14-9.5-23.5t-22.5-9.5h-192q-13 0-22.5 9.5t-9.5 23.5v190q0 14 9.5 23.5t22.5 9.5h192q13 0 22.5-9.5t9.5-23.5zm-2-374l18-459q0-12-10-19-13-11-24-11h-220q-11 0-24 11-10 7-10 21l17 457q0 10 10 16.5t24 6.5h185q14 0 23.5-6.5t10.5-16.5zm-14-934l768 1408q35 63-2 126-17 29-46.5 46t-63.5 17h-1536q-34 0-63.5-17t-46.5-46q-37-63-2-126l768-1408q17-31 47-49t65-18 65 18 47 49z"/></svg>
|
After Width: | Height: | Size: 488 B |
|
@ -18,6 +18,12 @@
|
|||
"size": 1.0,
|
||||
"family": "Open Sans"
|
||||
},
|
||||
"small_bold":
|
||||
{
|
||||
"size": 1.0,
|
||||
"family": "Open Sans",
|
||||
"bold": true
|
||||
},
|
||||
"very_small": {
|
||||
"size": 0.75,
|
||||
"family": "Open Sans"
|
||||
|
@ -68,7 +74,7 @@
|
|||
"text_hover": [70, 84, 113, 255],
|
||||
"text_pressed": [12, 169, 227, 255],
|
||||
"text_white": [255, 255, 255, 255],
|
||||
"text_subtext": [127, 127, 127, 255],
|
||||
"text_subtext": [100, 100, 100, 255],
|
||||
|
||||
"error": [255, 140, 0, 255],
|
||||
"sidebar_header_bar": [24, 41, 77, 255],
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue