mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-08-15 19:05:51 +08:00
Merge branch '2.1' of https://github.com/Ultimaker/Cura
This commit is contained in:
commit
b2f37390fd
@ -44,7 +44,7 @@ if(NOT ${URANIUM_SCRIPTS_DIR} STREQUAL "")
|
|||||||
file(GLOB po_files ${CMAKE_SOURCE_DIR}/resources/i18n/${lang}/*.po)
|
file(GLOB po_files ${CMAKE_SOURCE_DIR}/resources/i18n/${lang}/*.po)
|
||||||
foreach(po_file ${po_files})
|
foreach(po_file ${po_files})
|
||||||
string(REGEX REPLACE ".*/(.*).po" "${CMAKE_BINARY_DIR}/resources/i18n/${lang}/LC_MESSAGES/\\1.mo" mo_file ${po_file})
|
string(REGEX REPLACE ".*/(.*).po" "${CMAKE_BINARY_DIR}/resources/i18n/${lang}/LC_MESSAGES/\\1.mo" mo_file ${po_file})
|
||||||
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})
|
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()
|
||||||
endforeach()
|
endforeach()
|
||||||
install(DIRECTORY ${CMAKE_BINARY_DIR}/resources DESTINATION ${CMAKE_INSTALL_DATADIR}/cura)
|
install(DIRECTORY ${CMAKE_BINARY_DIR}/resources DESTINATION ${CMAKE_INSTALL_DATADIR}/cura)
|
||||||
@ -60,6 +60,9 @@ if(NOT APPLE AND NOT WIN32)
|
|||||||
install(DIRECTORY cura DESTINATION lib/python${PYTHON_VERSION_MAJOR}/dist-packages FILES_MATCHING PATTERN *.py)
|
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 ${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.desktop DESTINATION ${CMAKE_INSTALL_DATADIR}/applications)
|
||||||
|
install(FILES cura.sharedmimeinfo
|
||||||
|
DESTINATION ${CMAKE_INSTALL_DATADIR}/mime/packages/
|
||||||
|
RENAME cura.xml )
|
||||||
else()
|
else()
|
||||||
install(DIRECTORY cura DESTINATION lib/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages FILES_MATCHING PATTERN *.py)
|
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 ${CMAKE_BINARY_DIR}/CuraVersion.py DESTINATION lib/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages/cura)
|
||||||
|
@ -10,6 +10,6 @@ TryExec=/usr/bin/cura_app.py
|
|||||||
Icon=/usr/share/cura/resources/images/cura-icon.png
|
Icon=/usr/share/cura/resources/images/cura-icon.png
|
||||||
Terminal=false
|
Terminal=false
|
||||||
Type=Application
|
Type=Application
|
||||||
MimeType=application/sla;image/bmp;image/gif;image/jpeg;image/png
|
MimeType=application/sla;application/vnd.ms-3mfdocument;application/prs.wavefront-obj;image/bmp;image/gif;image/jpeg;image/png
|
||||||
Categories=Graphics;
|
Categories=Graphics;
|
||||||
Keywords=3D;Printing;
|
Keywords=3D;Printing;
|
||||||
|
22
cura.sharedmimeinfo
Normal file
22
cura.sharedmimeinfo
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
|
||||||
|
<mime-type type="application/vnd.ms-3mfdocument">
|
||||||
|
<comment>3D Manufacturing Format Document</comment>
|
||||||
|
<icon name="unknown"/>
|
||||||
|
<glob-deleteall/>
|
||||||
|
<glob pattern="*.3mf"/>
|
||||||
|
</mime-type>
|
||||||
|
<mime-type type="application/sla">
|
||||||
|
<comment>Computer-aided design and manufacturing format</comment>
|
||||||
|
<icon name="unknown"/>
|
||||||
|
<glob-deleteall/>
|
||||||
|
<glob pattern="*.stl"/>
|
||||||
|
</mime-type>
|
||||||
|
<mime-type type="application/prs.wavefront-obj">
|
||||||
|
<sub-class-of type="text/plain"/>
|
||||||
|
<comment>Wavefront 3D Object file</comment>
|
||||||
|
<icon name="unknown"/>
|
||||||
|
<glob-deleteall/>
|
||||||
|
<glob pattern="*.obj"/>
|
||||||
|
</mime-type>
|
||||||
|
</mime-info>
|
@ -146,7 +146,7 @@ class BuildVolume(SceneNode):
|
|||||||
|
|
||||||
skirt_size = 0.0
|
skirt_size = 0.0
|
||||||
|
|
||||||
profile = Application.getInstance().getMachineManager().getActiveProfile()
|
profile = Application.getInstance().getMachineManager().getWorkingProfile()
|
||||||
if profile:
|
if profile:
|
||||||
skirt_size = self._getSkirtSize(profile)
|
skirt_size = self._getSkirtSize(profile)
|
||||||
|
|
||||||
@ -176,7 +176,7 @@ class BuildVolume(SceneNode):
|
|||||||
if self._active_profile:
|
if self._active_profile:
|
||||||
self._active_profile.settingValueChanged.disconnect(self._onSettingValueChanged)
|
self._active_profile.settingValueChanged.disconnect(self._onSettingValueChanged)
|
||||||
|
|
||||||
self._active_profile = Application.getInstance().getMachineManager().getActiveProfile()
|
self._active_profile = Application.getInstance().getMachineManager().getWorkingProfile()
|
||||||
if self._active_profile:
|
if self._active_profile:
|
||||||
self._active_profile.settingValueChanged.connect(self._onSettingValueChanged)
|
self._active_profile.settingValueChanged.connect(self._onSettingValueChanged)
|
||||||
self._updateDisallowedAreas()
|
self._updateDisallowedAreas()
|
||||||
|
@ -17,6 +17,7 @@ class ConvexHullDecorator(SceneNodeDecorator):
|
|||||||
|
|
||||||
self._profile = None
|
self._profile = None
|
||||||
Application.getInstance().getMachineManager().activeProfileChanged.connect(self._onActiveProfileChanged)
|
Application.getInstance().getMachineManager().activeProfileChanged.connect(self._onActiveProfileChanged)
|
||||||
|
Application.getInstance().getMachineManager().activeMachineInstanceChanged.connect(self._onActiveMachineInstanceChanged)
|
||||||
self._onActiveProfileChanged()
|
self._onActiveProfileChanged()
|
||||||
|
|
||||||
## Force that a new (empty) object is created upon copy.
|
## Force that a new (empty) object is created upon copy.
|
||||||
@ -62,11 +63,19 @@ class ConvexHullDecorator(SceneNodeDecorator):
|
|||||||
if self._profile:
|
if self._profile:
|
||||||
self._profile.settingValueChanged.disconnect(self._onSettingValueChanged)
|
self._profile.settingValueChanged.disconnect(self._onSettingValueChanged)
|
||||||
|
|
||||||
self._profile = Application.getInstance().getMachineManager().getActiveProfile()
|
self._profile = Application.getInstance().getMachineManager().getWorkingProfile()
|
||||||
|
|
||||||
if self._profile:
|
if self._profile:
|
||||||
self._profile.settingValueChanged.connect(self._onSettingValueChanged)
|
self._profile.settingValueChanged.connect(self._onSettingValueChanged)
|
||||||
|
|
||||||
|
def _onActiveMachineInstanceChanged(self):
|
||||||
|
if self._convex_hull_job:
|
||||||
|
self._convex_hull_job.cancel()
|
||||||
|
self.setConvexHull(None)
|
||||||
|
if self._convex_hull_node:
|
||||||
|
self._convex_hull_node.setParent(None)
|
||||||
|
self._convex_hull_node = None
|
||||||
|
|
||||||
def _onSettingValueChanged(self, setting):
|
def _onSettingValueChanged(self, setting):
|
||||||
if setting == "print_sequence":
|
if setting == "print_sequence":
|
||||||
if self._convex_hull_job:
|
if self._convex_hull_job:
|
||||||
|
@ -49,7 +49,7 @@ class ConvexHullJob(Job):
|
|||||||
# This is done because of rounding errors.
|
# This is done because of rounding errors.
|
||||||
hull = hull.getMinkowskiHull(Polygon(numpy.array([[-1, -1], [-1, 1], [1, 1], [1, -1]], numpy.float32)))
|
hull = hull.getMinkowskiHull(Polygon(numpy.array([[-1, -1], [-1, 1], [1, 1], [1, -1]], numpy.float32)))
|
||||||
|
|
||||||
profile = Application.getInstance().getMachineManager().getActiveProfile()
|
profile = Application.getInstance().getMachineManager().getWorkingProfile()
|
||||||
if profile:
|
if profile:
|
||||||
if profile.getSettingValue("print_sequence") == "one_at_a_time" and not self._node.getParent().callDecoration("isGroup"):
|
if profile.getSettingValue("print_sequence") == "one_at_a_time" and not self._node.getParent().callDecoration("isGroup"):
|
||||||
# Printing one at a time and it's not an object in a group
|
# Printing one at a time and it's not an object in a group
|
||||||
@ -64,12 +64,17 @@ class ConvexHullJob(Job):
|
|||||||
hull = hull.getMinkowskiHull(Polygon(numpy.array(profile.getSettingValue("machine_head_polygon"),numpy.float32)))
|
hull = hull.getMinkowskiHull(Polygon(numpy.array(profile.getSettingValue("machine_head_polygon"),numpy.float32)))
|
||||||
else:
|
else:
|
||||||
self._node.callDecoration("setConvexHullHead", None)
|
self._node.callDecoration("setConvexHullHead", None)
|
||||||
|
if self._node.getParent() is None: #Node was already deleted before job is done.
|
||||||
|
self._node.callDecoration("setConvexHullNode",None)
|
||||||
|
self._node.callDecoration("setConvexHull", None)
|
||||||
|
self._node.callDecoration("setConvexHullJob", None)
|
||||||
|
return
|
||||||
hull_node = ConvexHullNode.ConvexHullNode(self._node, hull, Application.getInstance().getController().getScene().getRoot())
|
hull_node = ConvexHullNode.ConvexHullNode(self._node, hull, Application.getInstance().getController().getScene().getRoot())
|
||||||
self._node.callDecoration("setConvexHullNode", hull_node)
|
self._node.callDecoration("setConvexHullNode", hull_node)
|
||||||
self._node.callDecoration("setConvexHull", hull)
|
self._node.callDecoration("setConvexHull", hull)
|
||||||
self._node.callDecoration("setConvexHullJob", None)
|
self._node.callDecoration("setConvexHullJob", None)
|
||||||
|
|
||||||
if self._node.getParent().callDecoration("isGroup"):
|
if self._node.getParent() and self._node.getParent().callDecoration("isGroup"):
|
||||||
job = self._node.getParent().callDecoration("getConvexHullJob")
|
job = self._node.getParent().callDecoration("getConvexHullJob")
|
||||||
if job:
|
if job:
|
||||||
job.cancel()
|
job.cancel()
|
||||||
|
@ -57,8 +57,10 @@ numpy.seterr(all="ignore")
|
|||||||
|
|
||||||
if platform.system() == "Linux": # Needed for platform.linux_distribution, which is not available on Windows and OSX
|
if platform.system() == "Linux": # 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
|
# For Ubuntu: https://bugs.launchpad.net/ubuntu/+source/python-qt4/+bug/941826
|
||||||
if platform.linux_distribution()[0] in ("Ubuntu", ): # Just in case it also happens on Debian, so it can be added
|
if platform.linux_distribution()[0] in ("Ubuntu", ): # 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.
|
||||||
from OpenGL import GL
|
import ctypes
|
||||||
|
from ctypes.util import find_library
|
||||||
|
ctypes.CDLL(find_library('GL'), ctypes.RTLD_GLOBAL)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from cura.CuraVersion import CuraVersion
|
from cura.CuraVersion import CuraVersion
|
||||||
@ -100,10 +102,12 @@ class CuraApplication(QtApplication):
|
|||||||
self._platform_activity = False
|
self._platform_activity = False
|
||||||
self._scene_boundingbox = AxisAlignedBox()
|
self._scene_boundingbox = AxisAlignedBox()
|
||||||
self._job_name = None
|
self._job_name = None
|
||||||
|
self._center_after_select = False
|
||||||
|
|
||||||
self.getMachineManager().activeMachineInstanceChanged.connect(self._onActiveMachineChanged)
|
self.getMachineManager().activeMachineInstanceChanged.connect(self._onActiveMachineChanged)
|
||||||
self.getMachineManager().addMachineRequested.connect(self._onAddMachineRequested)
|
self.getMachineManager().addMachineRequested.connect(self._onAddMachineRequested)
|
||||||
self.getController().getScene().sceneChanged.connect(self.updatePlatformActivity)
|
self.getController().getScene().sceneChanged.connect(self.updatePlatformActivity)
|
||||||
|
self.getController().toolOperationStopped.connect(self._onToolOperationStopped)
|
||||||
|
|
||||||
Resources.addType(self.ResourceTypes.QmlFiles, "qml")
|
Resources.addType(self.ResourceTypes.QmlFiles, "qml")
|
||||||
Resources.addType(self.ResourceTypes.Firmware, "firmware")
|
Resources.addType(self.ResourceTypes.Firmware, "firmware")
|
||||||
@ -146,9 +150,6 @@ class CuraApplication(QtApplication):
|
|||||||
parser.add_argument("--debug", dest="debug-mode", action="store_true", default=False, help="Enable detailed crash reports.")
|
parser.add_argument("--debug", dest="debug-mode", action="store_true", default=False, help="Enable detailed crash reports.")
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
if "PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION" not in os.environ or os.environ["PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION"] != "cpp":
|
|
||||||
Logger.log("w", "Using Python implementation of Protobuf, expect bad performance!")
|
|
||||||
|
|
||||||
self._i18n_catalog = i18nCatalog("cura");
|
self._i18n_catalog = i18nCatalog("cura");
|
||||||
|
|
||||||
i18nCatalog.setTagReplacements({
|
i18nCatalog.setTagReplacements({
|
||||||
@ -231,9 +232,7 @@ class CuraApplication(QtApplication):
|
|||||||
else:
|
else:
|
||||||
self.getController().setActiveTool("TranslateTool")
|
self.getController().setActiveTool("TranslateTool")
|
||||||
if Preferences.getInstance().getValue("view/center_on_select"):
|
if Preferences.getInstance().getValue("view/center_on_select"):
|
||||||
self._camera_animation.setStart(self.getController().getTool("CameraTool").getOrigin())
|
self._center_after_select = True
|
||||||
self._camera_animation.setTarget(Selection.getSelectedObject(0).getWorldPosition())
|
|
||||||
self._camera_animation.start()
|
|
||||||
else:
|
else:
|
||||||
if self.getController().getActiveTool():
|
if self.getController().getActiveTool():
|
||||||
self._previous_active_tool = self.getController().getActiveTool().getPluginId()
|
self._previous_active_tool = self.getController().getActiveTool().getPluginId()
|
||||||
@ -241,6 +240,13 @@ class CuraApplication(QtApplication):
|
|||||||
else:
|
else:
|
||||||
self._previous_active_tool = None
|
self._previous_active_tool = None
|
||||||
|
|
||||||
|
def _onToolOperationStopped(self, event):
|
||||||
|
if self._center_after_select:
|
||||||
|
self._center_after_select = False
|
||||||
|
self._camera_animation.setStart(self.getController().getTool("CameraTool").getOrigin())
|
||||||
|
self._camera_animation.setTarget(Selection.getSelectedObject(0).getWorldPosition())
|
||||||
|
self._camera_animation.start()
|
||||||
|
|
||||||
requestAddPrinter = pyqtSignal()
|
requestAddPrinter = pyqtSignal()
|
||||||
activityChanged = pyqtSignal()
|
activityChanged = pyqtSignal()
|
||||||
sceneBoundingBoxChanged = pyqtSignal()
|
sceneBoundingBoxChanged = pyqtSignal()
|
||||||
@ -493,18 +499,18 @@ class CuraApplication(QtApplication):
|
|||||||
|
|
||||||
@pyqtSlot(str, result = "QVariant")
|
@pyqtSlot(str, result = "QVariant")
|
||||||
def getSettingValue(self, key):
|
def getSettingValue(self, key):
|
||||||
if not self.getMachineManager().getActiveProfile():
|
if not self.getMachineManager().getWorkingProfile():
|
||||||
return None
|
return None
|
||||||
return self.getMachineManager().getActiveProfile().getSettingValue(key)
|
return self.getMachineManager().getWorkingProfile().getSettingValue(key)
|
||||||
#return self.getActiveMachine().getSettingValueByKey(key)
|
#return self.getActiveMachine().getSettingValueByKey(key)
|
||||||
|
|
||||||
## Change setting by key value pair
|
## Change setting by key value pair
|
||||||
@pyqtSlot(str, "QVariant")
|
@pyqtSlot(str, "QVariant")
|
||||||
def setSettingValue(self, key, value):
|
def setSettingValue(self, key, value):
|
||||||
if not self.getMachineManager().getActiveProfile():
|
if not self.getMachineManager().getWorkingProfile():
|
||||||
return
|
return
|
||||||
|
|
||||||
self.getMachineManager().getActiveProfile().setSettingValue(key, value)
|
self.getMachineManager().getWorkingProfile().setSettingValue(key, value)
|
||||||
|
|
||||||
@pyqtSlot()
|
@pyqtSlot()
|
||||||
def mergeSelected(self):
|
def mergeSelected(self):
|
||||||
|
@ -131,7 +131,7 @@ class Layer():
|
|||||||
continue
|
continue
|
||||||
if not make_mesh and not (polygon.type == Polygon.MoveCombingType or polygon.type == Polygon.MoveRetractionType):
|
if not make_mesh and not (polygon.type == Polygon.MoveCombingType or polygon.type == Polygon.MoveRetractionType):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
poly_color = polygon.getColor()
|
poly_color = polygon.getColor()
|
||||||
|
|
||||||
points = numpy.copy(polygon.data)
|
points = numpy.copy(polygon.data)
|
||||||
@ -140,26 +140,7 @@ class Layer():
|
|||||||
if polygon.type == Polygon.MoveCombingType or polygon.type == Polygon.MoveRetractionType:
|
if polygon.type == Polygon.MoveCombingType or polygon.type == Polygon.MoveRetractionType:
|
||||||
points[:,1] += 0.01
|
points[:,1] += 0.01
|
||||||
|
|
||||||
# Calculate normals for the entire polygon using numpy.
|
normals = polygon.getNormals()
|
||||||
normals = numpy.copy(points)
|
|
||||||
normals[:,1] = 0.0 # We are only interested in 2D normals
|
|
||||||
|
|
||||||
# Calculate the edges between points.
|
|
||||||
# The call to numpy.roll shifts the entire array by one so that
|
|
||||||
# we end up subtracting each next point from the current, wrapping
|
|
||||||
# around. This gives us the edges from the next point to the current
|
|
||||||
# point.
|
|
||||||
normals[:] = normals[:] - numpy.roll(normals, -1, axis = 0)
|
|
||||||
# Calculate the length of each edge using standard Pythagoras
|
|
||||||
lengths = numpy.sqrt(normals[:,0] ** 2 + normals[:,2] ** 2)
|
|
||||||
# The normal of a 2D vector is equal to its x and y coordinates swapped
|
|
||||||
# and then x inverted. This code does that.
|
|
||||||
normals[:,[0, 2]] = normals[:,[2, 0]]
|
|
||||||
normals[:,0] *= -1
|
|
||||||
|
|
||||||
# Normalize the normals.
|
|
||||||
normals[:,0] /= lengths
|
|
||||||
normals[:,2] /= lengths
|
|
||||||
|
|
||||||
# Scale all by the line width of the polygon so we can easily offset.
|
# Scale all by the line width of the polygon so we can easily offset.
|
||||||
normals *= (polygon.lineWidth / 2)
|
normals *= (polygon.lineWidth / 2)
|
||||||
@ -199,16 +180,33 @@ class Polygon():
|
|||||||
self._data = data
|
self._data = data
|
||||||
self._line_width = line_width / 1000
|
self._line_width = line_width / 1000
|
||||||
|
|
||||||
|
if type == self.Inset0Type:
|
||||||
|
self._color = Color(1.0, 0.0, 0.0, 1.0)
|
||||||
|
elif self._type == self.InsetXType:
|
||||||
|
self._color = Color(0.0, 1.0, 0.0, 1.0)
|
||||||
|
elif self._type == self.SkinType:
|
||||||
|
self._color = Color(1.0, 1.0, 0.0, 1.0)
|
||||||
|
elif self._type == self.SupportType:
|
||||||
|
self._color = Color(0.0, 1.0, 1.0, 1.0)
|
||||||
|
elif self._type == self.SkirtType:
|
||||||
|
self._color = Color(0.0, 1.0, 1.0, 1.0)
|
||||||
|
elif self._type == self.InfillType:
|
||||||
|
self._color = Color(1.0, 0.74, 0.0, 1.0)
|
||||||
|
elif self._type == self.SupportInfillType:
|
||||||
|
self._color = Color(0.0, 1.0, 1.0, 1.0)
|
||||||
|
elif self._type == self.MoveCombingType:
|
||||||
|
self._color = Color(0.0, 0.0, 1.0, 1.0)
|
||||||
|
elif self._type == self.MoveRetractionType:
|
||||||
|
self._color = Color(0.5, 0.5, 1.0, 1.0)
|
||||||
|
else:
|
||||||
|
self._color = Color(1.0, 1.0, 1.0, 1.0)
|
||||||
|
|
||||||
def build(self, offset, vertices, colors, indices):
|
def build(self, offset, vertices, colors, indices):
|
||||||
self._begin = offset
|
self._begin = offset
|
||||||
self._end = self._begin + len(self._data) - 1
|
self._end = self._begin + len(self._data) - 1
|
||||||
|
|
||||||
color = self.getColor()
|
|
||||||
color.setValues(color.r * 0.5, color.g * 0.5, color.b * 0.5, color.a)
|
|
||||||
color = numpy.array([color.r, color.g, color.b, color.a], numpy.float32)
|
|
||||||
|
|
||||||
vertices[self._begin:self._end + 1, :] = self._data[:, :]
|
vertices[self._begin:self._end + 1, :] = self._data[:, :]
|
||||||
colors[self._begin:self._end + 1, :] = color
|
colors[self._begin:self._end + 1, :] = numpy.array([self._color.r * 0.5, self._color.g * 0.5, self._color.b * 0.5, self._color.a], numpy.float32)
|
||||||
|
|
||||||
for i in range(self._begin, self._end):
|
for i in range(self._begin, self._end):
|
||||||
indices[i, 0] = i
|
indices[i, 0] = i
|
||||||
@ -218,26 +216,7 @@ class Polygon():
|
|||||||
indices[self._end, 1] = self._begin
|
indices[self._end, 1] = self._begin
|
||||||
|
|
||||||
def getColor(self):
|
def getColor(self):
|
||||||
if self._type == self.Inset0Type:
|
return self._color
|
||||||
return Color(1.0, 0.0, 0.0, 1.0)
|
|
||||||
elif self._type == self.InsetXType:
|
|
||||||
return Color(0.0, 1.0, 0.0, 1.0)
|
|
||||||
elif self._type == self.SkinType:
|
|
||||||
return Color(1.0, 1.0, 0.0, 1.0)
|
|
||||||
elif self._type == self.SupportType:
|
|
||||||
return Color(0.0, 1.0, 1.0, 1.0)
|
|
||||||
elif self._type == self.SkirtType:
|
|
||||||
return Color(0.0, 1.0, 1.0, 1.0)
|
|
||||||
elif self._type == self.InfillType:
|
|
||||||
return Color(1.0, 0.74, 0.0, 1.0)
|
|
||||||
elif self._type == self.SupportInfillType:
|
|
||||||
return Color(0.0, 1.0, 1.0, 1.0)
|
|
||||||
elif self._type == self.MoveCombingType:
|
|
||||||
return Color(0.0, 0.0, 1.0, 1.0)
|
|
||||||
elif self._type == self.MoveRetractionType:
|
|
||||||
return Color(0.5, 0.5, 1.0, 1.0)
|
|
||||||
else:
|
|
||||||
return Color(1.0, 1.0, 1.0, 1.0)
|
|
||||||
|
|
||||||
def vertexCount(self):
|
def vertexCount(self):
|
||||||
return len(self._data)
|
return len(self._data)
|
||||||
@ -257,3 +236,27 @@ class Polygon():
|
|||||||
@property
|
@property
|
||||||
def lineWidth(self):
|
def lineWidth(self):
|
||||||
return self._line_width
|
return self._line_width
|
||||||
|
|
||||||
|
# Calculate normals for the entire polygon using numpy.
|
||||||
|
def getNormals(self):
|
||||||
|
normals = numpy.copy(self._data)
|
||||||
|
normals[:,1] = 0.0 # We are only interested in 2D normals
|
||||||
|
|
||||||
|
# Calculate the edges between points.
|
||||||
|
# The call to numpy.roll shifts the entire array by one so that
|
||||||
|
# we end up subtracting each next point from the current, wrapping
|
||||||
|
# around. This gives us the edges from the next point to the current
|
||||||
|
# point.
|
||||||
|
normals[:] = normals[:] - numpy.roll(normals, -1, axis = 0)
|
||||||
|
# Calculate the length of each edge using standard Pythagoras
|
||||||
|
lengths = numpy.sqrt(normals[:,0] ** 2 + normals[:,2] ** 2)
|
||||||
|
# The normal of a 2D vector is equal to its x and y coordinates swapped
|
||||||
|
# and then x inverted. This code does that.
|
||||||
|
normals[:,[0, 2]] = normals[:,[2, 0]]
|
||||||
|
normals[:,0] *= -1
|
||||||
|
|
||||||
|
# Normalize the normals.
|
||||||
|
normals[:,0] /= lengths
|
||||||
|
normals[:,2] /= lengths
|
||||||
|
|
||||||
|
return normals
|
||||||
|
@ -21,7 +21,7 @@ class OneAtATimeIterator(Iterator.Iterator):
|
|||||||
if not type(node) is SceneNode:
|
if not type(node) is SceneNode:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if node.getBoundingBox().height > Application.getInstance().getMachineManager().getActiveProfile().getSettingValue("gantry_height"):
|
if node.getBoundingBox().height > Application.getInstance().getMachineManager().getWorkingProfile().getSettingValue("gantry_height"):
|
||||||
return
|
return
|
||||||
if node.callDecoration("getConvexHull"):
|
if node.callDecoration("getConvexHull"):
|
||||||
node_list.append(node)
|
node_list.append(node)
|
||||||
|
@ -66,6 +66,6 @@ class PrintInformation(QObject):
|
|||||||
self.currentPrintTimeChanged.emit()
|
self.currentPrintTimeChanged.emit()
|
||||||
|
|
||||||
# Material amount is sent as an amount of mm^3, so calculate length from that
|
# Material amount is sent as an amount of mm^3, so calculate length from that
|
||||||
r = Application.getInstance().getMachineManager().getActiveProfile().getSettingValue("material_diameter") / 2
|
r = Application.getInstance().getMachineManager().getWorkingProfile().getSettingValue("material_diameter") / 2
|
||||||
self._material_amount = round((amount / (math.pi * r ** 2)) / 1000, 2)
|
self._material_amount = round((amount / (math.pi * r ** 2)) / 1000, 2)
|
||||||
self.materialAmountChanged.emit()
|
self.materialAmountChanged.emit()
|
||||||
|
15
cura_app.py
15
cura_app.py
@ -12,15 +12,12 @@ def exceptHook(type, value, traceback):
|
|||||||
|
|
||||||
sys.excepthook = exceptHook
|
sys.excepthook = exceptHook
|
||||||
|
|
||||||
try:
|
# Workaround for a race condition on certain systems where there
|
||||||
from google.protobuf.pyext import _message
|
# is a race condition between Arcus and PyQt. Importing Arcus
|
||||||
except ImportError:
|
# first seems to prevent Sip from going into a state where it
|
||||||
pass
|
# tries to create PyQt objects on a non-main thread.
|
||||||
else:
|
import Arcus
|
||||||
os.environ["PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION"] = "cpp"
|
import cura.CuraApplication
|
||||||
|
|
||||||
if True: # To make the code style checker stop complaining
|
|
||||||
import cura.CuraApplication
|
|
||||||
|
|
||||||
if sys.platform == "win32" and hasattr(sys, "frozen"):
|
if sys.platform == "win32" and hasattr(sys, "frozen"):
|
||||||
import os
|
import os
|
||||||
|
@ -13,68 +13,47 @@ class AutoSave(Extension):
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
|
|
||||||
Preferences.getInstance().preferenceChanged.connect(self._onPreferenceChanged)
|
#Preferences.getInstance().preferenceChanged.connect(self._onPreferenceChanged)
|
||||||
|
Preferences.getInstance().preferenceChanged.connect(self._triggerTimer)
|
||||||
|
|
||||||
machine_manager = Application.getInstance().getMachineManager()
|
machine_manager = Application.getInstance().getMachineManager()
|
||||||
|
|
||||||
self._profile = None
|
self._profile = None
|
||||||
machine_manager.activeProfileChanged.connect(self._onActiveProfileChanged)
|
machine_manager.activeProfileChanged.connect(self._onActiveProfileChanged)
|
||||||
machine_manager.profileNameChanged.connect(self._onProfilesChanged)
|
machine_manager.profileNameChanged.connect(self._triggerTimer)
|
||||||
machine_manager.profilesChanged.connect(self._onProfilesChanged)
|
machine_manager.profilesChanged.connect(self._triggerTimer)
|
||||||
machine_manager.machineInstanceNameChanged.connect(self._onInstanceNameChanged)
|
machine_manager.machineInstanceNameChanged.connect(self._triggerTimer)
|
||||||
machine_manager.machineInstancesChanged.connect(self._onInstancesChanged)
|
machine_manager.machineInstancesChanged.connect(self._triggerTimer)
|
||||||
Application
|
|
||||||
self._onActiveProfileChanged()
|
self._onActiveProfileChanged()
|
||||||
|
|
||||||
|
Preferences.getInstance().addPreference("cura/autosave_delay", 1000 * 10)
|
||||||
|
|
||||||
self._change_timer = QTimer()
|
self._change_timer = QTimer()
|
||||||
self._change_timer.setInterval(1000 * 60)
|
self._change_timer.setInterval(Preferences.getInstance().getValue("cura/autosave_delay"))
|
||||||
self._change_timer.setSingleShot(True)
|
self._change_timer.setSingleShot(True)
|
||||||
self._change_timer.timeout.connect(self._onTimeout)
|
self._change_timer.timeout.connect(self._onTimeout)
|
||||||
|
|
||||||
self._save_preferences = False
|
self._saving = False
|
||||||
self._save_profiles = False
|
|
||||||
self._save_instances = False
|
|
||||||
|
|
||||||
def _onPreferenceChanged(self, preference):
|
def _triggerTimer(self, *args):
|
||||||
self._save_preferences = True
|
if not self._saving:
|
||||||
self._change_timer.start()
|
self._change_timer.start()
|
||||||
|
|
||||||
def _onSettingValueChanged(self, setting):
|
|
||||||
self._save_profiles = True
|
|
||||||
self._change_timer.start()
|
|
||||||
|
|
||||||
def _onActiveProfileChanged(self):
|
def _onActiveProfileChanged(self):
|
||||||
if self._profile:
|
if self._profile:
|
||||||
self._profile.settingValueChanged.disconnect(self._onSettingValueChanged)
|
self._profile.settingValueChanged.disconnect(self._triggerTimer)
|
||||||
|
|
||||||
self._profile = Application.getInstance().getMachineManager().getActiveProfile()
|
self._profile = Application.getInstance().getMachineManager().getWorkingProfile()
|
||||||
|
|
||||||
if self._profile:
|
if self._profile:
|
||||||
self._profile.settingValueChanged.connect(self._onSettingValueChanged)
|
self._profile.settingValueChanged.connect(self._triggerTimer)
|
||||||
|
|
||||||
def _onProfilesChanged(self):
|
|
||||||
self._save_profiles = True
|
|
||||||
self._change_timer.start()
|
|
||||||
|
|
||||||
def _onInstanceNameChanged(self, name):
|
|
||||||
self._onInstancesChanged()
|
|
||||||
|
|
||||||
def _onInstancesChanged(self):
|
|
||||||
self._save_instances = True
|
|
||||||
self._change_timer.start()
|
|
||||||
|
|
||||||
def _onTimeout(self):
|
def _onTimeout(self):
|
||||||
|
self._saving = True # To prevent the save process from triggering another autosave.
|
||||||
Logger.log("d", "Autosaving preferences, instances and profiles")
|
Logger.log("d", "Autosaving preferences, instances and profiles")
|
||||||
|
|
||||||
if self._save_preferences:
|
Preferences.getInstance().writeToFile(Resources.getStoragePath(Resources.Preferences, Application.getInstance().getApplicationName() + ".cfg"))
|
||||||
Preferences.getInstance().writeToFile(Resources.getStoragePath(Resources.Preferences, Application.getInstance().getApplicationName() + ".cfg"))
|
Application.getInstance().getMachineManager().saveMachineInstances()
|
||||||
|
Application.getInstance().getMachineManager().saveProfiles()
|
||||||
|
|
||||||
if self._save_instances:
|
self._saving = False
|
||||||
Application.getInstance().getMachineManager().saveMachineInstances()
|
|
||||||
|
|
||||||
if self._save_profiles:
|
|
||||||
Application.getInstance().getMachineManager().saveProfiles()
|
|
||||||
|
|
||||||
self._save_preferences = False
|
|
||||||
self._save_instances = False
|
|
||||||
self._save_profiles = False
|
|
||||||
|
104
plugins/CuraEngineBackend/Cura.proto
Normal file
104
plugins/CuraEngineBackend/Cura.proto
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
syntax = "proto3";
|
||||||
|
|
||||||
|
package cura.proto;
|
||||||
|
|
||||||
|
|
||||||
|
message ObjectList
|
||||||
|
{
|
||||||
|
repeated Object objects = 1;
|
||||||
|
repeated Setting settings = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// typeid 1
|
||||||
|
message Slice
|
||||||
|
{
|
||||||
|
repeated ObjectList object_lists = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message Object
|
||||||
|
{
|
||||||
|
int64 id = 1;
|
||||||
|
bytes vertices = 2; //An array of 3 floats.
|
||||||
|
bytes normals = 3; //An array of 3 floats.
|
||||||
|
bytes indices = 4; //An array of ints.
|
||||||
|
repeated Setting settings = 5; // Setting override per object, overruling the global settings.
|
||||||
|
}
|
||||||
|
|
||||||
|
// typeid 3
|
||||||
|
message Progress
|
||||||
|
{
|
||||||
|
float amount = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// typeid 2
|
||||||
|
message SlicedObjectList
|
||||||
|
{
|
||||||
|
repeated SlicedObject objects = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message SlicedObject
|
||||||
|
{
|
||||||
|
int64 id = 1;
|
||||||
|
|
||||||
|
repeated Layer layers = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
message Layer {
|
||||||
|
int32 id = 1;
|
||||||
|
|
||||||
|
float height = 2;
|
||||||
|
float thickness = 3;
|
||||||
|
|
||||||
|
repeated Polygon polygons = 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
message Polygon {
|
||||||
|
enum Type {
|
||||||
|
NoneType = 0;
|
||||||
|
Inset0Type = 1;
|
||||||
|
InsetXType = 2;
|
||||||
|
SkinType = 3;
|
||||||
|
SupportType = 4;
|
||||||
|
SkirtType = 5;
|
||||||
|
InfillType = 6;
|
||||||
|
SupportInfillType = 7;
|
||||||
|
MoveCombingType = 8;
|
||||||
|
MoveRetractionType = 9;
|
||||||
|
}
|
||||||
|
Type type = 1;
|
||||||
|
bytes points = 2;
|
||||||
|
float line_width = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
// typeid 4
|
||||||
|
message GCodeLayer {
|
||||||
|
int64 id = 1;
|
||||||
|
bytes data = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// typeid 5
|
||||||
|
message ObjectPrintTime {
|
||||||
|
int64 id = 1;
|
||||||
|
float time = 2;
|
||||||
|
float material_amount = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
// typeid 6
|
||||||
|
message SettingList {
|
||||||
|
repeated Setting settings = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message Setting {
|
||||||
|
string name = 1;
|
||||||
|
|
||||||
|
bytes value = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// typeid 7
|
||||||
|
message GCodePrefix {
|
||||||
|
bytes data = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// typeid 8
|
||||||
|
message SlicingFinished {
|
||||||
|
}
|
@ -9,12 +9,13 @@ from UM.Preferences import Preferences
|
|||||||
from UM.Math.Vector import Vector
|
from UM.Math.Vector import Vector
|
||||||
from UM.Signal import Signal
|
from UM.Signal import Signal
|
||||||
from UM.Logger import Logger
|
from UM.Logger import Logger
|
||||||
|
from UM.Qt.Bindings.BackendProxy import BackendState #To determine the state of the slicing job.
|
||||||
from UM.Resources import Resources
|
from UM.Resources import Resources
|
||||||
from UM.Settings.SettingOverrideDecorator import SettingOverrideDecorator
|
from UM.Settings.SettingOverrideDecorator import SettingOverrideDecorator
|
||||||
from UM.Message import Message
|
from UM.Message import Message
|
||||||
|
from UM.PluginRegistry import PluginRegistry
|
||||||
|
|
||||||
from cura.OneAtATimeIterator import OneAtATimeIterator
|
from cura.OneAtATimeIterator import OneAtATimeIterator
|
||||||
from . import Cura_pb2
|
|
||||||
from . import ProcessSlicedObjectListJob
|
from . import ProcessSlicedObjectListJob
|
||||||
from . import ProcessGCodeJob
|
from . import ProcessGCodeJob
|
||||||
from . import StartSliceJob
|
from . import StartSliceJob
|
||||||
@ -61,11 +62,12 @@ class CuraEngineBackend(Backend):
|
|||||||
self._change_timer.setSingleShot(True)
|
self._change_timer.setSingleShot(True)
|
||||||
self._change_timer.timeout.connect(self.slice)
|
self._change_timer.timeout.connect(self.slice)
|
||||||
|
|
||||||
self._message_handlers[Cura_pb2.SlicedObjectList] = self._onSlicedObjectListMessage
|
self._message_handlers["cura.proto.SlicedObjectList"] = self._onSlicedObjectListMessage
|
||||||
self._message_handlers[Cura_pb2.Progress] = self._onProgressMessage
|
self._message_handlers["cura.proto.Progress"] = self._onProgressMessage
|
||||||
self._message_handlers[Cura_pb2.GCodeLayer] = self._onGCodeLayerMessage
|
self._message_handlers["cura.proto.GCodeLayer"] = self._onGCodeLayerMessage
|
||||||
self._message_handlers[Cura_pb2.GCodePrefix] = self._onGCodePrefixMessage
|
self._message_handlers["cura.proto.GCodePrefix"] = self._onGCodePrefixMessage
|
||||||
self._message_handlers[Cura_pb2.ObjectPrintTime] = self._onObjectPrintTimeMessage
|
self._message_handlers["cura.proto.ObjectPrintTime"] = self._onObjectPrintTimeMessage
|
||||||
|
self._message_handlers["cura.proto.SlicingFinished"] = self._onSlicingFinishedMessage
|
||||||
|
|
||||||
self._slicing = False
|
self._slicing = False
|
||||||
self._restart = False
|
self._restart = False
|
||||||
@ -74,6 +76,8 @@ class CuraEngineBackend(Backend):
|
|||||||
|
|
||||||
self._message = None
|
self._message = None
|
||||||
|
|
||||||
|
self.backendQuit.connect(self._onBackendQuit)
|
||||||
|
|
||||||
self.backendConnected.connect(self._onBackendConnected)
|
self.backendConnected.connect(self._onBackendConnected)
|
||||||
Application.getInstance().getController().toolOperationStarted.connect(self._onToolOperationStarted)
|
Application.getInstance().getController().toolOperationStarted.connect(self._onToolOperationStarted)
|
||||||
Application.getInstance().getController().toolOperationStopped.connect(self._onToolOperationStopped)
|
Application.getInstance().getController().toolOperationStopped.connect(self._onToolOperationStopped)
|
||||||
@ -126,6 +130,7 @@ class CuraEngineBackend(Backend):
|
|||||||
return #No slicing if we have error values since those are by definition illegal values.
|
return #No slicing if we have error values since those are by definition illegal values.
|
||||||
|
|
||||||
self.processingProgress.emit(0.0)
|
self.processingProgress.emit(0.0)
|
||||||
|
self.backendStateChange.emit(BackendState.NOT_STARTED)
|
||||||
if self._message:
|
if self._message:
|
||||||
self._message.setProgress(-1)
|
self._message.setProgress(-1)
|
||||||
#else:
|
#else:
|
||||||
@ -148,6 +153,7 @@ class CuraEngineBackend(Backend):
|
|||||||
Logger.log("d", "Killing engine process")
|
Logger.log("d", "Killing engine process")
|
||||||
try:
|
try:
|
||||||
self._process.terminate()
|
self._process.terminate()
|
||||||
|
self._process = None
|
||||||
except: # terminating a process that is already terminating causes an exception, silently ignore this.
|
except: # terminating a process that is already terminating causes an exception, silently ignore this.
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@ -177,7 +183,7 @@ class CuraEngineBackend(Backend):
|
|||||||
if self._profile:
|
if self._profile:
|
||||||
self._profile.settingValueChanged.disconnect(self._onSettingChanged)
|
self._profile.settingValueChanged.disconnect(self._onSettingChanged)
|
||||||
|
|
||||||
self._profile = Application.getInstance().getMachineManager().getActiveProfile()
|
self._profile = Application.getInstance().getMachineManager().getWorkingProfile()
|
||||||
if self._profile:
|
if self._profile:
|
||||||
self._profile.settingValueChanged.connect(self._onSettingChanged)
|
self._profile.settingValueChanged.connect(self._onSettingChanged)
|
||||||
self._onChanged()
|
self._onChanged()
|
||||||
@ -197,15 +203,10 @@ class CuraEngineBackend(Backend):
|
|||||||
self._message.setProgress(round(message.amount * 100))
|
self._message.setProgress(round(message.amount * 100))
|
||||||
|
|
||||||
self.processingProgress.emit(message.amount)
|
self.processingProgress.emit(message.amount)
|
||||||
|
self.backendStateChange.emit(BackendState.PROCESSING)
|
||||||
|
|
||||||
def _onGCodeLayerMessage(self, message):
|
def _onSlicingFinishedMessage(self, message):
|
||||||
self._scene.gcode_list.append(message.data.decode("utf-8", "replace"))
|
self.backendStateChange.emit(BackendState.DONE)
|
||||||
|
|
||||||
def _onGCodePrefixMessage(self, message):
|
|
||||||
self._scene.gcode_list.insert(0, message.data.decode("utf-8", "replace"))
|
|
||||||
|
|
||||||
def _onObjectPrintTimeMessage(self, message):
|
|
||||||
self.printDurationMessage.emit(message.time, message.material_amount)
|
|
||||||
self.processingProgress.emit(1.0)
|
self.processingProgress.emit(1.0)
|
||||||
|
|
||||||
self._slicing = False
|
self._slicing = False
|
||||||
@ -215,23 +216,17 @@ class CuraEngineBackend(Backend):
|
|||||||
self._message.hide()
|
self._message.hide()
|
||||||
self._message = None
|
self._message = None
|
||||||
|
|
||||||
if self._always_restart:
|
def _onGCodeLayerMessage(self, message):
|
||||||
try:
|
self._scene.gcode_list.append(message.data.decode("utf-8", "replace"))
|
||||||
self._process.terminate()
|
|
||||||
self._createSocket()
|
def _onGCodePrefixMessage(self, message):
|
||||||
except: # terminating a process that is already terminating causes an exception, silently ignore this.
|
self._scene.gcode_list.insert(0, message.data.decode("utf-8", "replace"))
|
||||||
pass
|
|
||||||
|
def _onObjectPrintTimeMessage(self, message):
|
||||||
|
self.printDurationMessage.emit(message.time, message.material_amount)
|
||||||
|
|
||||||
def _createSocket(self):
|
def _createSocket(self):
|
||||||
super()._createSocket()
|
super()._createSocket(os.path.abspath(os.path.join(PluginRegistry.getInstance().getPluginPath(self.getPluginId()), "Cura.proto")))
|
||||||
|
|
||||||
self._socket.registerMessageType(1, Cura_pb2.Slice)
|
|
||||||
self._socket.registerMessageType(2, Cura_pb2.SlicedObjectList)
|
|
||||||
self._socket.registerMessageType(3, Cura_pb2.Progress)
|
|
||||||
self._socket.registerMessageType(4, Cura_pb2.GCodeLayer)
|
|
||||||
self._socket.registerMessageType(5, Cura_pb2.ObjectPrintTime)
|
|
||||||
self._socket.registerMessageType(6, Cura_pb2.SettingList)
|
|
||||||
self._socket.registerMessageType(7, Cura_pb2.GCodePrefix)
|
|
||||||
|
|
||||||
## Manually triggers a reslice
|
## Manually triggers a reslice
|
||||||
def forceSlice(self):
|
def forceSlice(self):
|
||||||
@ -254,7 +249,6 @@ class CuraEngineBackend(Backend):
|
|||||||
|
|
||||||
def _onToolOperationStopped(self, tool):
|
def _onToolOperationStopped(self, tool):
|
||||||
self._enabled = True # Tool stop, start listening for changes again.
|
self._enabled = True # Tool stop, start listening for changes again.
|
||||||
self._onChanged()
|
|
||||||
|
|
||||||
def _onActiveViewChanged(self):
|
def _onActiveViewChanged(self):
|
||||||
if Application.getInstance().getController().getActiveView():
|
if Application.getInstance().getController().getActiveView():
|
||||||
@ -270,7 +264,11 @@ class CuraEngineBackend(Backend):
|
|||||||
else:
|
else:
|
||||||
self._layer_view_active = False
|
self._layer_view_active = False
|
||||||
|
|
||||||
|
|
||||||
def _onInstanceChanged(self):
|
def _onInstanceChanged(self):
|
||||||
self._terminate()
|
self._terminate()
|
||||||
self.slicingCancelled.emit()
|
self.slicingCancelled.emit()
|
||||||
|
|
||||||
|
def _onBackendQuit(self):
|
||||||
|
if not self._restart and self._process:
|
||||||
|
self._process = None
|
||||||
|
self._createSocket()
|
||||||
|
@ -1,739 +0,0 @@
|
|||||||
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
|
||||||
# source: Cura.proto
|
|
||||||
|
|
||||||
import sys
|
|
||||||
_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
|
|
||||||
from google.protobuf import descriptor as _descriptor
|
|
||||||
from google.protobuf import message as _message
|
|
||||||
from google.protobuf import reflection as _reflection
|
|
||||||
from google.protobuf import symbol_database as _symbol_database
|
|
||||||
from google.protobuf import descriptor_pb2
|
|
||||||
# @@protoc_insertion_point(imports)
|
|
||||||
|
|
||||||
_sym_db = _symbol_database.Default()
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
DESCRIPTOR = _descriptor.FileDescriptor(
|
|
||||||
name='Cura.proto',
|
|
||||||
package='cura.proto',
|
|
||||||
syntax='proto3',
|
|
||||||
serialized_pb=_b('\n\nCura.proto\x12\ncura.proto\"X\n\nObjectList\x12#\n\x07objects\x18\x01 \x03(\x0b\x32\x12.cura.proto.Object\x12%\n\x08settings\x18\x02 \x03(\x0b\x32\x13.cura.proto.Setting\"5\n\x05Slice\x12,\n\x0cobject_lists\x18\x01 \x03(\x0b\x32\x16.cura.proto.ObjectList\"o\n\x06Object\x12\n\n\x02id\x18\x01 \x01(\x03\x12\x10\n\x08vertices\x18\x02 \x01(\x0c\x12\x0f\n\x07normals\x18\x03 \x01(\x0c\x12\x0f\n\x07indices\x18\x04 \x01(\x0c\x12%\n\x08settings\x18\x05 \x03(\x0b\x32\x13.cura.proto.Setting\"\x1a\n\x08Progress\x12\x0e\n\x06\x61mount\x18\x01 \x01(\x02\"=\n\x10SlicedObjectList\x12)\n\x07objects\x18\x01 \x03(\x0b\x32\x18.cura.proto.SlicedObject\"=\n\x0cSlicedObject\x12\n\n\x02id\x18\x01 \x01(\x03\x12!\n\x06layers\x18\x02 \x03(\x0b\x32\x11.cura.proto.Layer\"]\n\x05Layer\x12\n\n\x02id\x18\x01 \x01(\x05\x12\x0e\n\x06height\x18\x02 \x01(\x02\x12\x11\n\tthickness\x18\x03 \x01(\x02\x12%\n\x08polygons\x18\x04 \x03(\x0b\x32\x13.cura.proto.Polygon\"\x8e\x02\n\x07Polygon\x12&\n\x04type\x18\x01 \x01(\x0e\x32\x18.cura.proto.Polygon.Type\x12\x0e\n\x06points\x18\x02 \x01(\x0c\x12\x12\n\nline_width\x18\x03 \x01(\x02\"\xb6\x01\n\x04Type\x12\x0c\n\x08NoneType\x10\x00\x12\x0e\n\nInset0Type\x10\x01\x12\x0e\n\nInsetXType\x10\x02\x12\x0c\n\x08SkinType\x10\x03\x12\x0f\n\x0bSupportType\x10\x04\x12\r\n\tSkirtType\x10\x05\x12\x0e\n\nInfillType\x10\x06\x12\x15\n\x11SupportInfillType\x10\x07\x12\x13\n\x0fMoveCombingType\x10\x08\x12\x16\n\x12MoveRetractionType\x10\t\"&\n\nGCodeLayer\x12\n\n\x02id\x18\x01 \x01(\x03\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\"D\n\x0fObjectPrintTime\x12\n\n\x02id\x18\x01 \x01(\x03\x12\x0c\n\x04time\x18\x02 \x01(\x02\x12\x17\n\x0fmaterial_amount\x18\x03 \x01(\x02\"4\n\x0bSettingList\x12%\n\x08settings\x18\x01 \x03(\x0b\x32\x13.cura.proto.Setting\"&\n\x07Setting\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c\"\x1b\n\x0bGCodePrefix\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\"\x11\n\x0fSlicingFinishedb\x06proto3')
|
|
||||||
)
|
|
||||||
_sym_db.RegisterFileDescriptor(DESCRIPTOR)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
_POLYGON_TYPE = _descriptor.EnumDescriptor(
|
|
||||||
name='Type',
|
|
||||||
full_name='cura.proto.Polygon.Type',
|
|
||||||
filename=None,
|
|
||||||
file=DESCRIPTOR,
|
|
||||||
values=[
|
|
||||||
_descriptor.EnumValueDescriptor(
|
|
||||||
name='NoneType', index=0, number=0,
|
|
||||||
options=None,
|
|
||||||
type=None),
|
|
||||||
_descriptor.EnumValueDescriptor(
|
|
||||||
name='Inset0Type', index=1, number=1,
|
|
||||||
options=None,
|
|
||||||
type=None),
|
|
||||||
_descriptor.EnumValueDescriptor(
|
|
||||||
name='InsetXType', index=2, number=2,
|
|
||||||
options=None,
|
|
||||||
type=None),
|
|
||||||
_descriptor.EnumValueDescriptor(
|
|
||||||
name='SkinType', index=3, number=3,
|
|
||||||
options=None,
|
|
||||||
type=None),
|
|
||||||
_descriptor.EnumValueDescriptor(
|
|
||||||
name='SupportType', index=4, number=4,
|
|
||||||
options=None,
|
|
||||||
type=None),
|
|
||||||
_descriptor.EnumValueDescriptor(
|
|
||||||
name='SkirtType', index=5, number=5,
|
|
||||||
options=None,
|
|
||||||
type=None),
|
|
||||||
_descriptor.EnumValueDescriptor(
|
|
||||||
name='InfillType', index=6, number=6,
|
|
||||||
options=None,
|
|
||||||
type=None),
|
|
||||||
_descriptor.EnumValueDescriptor(
|
|
||||||
name='SupportInfillType', index=7, number=7,
|
|
||||||
options=None,
|
|
||||||
type=None),
|
|
||||||
_descriptor.EnumValueDescriptor(
|
|
||||||
name='MoveCombingType', index=8, number=8,
|
|
||||||
options=None,
|
|
||||||
type=None),
|
|
||||||
_descriptor.EnumValueDescriptor(
|
|
||||||
name='MoveRetractionType', index=9, number=9,
|
|
||||||
options=None,
|
|
||||||
type=None),
|
|
||||||
],
|
|
||||||
containing_type=None,
|
|
||||||
options=None,
|
|
||||||
serialized_start=622,
|
|
||||||
serialized_end=804,
|
|
||||||
)
|
|
||||||
_sym_db.RegisterEnumDescriptor(_POLYGON_TYPE)
|
|
||||||
|
|
||||||
|
|
||||||
_OBJECTLIST = _descriptor.Descriptor(
|
|
||||||
name='ObjectList',
|
|
||||||
full_name='cura.proto.ObjectList',
|
|
||||||
filename=None,
|
|
||||||
file=DESCRIPTOR,
|
|
||||||
containing_type=None,
|
|
||||||
fields=[
|
|
||||||
_descriptor.FieldDescriptor(
|
|
||||||
name='objects', full_name='cura.proto.ObjectList.objects', index=0,
|
|
||||||
number=1, type=11, cpp_type=10, label=3,
|
|
||||||
has_default_value=False, default_value=[],
|
|
||||||
message_type=None, enum_type=None, containing_type=None,
|
|
||||||
is_extension=False, extension_scope=None,
|
|
||||||
options=None),
|
|
||||||
_descriptor.FieldDescriptor(
|
|
||||||
name='settings', full_name='cura.proto.ObjectList.settings', index=1,
|
|
||||||
number=2, type=11, cpp_type=10, label=3,
|
|
||||||
has_default_value=False, default_value=[],
|
|
||||||
message_type=None, enum_type=None, containing_type=None,
|
|
||||||
is_extension=False, extension_scope=None,
|
|
||||||
options=None),
|
|
||||||
],
|
|
||||||
extensions=[
|
|
||||||
],
|
|
||||||
nested_types=[],
|
|
||||||
enum_types=[
|
|
||||||
],
|
|
||||||
options=None,
|
|
||||||
is_extendable=False,
|
|
||||||
syntax='proto3',
|
|
||||||
extension_ranges=[],
|
|
||||||
oneofs=[
|
|
||||||
],
|
|
||||||
serialized_start=26,
|
|
||||||
serialized_end=114,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
_SLICE = _descriptor.Descriptor(
|
|
||||||
name='Slice',
|
|
||||||
full_name='cura.proto.Slice',
|
|
||||||
filename=None,
|
|
||||||
file=DESCRIPTOR,
|
|
||||||
containing_type=None,
|
|
||||||
fields=[
|
|
||||||
_descriptor.FieldDescriptor(
|
|
||||||
name='object_lists', full_name='cura.proto.Slice.object_lists', index=0,
|
|
||||||
number=1, type=11, cpp_type=10, label=3,
|
|
||||||
has_default_value=False, default_value=[],
|
|
||||||
message_type=None, enum_type=None, containing_type=None,
|
|
||||||
is_extension=False, extension_scope=None,
|
|
||||||
options=None),
|
|
||||||
],
|
|
||||||
extensions=[
|
|
||||||
],
|
|
||||||
nested_types=[],
|
|
||||||
enum_types=[
|
|
||||||
],
|
|
||||||
options=None,
|
|
||||||
is_extendable=False,
|
|
||||||
syntax='proto3',
|
|
||||||
extension_ranges=[],
|
|
||||||
oneofs=[
|
|
||||||
],
|
|
||||||
serialized_start=116,
|
|
||||||
serialized_end=169,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
_OBJECT = _descriptor.Descriptor(
|
|
||||||
name='Object',
|
|
||||||
full_name='cura.proto.Object',
|
|
||||||
filename=None,
|
|
||||||
file=DESCRIPTOR,
|
|
||||||
containing_type=None,
|
|
||||||
fields=[
|
|
||||||
_descriptor.FieldDescriptor(
|
|
||||||
name='id', full_name='cura.proto.Object.id', index=0,
|
|
||||||
number=1, type=3, cpp_type=2, label=1,
|
|
||||||
has_default_value=False, default_value=0,
|
|
||||||
message_type=None, enum_type=None, containing_type=None,
|
|
||||||
is_extension=False, extension_scope=None,
|
|
||||||
options=None),
|
|
||||||
_descriptor.FieldDescriptor(
|
|
||||||
name='vertices', full_name='cura.proto.Object.vertices', index=1,
|
|
||||||
number=2, type=12, cpp_type=9, label=1,
|
|
||||||
has_default_value=False, default_value=_b(""),
|
|
||||||
message_type=None, enum_type=None, containing_type=None,
|
|
||||||
is_extension=False, extension_scope=None,
|
|
||||||
options=None),
|
|
||||||
_descriptor.FieldDescriptor(
|
|
||||||
name='normals', full_name='cura.proto.Object.normals', index=2,
|
|
||||||
number=3, type=12, cpp_type=9, label=1,
|
|
||||||
has_default_value=False, default_value=_b(""),
|
|
||||||
message_type=None, enum_type=None, containing_type=None,
|
|
||||||
is_extension=False, extension_scope=None,
|
|
||||||
options=None),
|
|
||||||
_descriptor.FieldDescriptor(
|
|
||||||
name='indices', full_name='cura.proto.Object.indices', index=3,
|
|
||||||
number=4, type=12, cpp_type=9, label=1,
|
|
||||||
has_default_value=False, default_value=_b(""),
|
|
||||||
message_type=None, enum_type=None, containing_type=None,
|
|
||||||
is_extension=False, extension_scope=None,
|
|
||||||
options=None),
|
|
||||||
_descriptor.FieldDescriptor(
|
|
||||||
name='settings', full_name='cura.proto.Object.settings', index=4,
|
|
||||||
number=5, type=11, cpp_type=10, label=3,
|
|
||||||
has_default_value=False, default_value=[],
|
|
||||||
message_type=None, enum_type=None, containing_type=None,
|
|
||||||
is_extension=False, extension_scope=None,
|
|
||||||
options=None),
|
|
||||||
],
|
|
||||||
extensions=[
|
|
||||||
],
|
|
||||||
nested_types=[],
|
|
||||||
enum_types=[
|
|
||||||
],
|
|
||||||
options=None,
|
|
||||||
is_extendable=False,
|
|
||||||
syntax='proto3',
|
|
||||||
extension_ranges=[],
|
|
||||||
oneofs=[
|
|
||||||
],
|
|
||||||
serialized_start=171,
|
|
||||||
serialized_end=282,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
_PROGRESS = _descriptor.Descriptor(
|
|
||||||
name='Progress',
|
|
||||||
full_name='cura.proto.Progress',
|
|
||||||
filename=None,
|
|
||||||
file=DESCRIPTOR,
|
|
||||||
containing_type=None,
|
|
||||||
fields=[
|
|
||||||
_descriptor.FieldDescriptor(
|
|
||||||
name='amount', full_name='cura.proto.Progress.amount', index=0,
|
|
||||||
number=1, type=2, cpp_type=6, label=1,
|
|
||||||
has_default_value=False, default_value=0,
|
|
||||||
message_type=None, enum_type=None, containing_type=None,
|
|
||||||
is_extension=False, extension_scope=None,
|
|
||||||
options=None),
|
|
||||||
],
|
|
||||||
extensions=[
|
|
||||||
],
|
|
||||||
nested_types=[],
|
|
||||||
enum_types=[
|
|
||||||
],
|
|
||||||
options=None,
|
|
||||||
is_extendable=False,
|
|
||||||
syntax='proto3',
|
|
||||||
extension_ranges=[],
|
|
||||||
oneofs=[
|
|
||||||
],
|
|
||||||
serialized_start=284,
|
|
||||||
serialized_end=310,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
_SLICEDOBJECTLIST = _descriptor.Descriptor(
|
|
||||||
name='SlicedObjectList',
|
|
||||||
full_name='cura.proto.SlicedObjectList',
|
|
||||||
filename=None,
|
|
||||||
file=DESCRIPTOR,
|
|
||||||
containing_type=None,
|
|
||||||
fields=[
|
|
||||||
_descriptor.FieldDescriptor(
|
|
||||||
name='objects', full_name='cura.proto.SlicedObjectList.objects', index=0,
|
|
||||||
number=1, type=11, cpp_type=10, label=3,
|
|
||||||
has_default_value=False, default_value=[],
|
|
||||||
message_type=None, enum_type=None, containing_type=None,
|
|
||||||
is_extension=False, extension_scope=None,
|
|
||||||
options=None),
|
|
||||||
],
|
|
||||||
extensions=[
|
|
||||||
],
|
|
||||||
nested_types=[],
|
|
||||||
enum_types=[
|
|
||||||
],
|
|
||||||
options=None,
|
|
||||||
is_extendable=False,
|
|
||||||
syntax='proto3',
|
|
||||||
extension_ranges=[],
|
|
||||||
oneofs=[
|
|
||||||
],
|
|
||||||
serialized_start=312,
|
|
||||||
serialized_end=373,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
_SLICEDOBJECT = _descriptor.Descriptor(
|
|
||||||
name='SlicedObject',
|
|
||||||
full_name='cura.proto.SlicedObject',
|
|
||||||
filename=None,
|
|
||||||
file=DESCRIPTOR,
|
|
||||||
containing_type=None,
|
|
||||||
fields=[
|
|
||||||
_descriptor.FieldDescriptor(
|
|
||||||
name='id', full_name='cura.proto.SlicedObject.id', index=0,
|
|
||||||
number=1, type=3, cpp_type=2, label=1,
|
|
||||||
has_default_value=False, default_value=0,
|
|
||||||
message_type=None, enum_type=None, containing_type=None,
|
|
||||||
is_extension=False, extension_scope=None,
|
|
||||||
options=None),
|
|
||||||
_descriptor.FieldDescriptor(
|
|
||||||
name='layers', full_name='cura.proto.SlicedObject.layers', index=1,
|
|
||||||
number=2, type=11, cpp_type=10, label=3,
|
|
||||||
has_default_value=False, default_value=[],
|
|
||||||
message_type=None, enum_type=None, containing_type=None,
|
|
||||||
is_extension=False, extension_scope=None,
|
|
||||||
options=None),
|
|
||||||
],
|
|
||||||
extensions=[
|
|
||||||
],
|
|
||||||
nested_types=[],
|
|
||||||
enum_types=[
|
|
||||||
],
|
|
||||||
options=None,
|
|
||||||
is_extendable=False,
|
|
||||||
syntax='proto3',
|
|
||||||
extension_ranges=[],
|
|
||||||
oneofs=[
|
|
||||||
],
|
|
||||||
serialized_start=375,
|
|
||||||
serialized_end=436,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
_LAYER = _descriptor.Descriptor(
|
|
||||||
name='Layer',
|
|
||||||
full_name='cura.proto.Layer',
|
|
||||||
filename=None,
|
|
||||||
file=DESCRIPTOR,
|
|
||||||
containing_type=None,
|
|
||||||
fields=[
|
|
||||||
_descriptor.FieldDescriptor(
|
|
||||||
name='id', full_name='cura.proto.Layer.id', index=0,
|
|
||||||
number=1, type=5, cpp_type=1, label=1,
|
|
||||||
has_default_value=False, default_value=0,
|
|
||||||
message_type=None, enum_type=None, containing_type=None,
|
|
||||||
is_extension=False, extension_scope=None,
|
|
||||||
options=None),
|
|
||||||
_descriptor.FieldDescriptor(
|
|
||||||
name='height', full_name='cura.proto.Layer.height', index=1,
|
|
||||||
number=2, type=2, cpp_type=6, label=1,
|
|
||||||
has_default_value=False, default_value=0,
|
|
||||||
message_type=None, enum_type=None, containing_type=None,
|
|
||||||
is_extension=False, extension_scope=None,
|
|
||||||
options=None),
|
|
||||||
_descriptor.FieldDescriptor(
|
|
||||||
name='thickness', full_name='cura.proto.Layer.thickness', index=2,
|
|
||||||
number=3, type=2, cpp_type=6, label=1,
|
|
||||||
has_default_value=False, default_value=0,
|
|
||||||
message_type=None, enum_type=None, containing_type=None,
|
|
||||||
is_extension=False, extension_scope=None,
|
|
||||||
options=None),
|
|
||||||
_descriptor.FieldDescriptor(
|
|
||||||
name='polygons', full_name='cura.proto.Layer.polygons', index=3,
|
|
||||||
number=4, type=11, cpp_type=10, label=3,
|
|
||||||
has_default_value=False, default_value=[],
|
|
||||||
message_type=None, enum_type=None, containing_type=None,
|
|
||||||
is_extension=False, extension_scope=None,
|
|
||||||
options=None),
|
|
||||||
],
|
|
||||||
extensions=[
|
|
||||||
],
|
|
||||||
nested_types=[],
|
|
||||||
enum_types=[
|
|
||||||
],
|
|
||||||
options=None,
|
|
||||||
is_extendable=False,
|
|
||||||
syntax='proto3',
|
|
||||||
extension_ranges=[],
|
|
||||||
oneofs=[
|
|
||||||
],
|
|
||||||
serialized_start=438,
|
|
||||||
serialized_end=531,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
_POLYGON = _descriptor.Descriptor(
|
|
||||||
name='Polygon',
|
|
||||||
full_name='cura.proto.Polygon',
|
|
||||||
filename=None,
|
|
||||||
file=DESCRIPTOR,
|
|
||||||
containing_type=None,
|
|
||||||
fields=[
|
|
||||||
_descriptor.FieldDescriptor(
|
|
||||||
name='type', full_name='cura.proto.Polygon.type', index=0,
|
|
||||||
number=1, type=14, cpp_type=8, label=1,
|
|
||||||
has_default_value=False, default_value=0,
|
|
||||||
message_type=None, enum_type=None, containing_type=None,
|
|
||||||
is_extension=False, extension_scope=None,
|
|
||||||
options=None),
|
|
||||||
_descriptor.FieldDescriptor(
|
|
||||||
name='points', full_name='cura.proto.Polygon.points', index=1,
|
|
||||||
number=2, type=12, cpp_type=9, label=1,
|
|
||||||
has_default_value=False, default_value=_b(""),
|
|
||||||
message_type=None, enum_type=None, containing_type=None,
|
|
||||||
is_extension=False, extension_scope=None,
|
|
||||||
options=None),
|
|
||||||
_descriptor.FieldDescriptor(
|
|
||||||
name='line_width', full_name='cura.proto.Polygon.line_width', index=2,
|
|
||||||
number=3, type=2, cpp_type=6, label=1,
|
|
||||||
has_default_value=False, default_value=0,
|
|
||||||
message_type=None, enum_type=None, containing_type=None,
|
|
||||||
is_extension=False, extension_scope=None,
|
|
||||||
options=None),
|
|
||||||
],
|
|
||||||
extensions=[
|
|
||||||
],
|
|
||||||
nested_types=[],
|
|
||||||
enum_types=[
|
|
||||||
_POLYGON_TYPE,
|
|
||||||
],
|
|
||||||
options=None,
|
|
||||||
is_extendable=False,
|
|
||||||
syntax='proto3',
|
|
||||||
extension_ranges=[],
|
|
||||||
oneofs=[
|
|
||||||
],
|
|
||||||
serialized_start=534,
|
|
||||||
serialized_end=804,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
_GCODELAYER = _descriptor.Descriptor(
|
|
||||||
name='GCodeLayer',
|
|
||||||
full_name='cura.proto.GCodeLayer',
|
|
||||||
filename=None,
|
|
||||||
file=DESCRIPTOR,
|
|
||||||
containing_type=None,
|
|
||||||
fields=[
|
|
||||||
_descriptor.FieldDescriptor(
|
|
||||||
name='id', full_name='cura.proto.GCodeLayer.id', index=0,
|
|
||||||
number=1, type=3, cpp_type=2, label=1,
|
|
||||||
has_default_value=False, default_value=0,
|
|
||||||
message_type=None, enum_type=None, containing_type=None,
|
|
||||||
is_extension=False, extension_scope=None,
|
|
||||||
options=None),
|
|
||||||
_descriptor.FieldDescriptor(
|
|
||||||
name='data', full_name='cura.proto.GCodeLayer.data', index=1,
|
|
||||||
number=2, type=12, cpp_type=9, label=1,
|
|
||||||
has_default_value=False, default_value=_b(""),
|
|
||||||
message_type=None, enum_type=None, containing_type=None,
|
|
||||||
is_extension=False, extension_scope=None,
|
|
||||||
options=None),
|
|
||||||
],
|
|
||||||
extensions=[
|
|
||||||
],
|
|
||||||
nested_types=[],
|
|
||||||
enum_types=[
|
|
||||||
],
|
|
||||||
options=None,
|
|
||||||
is_extendable=False,
|
|
||||||
syntax='proto3',
|
|
||||||
extension_ranges=[],
|
|
||||||
oneofs=[
|
|
||||||
],
|
|
||||||
serialized_start=806,
|
|
||||||
serialized_end=844,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
_OBJECTPRINTTIME = _descriptor.Descriptor(
|
|
||||||
name='ObjectPrintTime',
|
|
||||||
full_name='cura.proto.ObjectPrintTime',
|
|
||||||
filename=None,
|
|
||||||
file=DESCRIPTOR,
|
|
||||||
containing_type=None,
|
|
||||||
fields=[
|
|
||||||
_descriptor.FieldDescriptor(
|
|
||||||
name='id', full_name='cura.proto.ObjectPrintTime.id', index=0,
|
|
||||||
number=1, type=3, cpp_type=2, label=1,
|
|
||||||
has_default_value=False, default_value=0,
|
|
||||||
message_type=None, enum_type=None, containing_type=None,
|
|
||||||
is_extension=False, extension_scope=None,
|
|
||||||
options=None),
|
|
||||||
_descriptor.FieldDescriptor(
|
|
||||||
name='time', full_name='cura.proto.ObjectPrintTime.time', index=1,
|
|
||||||
number=2, type=2, cpp_type=6, label=1,
|
|
||||||
has_default_value=False, default_value=0,
|
|
||||||
message_type=None, enum_type=None, containing_type=None,
|
|
||||||
is_extension=False, extension_scope=None,
|
|
||||||
options=None),
|
|
||||||
_descriptor.FieldDescriptor(
|
|
||||||
name='material_amount', full_name='cura.proto.ObjectPrintTime.material_amount', index=2,
|
|
||||||
number=3, type=2, cpp_type=6, label=1,
|
|
||||||
has_default_value=False, default_value=0,
|
|
||||||
message_type=None, enum_type=None, containing_type=None,
|
|
||||||
is_extension=False, extension_scope=None,
|
|
||||||
options=None),
|
|
||||||
],
|
|
||||||
extensions=[
|
|
||||||
],
|
|
||||||
nested_types=[],
|
|
||||||
enum_types=[
|
|
||||||
],
|
|
||||||
options=None,
|
|
||||||
is_extendable=False,
|
|
||||||
syntax='proto3',
|
|
||||||
extension_ranges=[],
|
|
||||||
oneofs=[
|
|
||||||
],
|
|
||||||
serialized_start=846,
|
|
||||||
serialized_end=914,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
_SETTINGLIST = _descriptor.Descriptor(
|
|
||||||
name='SettingList',
|
|
||||||
full_name='cura.proto.SettingList',
|
|
||||||
filename=None,
|
|
||||||
file=DESCRIPTOR,
|
|
||||||
containing_type=None,
|
|
||||||
fields=[
|
|
||||||
_descriptor.FieldDescriptor(
|
|
||||||
name='settings', full_name='cura.proto.SettingList.settings', index=0,
|
|
||||||
number=1, type=11, cpp_type=10, label=3,
|
|
||||||
has_default_value=False, default_value=[],
|
|
||||||
message_type=None, enum_type=None, containing_type=None,
|
|
||||||
is_extension=False, extension_scope=None,
|
|
||||||
options=None),
|
|
||||||
],
|
|
||||||
extensions=[
|
|
||||||
],
|
|
||||||
nested_types=[],
|
|
||||||
enum_types=[
|
|
||||||
],
|
|
||||||
options=None,
|
|
||||||
is_extendable=False,
|
|
||||||
syntax='proto3',
|
|
||||||
extension_ranges=[],
|
|
||||||
oneofs=[
|
|
||||||
],
|
|
||||||
serialized_start=916,
|
|
||||||
serialized_end=968,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
_SETTING = _descriptor.Descriptor(
|
|
||||||
name='Setting',
|
|
||||||
full_name='cura.proto.Setting',
|
|
||||||
filename=None,
|
|
||||||
file=DESCRIPTOR,
|
|
||||||
containing_type=None,
|
|
||||||
fields=[
|
|
||||||
_descriptor.FieldDescriptor(
|
|
||||||
name='name', full_name='cura.proto.Setting.name', index=0,
|
|
||||||
number=1, type=9, cpp_type=9, label=1,
|
|
||||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
|
||||||
message_type=None, enum_type=None, containing_type=None,
|
|
||||||
is_extension=False, extension_scope=None,
|
|
||||||
options=None),
|
|
||||||
_descriptor.FieldDescriptor(
|
|
||||||
name='value', full_name='cura.proto.Setting.value', index=1,
|
|
||||||
number=2, type=12, cpp_type=9, label=1,
|
|
||||||
has_default_value=False, default_value=_b(""),
|
|
||||||
message_type=None, enum_type=None, containing_type=None,
|
|
||||||
is_extension=False, extension_scope=None,
|
|
||||||
options=None),
|
|
||||||
],
|
|
||||||
extensions=[
|
|
||||||
],
|
|
||||||
nested_types=[],
|
|
||||||
enum_types=[
|
|
||||||
],
|
|
||||||
options=None,
|
|
||||||
is_extendable=False,
|
|
||||||
syntax='proto3',
|
|
||||||
extension_ranges=[],
|
|
||||||
oneofs=[
|
|
||||||
],
|
|
||||||
serialized_start=970,
|
|
||||||
serialized_end=1008,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
_GCODEPREFIX = _descriptor.Descriptor(
|
|
||||||
name='GCodePrefix',
|
|
||||||
full_name='cura.proto.GCodePrefix',
|
|
||||||
filename=None,
|
|
||||||
file=DESCRIPTOR,
|
|
||||||
containing_type=None,
|
|
||||||
fields=[
|
|
||||||
_descriptor.FieldDescriptor(
|
|
||||||
name='data', full_name='cura.proto.GCodePrefix.data', index=0,
|
|
||||||
number=2, type=12, cpp_type=9, label=1,
|
|
||||||
has_default_value=False, default_value=_b(""),
|
|
||||||
message_type=None, enum_type=None, containing_type=None,
|
|
||||||
is_extension=False, extension_scope=None,
|
|
||||||
options=None),
|
|
||||||
],
|
|
||||||
extensions=[
|
|
||||||
],
|
|
||||||
nested_types=[],
|
|
||||||
enum_types=[
|
|
||||||
],
|
|
||||||
options=None,
|
|
||||||
is_extendable=False,
|
|
||||||
syntax='proto3',
|
|
||||||
extension_ranges=[],
|
|
||||||
oneofs=[
|
|
||||||
],
|
|
||||||
serialized_start=1010,
|
|
||||||
serialized_end=1037,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
_SLICINGFINISHED = _descriptor.Descriptor(
|
|
||||||
name='SlicingFinished',
|
|
||||||
full_name='cura.proto.SlicingFinished',
|
|
||||||
filename=None,
|
|
||||||
file=DESCRIPTOR,
|
|
||||||
containing_type=None,
|
|
||||||
fields=[
|
|
||||||
],
|
|
||||||
extensions=[
|
|
||||||
],
|
|
||||||
nested_types=[],
|
|
||||||
enum_types=[
|
|
||||||
],
|
|
||||||
options=None,
|
|
||||||
is_extendable=False,
|
|
||||||
syntax='proto3',
|
|
||||||
extension_ranges=[],
|
|
||||||
oneofs=[
|
|
||||||
],
|
|
||||||
serialized_start=1039,
|
|
||||||
serialized_end=1056,
|
|
||||||
)
|
|
||||||
|
|
||||||
_OBJECTLIST.fields_by_name['objects'].message_type = _OBJECT
|
|
||||||
_OBJECTLIST.fields_by_name['settings'].message_type = _SETTING
|
|
||||||
_SLICE.fields_by_name['object_lists'].message_type = _OBJECTLIST
|
|
||||||
_OBJECT.fields_by_name['settings'].message_type = _SETTING
|
|
||||||
_SLICEDOBJECTLIST.fields_by_name['objects'].message_type = _SLICEDOBJECT
|
|
||||||
_SLICEDOBJECT.fields_by_name['layers'].message_type = _LAYER
|
|
||||||
_LAYER.fields_by_name['polygons'].message_type = _POLYGON
|
|
||||||
_POLYGON.fields_by_name['type'].enum_type = _POLYGON_TYPE
|
|
||||||
_POLYGON_TYPE.containing_type = _POLYGON
|
|
||||||
_SETTINGLIST.fields_by_name['settings'].message_type = _SETTING
|
|
||||||
DESCRIPTOR.message_types_by_name['ObjectList'] = _OBJECTLIST
|
|
||||||
DESCRIPTOR.message_types_by_name['Slice'] = _SLICE
|
|
||||||
DESCRIPTOR.message_types_by_name['Object'] = _OBJECT
|
|
||||||
DESCRIPTOR.message_types_by_name['Progress'] = _PROGRESS
|
|
||||||
DESCRIPTOR.message_types_by_name['SlicedObjectList'] = _SLICEDOBJECTLIST
|
|
||||||
DESCRIPTOR.message_types_by_name['SlicedObject'] = _SLICEDOBJECT
|
|
||||||
DESCRIPTOR.message_types_by_name['Layer'] = _LAYER
|
|
||||||
DESCRIPTOR.message_types_by_name['Polygon'] = _POLYGON
|
|
||||||
DESCRIPTOR.message_types_by_name['GCodeLayer'] = _GCODELAYER
|
|
||||||
DESCRIPTOR.message_types_by_name['ObjectPrintTime'] = _OBJECTPRINTTIME
|
|
||||||
DESCRIPTOR.message_types_by_name['SettingList'] = _SETTINGLIST
|
|
||||||
DESCRIPTOR.message_types_by_name['Setting'] = _SETTING
|
|
||||||
DESCRIPTOR.message_types_by_name['GCodePrefix'] = _GCODEPREFIX
|
|
||||||
DESCRIPTOR.message_types_by_name['SlicingFinished'] = _SLICINGFINISHED
|
|
||||||
|
|
||||||
ObjectList = _reflection.GeneratedProtocolMessageType('ObjectList', (_message.Message,), dict(
|
|
||||||
DESCRIPTOR = _OBJECTLIST,
|
|
||||||
__module__ = 'Cura_pb2'
|
|
||||||
# @@protoc_insertion_point(class_scope:cura.proto.ObjectList)
|
|
||||||
))
|
|
||||||
_sym_db.RegisterMessage(ObjectList)
|
|
||||||
|
|
||||||
Slice = _reflection.GeneratedProtocolMessageType('Slice', (_message.Message,), dict(
|
|
||||||
DESCRIPTOR = _SLICE,
|
|
||||||
__module__ = 'Cura_pb2'
|
|
||||||
# @@protoc_insertion_point(class_scope:cura.proto.Slice)
|
|
||||||
))
|
|
||||||
_sym_db.RegisterMessage(Slice)
|
|
||||||
|
|
||||||
Object = _reflection.GeneratedProtocolMessageType('Object', (_message.Message,), dict(
|
|
||||||
DESCRIPTOR = _OBJECT,
|
|
||||||
__module__ = 'Cura_pb2'
|
|
||||||
# @@protoc_insertion_point(class_scope:cura.proto.Object)
|
|
||||||
))
|
|
||||||
_sym_db.RegisterMessage(Object)
|
|
||||||
|
|
||||||
Progress = _reflection.GeneratedProtocolMessageType('Progress', (_message.Message,), dict(
|
|
||||||
DESCRIPTOR = _PROGRESS,
|
|
||||||
__module__ = 'Cura_pb2'
|
|
||||||
# @@protoc_insertion_point(class_scope:cura.proto.Progress)
|
|
||||||
))
|
|
||||||
_sym_db.RegisterMessage(Progress)
|
|
||||||
|
|
||||||
SlicedObjectList = _reflection.GeneratedProtocolMessageType('SlicedObjectList', (_message.Message,), dict(
|
|
||||||
DESCRIPTOR = _SLICEDOBJECTLIST,
|
|
||||||
__module__ = 'Cura_pb2'
|
|
||||||
# @@protoc_insertion_point(class_scope:cura.proto.SlicedObjectList)
|
|
||||||
))
|
|
||||||
_sym_db.RegisterMessage(SlicedObjectList)
|
|
||||||
|
|
||||||
SlicedObject = _reflection.GeneratedProtocolMessageType('SlicedObject', (_message.Message,), dict(
|
|
||||||
DESCRIPTOR = _SLICEDOBJECT,
|
|
||||||
__module__ = 'Cura_pb2'
|
|
||||||
# @@protoc_insertion_point(class_scope:cura.proto.SlicedObject)
|
|
||||||
))
|
|
||||||
_sym_db.RegisterMessage(SlicedObject)
|
|
||||||
|
|
||||||
Layer = _reflection.GeneratedProtocolMessageType('Layer', (_message.Message,), dict(
|
|
||||||
DESCRIPTOR = _LAYER,
|
|
||||||
__module__ = 'Cura_pb2'
|
|
||||||
# @@protoc_insertion_point(class_scope:cura.proto.Layer)
|
|
||||||
))
|
|
||||||
_sym_db.RegisterMessage(Layer)
|
|
||||||
|
|
||||||
Polygon = _reflection.GeneratedProtocolMessageType('Polygon', (_message.Message,), dict(
|
|
||||||
DESCRIPTOR = _POLYGON,
|
|
||||||
__module__ = 'Cura_pb2'
|
|
||||||
# @@protoc_insertion_point(class_scope:cura.proto.Polygon)
|
|
||||||
))
|
|
||||||
_sym_db.RegisterMessage(Polygon)
|
|
||||||
|
|
||||||
GCodeLayer = _reflection.GeneratedProtocolMessageType('GCodeLayer', (_message.Message,), dict(
|
|
||||||
DESCRIPTOR = _GCODELAYER,
|
|
||||||
__module__ = 'Cura_pb2'
|
|
||||||
# @@protoc_insertion_point(class_scope:cura.proto.GCodeLayer)
|
|
||||||
))
|
|
||||||
_sym_db.RegisterMessage(GCodeLayer)
|
|
||||||
|
|
||||||
ObjectPrintTime = _reflection.GeneratedProtocolMessageType('ObjectPrintTime', (_message.Message,), dict(
|
|
||||||
DESCRIPTOR = _OBJECTPRINTTIME,
|
|
||||||
__module__ = 'Cura_pb2'
|
|
||||||
# @@protoc_insertion_point(class_scope:cura.proto.ObjectPrintTime)
|
|
||||||
))
|
|
||||||
_sym_db.RegisterMessage(ObjectPrintTime)
|
|
||||||
|
|
||||||
SettingList = _reflection.GeneratedProtocolMessageType('SettingList', (_message.Message,), dict(
|
|
||||||
DESCRIPTOR = _SETTINGLIST,
|
|
||||||
__module__ = 'Cura_pb2'
|
|
||||||
# @@protoc_insertion_point(class_scope:cura.proto.SettingList)
|
|
||||||
))
|
|
||||||
_sym_db.RegisterMessage(SettingList)
|
|
||||||
|
|
||||||
Setting = _reflection.GeneratedProtocolMessageType('Setting', (_message.Message,), dict(
|
|
||||||
DESCRIPTOR = _SETTING,
|
|
||||||
__module__ = 'Cura_pb2'
|
|
||||||
# @@protoc_insertion_point(class_scope:cura.proto.Setting)
|
|
||||||
))
|
|
||||||
_sym_db.RegisterMessage(Setting)
|
|
||||||
|
|
||||||
GCodePrefix = _reflection.GeneratedProtocolMessageType('GCodePrefix', (_message.Message,), dict(
|
|
||||||
DESCRIPTOR = _GCODEPREFIX,
|
|
||||||
__module__ = 'Cura_pb2'
|
|
||||||
# @@protoc_insertion_point(class_scope:cura.proto.GCodePrefix)
|
|
||||||
))
|
|
||||||
_sym_db.RegisterMessage(GCodePrefix)
|
|
||||||
|
|
||||||
SlicingFinished = _reflection.GeneratedProtocolMessageType('SlicingFinished', (_message.Message,), dict(
|
|
||||||
DESCRIPTOR = _SLICINGFINISHED,
|
|
||||||
__module__ = 'Cura_pb2'
|
|
||||||
# @@protoc_insertion_point(class_scope:cura.proto.SlicingFinished)
|
|
||||||
))
|
|
||||||
_sym_db.RegisterMessage(SlicingFinished)
|
|
||||||
|
|
||||||
|
|
||||||
# @@protoc_insertion_point(module_scope)
|
|
@ -44,7 +44,7 @@ class ProcessSlicedObjectListJob(Job):
|
|||||||
object_id_map[id(node)] = node
|
object_id_map[id(node)] = node
|
||||||
Job.yieldThread()
|
Job.yieldThread()
|
||||||
|
|
||||||
settings = Application.getInstance().getMachineManager().getActiveProfile()
|
settings = Application.getInstance().getMachineManager().getWorkingProfile()
|
||||||
|
|
||||||
center = None
|
center = None
|
||||||
if not settings.getSettingValue("machine_center_is_zero"):
|
if not settings.getSettingValue("machine_center_is_zero"):
|
||||||
@ -56,21 +56,27 @@ class ProcessSlicedObjectListJob(Job):
|
|||||||
layer_data = LayerData.LayerData()
|
layer_data = LayerData.LayerData()
|
||||||
|
|
||||||
layer_count = 0
|
layer_count = 0
|
||||||
for object in self._message.objects:
|
for i in range(self._message.repeatedMessageCount("objects")):
|
||||||
layer_count += len(object.layers)
|
layer_count += self._message.getRepeatedMessage("objects", i).repeatedMessageCount("layers")
|
||||||
|
|
||||||
current_layer = 0
|
current_layer = 0
|
||||||
for object in self._message.objects:
|
for i in range(self._message.repeatedMessageCount("objects")):
|
||||||
|
object = self._message.getRepeatedMessage("objects", i)
|
||||||
try:
|
try:
|
||||||
node = object_id_map[object.id]
|
node = object_id_map[object.id]
|
||||||
except KeyError:
|
except KeyError:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
for layer in object.layers:
|
for l in range(object.repeatedMessageCount("layers")):
|
||||||
|
layer = object.getRepeatedMessage("layers", l)
|
||||||
|
|
||||||
layer_data.addLayer(layer.id)
|
layer_data.addLayer(layer.id)
|
||||||
layer_data.setLayerHeight(layer.id, layer.height)
|
layer_data.setLayerHeight(layer.id, layer.height)
|
||||||
layer_data.setLayerThickness(layer.id, layer.thickness)
|
layer_data.setLayerThickness(layer.id, layer.thickness)
|
||||||
for polygon in layer.polygons:
|
|
||||||
|
for p in range(layer.repeatedMessageCount("polygons")):
|
||||||
|
polygon = layer.getRepeatedMessage("polygons", p)
|
||||||
|
|
||||||
points = numpy.fromstring(polygon.points, dtype="i8") # Convert bytearray to numpy array
|
points = numpy.fromstring(polygon.points, dtype="i8") # Convert bytearray to numpy array
|
||||||
points = points.reshape((-1,2)) # We get a linear list of pairs that make up the points, so make numpy interpret them correctly.
|
points = points.reshape((-1,2)) # We get a linear list of pairs that make up the points, so make numpy interpret them correctly.
|
||||||
points = numpy.asarray(points, dtype=numpy.float32)
|
points = numpy.asarray(points, dtype=numpy.float32)
|
||||||
@ -83,8 +89,6 @@ class ProcessSlicedObjectListJob(Job):
|
|||||||
|
|
||||||
layer_data.addPolygon(layer.id, polygon.type, points, polygon.line_width)
|
layer_data.addPolygon(layer.id, polygon.type, points, polygon.line_width)
|
||||||
|
|
||||||
Job.yieldThread()
|
|
||||||
|
|
||||||
current_layer += 1
|
current_layer += 1
|
||||||
progress = (current_layer / layer_count) * 100
|
progress = (current_layer / layer_count) * 100
|
||||||
# TODO: Rebuild the layer data mesh once the layer has been processed.
|
# TODO: Rebuild the layer data mesh once the layer has been processed.
|
||||||
|
@ -14,8 +14,6 @@ from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator
|
|||||||
|
|
||||||
from cura.OneAtATimeIterator import OneAtATimeIterator
|
from cura.OneAtATimeIterator import OneAtATimeIterator
|
||||||
|
|
||||||
from . import Cura_pb2
|
|
||||||
|
|
||||||
## Formatter class that handles token expansion in start/end gcod
|
## Formatter class that handles token expansion in start/end gcod
|
||||||
class GcodeStartEndFormatter(Formatter):
|
class GcodeStartEndFormatter(Formatter):
|
||||||
def get_value(self, key, args, kwargs): # [CodeStyle: get_value is an overridden function from the Formatter class]
|
def get_value(self, key, args, kwargs): # [CodeStyle: get_value is an overridden function from the Formatter class]
|
||||||
@ -81,20 +79,21 @@ class StartSliceJob(Job):
|
|||||||
|
|
||||||
self._sendSettings(self._profile)
|
self._sendSettings(self._profile)
|
||||||
|
|
||||||
slice_message = Cura_pb2.Slice()
|
slice_message = self._socket.createMessage("cura.proto.Slice");
|
||||||
|
|
||||||
for group in object_groups:
|
for group in object_groups:
|
||||||
group_message = slice_message.object_lists.add()
|
group_message = slice_message.addRepeatedMessage("object_lists");
|
||||||
for object in group:
|
for object in group:
|
||||||
mesh_data = object.getMeshData().getTransformed(object.getWorldTransformation())
|
mesh_data = object.getMeshData().getTransformed(object.getWorldTransformation())
|
||||||
|
|
||||||
obj = group_message.objects.add()
|
obj = group_message.addRepeatedMessage("objects");
|
||||||
obj.id = id(object)
|
obj.id = id(object)
|
||||||
|
|
||||||
verts = numpy.array(mesh_data.getVertices())
|
verts = numpy.array(mesh_data.getVertices())
|
||||||
verts[:,[1,2]] = verts[:,[2,1]]
|
verts[:,[1,2]] = verts[:,[2,1]]
|
||||||
verts[:,1] *= -1
|
verts[:,1] *= -1
|
||||||
obj.vertices = verts.tostring()
|
|
||||||
|
obj.vertices = verts
|
||||||
|
|
||||||
self._handlePerObjectSettings(object, obj)
|
self._handlePerObjectSettings(object, obj)
|
||||||
|
|
||||||
@ -115,13 +114,13 @@ class StartSliceJob(Job):
|
|||||||
return str(value).encode("utf-8")
|
return str(value).encode("utf-8")
|
||||||
|
|
||||||
def _sendSettings(self, profile):
|
def _sendSettings(self, profile):
|
||||||
msg = Cura_pb2.SettingList()
|
msg = self._socket.createMessage("cura.proto.SettingList");
|
||||||
settings = profile.getAllSettingValues(include_machine = True)
|
settings = profile.getAllSettingValues(include_machine = True)
|
||||||
start_gcode = settings["machine_start_gcode"]
|
start_gcode = settings["machine_start_gcode"]
|
||||||
settings["material_bed_temp_prepend"] = "{material_bed_temperature}" not in start_gcode
|
settings["material_bed_temp_prepend"] = "{material_bed_temperature}" not in start_gcode
|
||||||
settings["material_print_temp_prepend"] = "{material_print_temperature}" not in start_gcode
|
settings["material_print_temp_prepend"] = "{material_print_temperature}" not in start_gcode
|
||||||
for key, value in settings.items():
|
for key, value in settings.items():
|
||||||
s = msg.settings.add()
|
s = msg.addRepeatedMessage("settings")
|
||||||
s.name = key
|
s.name = key
|
||||||
if key == "machine_start_gcode" or key == "machine_end_gcode":
|
if key == "machine_start_gcode" or key == "machine_end_gcode":
|
||||||
s.value = self._expandGcodeTokens(key, value, settings)
|
s.value = self._expandGcodeTokens(key, value, settings)
|
||||||
@ -134,7 +133,7 @@ class StartSliceJob(Job):
|
|||||||
profile = node.callDecoration("getProfile")
|
profile = node.callDecoration("getProfile")
|
||||||
if profile:
|
if profile:
|
||||||
for key, value in profile.getAllSettingValues().items():
|
for key, value in profile.getAllSettingValues().items():
|
||||||
setting = message.settings.add()
|
setting = message.addRepeatedMessage("settings")
|
||||||
setting.name = key
|
setting.name = key
|
||||||
setting.value = str(value).encode()
|
setting.value = str(value).encode()
|
||||||
|
|
||||||
@ -145,7 +144,7 @@ class StartSliceJob(Job):
|
|||||||
return
|
return
|
||||||
|
|
||||||
for key, value in object_settings.items():
|
for key, value in object_settings.items():
|
||||||
setting = message.settings.add()
|
setting = message.addRepeatedMessage("settings")
|
||||||
setting.name = key
|
setting.name = key
|
||||||
setting.value = str(value).encode()
|
setting.value = str(value).encode()
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@ class GCodeWriter(MeshWriter):
|
|||||||
if gcode_list:
|
if gcode_list:
|
||||||
for gcode in gcode_list:
|
for gcode in gcode_list:
|
||||||
stream.write(gcode)
|
stream.write(gcode)
|
||||||
profile = self._serialiseProfile(Application.getInstance().getMachineManager().getActiveProfile()) #Serialise the profile and put them at the end of the file.
|
profile = self._serialiseProfile(Application.getInstance().getMachineManager().getWorkingProfile()) #Serialise the profile and put them at the end of the file.
|
||||||
stream.write(profile)
|
stream.write(profile)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
@ -10,16 +10,13 @@ import UM 1.1 as UM
|
|||||||
|
|
||||||
UM.Dialog
|
UM.Dialog
|
||||||
{
|
{
|
||||||
width: 350*Screen.devicePixelRatio;
|
width: 350 * Screen.devicePixelRatio;
|
||||||
minimumWidth: 350*Screen.devicePixelRatio;
|
minimumWidth: 350 * Screen.devicePixelRatio;
|
||||||
maximumWidth: 350*Screen.devicePixelRatio;
|
maximumWidth: 350 * Screen.devicePixelRatio;
|
||||||
|
|
||||||
height: 220*Screen.devicePixelRatio;
|
height: 250 * Screen.devicePixelRatio;
|
||||||
minimumHeight: 220*Screen.devicePixelRatio;
|
minimumHeight: 250 * Screen.devicePixelRatio;
|
||||||
maximumHeight: 220*Screen.devicePixelRatio;
|
maximumHeight: 250 * Screen.devicePixelRatio;
|
||||||
|
|
||||||
|
|
||||||
modality: Qt.Modal
|
|
||||||
|
|
||||||
title: catalog.i18nc("@title:window", "Convert Image...")
|
title: catalog.i18nc("@title:window", "Convert Image...")
|
||||||
|
|
||||||
@ -38,7 +35,6 @@ UM.Dialog
|
|||||||
text: catalog.i18nc("@info:tooltip","The maximum distance of each pixel from \"Base.\"")
|
text: catalog.i18nc("@info:tooltip","The maximum distance of each pixel from \"Base.\"")
|
||||||
Row {
|
Row {
|
||||||
width: parent.width
|
width: parent.width
|
||||||
height: childrenRect.height
|
|
||||||
|
|
||||||
Text {
|
Text {
|
||||||
text: catalog.i18nc("@action:label","Height (mm)")
|
text: catalog.i18nc("@action:label","Height (mm)")
|
||||||
@ -62,7 +58,6 @@ UM.Dialog
|
|||||||
text: catalog.i18nc("@info:tooltip","The base height from the build plate in millimeters.")
|
text: catalog.i18nc("@info:tooltip","The base height from the build plate in millimeters.")
|
||||||
Row {
|
Row {
|
||||||
width: parent.width
|
width: parent.width
|
||||||
height: childrenRect.height
|
|
||||||
|
|
||||||
Text {
|
Text {
|
||||||
text: catalog.i18nc("@action:label","Base (mm)")
|
text: catalog.i18nc("@action:label","Base (mm)")
|
||||||
@ -86,7 +81,6 @@ UM.Dialog
|
|||||||
text: catalog.i18nc("@info:tooltip","The width in millimeters on the build plate.")
|
text: catalog.i18nc("@info:tooltip","The width in millimeters on the build plate.")
|
||||||
Row {
|
Row {
|
||||||
width: parent.width
|
width: parent.width
|
||||||
height: childrenRect.height
|
|
||||||
|
|
||||||
Text {
|
Text {
|
||||||
text: catalog.i18nc("@action:label","Width (mm)")
|
text: catalog.i18nc("@action:label","Width (mm)")
|
||||||
@ -111,7 +105,6 @@ UM.Dialog
|
|||||||
text: catalog.i18nc("@info:tooltip","The depth in millimeters on the build plate")
|
text: catalog.i18nc("@info:tooltip","The depth in millimeters on the build plate")
|
||||||
Row {
|
Row {
|
||||||
width: parent.width
|
width: parent.width
|
||||||
height: childrenRect.height
|
|
||||||
|
|
||||||
Text {
|
Text {
|
||||||
text: catalog.i18nc("@action:label","Depth (mm)")
|
text: catalog.i18nc("@action:label","Depth (mm)")
|
||||||
@ -135,7 +128,6 @@ UM.Dialog
|
|||||||
text: catalog.i18nc("@info:tooltip","By default, white pixels represent high points on the mesh and black pixels represent low points on the mesh. Change this option to reverse the behavior such that black pixels represent high points on the mesh and white pixels represent low points on the mesh.")
|
text: catalog.i18nc("@info:tooltip","By default, white pixels represent high points on the mesh and black pixels represent low points on the mesh. Change this option to reverse the behavior such that black pixels represent high points on the mesh and white pixels represent low points on the mesh.")
|
||||||
Row {
|
Row {
|
||||||
width: parent.width
|
width: parent.width
|
||||||
height: childrenRect.height
|
|
||||||
|
|
||||||
//Empty label so 2 column layout works.
|
//Empty label so 2 column layout works.
|
||||||
Text {
|
Text {
|
||||||
@ -159,7 +151,6 @@ UM.Dialog
|
|||||||
text: catalog.i18nc("@info:tooltip","The amount of smoothing to apply to the image.")
|
text: catalog.i18nc("@info:tooltip","The amount of smoothing to apply to the image.")
|
||||||
Row {
|
Row {
|
||||||
width: parent.width
|
width: parent.width
|
||||||
height: childrenRect.height
|
|
||||||
|
|
||||||
Text {
|
Text {
|
||||||
text: catalog.i18nc("@action:label","Smoothing")
|
text: catalog.i18nc("@action:label","Smoothing")
|
||||||
|
@ -167,12 +167,16 @@ class LayerView(View):
|
|||||||
|
|
||||||
if new_max_layers > 0 and new_max_layers != self._old_max_layers:
|
if new_max_layers > 0 and new_max_layers != self._old_max_layers:
|
||||||
self._max_layers = new_max_layers
|
self._max_layers = new_max_layers
|
||||||
self.maxLayersChanged.emit()
|
|
||||||
self._current_layer_num = self._max_layers
|
|
||||||
|
|
||||||
# This makes sure we update the current layer
|
# The qt slider has a bit of weird behavior that if the maxvalue needs to be changed first
|
||||||
self.setLayer(int(self._max_layers))
|
# if it's the largest value. If we don't do this, we can have a slider block outside of the
|
||||||
self.currentLayerNumChanged.emit()
|
# slider.
|
||||||
|
if new_max_layers > self._current_layer_num:
|
||||||
|
self.maxLayersChanged.emit()
|
||||||
|
self.setLayer(int(self._max_layers))
|
||||||
|
else:
|
||||||
|
self.setLayer(int(self._max_layers))
|
||||||
|
self.maxLayersChanged.emit()
|
||||||
|
|
||||||
maxLayersChanged = Signal()
|
maxLayersChanged = Signal()
|
||||||
currentLayerNumChanged = Signal()
|
currentLayerNumChanged = Signal()
|
||||||
|
@ -24,16 +24,11 @@ class PerObjectSettingsModel(ListModel):
|
|||||||
super().__init__(parent)
|
super().__init__(parent)
|
||||||
self._scene = Application.getInstance().getController().getScene()
|
self._scene = Application.getInstance().getController().getScene()
|
||||||
self._root = self._scene.getRoot()
|
self._root = self._scene.getRoot()
|
||||||
self._root.transformationChanged.connect(self._updatePositions)
|
|
||||||
self._root.childrenChanged.connect(self._updateNodes)
|
|
||||||
self._updateNodes(None)
|
|
||||||
|
|
||||||
self.addRoleName(self.IdRole,"id")
|
self.addRoleName(self.IdRole,"id")
|
||||||
self.addRoleName(self.XRole,"x")
|
|
||||||
self.addRoleName(self.YRole,"y")
|
|
||||||
self.addRoleName(self.MaterialRole, "material")
|
self.addRoleName(self.MaterialRole, "material")
|
||||||
self.addRoleName(self.ProfileRole, "profile")
|
self.addRoleName(self.ProfileRole, "profile")
|
||||||
self.addRoleName(self.SettingsRole, "settings")
|
self.addRoleName(self.SettingsRole, "settings")
|
||||||
|
self._updateModel()
|
||||||
|
|
||||||
@pyqtSlot("quint64", str)
|
@pyqtSlot("quint64", str)
|
||||||
def setObjectProfile(self, object_id, profile_name):
|
def setObjectProfile(self, object_id, profile_name):
|
||||||
@ -72,27 +67,11 @@ class PerObjectSettingsModel(ListModel):
|
|||||||
if len(node.callDecoration("getAllSettings")) == 0:
|
if len(node.callDecoration("getAllSettings")) == 0:
|
||||||
node.removeDecorator(SettingOverrideDecorator)
|
node.removeDecorator(SettingOverrideDecorator)
|
||||||
|
|
||||||
def _updatePositions(self, source):
|
def _updateModel(self):
|
||||||
camera = Application.getInstance().getController().getScene().getActiveCamera()
|
|
||||||
for node in BreadthFirstIterator(self._root):
|
|
||||||
if type(node) is not SceneNode or not node.getMeshData():
|
|
||||||
continue
|
|
||||||
|
|
||||||
projected_position = camera.project(node.getWorldPosition())
|
|
||||||
|
|
||||||
index = self.find("id", id(node))
|
|
||||||
self.setProperty(index, "x", float(projected_position[0]))
|
|
||||||
self.setProperty(index, "y", float(projected_position[1]))
|
|
||||||
|
|
||||||
def _updateNodes(self, source):
|
|
||||||
self.clear()
|
self.clear()
|
||||||
camera = Application.getInstance().getController().getScene().getActiveCamera()
|
|
||||||
for node in BreadthFirstIterator(self._root):
|
for node in BreadthFirstIterator(self._root):
|
||||||
if type(node) is not SceneNode or not node.getMeshData() or not node.isSelectable():
|
if type(node) is not SceneNode or not node.getMeshData() or not node.isSelectable():
|
||||||
continue
|
continue
|
||||||
|
|
||||||
projected_position = camera.project(node.getWorldPosition())
|
|
||||||
|
|
||||||
node_profile = node.callDecoration("getProfile")
|
node_profile = node.callDecoration("getProfile")
|
||||||
if not node_profile:
|
if not node_profile:
|
||||||
node_profile = "global"
|
node_profile = "global"
|
||||||
@ -101,8 +80,6 @@ class PerObjectSettingsModel(ListModel):
|
|||||||
|
|
||||||
self.appendItem({
|
self.appendItem({
|
||||||
"id": id(node),
|
"id": id(node),
|
||||||
"x": float(projected_position[0]),
|
|
||||||
"y": float(projected_position[1]),
|
|
||||||
"material": "",
|
"material": "",
|
||||||
"profile": node_profile,
|
"profile": node_profile,
|
||||||
"settings": SettingOverrideModel.SettingOverrideModel(node)
|
"settings": SettingOverrideModel.SettingOverrideModel(node)
|
||||||
|
@ -10,8 +10,7 @@ import UM 1.1 as UM
|
|||||||
|
|
||||||
Item {
|
Item {
|
||||||
id: base;
|
id: base;
|
||||||
property int currentIndex: UM.ActiveTool.properties.SelectedIndex;
|
property int currentIndex: UM.ActiveTool.properties.getValue("SelectedIndex")
|
||||||
property string printSequence: UM.ActiveTool.properties.PrintSequence;
|
|
||||||
|
|
||||||
UM.I18nCatalog { id: catalog; name: "cura"; }
|
UM.I18nCatalog { id: catalog; name: "cura"; }
|
||||||
|
|
||||||
@ -25,14 +24,6 @@ Item {
|
|||||||
|
|
||||||
spacing: UM.Theme.sizes.default_margin.height;
|
spacing: UM.Theme.sizes.default_margin.height;
|
||||||
|
|
||||||
Label {
|
|
||||||
width: UM.Theme.sizes.setting.width;
|
|
||||||
wrapMode: Text.Wrap;
|
|
||||||
text: catalog.i18nc("@label", "Per Object Settings behavior may be unexpected when 'Print sequence' is set to 'All at Once'.")
|
|
||||||
color: UM.Theme.colors.text;
|
|
||||||
visible: base.printSequence == "all_at_once"
|
|
||||||
}
|
|
||||||
|
|
||||||
UM.SettingItem {
|
UM.SettingItem {
|
||||||
id: profileSelection
|
id: profileSelection
|
||||||
|
|
||||||
@ -47,11 +38,11 @@ Item {
|
|||||||
|
|
||||||
options: UM.ProfilesModel { addUseGlobal: true }
|
options: UM.ProfilesModel { addUseGlobal: true }
|
||||||
|
|
||||||
value: UM.ActiveTool.properties.Model.getItem(base.currentIndex).profile
|
value: UM.ActiveTool.properties.getValue("Model").getItem(base.currentIndex).profile
|
||||||
|
|
||||||
onItemValueChanged: {
|
onItemValueChanged: {
|
||||||
var item = UM.ActiveTool.properties.Model.getItem(base.currentIndex);
|
var item = UM.ActiveTool.properties.getValue("Model").getItem(base.currentIndex);
|
||||||
UM.ActiveTool.properties.Model.setObjectProfile(item.id, value)
|
UM.ActiveTool.properties.getValue("Model").setObjectProfile(item.id, value)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -63,7 +54,7 @@ Item {
|
|||||||
Repeater {
|
Repeater {
|
||||||
id: settings;
|
id: settings;
|
||||||
|
|
||||||
model: UM.ActiveTool.properties.Model.getItem(base.currentIndex).settings
|
model: UM.ActiveTool.properties.getValue("Model").getItem(base.currentIndex).settings
|
||||||
|
|
||||||
UM.SettingItem {
|
UM.SettingItem {
|
||||||
width: UM.Theme.sizes.setting.width;
|
width: UM.Theme.sizes.setting.width;
|
||||||
@ -91,7 +82,7 @@ Item {
|
|||||||
width: UM.Theme.sizes.setting.height;
|
width: UM.Theme.sizes.setting.height;
|
||||||
height: UM.Theme.sizes.setting.height;
|
height: UM.Theme.sizes.setting.height;
|
||||||
|
|
||||||
onClicked: UM.ActiveTool.properties.Model.removeSettingOverride(UM.ActiveTool.properties.Model.getItem(base.currentIndex).id, model.key)
|
onClicked: UM.ActiveTool.properties.getValue("Model").removeSettingOverride(UM.ActiveTool.properties.getValue("Model").getItem(base.currentIndex).id, model.key)
|
||||||
|
|
||||||
style: ButtonStyle
|
style: ButtonStyle
|
||||||
{
|
{
|
||||||
@ -202,6 +193,7 @@ Item {
|
|||||||
|
|
||||||
width: parent.width;
|
width: parent.width;
|
||||||
height: childrenRect.height;
|
height: childrenRect.height;
|
||||||
|
visible: model.visible && settingsColumn.childrenHeight != 0 //If all children are hidden, the height is 0, and then the category header must also be hidden.
|
||||||
|
|
||||||
ToolButton {
|
ToolButton {
|
||||||
id: categoryHeader;
|
id: categoryHeader;
|
||||||
@ -237,8 +229,6 @@ Item {
|
|||||||
|
|
||||||
property variant settingsModel: model.settings;
|
property variant settingsModel: model.settings;
|
||||||
|
|
||||||
visible: model.visible;
|
|
||||||
|
|
||||||
Column {
|
Column {
|
||||||
id: settingsColumn;
|
id: settingsColumn;
|
||||||
|
|
||||||
@ -272,10 +262,12 @@ Item {
|
|||||||
x: model.depth * UM.Theme.sizes.default_margin.width;
|
x: model.depth * UM.Theme.sizes.default_margin.width;
|
||||||
text: model.name;
|
text: model.name;
|
||||||
tooltip: model.description;
|
tooltip: model.description;
|
||||||
|
visible: !model.global_only
|
||||||
|
height: model.global_only ? 0 : undefined
|
||||||
|
|
||||||
onClicked: {
|
onClicked: {
|
||||||
var object_id = UM.ActiveTool.properties.Model.getItem(base.currentIndex).id;
|
var object_id = UM.ActiveTool.properties.getValue("Model").getItem(base.currentIndex).id;
|
||||||
UM.ActiveTool.properties.Model.addSettingOverride(object_id, model.key);
|
UM.ActiveTool.properties.getValue("Model").addSettingOverride(object_id, model.key);
|
||||||
settingPickDialog.visible = false;
|
settingPickDialog.visible = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,26 +4,29 @@
|
|||||||
from UM.Tool import Tool
|
from UM.Tool import Tool
|
||||||
from UM.Scene.Selection import Selection
|
from UM.Scene.Selection import Selection
|
||||||
from UM.Application import Application
|
from UM.Application import Application
|
||||||
|
from UM.Qt.ListModel import ListModel
|
||||||
|
|
||||||
from . import PerObjectSettingsModel
|
from . import PerObjectSettingsModel
|
||||||
|
|
||||||
class PerObjectSettingsTool(Tool):
|
class PerObjectSettingsTool(Tool):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
|
self._model = None
|
||||||
|
|
||||||
self.setExposedProperties("Model", "SelectedIndex", "PrintSequence")
|
self.setExposedProperties("Model", "SelectedIndex")
|
||||||
|
|
||||||
def event(self, event):
|
def event(self, event):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def getModel(self):
|
def getModel(self):
|
||||||
return PerObjectSettingsModel.PerObjectSettingsModel()
|
if not self._model:
|
||||||
|
self._model = PerObjectSettingsModel.PerObjectSettingsModel()
|
||||||
|
|
||||||
|
#For some reason, casting this model to itself causes the model to properly be cast to a QVariant, even though it ultimately inherits from QVariant.
|
||||||
|
#Yeah, we have no idea either...
|
||||||
|
return PerObjectSettingsModel.PerObjectSettingsModel(self._model)
|
||||||
|
|
||||||
def getSelectedIndex(self):
|
def getSelectedIndex(self):
|
||||||
selected_object_id = id(Selection.getSelectedObject(0))
|
selected_object_id = id(Selection.getSelectedObject(0))
|
||||||
index = self.getModel().find("id", selected_object_id)
|
index = self.getModel().find("id", selected_object_id)
|
||||||
return index
|
return index
|
||||||
|
|
||||||
def getPrintSequence(self):
|
|
||||||
settings = Application.getInstance().getMachineManager().getActiveProfile()
|
|
||||||
return settings.getSettingValue("print_sequence")
|
|
@ -23,19 +23,21 @@ class RemovableDriveOutputDevice(OutputDevice):
|
|||||||
self.setIconName("save_sd")
|
self.setIconName("save_sd")
|
||||||
self.setPriority(1)
|
self.setPriority(1)
|
||||||
|
|
||||||
Preferences.getInstance().addPreference("removable_drive/file_type", "text/x-gcode") #Add a preference that says in what file type we should store the file.
|
|
||||||
|
|
||||||
self._writing = False
|
self._writing = False
|
||||||
|
|
||||||
def requestWrite(self, node, file_name = None):
|
def requestWrite(self, node, file_name = None, filter_by_machine = False):
|
||||||
if self._writing:
|
if self._writing:
|
||||||
raise OutputDeviceError.DeviceBusyError()
|
raise OutputDeviceError.DeviceBusyError()
|
||||||
|
|
||||||
file_type = Preferences.getInstance().getValue("removable_drive/file_type")
|
file_formats = Application.getInstance().getMeshFileHandler().getSupportedFileTypesWrite() #Formats supported by this application.
|
||||||
gcode_writer = Application.getInstance().getMeshFileHandler().getWriterByMimeType(file_type)
|
if filter_by_machine:
|
||||||
if not gcode_writer:
|
machine_file_formats = Application.getInstance().getMachineManager().getActiveMachineInstance().getMachineDefinition().getFileFormats()
|
||||||
Logger.log("e", "Could not find writer for MIME type %s, not writing to removable drive %s", file_type, self.getName())
|
file_formats = list(filter(lambda file_format: file_format["mime_type"] in machine_file_formats, file_formats)) #Take the intersection between file_formats and machine_file_formats.
|
||||||
|
if len(file_formats) == 0:
|
||||||
|
Logger.log("e", "There are no file formats available to write with!")
|
||||||
raise OutputDeviceError.WriteRequestFailedError()
|
raise OutputDeviceError.WriteRequestFailedError()
|
||||||
|
writer = Application.getInstance().getMeshFileHandler().getWriterByMimeType(file_formats[0]["mime_type"]) #Just take the first file format available.
|
||||||
|
extension = file_formats[0]["extension"]
|
||||||
|
|
||||||
if file_name == None:
|
if file_name == None:
|
||||||
for n in BreadthFirstIterator(node):
|
for n in BreadthFirstIterator(node):
|
||||||
@ -48,12 +50,14 @@ class RemovableDriveOutputDevice(OutputDevice):
|
|||||||
Logger.log("e", "Could not determine a proper file name when trying to write to %s, aborting", self.getName())
|
Logger.log("e", "Could not determine a proper file name when trying to write to %s, aborting", self.getName())
|
||||||
raise OutputDeviceError.WriteRequestFailedError()
|
raise OutputDeviceError.WriteRequestFailedError()
|
||||||
|
|
||||||
file_name = os.path.join(self.getId(), os.path.splitext(file_name)[0] + ".gcode")
|
if extension: #Not empty string.
|
||||||
|
extension = "." + extension
|
||||||
|
file_name = os.path.join(self.getId(), os.path.splitext(file_name)[0] + extension)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
Logger.log("d", "Writing to %s", file_name)
|
Logger.log("d", "Writing to %s", file_name)
|
||||||
stream = open(file_name, "wt")
|
stream = open(file_name, "wt")
|
||||||
job = WriteMeshJob(gcode_writer, stream, node, MeshWriter.OutputMode.TextMode)
|
job = WriteMeshJob(writer, stream, node, MeshWriter.OutputMode.TextMode)
|
||||||
job.setFileName(file_name)
|
job.setFileName(file_name)
|
||||||
job.progress.connect(self._onProgress)
|
job.progress.connect(self._onProgress)
|
||||||
job.finished.connect(self._onFinished)
|
job.finished.connect(self._onFinished)
|
||||||
|
@ -44,7 +44,7 @@ class SliceInfo(Extension):
|
|||||||
def _onWriteStarted(self, output_device):
|
def _onWriteStarted(self, output_device):
|
||||||
if not Preferences.getInstance().getValue("info/send_slice_info"):
|
if not Preferences.getInstance().getValue("info/send_slice_info"):
|
||||||
return # Do nothing, user does not want to send data
|
return # Do nothing, user does not want to send data
|
||||||
settings = Application.getInstance().getMachineManager().getActiveProfile()
|
settings = Application.getInstance().getMachineManager().getWorkingProfile()
|
||||||
|
|
||||||
# Load all machine definitions and put them in machine_settings dict
|
# Load all machine definitions and put them in machine_settings dict
|
||||||
#setting_file_name = Application.getInstance().getActiveMachineInstance().getMachineSettings()._json_file
|
#setting_file_name = Application.getInstance().getActiveMachineInstance().getMachineSettings()._json_file
|
||||||
|
@ -34,8 +34,8 @@ class SolidView(View):
|
|||||||
self._disabled_shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "overhang.shader"))
|
self._disabled_shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "overhang.shader"))
|
||||||
self._disabled_shader.setUniformValue("u_diffuseColor", [0.68, 0.68, 0.68, 1.0])
|
self._disabled_shader.setUniformValue("u_diffuseColor", [0.68, 0.68, 0.68, 1.0])
|
||||||
|
|
||||||
if Application.getInstance().getMachineManager().getActiveProfile():
|
if Application.getInstance().getMachineManager().getWorkingProfile():
|
||||||
profile = Application.getInstance().getMachineManager().getActiveProfile()
|
profile = Application.getInstance().getMachineManager().getWorkingProfile()
|
||||||
|
|
||||||
if profile.getSettingValue("support_enable") or not Preferences.getInstance().getValue("view/show_overhang"):
|
if profile.getSettingValue("support_enable") or not Preferences.getInstance().getValue("view/show_overhang"):
|
||||||
angle = profile.getSettingValue("support_angle")
|
angle = profile.getSettingValue("support_angle")
|
||||||
|
2955
resources/i18n/de/cura.po
Executable file → Normal file
2955
resources/i18n/de/cura.po
Executable file → Normal file
File diff suppressed because it is too large
Load Diff
6148
resources/i18n/de/fdmprinter.json.po
Executable file → Normal file
6148
resources/i18n/de/fdmprinter.json.po
Executable file → Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
1320
resources/i18n/es/cura.po
Normal file
1320
resources/i18n/es/cura.po
Normal file
File diff suppressed because it is too large
Load Diff
2485
resources/i18n/es/fdmprinter.json.po
Normal file
2485
resources/i18n/es/fdmprinter.json.po
Normal file
File diff suppressed because it is too large
Load Diff
3004
resources/i18n/fi/cura.po
Executable file → Normal file
3004
resources/i18n/fi/cura.po
Executable file → Normal file
File diff suppressed because it is too large
Load Diff
5914
resources/i18n/fi/fdmprinter.json.po
Executable file → Normal file
5914
resources/i18n/fi/fdmprinter.json.po
Executable file → Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
1320
resources/i18n/it/cura.po
Normal file
1320
resources/i18n/it/cura.po
Normal file
File diff suppressed because it is too large
Load Diff
2485
resources/i18n/it/fdmprinter.json.po
Normal file
2485
resources/i18n/it/fdmprinter.json.po
Normal file
File diff suppressed because it is too large
Load Diff
1320
resources/i18n/nl/cura.po
Normal file
1320
resources/i18n/nl/cura.po
Normal file
File diff suppressed because it is too large
Load Diff
2485
resources/i18n/nl/fdmprinter.json.po
Normal file
2485
resources/i18n/nl/fdmprinter.json.po
Normal file
File diff suppressed because it is too large
Load Diff
@ -5,7 +5,7 @@
|
|||||||
"manufacturer": "Other",
|
"manufacturer": "Other",
|
||||||
"author": "RBC",
|
"author": "RBC",
|
||||||
"platform": "rigidbot_platform.stl",
|
"platform": "rigidbot_platform.stl",
|
||||||
|
"file_formats": "text/x-gcode",
|
||||||
"inherits": "fdmprinter.json",
|
"inherits": "fdmprinter.json",
|
||||||
|
|
||||||
"overrides": {
|
"overrides": {
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
"manufacturer": "Other",
|
"manufacturer": "Other",
|
||||||
"author": "RBC",
|
"author": "RBC",
|
||||||
"platform": "rigidbotbig_platform.stl",
|
"platform": "rigidbotbig_platform.stl",
|
||||||
|
"file_formats": "text/x-gcode",
|
||||||
"inherits": "fdmprinter.json",
|
"inherits": "fdmprinter.json",
|
||||||
|
|
||||||
"overrides": {
|
"overrides": {
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
"manufacturer": "Other",
|
"manufacturer": "Other",
|
||||||
"author": "BQ",
|
"author": "BQ",
|
||||||
"platform": "bq_hephestos_platform.stl",
|
"platform": "bq_hephestos_platform.stl",
|
||||||
|
"file_formats": "text/x-gcode",
|
||||||
"inherits": "fdmprinter.json",
|
"inherits": "fdmprinter.json",
|
||||||
|
|
||||||
"overrides": {
|
"overrides": {
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
"manufacturer": "Other",
|
"manufacturer": "Other",
|
||||||
"author": "BQ",
|
"author": "BQ",
|
||||||
"platform": "bq_hephestos_2_platform.stl",
|
"platform": "bq_hephestos_2_platform.stl",
|
||||||
|
"file_formats": "text/x-gcode",
|
||||||
"inherits": "fdmprinter.json",
|
"inherits": "fdmprinter.json",
|
||||||
|
|
||||||
"overrides": {
|
"overrides": {
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
"manufacturer": "Other",
|
"manufacturer": "Other",
|
||||||
"author": "BQ",
|
"author": "BQ",
|
||||||
"platform": "bq_hephestos_platform.stl",
|
"platform": "bq_hephestos_platform.stl",
|
||||||
|
"file_formats": "text/x-gcode",
|
||||||
"inherits": "fdmprinter.json",
|
"inherits": "fdmprinter.json",
|
||||||
|
|
||||||
"overrides": {
|
"overrides": {
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
"manufacturer": "Other",
|
"manufacturer": "Other",
|
||||||
"author": "BQ",
|
"author": "BQ",
|
||||||
"platform": "bq_witbox_platform.stl",
|
"platform": "bq_witbox_platform.stl",
|
||||||
|
"file_formats": "text/x-gcode",
|
||||||
"inherits": "fdmprinter.json",
|
"inherits": "fdmprinter.json",
|
||||||
|
|
||||||
"overrides": {
|
"overrides": {
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
"manufacturer": "Other",
|
"manufacturer": "Other",
|
||||||
"author": "BQ",
|
"author": "BQ",
|
||||||
"platform": "bq_witbox_platform.stl",
|
"platform": "bq_witbox_platform.stl",
|
||||||
|
"file_formats": "text/x-gcode",
|
||||||
"inherits": "fdmprinter.json",
|
"inherits": "fdmprinter.json",
|
||||||
|
|
||||||
"overrides": {
|
"overrides": {
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
"version": 1,
|
"version": 1,
|
||||||
"id": "dual_extrusion",
|
"id": "dual_extrusion",
|
||||||
"name": "Dual Extrusion Base File",
|
"name": "Dual Extrusion Base File",
|
||||||
|
"file_formats": "text/x-gcode;application/x-stl-ascii;application/x-stl-binary;application/x-wavefront-obj;application/x3g",
|
||||||
"inherits": "fdmprinter.json",
|
"inherits": "fdmprinter.json",
|
||||||
|
|
||||||
"visible": false,
|
"visible": false,
|
||||||
|
@ -5,88 +5,117 @@
|
|||||||
"name": "FDM Printer Base Description",
|
"name": "FDM Printer Base Description",
|
||||||
"author": "Ultimaker B.V.",
|
"author": "Ultimaker B.V.",
|
||||||
"manufacturer": "Ultimaker",
|
"manufacturer": "Ultimaker",
|
||||||
|
"file_formats": "text/x-gcode;application/x-stl-ascii;application/x-stl-binary;application/x-wavefront-obj;application/x3g",
|
||||||
|
|
||||||
"add_pages": [],
|
"add_pages": [],
|
||||||
|
|
||||||
"machine_settings": {
|
"machine_settings": {
|
||||||
"machine_show_variants": {
|
|
||||||
"description": "Wether to show the different variants of this machine, which are described in separate json files.",
|
|
||||||
"default": false
|
|
||||||
},
|
|
||||||
"machine_start_gcode": {
|
"machine_start_gcode": {
|
||||||
"description": "Gcode commands to be executed at the very start - separated by \\n.",
|
"description": "Gcode commands to be executed at the very start - separated by \\n.",
|
||||||
"default": "G28 ; Home\nG1 Z15.0 F6000 ;move the platform down 15mm\n;Prime the extruder\nG92 E0\nG1 F200 E3\nG92 E0"
|
"default": "G28 ; Home\nG1 Z15.0 F6000 ;move the platform down 15mm\n;Prime the extruder\nG92 E0\nG1 F200 E3\nG92 E0",
|
||||||
|
"global_only": true
|
||||||
},
|
},
|
||||||
"machine_end_gcode": {
|
"machine_end_gcode": {
|
||||||
"description": "Gcode commands to be executed at the very end - separated by \\n.",
|
"description": "Gcode commands to be executed at the very end - separated by \\n.",
|
||||||
"default": "M104 S0\nM140 S0\n;Retract the filament\nG92 E1\nG1 E-1 F300\nG28 X0 Y0\nM84"
|
"default": "M104 S0\nM140 S0\n;Retract the filament\nG92 E1\nG1 E-1 F300\nG28 X0 Y0\nM84",
|
||||||
|
"global_only": true
|
||||||
},
|
},
|
||||||
"material_bed_temp_wait": {
|
"material_bed_temp_wait": {
|
||||||
"description": "Whether to insert a command to wait until the bed temperature is reached at the start.",
|
"description": "Whether to insert a command to wait until the bed temperature is reached at the start.",
|
||||||
"default": true
|
"default": true,
|
||||||
|
"global_only": true
|
||||||
},
|
},
|
||||||
"material_print_temp_wait": {
|
"material_print_temp_wait": {
|
||||||
"description": "Whether to insert a command to wait until the nozzle temperatures are reached at the start.",
|
"description": "Whether to insert a command to wait until the nozzle temperatures are reached at the start.",
|
||||||
"default": true
|
"default": true,
|
||||||
|
"global_only": true
|
||||||
},
|
},
|
||||||
"material_print_temp_prepend": {
|
"material_print_temp_prepend": {
|
||||||
"description": "Whether to include nozzle temperature commands at the start of the gcode. When the start_gcode already contains nozzle temperature commands Cura frontend will automatically disable this setting.",
|
"description": "Whether to include nozzle temperature commands at the start of the gcode. When the start_gcode already contains nozzle temperature commands Cura frontend will automatically disable this setting.",
|
||||||
"default": true
|
"default": true,
|
||||||
|
"global_only": true
|
||||||
},
|
},
|
||||||
"material_bed_temp_prepend": {
|
"material_bed_temp_prepend": {
|
||||||
"description": "Whether to include bed temperature commands at the start of the gcode. When the start_gcode already contains bed temperature commands Cura frontend will automatically disable this setting.",
|
"description": "Whether to include bed temperature commands at the start of the gcode. When the start_gcode already contains bed temperature commands Cura frontend will automatically disable this setting.",
|
||||||
"default": true
|
"default": true,
|
||||||
|
"global_only": true
|
||||||
},
|
},
|
||||||
"machine_width": {
|
"machine_width": {
|
||||||
"description": "The width (X-direction) of the printable area.",
|
"description": "The width (X-direction) of the printable area.",
|
||||||
"default": 100
|
"default": 100,
|
||||||
|
"global_only": true
|
||||||
},
|
},
|
||||||
"machine_depth": {
|
"machine_depth": {
|
||||||
"description": "The depth (Y-direction) of the printable area.",
|
"description": "The depth (Y-direction) of the printable area.",
|
||||||
"default": 100
|
"default": 100,
|
||||||
|
"global_only": true
|
||||||
},
|
},
|
||||||
"machine_height": {
|
"machine_height": {
|
||||||
"description": "The height (Z-direction) of the printable area.",
|
"description": "The height (Z-direction) of the printable area.",
|
||||||
"default": 100
|
"default": 100,
|
||||||
|
"global_only": true
|
||||||
},
|
},
|
||||||
"machine_heated_bed": {
|
"machine_heated_bed": {
|
||||||
"description": "Whether the machine has a heated bed present.",
|
"description": "Whether the machine has a heated bed present.",
|
||||||
"default": false
|
"default": false,
|
||||||
|
"global_only": true
|
||||||
},
|
},
|
||||||
"machine_center_is_zero": {
|
"machine_center_is_zero": {
|
||||||
"description": "Whether the X/Y coordinates of the zero position of the printer is at the center of the printable area.",
|
"description": "Whether the X/Y coordinates of the zero position of the printer is at the center of the printable area.",
|
||||||
"default": false
|
"default": false,
|
||||||
|
"global_only": true
|
||||||
},
|
},
|
||||||
"machine_extruder_count": {
|
"machine_extruder_count": {
|
||||||
"description": "Number of extruder trains. An extruder train is the combination of a feeder, bowden tube, and nozzle.",
|
"description": "Number of extruder trains. An extruder train is the combination of a feeder, bowden tube, and nozzle.",
|
||||||
"default": 1
|
"default": 1,
|
||||||
|
"global_only": true
|
||||||
},
|
},
|
||||||
"machine_nozzle_tip_outer_diameter": {
|
"machine_nozzle_tip_outer_diameter": {
|
||||||
"description": "The outer diameter of the tip of the nozzle.",
|
"description": "The outer diameter of the tip of the nozzle.",
|
||||||
"default": 1, "SEE_machine_extruder_trains": true },
|
"default": 1,
|
||||||
|
"SEE_machine_extruder_trains": true,
|
||||||
|
"global_only": true
|
||||||
|
},
|
||||||
"machine_nozzle_head_distance": {
|
"machine_nozzle_head_distance": {
|
||||||
"description": "The height difference between the tip of the nozzle and the lowest part of the print head.",
|
"description": "The height difference between the tip of the nozzle and the lowest part of the print head.",
|
||||||
"default": 3, "SEE_machine_extruder_trains": true },
|
"default": 3,
|
||||||
|
"SEE_machine_extruder_trains": true,
|
||||||
|
"global_only": true
|
||||||
|
},
|
||||||
"machine_nozzle_expansion_angle": {
|
"machine_nozzle_expansion_angle": {
|
||||||
"description": "The angle between the horizontal plane and the conical part right above the tip of the nozzle.",
|
"description": "The angle between the horizontal plane and the conical part right above the tip of the nozzle.",
|
||||||
"default": 45, "SEE_machine_extruder_trains": true },
|
"default": 45,
|
||||||
|
"SEE_machine_extruder_trains": true,
|
||||||
|
"global_only": true
|
||||||
|
},
|
||||||
"machine_heat_zone_length": {
|
"machine_heat_zone_length": {
|
||||||
"description": "The distance from the tip of the nozzle in which heat from the nozzle is transfered to the filament.",
|
"description": "The distance from the tip of the nozzle in which heat from the nozzle is transfered to the filament.",
|
||||||
"default": 16, "SEE_machine_extruder_trains": true },
|
"default": 16,
|
||||||
|
"SEE_machine_extruder_trains": true,
|
||||||
|
"global_only": true
|
||||||
|
},
|
||||||
"machine_nozzle_heat_up_speed": {
|
"machine_nozzle_heat_up_speed": {
|
||||||
"description": "The speed (°C/s) by which the nozzle heats up averaged over the window of normal printing temperatures and the standby temperature.",
|
"description": "The speed (*C/s) by which the nozzle heats up averaged over the window of normal printing temperatures and the standby temperature.",
|
||||||
"default": 2.0, "SEE_machine_extruder_trains": true },
|
"default": 2.0,
|
||||||
|
"SEE_machine_extruder_trains": true,
|
||||||
|
"global_only": true
|
||||||
|
},
|
||||||
"machine_nozzle_cool_down_speed": {
|
"machine_nozzle_cool_down_speed": {
|
||||||
"description": "The speed (°C/s) by which the nozzle cools down averaged over the window of normal printing temperatures and the standby temperature.",
|
"description": "The speed (*C/s) by which the nozzle cools down averaged over the window of normal printing temperatures and the standby temperature.",
|
||||||
"default": 2.0, "SEE_machine_extruder_trains": true },
|
"default": 2.0,
|
||||||
|
"SEE_machine_extruder_trains": true,
|
||||||
|
"global_only": true
|
||||||
|
},
|
||||||
"machine_gcode_flavor": {
|
"machine_gcode_flavor": {
|
||||||
"description": "The type of gcode to be generated.",
|
"description": "The type of gcode to be generated.",
|
||||||
"default": "RepRap"
|
"default": "RepRap",
|
||||||
|
"global_only": true
|
||||||
},
|
},
|
||||||
"machine_disallowed_areas": {
|
"machine_disallowed_areas": {
|
||||||
"description": "A list of polygons with areas the print head is not allowed to enter.",
|
"description": "A list of polygons with areas the print head is not allowed to enter.",
|
||||||
"type": "polygons",
|
"type": "polygons",
|
||||||
"default": []
|
"default": [],
|
||||||
|
"global_only": true
|
||||||
},
|
},
|
||||||
"machine_platform_offset": {
|
"machine_platform_offset": {
|
||||||
"description": "Where to display the platform mesh.",
|
"description": "Where to display the platform mesh.",
|
||||||
@ -94,10 +123,11 @@
|
|||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
0
|
0
|
||||||
]
|
],
|
||||||
|
"global_only": true
|
||||||
},
|
},
|
||||||
"machine_head_polygon": {
|
"machine_head_polygon": {
|
||||||
"description": "A 2D silhouette of the print head (fan caps excluded).",
|
"description": "A 2D silhouette of the print head.",
|
||||||
"type": "polygon",
|
"type": "polygon",
|
||||||
"default": [
|
"default": [
|
||||||
[
|
[
|
||||||
@ -116,10 +146,11 @@
|
|||||||
1,
|
1,
|
||||||
1
|
1
|
||||||
]
|
]
|
||||||
]
|
],
|
||||||
|
"global_only": true
|
||||||
},
|
},
|
||||||
"machine_head_with_fans_polygon": {
|
"machine_head_with_fans_polygon": {
|
||||||
"description": "A 2D silhouette of the print head (fan caps included).",
|
"description": "A 2D silhouette of the print head.",
|
||||||
"type": "polygon",
|
"type": "polygon",
|
||||||
"default": [
|
"default": [
|
||||||
[
|
[
|
||||||
@ -138,11 +169,13 @@
|
|||||||
-20,
|
-20,
|
||||||
-10
|
-10
|
||||||
]
|
]
|
||||||
]
|
],
|
||||||
|
"global_only": true
|
||||||
},
|
},
|
||||||
"gantry_height": {
|
"gantry_height": {
|
||||||
"description": "The height difference between the tip of the nozzle and the gantry system (X and Y axes).",
|
"description": "The height difference between the tip of the nozzle and the gantry system (X and Y axes).",
|
||||||
"default":99999999999
|
"default": 99999999999,
|
||||||
|
"global_only": true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"categories": {
|
"categories": {
|
||||||
@ -161,7 +194,8 @@
|
|||||||
"max_value_warning": "10",
|
"max_value_warning": "10",
|
||||||
"visible": false
|
"visible": false
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
"global_only": true
|
||||||
},
|
},
|
||||||
"resolution": {
|
"resolution": {
|
||||||
"label": "Quality",
|
"label": "Quality",
|
||||||
@ -188,7 +222,8 @@
|
|||||||
"min_value": "0.001",
|
"min_value": "0.001",
|
||||||
"min_value_warning": "0.04",
|
"min_value_warning": "0.04",
|
||||||
"max_value_warning": "0.32",
|
"max_value_warning": "0.32",
|
||||||
"visible": false
|
"visible": false,
|
||||||
|
"global_only": "print_sequence != \"one_at_a_time\""
|
||||||
},
|
},
|
||||||
"line_width": {
|
"line_width": {
|
||||||
"label": "Line Width",
|
"label": "Line Width",
|
||||||
@ -547,12 +582,12 @@
|
|||||||
"infill_overlap": {
|
"infill_overlap": {
|
||||||
"label": "Infill Overlap",
|
"label": "Infill Overlap",
|
||||||
"description": "The amount of overlap between the infill and the walls. A slight overlap allows the walls to connect firmly to the infill.",
|
"description": "The amount of overlap between the infill and the walls. A slight overlap allows the walls to connect firmly to the infill.",
|
||||||
"unit": "mm",
|
"unit": "%",
|
||||||
"type": "float",
|
"type": "float",
|
||||||
"default": 0.04,
|
"default": 10,
|
||||||
"min_value_warning": "0",
|
"min_value": "0",
|
||||||
"max_value_warning": "machine_nozzle_size",
|
"max_value_warning": "100",
|
||||||
"inherit_function": "0.1 * line_width if infill_sparse_density < 95 else 0.0",
|
"inherit_function": "10 if infill_sparse_density < 95 else 0",
|
||||||
"visible": false
|
"visible": false
|
||||||
},
|
},
|
||||||
"infill_wipe_dist": {
|
"infill_wipe_dist": {
|
||||||
@ -622,7 +657,8 @@
|
|||||||
"type": "float",
|
"type": "float",
|
||||||
"default": 150,
|
"default": 150,
|
||||||
"min_value": "0",
|
"min_value": "0",
|
||||||
"max_value_warning": "260"
|
"max_value_warning": "260",
|
||||||
|
"global_only": "print_sequence != \"one_at_a_time\""
|
||||||
},
|
},
|
||||||
"material_extrusion_cool_down_speed": {
|
"material_extrusion_cool_down_speed": {
|
||||||
"label": "Extrusion Cool Down Speed Modifier",
|
"label": "Extrusion Cool Down Speed Modifier",
|
||||||
@ -631,7 +667,8 @@
|
|||||||
"type": "float",
|
"type": "float",
|
||||||
"default": 0.5,
|
"default": 0.5,
|
||||||
"min_value": "0",
|
"min_value": "0",
|
||||||
"max_value_warning": "10.0"
|
"max_value_warning": "10.0",
|
||||||
|
"global_only": "print_sequence != \"one_at_a_time\""
|
||||||
},
|
},
|
||||||
"material_bed_temperature": {
|
"material_bed_temperature": {
|
||||||
"label": "Bed Temperature",
|
"label": "Bed Temperature",
|
||||||
@ -641,7 +678,8 @@
|
|||||||
"default": 60,
|
"default": 60,
|
||||||
"min_value": "0",
|
"min_value": "0",
|
||||||
"max_value_warning": "260",
|
"max_value_warning": "260",
|
||||||
"enabled": "machine_heated_bed"
|
"enabled": "machine_heated_bed",
|
||||||
|
"global_only": "print_sequence != \"one_at_a_time\""
|
||||||
},
|
},
|
||||||
"material_diameter": {
|
"material_diameter": {
|
||||||
"label": "Diameter",
|
"label": "Diameter",
|
||||||
@ -651,7 +689,8 @@
|
|||||||
"default": 2.85,
|
"default": 2.85,
|
||||||
"min_value": "0.0001",
|
"min_value": "0.0001",
|
||||||
"min_value_warning": "0.4",
|
"min_value_warning": "0.4",
|
||||||
"max_value_warning": "3.5"
|
"max_value_warning": "3.5",
|
||||||
|
"global_only": "print_sequence != \"one_at_a_time\""
|
||||||
},
|
},
|
||||||
"material_flow": {
|
"material_flow": {
|
||||||
"label": "Flow",
|
"label": "Flow",
|
||||||
@ -749,7 +788,6 @@
|
|||||||
"min_value": "0",
|
"min_value": "0",
|
||||||
"max_value_warning": "20",
|
"max_value_warning": "20",
|
||||||
"type": "int",
|
"type": "int",
|
||||||
"min_value": "1",
|
|
||||||
"visible": false,
|
"visible": false,
|
||||||
"inherit": false,
|
"inherit": false,
|
||||||
"enabled": "retraction_enable"
|
"enabled": "retraction_enable"
|
||||||
@ -760,7 +798,7 @@
|
|||||||
"unit": "mm",
|
"unit": "mm",
|
||||||
"type": "float",
|
"type": "float",
|
||||||
"default": 4.5,
|
"default": 4.5,
|
||||||
"min_value": "0.0",
|
"min_value": "0",
|
||||||
"max_value_warning": "retraction_amount * 2",
|
"max_value_warning": "retraction_amount * 2",
|
||||||
"visible": false,
|
"visible": false,
|
||||||
"inherit_function": "retraction_amount",
|
"inherit_function": "retraction_amount",
|
||||||
@ -861,9 +899,9 @@
|
|||||||
"inherit_function": "speed_print",
|
"inherit_function": "speed_print",
|
||||||
"enabled": "support_enable",
|
"enabled": "support_enable",
|
||||||
"children": {
|
"children": {
|
||||||
"speed_support_infill": {
|
"speed_support_lines": {
|
||||||
"label": "Support Infill Speed",
|
"label": "Support Wall Speed",
|
||||||
"description": "The speed at which the infill of exterior support is printed. Printing the infill at higher speeds can improve the overall print time.",
|
"description": "The speed at which the walls of exterior support are printed. Printing the walls at higher speeds can improve the overall duration.",
|
||||||
"unit": "mm/s",
|
"unit": "mm/s",
|
||||||
"type": "float",
|
"type": "float",
|
||||||
"default": 60,
|
"default": 60,
|
||||||
@ -951,6 +989,7 @@
|
|||||||
"default": true,
|
"default": true,
|
||||||
"visible": false,
|
"visible": false,
|
||||||
"enabled": "retraction_combing",
|
"enabled": "retraction_combing",
|
||||||
|
"global_only": "print_sequence != \"one_at_a_time\"",
|
||||||
"children": {
|
"children": {
|
||||||
"travel_avoid_distance": {
|
"travel_avoid_distance": {
|
||||||
"label": "Avoid Distance",
|
"label": "Avoid Distance",
|
||||||
@ -962,7 +1001,8 @@
|
|||||||
"max_value_warning": "machine_nozzle_tip_outer_diameter * 5",
|
"max_value_warning": "machine_nozzle_tip_outer_diameter * 5",
|
||||||
"visible": false,
|
"visible": false,
|
||||||
"inherit": false,
|
"inherit": false,
|
||||||
"enabled": "retraction_combing"
|
"enabled": "retraction_combing",
|
||||||
|
"global_only": "print_sequence != \"one_at_a_time\""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -986,8 +1026,8 @@
|
|||||||
"enabled": "coasting_enable"
|
"enabled": "coasting_enable"
|
||||||
},
|
},
|
||||||
"coasting_min_volume": {
|
"coasting_min_volume": {
|
||||||
"label": "Minimum Volume Before Coasting",
|
"label": "Minimal Volume Before Coasting",
|
||||||
"description": "The smallest volume an extrusion path should have to coast the full amount. For smaller extrusion paths, less pressure has been built up in the bowden tube and so the coasted volume is scaled linearly. This value should always be larger than the Coasting Volume.",
|
"description": "The least volume an extrusion path should have to coast the full amount. For smaller extrusion paths, less pressure has been built up in the bowden tube and so the coasted volume is scaled linearly. This value should always be larger than the Coasting Volume.",
|
||||||
"unit": "mm³",
|
"unit": "mm³",
|
||||||
"type": "float",
|
"type": "float",
|
||||||
"default": 0.8,
|
"default": 0.8,
|
||||||
@ -1020,6 +1060,7 @@
|
|||||||
"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.",
|
"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",
|
"type": "boolean",
|
||||||
"default": true,
|
"default": true,
|
||||||
|
"global_only": "print_sequence != \"one_at_a_time\"",
|
||||||
"children": {
|
"children": {
|
||||||
"cool_fan_speed": {
|
"cool_fan_speed": {
|
||||||
"label": "Fan Speed",
|
"label": "Fan Speed",
|
||||||
@ -1031,6 +1072,7 @@
|
|||||||
"default": 100,
|
"default": 100,
|
||||||
"visible": false,
|
"visible": false,
|
||||||
"inherit_function": "100.0 if parent_value else 0.0",
|
"inherit_function": "100.0 if parent_value else 0.0",
|
||||||
|
"global_only": "print_sequence != \"one_at_a_time\"",
|
||||||
"children": {
|
"children": {
|
||||||
"cool_fan_speed_min": {
|
"cool_fan_speed_min": {
|
||||||
"label": "Minimum Fan Speed",
|
"label": "Minimum Fan Speed",
|
||||||
@ -1040,7 +1082,8 @@
|
|||||||
"min_value": "0",
|
"min_value": "0",
|
||||||
"max_value": "100",
|
"max_value": "100",
|
||||||
"default": 100,
|
"default": 100,
|
||||||
"visible": false
|
"visible": false,
|
||||||
|
"global_only": "print_sequence != \"one_at_a_time\""
|
||||||
},
|
},
|
||||||
"cool_fan_speed_max": {
|
"cool_fan_speed_max": {
|
||||||
"label": "Maximum Fan Speed",
|
"label": "Maximum Fan Speed",
|
||||||
@ -1050,7 +1093,8 @@
|
|||||||
"min_value": "0",
|
"min_value": "0",
|
||||||
"max_value": "100",
|
"max_value": "100",
|
||||||
"default": 100,
|
"default": 100,
|
||||||
"visible": false
|
"visible": false,
|
||||||
|
"global_only": "print_sequence != \"one_at_a_time\""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1065,6 +1109,7 @@
|
|||||||
"min_value": "0",
|
"min_value": "0",
|
||||||
"max_value_warning": "10.0",
|
"max_value_warning": "10.0",
|
||||||
"visible": false,
|
"visible": false,
|
||||||
|
"global_only": "print_sequence != \"one_at_a_time\"",
|
||||||
"children": {
|
"children": {
|
||||||
"cool_fan_full_layer": {
|
"cool_fan_full_layer": {
|
||||||
"label": "Fan Full on at Layer",
|
"label": "Fan Full on at Layer",
|
||||||
@ -1074,7 +1119,8 @@
|
|||||||
"min_value": "0",
|
"min_value": "0",
|
||||||
"max_value_warning": "100",
|
"max_value_warning": "100",
|
||||||
"visible": false,
|
"visible": false,
|
||||||
"inherit_function": "int((parent_value - layer_height_0 + 0.001) / layer_height)"
|
"inherit_function": "int((parent_value - layer_height_0 + 0.001) / layer_height)",
|
||||||
|
"global_only": "print_sequence != \"one_at_a_time\""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -1086,7 +1132,8 @@
|
|||||||
"default": 5,
|
"default": 5,
|
||||||
"min_value": "0",
|
"min_value": "0",
|
||||||
"max_value_warning": "600",
|
"max_value_warning": "600",
|
||||||
"visible": false
|
"visible": false,
|
||||||
|
"global_only": "print_sequence != \"one_at_a_time\""
|
||||||
},
|
},
|
||||||
"cool_min_layer_time_fan_speed_max": {
|
"cool_min_layer_time_fan_speed_max": {
|
||||||
"label": "Minimum Layer Time Full Fan Speed",
|
"label": "Minimum Layer Time Full Fan Speed",
|
||||||
@ -1096,7 +1143,8 @@
|
|||||||
"default": 10,
|
"default": 10,
|
||||||
"min_value": "cool_min_layer_time",
|
"min_value": "cool_min_layer_time",
|
||||||
"max_value_warning": "600",
|
"max_value_warning": "600",
|
||||||
"visible": false
|
"visible": false,
|
||||||
|
"global_only": "print_sequence != \"one_at_a_time\""
|
||||||
},
|
},
|
||||||
"cool_min_speed": {
|
"cool_min_speed": {
|
||||||
"label": "Minimum Speed",
|
"label": "Minimum Speed",
|
||||||
@ -1106,14 +1154,16 @@
|
|||||||
"default": 10,
|
"default": 10,
|
||||||
"min_value": "0",
|
"min_value": "0",
|
||||||
"max_value_warning": "100",
|
"max_value_warning": "100",
|
||||||
"visible": false
|
"visible": false,
|
||||||
|
"global_only": "print_sequence != \"one_at_a_time\""
|
||||||
},
|
},
|
||||||
"cool_lift_head": {
|
"cool_lift_head": {
|
||||||
"label": "Lift Head",
|
"label": "Lift Head",
|
||||||
"description": "Lift the head away from the print if the minimum speed is hit because of cool slowdown, and wait the extra time away from the print surface until the minimum layer time is used up.",
|
"description": "Lift the head away from the print if the minimum speed is hit because of cool slowdown, and wait the extra time away from the print surface until the minimum layer time is used up.",
|
||||||
"type": "boolean",
|
"type": "boolean",
|
||||||
"default": false,
|
"default": false,
|
||||||
"visible": false
|
"visible": false,
|
||||||
|
"global_only": "print_sequence != \"one_at_a_time\""
|
||||||
},
|
},
|
||||||
"draft_shield_enabled": {
|
"draft_shield_enabled": {
|
||||||
"label": "Enable Draft Shield",
|
"label": "Enable Draft Shield",
|
||||||
@ -1204,7 +1254,7 @@
|
|||||||
},
|
},
|
||||||
"support_z_distance": {
|
"support_z_distance": {
|
||||||
"label": "Z Distance",
|
"label": "Z Distance",
|
||||||
"description": "Distance from the top/bottom of the support to the print. A small gap here makes it easier to remove the support but makes the print a bit uglier. 0.15mm allows for easier separation of the support structure. The value is rounded down to the nearest multiple of the layer height",
|
"description": "Distance from the top/bottom of the support to the print. A small gap here makes it easier to remove the support but makes the print a bit uglier. 0.15mm allows for easier separation of the support structure.",
|
||||||
"unit": "mm",
|
"unit": "mm",
|
||||||
"type": "float",
|
"type": "float",
|
||||||
"min_value": "0",
|
"min_value": "0",
|
||||||
@ -1485,7 +1535,8 @@
|
|||||||
"default": 1,
|
"default": 1,
|
||||||
"min_value": "0",
|
"min_value": "0",
|
||||||
"max_value_warning": "10",
|
"max_value_warning": "10",
|
||||||
"enabled": "adhesion_type == \"skirt\""
|
"enabled": "adhesion_type == \"skirt\"",
|
||||||
|
"global_only": "print_sequence != \"one_at_a_time\""
|
||||||
},
|
},
|
||||||
"skirt_gap": {
|
"skirt_gap": {
|
||||||
"label": "Skirt Distance",
|
"label": "Skirt Distance",
|
||||||
@ -1495,7 +1546,8 @@
|
|||||||
"default": 3,
|
"default": 3,
|
||||||
"min_value_warning": "0",
|
"min_value_warning": "0",
|
||||||
"max_value_warning": "100",
|
"max_value_warning": "100",
|
||||||
"enabled": "adhesion_type == \"skirt\""
|
"enabled": "adhesion_type == \"skirt\"",
|
||||||
|
"global_only": "print_sequence != \"one_at_a_time\""
|
||||||
},
|
},
|
||||||
"skirt_minimal_length": {
|
"skirt_minimal_length": {
|
||||||
"label": "Skirt Minimum Length",
|
"label": "Skirt Minimum Length",
|
||||||
@ -1506,7 +1558,8 @@
|
|||||||
"min_value": "0",
|
"min_value": "0",
|
||||||
"min_value_warning": "25",
|
"min_value_warning": "25",
|
||||||
"max_value_warning": "2500",
|
"max_value_warning": "2500",
|
||||||
"enabled": "adhesion_type == \"skirt\""
|
"enabled": "adhesion_type == \"skirt\"",
|
||||||
|
"global_only": "print_sequence != \"one_at_a_time\""
|
||||||
},
|
},
|
||||||
"brim_width": {
|
"brim_width": {
|
||||||
"label": "Brim Width",
|
"label": "Brim Width",
|
||||||
@ -1517,6 +1570,7 @@
|
|||||||
"min_value": "0.0",
|
"min_value": "0.0",
|
||||||
"max_value_warning": "100.0",
|
"max_value_warning": "100.0",
|
||||||
"enabled": "adhesion_type == \"brim\"",
|
"enabled": "adhesion_type == \"brim\"",
|
||||||
|
"global_only": "print_sequence != \"one_at_a_time\"",
|
||||||
"children": {
|
"children": {
|
||||||
"brim_line_count": {
|
"brim_line_count": {
|
||||||
"label": "Brim Line Count",
|
"label": "Brim Line Count",
|
||||||
@ -1526,7 +1580,8 @@
|
|||||||
"min_value": "0",
|
"min_value": "0",
|
||||||
"max_value_warning": "300",
|
"max_value_warning": "300",
|
||||||
"inherit_function": "math.ceil(parent_value / skirt_line_width)",
|
"inherit_function": "math.ceil(parent_value / skirt_line_width)",
|
||||||
"enabled": "adhesion_type == \"brim\""
|
"enabled": "adhesion_type == \"brim\"",
|
||||||
|
"global_only": "print_sequence != \"one_at_a_time\""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -1816,7 +1871,8 @@
|
|||||||
"description": "Spiralize smooths out the Z move of the outer edge. This will create a steady Z increase over the whole print. This feature turns a solid object into a single walled print with a solid bottom. This feature used to be called Joris in older versions.",
|
"description": "Spiralize smooths out the Z move of the outer edge. This will create a steady Z increase over the whole print. This feature turns a solid object into a single walled print with a solid bottom. This feature used to be called Joris in older versions.",
|
||||||
"type": "boolean",
|
"type": "boolean",
|
||||||
"default": false,
|
"default": false,
|
||||||
"visible": false
|
"visible": false,
|
||||||
|
"global_only": "print_sequence != \"one_at_a_time\""
|
||||||
},
|
},
|
||||||
"magic_fuzzy_skin_enabled": {
|
"magic_fuzzy_skin_enabled": {
|
||||||
"label": "Fuzzy Skin",
|
"label": "Fuzzy Skin",
|
||||||
@ -1867,7 +1923,8 @@
|
|||||||
"description": "Print only the outside surface with a sparse webbed structure, printing 'in thin air'. This is realized by horizontally printing the contours of the model at given Z intervals which are connected via upward and diagonally downward lines.",
|
"description": "Print only the outside surface with a sparse webbed structure, printing 'in thin air'. This is realized by horizontally printing the contours of the model at given Z intervals which are connected via upward and diagonally downward lines.",
|
||||||
"type": "boolean",
|
"type": "boolean",
|
||||||
"default": false,
|
"default": false,
|
||||||
"visible": false
|
"visible": false,
|
||||||
|
"global_only": "print_sequence != \"one_at_a_time\""
|
||||||
},
|
},
|
||||||
"wireframe_height": {
|
"wireframe_height": {
|
||||||
"label": "WP Connection Height",
|
"label": "WP Connection Height",
|
||||||
@ -1878,7 +1935,8 @@
|
|||||||
"min_value": "0.0001",
|
"min_value": "0.0001",
|
||||||
"max_value_warning": "20",
|
"max_value_warning": "20",
|
||||||
"visible": false,
|
"visible": false,
|
||||||
"enabled": "wireframe_enabled"
|
"enabled": "wireframe_enabled",
|
||||||
|
"global_only": "print_sequence != \"one_at_a_time\""
|
||||||
},
|
},
|
||||||
"wireframe_roof_inset": {
|
"wireframe_roof_inset": {
|
||||||
"label": "WP Roof Inset Distance",
|
"label": "WP Roof Inset Distance",
|
||||||
@ -1891,7 +1949,8 @@
|
|||||||
"max_value_warning": "20",
|
"max_value_warning": "20",
|
||||||
"visible": false,
|
"visible": false,
|
||||||
"enabled": "wireframe_enabled",
|
"enabled": "wireframe_enabled",
|
||||||
"inherit_function": "wireframe_height"
|
"inherit_function": "wireframe_height",
|
||||||
|
"global_only": "print_sequence != \"one_at_a_time\""
|
||||||
},
|
},
|
||||||
"wireframe_printspeed": {
|
"wireframe_printspeed": {
|
||||||
"label": "WP speed",
|
"label": "WP speed",
|
||||||
@ -1903,6 +1962,7 @@
|
|||||||
"max_value_warning": "50",
|
"max_value_warning": "50",
|
||||||
"visible": false,
|
"visible": false,
|
||||||
"enabled": "wireframe_enabled",
|
"enabled": "wireframe_enabled",
|
||||||
|
"global_only": "print_sequence != \"one_at_a_time\"",
|
||||||
"children": {
|
"children": {
|
||||||
"wireframe_printspeed_bottom": {
|
"wireframe_printspeed_bottom": {
|
||||||
"label": "WP Bottom Printing Speed",
|
"label": "WP Bottom Printing Speed",
|
||||||
@ -1914,7 +1974,8 @@
|
|||||||
"max_value_warning": "50",
|
"max_value_warning": "50",
|
||||||
"visible": false,
|
"visible": false,
|
||||||
"inherit": true,
|
"inherit": true,
|
||||||
"enabled": "wireframe_enabled"
|
"enabled": "wireframe_enabled",
|
||||||
|
"global_only": "print_sequence != \"one_at_a_time\""
|
||||||
},
|
},
|
||||||
"wireframe_printspeed_up": {
|
"wireframe_printspeed_up": {
|
||||||
"label": "WP Upward Printing Speed",
|
"label": "WP Upward Printing Speed",
|
||||||
@ -1926,7 +1987,8 @@
|
|||||||
"max_value_warning": "50",
|
"max_value_warning": "50",
|
||||||
"visible": false,
|
"visible": false,
|
||||||
"inherit": true,
|
"inherit": true,
|
||||||
"enabled": "wireframe_enabled"
|
"enabled": "wireframe_enabled",
|
||||||
|
"global_only": "print_sequence != \"one_at_a_time\""
|
||||||
},
|
},
|
||||||
"wireframe_printspeed_down": {
|
"wireframe_printspeed_down": {
|
||||||
"label": "WP Downward Printing Speed",
|
"label": "WP Downward Printing Speed",
|
||||||
@ -1938,7 +2000,8 @@
|
|||||||
"max_value_warning": "50",
|
"max_value_warning": "50",
|
||||||
"visible": false,
|
"visible": false,
|
||||||
"inherit": true,
|
"inherit": true,
|
||||||
"enabled": "wireframe_enabled"
|
"enabled": "wireframe_enabled",
|
||||||
|
"global_only": "print_sequence != \"one_at_a_time\""
|
||||||
},
|
},
|
||||||
"wireframe_printspeed_flat": {
|
"wireframe_printspeed_flat": {
|
||||||
"label": "WP Horizontal Printing Speed",
|
"label": "WP Horizontal Printing Speed",
|
||||||
@ -1950,7 +2013,8 @@
|
|||||||
"max_value_warning": "100",
|
"max_value_warning": "100",
|
||||||
"visible": false,
|
"visible": false,
|
||||||
"inherit": true,
|
"inherit": true,
|
||||||
"enabled": "wireframe_enabled"
|
"enabled": "wireframe_enabled",
|
||||||
|
"global_only": "print_sequence != \"one_at_a_time\""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -1964,6 +2028,7 @@
|
|||||||
"type": "float",
|
"type": "float",
|
||||||
"visible": false,
|
"visible": false,
|
||||||
"enabled": "wireframe_enabled",
|
"enabled": "wireframe_enabled",
|
||||||
|
"global_only": "print_sequence != \"one_at_a_time\"",
|
||||||
"children": {
|
"children": {
|
||||||
"wireframe_flow_connection": {
|
"wireframe_flow_connection": {
|
||||||
"label": "WP Connection Flow",
|
"label": "WP Connection Flow",
|
||||||
@ -1974,7 +2039,8 @@
|
|||||||
"max_value_warning": "100",
|
"max_value_warning": "100",
|
||||||
"type": "float",
|
"type": "float",
|
||||||
"visible": false,
|
"visible": false,
|
||||||
"enabled": "wireframe_enabled"
|
"enabled": "wireframe_enabled",
|
||||||
|
"global_only": "print_sequence != \"one_at_a_time\""
|
||||||
},
|
},
|
||||||
"wireframe_flow_flat": {
|
"wireframe_flow_flat": {
|
||||||
"label": "WP Flat Flow",
|
"label": "WP Flat Flow",
|
||||||
@ -1985,7 +2051,8 @@
|
|||||||
"max_value_warning": "100",
|
"max_value_warning": "100",
|
||||||
"type": "float",
|
"type": "float",
|
||||||
"visible": false,
|
"visible": false,
|
||||||
"enabled": "wireframe_enabled"
|
"enabled": "wireframe_enabled",
|
||||||
|
"global_only": "print_sequence != \"one_at_a_time\""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -1998,7 +2065,8 @@
|
|||||||
"min_value": "0",
|
"min_value": "0",
|
||||||
"max_value_warning": "1",
|
"max_value_warning": "1",
|
||||||
"visible": false,
|
"visible": false,
|
||||||
"enabled": "wireframe_enabled"
|
"enabled": "wireframe_enabled",
|
||||||
|
"global_only": "print_sequence != \"one_at_a_time\""
|
||||||
},
|
},
|
||||||
"wireframe_bottom_delay": {
|
"wireframe_bottom_delay": {
|
||||||
"label": "WP Bottom Delay",
|
"label": "WP Bottom Delay",
|
||||||
@ -2009,7 +2077,8 @@
|
|||||||
"min_value": "0",
|
"min_value": "0",
|
||||||
"max_value_warning": "1",
|
"max_value_warning": "1",
|
||||||
"visible": false,
|
"visible": false,
|
||||||
"enabled": "wireframe_enabled"
|
"enabled": "wireframe_enabled",
|
||||||
|
"global_only": "print_sequence != \"one_at_a_time\""
|
||||||
},
|
},
|
||||||
"wireframe_flat_delay": {
|
"wireframe_flat_delay": {
|
||||||
"label": "WP Flat Delay",
|
"label": "WP Flat Delay",
|
||||||
@ -2020,7 +2089,8 @@
|
|||||||
"min_value": "0",
|
"min_value": "0",
|
||||||
"max_value_warning": "0.5",
|
"max_value_warning": "0.5",
|
||||||
"visible": false,
|
"visible": false,
|
||||||
"enabled": "wireframe_enabled"
|
"enabled": "wireframe_enabled",
|
||||||
|
"global_only": "print_sequence != \"one_at_a_time\""
|
||||||
},
|
},
|
||||||
"wireframe_up_half_speed": {
|
"wireframe_up_half_speed": {
|
||||||
"label": "WP Ease Upward",
|
"label": "WP Ease Upward",
|
||||||
@ -2031,7 +2101,8 @@
|
|||||||
"min_value": "0",
|
"min_value": "0",
|
||||||
"max_value_warning": "5.0",
|
"max_value_warning": "5.0",
|
||||||
"visible": false,
|
"visible": false,
|
||||||
"enabled": "wireframe_enabled"
|
"enabled": "wireframe_enabled",
|
||||||
|
"global_only": "print_sequence != \"one_at_a_time\""
|
||||||
},
|
},
|
||||||
"wireframe_top_jump": {
|
"wireframe_top_jump": {
|
||||||
"label": "WP Knot Size",
|
"label": "WP Knot Size",
|
||||||
@ -2042,7 +2113,8 @@
|
|||||||
"min_value": "0",
|
"min_value": "0",
|
||||||
"max_value_warning": "2.0",
|
"max_value_warning": "2.0",
|
||||||
"visible": false,
|
"visible": false,
|
||||||
"enabled": "wireframe_enabled"
|
"enabled": "wireframe_enabled",
|
||||||
|
"global_only": "print_sequence != \"one_at_a_time\""
|
||||||
},
|
},
|
||||||
"wireframe_fall_down": {
|
"wireframe_fall_down": {
|
||||||
"label": "WP Fall Down",
|
"label": "WP Fall Down",
|
||||||
@ -2053,7 +2125,8 @@
|
|||||||
"min_value": "0",
|
"min_value": "0",
|
||||||
"max_value_warning": "wireframe_height",
|
"max_value_warning": "wireframe_height",
|
||||||
"visible": false,
|
"visible": false,
|
||||||
"enabled": "wireframe_enabled"
|
"enabled": "wireframe_enabled",
|
||||||
|
"global_only": "print_sequence != \"one_at_a_time\""
|
||||||
},
|
},
|
||||||
"wireframe_drag_along": {
|
"wireframe_drag_along": {
|
||||||
"label": "WP Drag along",
|
"label": "WP Drag along",
|
||||||
@ -2064,7 +2137,8 @@
|
|||||||
"min_value": "0",
|
"min_value": "0",
|
||||||
"max_value_warning": "wireframe_height",
|
"max_value_warning": "wireframe_height",
|
||||||
"visible": false,
|
"visible": false,
|
||||||
"enabled": "wireframe_enabled"
|
"enabled": "wireframe_enabled",
|
||||||
|
"global_only": "print_sequence != \"one_at_a_time\""
|
||||||
},
|
},
|
||||||
"wireframe_strategy": {
|
"wireframe_strategy": {
|
||||||
"label": "WP Strategy",
|
"label": "WP Strategy",
|
||||||
@ -2077,7 +2151,8 @@
|
|||||||
},
|
},
|
||||||
"default": "compensate",
|
"default": "compensate",
|
||||||
"visible": false,
|
"visible": false,
|
||||||
"enabled": "wireframe_enabled"
|
"enabled": "wireframe_enabled",
|
||||||
|
"global_only": "print_sequence != \"one_at_a_time\""
|
||||||
},
|
},
|
||||||
"wireframe_straight_before_down": {
|
"wireframe_straight_before_down": {
|
||||||
"label": "WP Straighten Downward Lines",
|
"label": "WP Straighten Downward Lines",
|
||||||
@ -2088,7 +2163,8 @@
|
|||||||
"min_value": "0",
|
"min_value": "0",
|
||||||
"max_value": "100",
|
"max_value": "100",
|
||||||
"visible": false,
|
"visible": false,
|
||||||
"enabled": "wireframe_enabled"
|
"enabled": "wireframe_enabled",
|
||||||
|
"global_only": "print_sequence != \"one_at_a_time\""
|
||||||
},
|
},
|
||||||
"wireframe_roof_fall_down": {
|
"wireframe_roof_fall_down": {
|
||||||
"label": "WP Roof Fall Down",
|
"label": "WP Roof Fall Down",
|
||||||
@ -2099,7 +2175,8 @@
|
|||||||
"min_value_warning": "0",
|
"min_value_warning": "0",
|
||||||
"max_value_warning": "wireframe_roof_inset",
|
"max_value_warning": "wireframe_roof_inset",
|
||||||
"visible": false,
|
"visible": false,
|
||||||
"enabled": "wireframe_enabled"
|
"enabled": "wireframe_enabled",
|
||||||
|
"global_only": "print_sequence != \"one_at_a_time\""
|
||||||
},
|
},
|
||||||
"wireframe_roof_drag_along": {
|
"wireframe_roof_drag_along": {
|
||||||
"label": "WP Roof Drag Along",
|
"label": "WP Roof Drag Along",
|
||||||
@ -2110,7 +2187,8 @@
|
|||||||
"min_value": "0",
|
"min_value": "0",
|
||||||
"max_value_warning": "10",
|
"max_value_warning": "10",
|
||||||
"visible": false,
|
"visible": false,
|
||||||
"enabled": "wireframe_enabled"
|
"enabled": "wireframe_enabled",
|
||||||
|
"global_only": "print_sequence != \"one_at_a_time\""
|
||||||
},
|
},
|
||||||
"wireframe_roof_outer_delay": {
|
"wireframe_roof_outer_delay": {
|
||||||
"label": "WP Roof Outer Delay",
|
"label": "WP Roof Outer Delay",
|
||||||
@ -2121,7 +2199,8 @@
|
|||||||
"min_value": "0",
|
"min_value": "0",
|
||||||
"max_value_warning": "2.0",
|
"max_value_warning": "2.0",
|
||||||
"visible": false,
|
"visible": false,
|
||||||
"enabled": "wireframe_enabled"
|
"enabled": "wireframe_enabled",
|
||||||
|
"global_only": "print_sequence != \"one_at_a_time\""
|
||||||
},
|
},
|
||||||
"wireframe_nozzle_clearance": {
|
"wireframe_nozzle_clearance": {
|
||||||
"label": "WP Nozzle Clearance",
|
"label": "WP Nozzle Clearance",
|
||||||
@ -2132,7 +2211,8 @@
|
|||||||
"min_value_warning": "0",
|
"min_value_warning": "0",
|
||||||
"max_value_warning": "10.0",
|
"max_value_warning": "10.0",
|
||||||
"visible": false,
|
"visible": false,
|
||||||
"enabled": "wireframe_enabled"
|
"enabled": "wireframe_enabled",
|
||||||
|
"global_only": "print_sequence != \"one_at_a_time\""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
"author": "Other",
|
"author": "Other",
|
||||||
"icon": "icon_ultimaker.png",
|
"icon": "icon_ultimaker.png",
|
||||||
"platform": "grr_neo_platform.stl",
|
"platform": "grr_neo_platform.stl",
|
||||||
|
"file_formats": "text/x-gcode",
|
||||||
"inherits": "fdmprinter.json",
|
"inherits": "fdmprinter.json",
|
||||||
"visible": "true",
|
"visible": "true",
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
"manufacturer": "Other",
|
"manufacturer": "Other",
|
||||||
"icon": "icon_ultimaker.png",
|
"icon": "icon_ultimaker.png",
|
||||||
"platform": "",
|
"platform": "",
|
||||||
|
"file_formats": "application/x3g",
|
||||||
"inherits": "fdmprinter.json",
|
"inherits": "fdmprinter.json",
|
||||||
|
|
||||||
"machine_settings": {
|
"machine_settings": {
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
"author": "Other",
|
"author": "Other",
|
||||||
"icon": "icon_ultimaker2.png",
|
"icon": "icon_ultimaker2.png",
|
||||||
"platform": "makerstarter_platform.stl",
|
"platform": "makerstarter_platform.stl",
|
||||||
|
"file_formats": "text/x-gcode;application/x-stl-ascii;application/x-stl-binary;application/x-wavefront-obj",
|
||||||
"inherits": "fdmprinter.json",
|
"inherits": "fdmprinter.json",
|
||||||
|
|
||||||
"overrides": {
|
"overrides": {
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
"author": "Other",
|
"author": "Other",
|
||||||
"icon": "icon_ultimaker2.png",
|
"icon": "icon_ultimaker2.png",
|
||||||
"platform": "prusai3_platform.stl",
|
"platform": "prusai3_platform.stl",
|
||||||
|
"file_formats": "text/x-gcode",
|
||||||
"inherits": "fdmprinter.json",
|
"inherits": "fdmprinter.json",
|
||||||
|
|
||||||
"overrides": {
|
"overrides": {
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
"icon": "icon_ultimaker2.png",
|
"icon": "icon_ultimaker2.png",
|
||||||
"platform": "ultimaker2_platform.obj",
|
"platform": "ultimaker2_platform.obj",
|
||||||
"platform_texture": "Ultimaker2backplate.png",
|
"platform_texture": "Ultimaker2backplate.png",
|
||||||
|
"file_formats": "text/x-gcode",
|
||||||
|
|
||||||
"inherits": "fdmprinter.json",
|
"inherits": "fdmprinter.json",
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
"icon": "icon_ultimaker2.png",
|
"icon": "icon_ultimaker2.png",
|
||||||
"platform": "ultimaker2_platform.obj",
|
"platform": "ultimaker2_platform.obj",
|
||||||
"platform_texture": "Ultimaker2Extendedbackplate.png",
|
"platform_texture": "Ultimaker2Extendedbackplate.png",
|
||||||
|
"file_formats": "text/x-gcode",
|
||||||
"inherits": "ultimaker2.json",
|
"inherits": "ultimaker2.json",
|
||||||
|
|
||||||
"overrides": {
|
"overrides": {
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
"platform": "ultimaker2_platform.obj",
|
"platform": "ultimaker2_platform.obj",
|
||||||
"platform_texture": "ultimaker2plus_backplate.png",
|
"platform_texture": "ultimaker2plus_backplate.png",
|
||||||
"visible": false,
|
"visible": false,
|
||||||
|
"file_formats": "text/x-gcode",
|
||||||
"inherits": "ultimaker2plus.json",
|
"inherits": "ultimaker2plus.json",
|
||||||
|
|
||||||
"machine_settings": {
|
"machine_settings": {
|
||||||
|
@ -6,8 +6,10 @@
|
|||||||
"author": "Ultimaker",
|
"author": "Ultimaker",
|
||||||
"platform": "ultimaker2_platform.obj",
|
"platform": "ultimaker2_platform.obj",
|
||||||
"platform_texture": "ultimaker2plus_backplate.png",
|
"platform_texture": "ultimaker2plus_backplate.png",
|
||||||
|
"file_formats": "text/x-gcode",
|
||||||
"inherits": "ultimaker2_extended_plus.json",
|
"inherits": "ultimaker2_extended_plus.json",
|
||||||
"variant": "0.25mm Nozzle",
|
"variant": "0.25 mm",
|
||||||
|
"profiles_machine": "ultimaker2plus",
|
||||||
"machine_settings": {
|
"machine_settings": {
|
||||||
"machine_nozzle_size": { "default": 0.25 }
|
"machine_nozzle_size": { "default": 0.25 }
|
||||||
}
|
}
|
||||||
|
@ -6,8 +6,10 @@
|
|||||||
"author": "Ultimaker",
|
"author": "Ultimaker",
|
||||||
"platform": "ultimaker2_platform.obj",
|
"platform": "ultimaker2_platform.obj",
|
||||||
"platform_texture": "ultimaker2plus_backplate.png",
|
"platform_texture": "ultimaker2plus_backplate.png",
|
||||||
|
"file_formats": "text/x-gcode",
|
||||||
"inherits": "ultimaker2_extended_plus.json",
|
"inherits": "ultimaker2_extended_plus.json",
|
||||||
"variant": "0.40mm Nozzle",
|
"variant": "0.4 mm",
|
||||||
|
"profiles_machine": "ultimaker2plus",
|
||||||
"machine_settings": {
|
"machine_settings": {
|
||||||
"machine_nozzle_size": { "default": 0.40 }
|
"machine_nozzle_size": { "default": 0.40 }
|
||||||
}
|
}
|
||||||
|
@ -6,8 +6,10 @@
|
|||||||
"author": "Ultimaker",
|
"author": "Ultimaker",
|
||||||
"platform": "ultimaker2_platform.obj",
|
"platform": "ultimaker2_platform.obj",
|
||||||
"platform_texture": "ultimaker2plus_backplate.png",
|
"platform_texture": "ultimaker2plus_backplate.png",
|
||||||
|
"file_formats": "text/x-gcode",
|
||||||
"inherits": "ultimaker2_extended_plus.json",
|
"inherits": "ultimaker2_extended_plus.json",
|
||||||
"variant": "0.60mm Nozzle",
|
"variant": "0.6 mm",
|
||||||
|
"profiles_machine": "ultimaker2plus",
|
||||||
"machine_settings": {
|
"machine_settings": {
|
||||||
"machine_nozzle_size": { "default": 0.60 }
|
"machine_nozzle_size": { "default": 0.60 }
|
||||||
}
|
}
|
||||||
|
@ -6,8 +6,10 @@
|
|||||||
"author": "Ultimaker",
|
"author": "Ultimaker",
|
||||||
"platform": "ultimaker2_platform.obj",
|
"platform": "ultimaker2_platform.obj",
|
||||||
"platform_texture": "ultimaker2plus_backplate.png",
|
"platform_texture": "ultimaker2plus_backplate.png",
|
||||||
|
"file_formats": "text/x-gcode",
|
||||||
"inherits": "ultimaker2_extended_plus.json",
|
"inherits": "ultimaker2_extended_plus.json",
|
||||||
"variant": "0.80mm Nozzle",
|
"variant": "0.8 mm",
|
||||||
|
"profiles_machine": "ultimaker2plus",
|
||||||
"machine_settings": {
|
"machine_settings": {
|
||||||
"machine_nozzle_size": { "default": 0.80 }
|
"machine_nozzle_size": { "default": 0.80 }
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
"icon": "icon_ultimaker2.png",
|
"icon": "icon_ultimaker2.png",
|
||||||
"platform": "ultimaker2go_platform.obj",
|
"platform": "ultimaker2go_platform.obj",
|
||||||
"platform_texture": "Ultimaker2Gobackplate.png",
|
"platform_texture": "Ultimaker2Gobackplate.png",
|
||||||
|
"file_formats": "text/x-gcode",
|
||||||
"inherits": "ultimaker2.json",
|
"inherits": "ultimaker2.json",
|
||||||
|
|
||||||
"overrides": {
|
"overrides": {
|
||||||
|
@ -7,18 +7,15 @@
|
|||||||
"platform": "ultimaker2_platform.obj",
|
"platform": "ultimaker2_platform.obj",
|
||||||
"platform_texture": "ultimaker2plus_backplate.png",
|
"platform_texture": "ultimaker2plus_backplate.png",
|
||||||
"visible": false,
|
"visible": false,
|
||||||
|
"file_formats": "text/x-gcode",
|
||||||
"inherits": "ultimaker2.json",
|
"inherits": "ultimaker2.json",
|
||||||
|
|
||||||
"machine_settings": {
|
"overrides": {
|
||||||
"machine_width": { "default": 230 },
|
"machine_width": { "default": 230 },
|
||||||
"machine_depth": { "default": 225 },
|
"machine_depth": { "default": 225 },
|
||||||
"machine_height": { "default": 200 },
|
"machine_height": { "default": 200 },
|
||||||
"machine_show_variants": { "default": true },
|
"machine_show_variants": { "default": true },
|
||||||
"gantry_height": { "default": 50 }
|
"gantry_height": { "default": 50 },
|
||||||
},
|
|
||||||
|
|
||||||
"overrides": {
|
|
||||||
"shell_thickness": { "default": 1.2 },
|
"shell_thickness": { "default": 1.2 },
|
||||||
"top_bottom_thickness": { "inherit_function": "(parent_value / 3) * 2" },
|
"top_bottom_thickness": { "inherit_function": "(parent_value / 3) * 2" },
|
||||||
"travel_compensate_overlapping_walls_enabled": { "default": true },
|
"travel_compensate_overlapping_walls_enabled": { "default": true },
|
||||||
|
@ -6,16 +6,14 @@
|
|||||||
"author": "Ultimaker",
|
"author": "Ultimaker",
|
||||||
"platform": "ultimaker2_platform.obj",
|
"platform": "ultimaker2_platform.obj",
|
||||||
"platform_texture": "ultimaker2plus_backplate.png",
|
"platform_texture": "ultimaker2plus_backplate.png",
|
||||||
|
"file_formats": "text/x-gcode",
|
||||||
"inherits": "ultimaker2plus.json",
|
"inherits": "ultimaker2plus.json",
|
||||||
|
|
||||||
"variant": "0.25mm Nozzle",
|
"variant": "0.25 mm",
|
||||||
|
|
||||||
"machine_settings": {
|
|
||||||
"machine_nozzle_size": { "default": 0.25 }
|
|
||||||
},
|
|
||||||
|
|
||||||
"overrides": {
|
"overrides": {
|
||||||
|
"machine_nozzle_size": { "default": 0.25 },
|
||||||
|
|
||||||
"layer_height": { "default": 0.06 },
|
"layer_height": { "default": 0.06 },
|
||||||
"layer_height_0": { "default": 0.15 },
|
"layer_height_0": { "default": 0.15 },
|
||||||
|
|
||||||
|
@ -6,16 +6,14 @@
|
|||||||
"author": "Ultimaker",
|
"author": "Ultimaker",
|
||||||
"platform": "ultimaker2_platform.obj",
|
"platform": "ultimaker2_platform.obj",
|
||||||
"platform_texture": "ultimaker2plus_backplate.png",
|
"platform_texture": "ultimaker2plus_backplate.png",
|
||||||
|
"file_formats": "text/x-gcode",
|
||||||
"inherits": "ultimaker2plus.json",
|
"inherits": "ultimaker2plus.json",
|
||||||
|
|
||||||
"variant": "0.40mm Nozzle",
|
"variant": "0.4 mm",
|
||||||
|
|
||||||
"machine_settings": {
|
|
||||||
"machine_nozzle_size": { "default": 0.40 }
|
|
||||||
},
|
|
||||||
|
|
||||||
"overrides": {
|
"overrides": {
|
||||||
|
"machine_nozzle_size": { "default": 0.40 },
|
||||||
|
|
||||||
"wall_line_width_0": { "inherit_function": "parent_value * 0.875" },
|
"wall_line_width_0": { "inherit_function": "parent_value * 0.875" },
|
||||||
"skin_line_width": { "inherit_function": "parent_value * 0.875" }
|
"skin_line_width": { "inherit_function": "parent_value * 0.875" }
|
||||||
}
|
}
|
||||||
|
@ -6,16 +6,14 @@
|
|||||||
"author": "Ultimaker",
|
"author": "Ultimaker",
|
||||||
"platform": "ultimaker2_platform.obj",
|
"platform": "ultimaker2_platform.obj",
|
||||||
"platform_texture": "ultimaker2plus_backplate.png",
|
"platform_texture": "ultimaker2plus_backplate.png",
|
||||||
|
"file_formats": "text/x-gcode",
|
||||||
"inherits": "ultimaker2plus.json",
|
"inherits": "ultimaker2plus.json",
|
||||||
|
|
||||||
"variant": "0.60mm Nozzle",
|
"variant": "0.6 mm",
|
||||||
|
|
||||||
"machine_settings": {
|
|
||||||
"machine_nozzle_size": { "default": 0.60 }
|
|
||||||
},
|
|
||||||
|
|
||||||
"overrides": {
|
"overrides": {
|
||||||
|
"machine_nozzle_size": { "default": 0.60 },
|
||||||
|
|
||||||
"layer_height": { "default": 0.15 },
|
"layer_height": { "default": 0.15 },
|
||||||
"layer_height_0": { "default": 0.4 },
|
"layer_height_0": { "default": 0.4 },
|
||||||
|
|
||||||
|
@ -6,16 +6,14 @@
|
|||||||
"author": "Ultimaker",
|
"author": "Ultimaker",
|
||||||
"platform": "ultimaker2_platform.obj",
|
"platform": "ultimaker2_platform.obj",
|
||||||
"platform_texture": "ultimaker2plus_backplate.png",
|
"platform_texture": "ultimaker2plus_backplate.png",
|
||||||
|
"file_formats": "text/x-gcode",
|
||||||
"inherits": "ultimaker2plus.json",
|
"inherits": "ultimaker2plus.json",
|
||||||
|
|
||||||
"variant": "0.80mm Nozzle",
|
"variant": "0.8 mm",
|
||||||
|
|
||||||
"machine_settings": {
|
|
||||||
"machine_nozzle_size": { "default": 0.80 }
|
|
||||||
},
|
|
||||||
|
|
||||||
"overrides": {
|
"overrides": {
|
||||||
|
"machine_nozzle_size": { "default": 0.80 },
|
||||||
|
|
||||||
"layer_height": { "default": 0.2 },
|
"layer_height": { "default": 0.2 },
|
||||||
"layer_height_0": { "default": 0.5 },
|
"layer_height_0": { "default": 0.5 },
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
"author": "Ultimaker",
|
"author": "Ultimaker",
|
||||||
"icon": "icon_ultimaker.png",
|
"icon": "icon_ultimaker.png",
|
||||||
"platform": "ultimaker_platform.stl",
|
"platform": "ultimaker_platform.stl",
|
||||||
|
"file_formats": "text/x-gcode",
|
||||||
"inherits": "fdmprinter.json",
|
"inherits": "fdmprinter.json",
|
||||||
|
|
||||||
"pages": [
|
"pages": [
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
"icon": "icon_ultimaker.png",
|
"icon": "icon_ultimaker.png",
|
||||||
"platform": "ultimaker2_platform.obj",
|
"platform": "ultimaker2_platform.obj",
|
||||||
"platform_texture": "UltimakerPlusbackplate.png",
|
"platform_texture": "UltimakerPlusbackplate.png",
|
||||||
|
"file_formats": "text/x-gcode",
|
||||||
"inherits": "ultimaker_original.json",
|
"inherits": "ultimaker_original.json",
|
||||||
|
|
||||||
"pages": [
|
"pages": [
|
||||||
|
@ -1,15 +0,0 @@
|
|||||||
[general]
|
|
||||||
version = 1
|
|
||||||
name = Low Quality
|
|
||||||
|
|
||||||
[settings]
|
|
||||||
layer_height = 0.15
|
|
||||||
shell_thickness = 0.8
|
|
||||||
infill_sparse_density = 8
|
|
||||||
speed_print = 60
|
|
||||||
speed_wall_0 = 40
|
|
||||||
speed_wall_x = 50
|
|
||||||
speed_topbottom = 30
|
|
||||||
speed_travel = 150
|
|
||||||
speed_layer_0 = 30
|
|
||||||
skirt_speed = 30
|
|
@ -1,5 +0,0 @@
|
|||||||
[general]
|
|
||||||
version = 1
|
|
||||||
name = Normal Quality
|
|
||||||
|
|
||||||
[settings]
|
|
@ -1,9 +0,0 @@
|
|||||||
[general]
|
|
||||||
version = 1
|
|
||||||
name = Ulti Quality
|
|
||||||
|
|
||||||
[settings]
|
|
||||||
layer_height = 0.04
|
|
||||||
shell_thickness = 1.6
|
|
||||||
top_bottom_thickness = 0.8
|
|
||||||
infill_sparse_density = 14
|
|
@ -4,5 +4,7 @@ name = High Quality
|
|||||||
|
|
||||||
[settings]
|
[settings]
|
||||||
layer_height = 0.06
|
layer_height = 0.06
|
||||||
infill_sparse_density = 12
|
speed_wall_0 = 30
|
||||||
|
speed_topbottom = 15
|
||||||
|
speed_infill = 80
|
||||||
|
|
14
resources/profiles/general/Low+Quality.cfg
Normal file
14
resources/profiles/general/Low+Quality.cfg
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
[general]
|
||||||
|
version = 1
|
||||||
|
name = Low Quality
|
||||||
|
|
||||||
|
[settings]
|
||||||
|
infill_sparse_density = 10
|
||||||
|
layer_height = 0.15
|
||||||
|
cool_min_layer_time = 3
|
||||||
|
speed_wall_0 = 40
|
||||||
|
speed_wall_x = 80
|
||||||
|
speed_infill = 100
|
||||||
|
shell_thickness = 1
|
||||||
|
speed_topbottom = 30
|
||||||
|
|
9
resources/profiles/general/Normal+Quality.cfg
Normal file
9
resources/profiles/general/Normal+Quality.cfg
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
[general]
|
||||||
|
version = 1
|
||||||
|
name = Normal Quality
|
||||||
|
|
||||||
|
[settings]
|
||||||
|
speed_wall_0 = 30
|
||||||
|
speed_topbottom = 15
|
||||||
|
speed_infill = 80
|
||||||
|
|
10
resources/profiles/general/Ulti+Quality.cfg
Normal file
10
resources/profiles/general/Ulti+Quality.cfg
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
[general]
|
||||||
|
version = 1
|
||||||
|
name = Ulti Quality
|
||||||
|
|
||||||
|
[settings]
|
||||||
|
layer_height = 0.04
|
||||||
|
speed_wall_0 = 30
|
||||||
|
speed_topbottom = 15
|
||||||
|
speed_infill = 80
|
||||||
|
|
12
resources/profiles/materials/abs.cfg
Normal file
12
resources/profiles/materials/abs.cfg
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
[general]
|
||||||
|
version = 1
|
||||||
|
type = material
|
||||||
|
name = ABS
|
||||||
|
|
||||||
|
[settings]
|
||||||
|
material_bed_temperature = 100
|
||||||
|
platform_adhesion = Brim
|
||||||
|
material_flow = 107
|
||||||
|
material_print_temperature = 250
|
||||||
|
cool_fan_speed = 50
|
||||||
|
cool_fan_speed_max = 50
|
12
resources/profiles/materials/cpe.cfg
Normal file
12
resources/profiles/materials/cpe.cfg
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
[general]
|
||||||
|
version = 1
|
||||||
|
type = material
|
||||||
|
name = CPE
|
||||||
|
|
||||||
|
[settings]
|
||||||
|
material_bed_temperature = 60
|
||||||
|
platform_adhesion = Brim
|
||||||
|
material_flow = 100
|
||||||
|
material_print_temperature = 250
|
||||||
|
cool_fan_speed = 50
|
||||||
|
cool_fan_speed_max = 50
|
12
resources/profiles/materials/pla.cfg
Normal file
12
resources/profiles/materials/pla.cfg
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
[general]
|
||||||
|
version = 1
|
||||||
|
type = material
|
||||||
|
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
|
51
resources/profiles/ultimaker2+/abs_0.25_high.curaprofile
Normal file
51
resources/profiles/ultimaker2+/abs_0.25_high.curaprofile
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
[general]
|
||||||
|
version = 1
|
||||||
|
name = High Quality
|
||||||
|
machine_type = ultimaker2plus
|
||||||
|
machine_variant = 0.25 mm
|
||||||
|
material = ABS
|
||||||
|
|
||||||
|
[settings]
|
||||||
|
raft_surface_thickness = 0.27
|
||||||
|
raft_base_line_width = 1.0
|
||||||
|
raft_margin = 5.0
|
||||||
|
cool_min_layer_time = 2
|
||||||
|
support_enable = False
|
||||||
|
retraction_combing = All
|
||||||
|
cool_min_speed = 25
|
||||||
|
brim_line_count = 32
|
||||||
|
top_thickness = 0.72
|
||||||
|
material_flow = 100.0
|
||||||
|
cool_lift_head = True
|
||||||
|
speed_print = 20
|
||||||
|
retraction_hop = 0.0
|
||||||
|
machine_nozzle_size = 0.22
|
||||||
|
layer_height = 0.06
|
||||||
|
speed_wall_0 = 20
|
||||||
|
raft_interface_line_spacing = 3.0
|
||||||
|
speed_topbottom = 20
|
||||||
|
speed_infill = 30
|
||||||
|
infill_before_walls = False
|
||||||
|
retraction_speed = 40.0
|
||||||
|
skin_no_small_gaps_heuristic = False
|
||||||
|
infill_sparse_density = 22
|
||||||
|
shell_thickness = 0.88
|
||||||
|
cool_fan_speed_max = 100
|
||||||
|
raft_airgap = 0.0
|
||||||
|
material_bed_temperature = 70
|
||||||
|
infill_overlap = 15
|
||||||
|
speed_wall_x = 25
|
||||||
|
skirt_minimal_length = 150.0
|
||||||
|
speed_layer_0 = 20
|
||||||
|
bottom_thickness = 0.72
|
||||||
|
layer_height_0 = 0.15
|
||||||
|
magic_mesh_surface_mode = False
|
||||||
|
cool_fan_speed_min = 50
|
||||||
|
top_bottom_thickness = 0.72
|
||||||
|
skirt_gap = 3.0
|
||||||
|
raft_interface_line_width = 0.4
|
||||||
|
adhesion_type = brim
|
||||||
|
support_pattern = lines
|
||||||
|
raft_surface_line_width = 0.4
|
||||||
|
raft_surface_line_spacing = 3.0
|
||||||
|
|
51
resources/profiles/ultimaker2+/abs_0.4_fast.curaprofile
Normal file
51
resources/profiles/ultimaker2+/abs_0.4_fast.curaprofile
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
[general]
|
||||||
|
version = 1
|
||||||
|
name = Fast Prints
|
||||||
|
machine_type = ultimaker2plus
|
||||||
|
machine_variant = 0.4 mm
|
||||||
|
material = ABS
|
||||||
|
|
||||||
|
[settings]
|
||||||
|
raft_surface_thickness = 0.27
|
||||||
|
raft_base_line_width = 1.0
|
||||||
|
raft_margin = 5.0
|
||||||
|
cool_min_layer_time = 3
|
||||||
|
support_enable = False
|
||||||
|
retraction_combing = All
|
||||||
|
speed_travel = 150
|
||||||
|
cool_min_speed = 20
|
||||||
|
brim_line_count = 20
|
||||||
|
top_thickness = 0.75
|
||||||
|
material_flow = 100.0
|
||||||
|
cool_lift_head = True
|
||||||
|
speed_print = 40
|
||||||
|
retraction_hop = 0.0
|
||||||
|
machine_nozzle_size = 0.35
|
||||||
|
layer_height = 0.15
|
||||||
|
speed_wall_0 = 30
|
||||||
|
raft_interface_line_spacing = 3.0
|
||||||
|
speed_topbottom = 30
|
||||||
|
speed_infill = 55
|
||||||
|
infill_before_walls = False
|
||||||
|
retraction_speed = 40.0
|
||||||
|
skin_no_small_gaps_heuristic = False
|
||||||
|
infill_sparse_density = 18
|
||||||
|
shell_thickness = 0.7
|
||||||
|
cool_fan_speed_max = 100
|
||||||
|
raft_airgap = 0.0
|
||||||
|
material_bed_temperature = 70
|
||||||
|
infill_overlap = 15
|
||||||
|
speed_wall_x = 40
|
||||||
|
skirt_minimal_length = 150.0
|
||||||
|
bottom_thickness = 0.75
|
||||||
|
layer_height_0 = 0.26
|
||||||
|
magic_mesh_surface_mode = False
|
||||||
|
cool_fan_speed_min = 50
|
||||||
|
top_bottom_thickness = 0.75
|
||||||
|
skirt_gap = 3.0
|
||||||
|
raft_interface_line_width = 0.4
|
||||||
|
adhesion_type = brim
|
||||||
|
support_pattern = lines
|
||||||
|
raft_surface_line_width = 0.4
|
||||||
|
raft_surface_line_spacing = 3.0
|
||||||
|
|
51
resources/profiles/ultimaker2+/abs_0.4_high.curaprofile
Normal file
51
resources/profiles/ultimaker2+/abs_0.4_high.curaprofile
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
[general]
|
||||||
|
version = 1
|
||||||
|
name = High Quality
|
||||||
|
machine_type = ultimaker2plus
|
||||||
|
machine_variant = 0.4 mm
|
||||||
|
material = ABS
|
||||||
|
|
||||||
|
[settings]
|
||||||
|
raft_surface_thickness = 0.27
|
||||||
|
raft_base_line_width = 1.0
|
||||||
|
raft_margin = 5.0
|
||||||
|
cool_min_layer_time = 3
|
||||||
|
support_enable = False
|
||||||
|
retraction_combing = All
|
||||||
|
cool_min_speed = 20
|
||||||
|
brim_line_count = 20
|
||||||
|
top_thickness = 0.72
|
||||||
|
material_flow = 100.0
|
||||||
|
cool_lift_head = True
|
||||||
|
speed_print = 30
|
||||||
|
retraction_hop = 0.0
|
||||||
|
machine_nozzle_size = 0.35
|
||||||
|
layer_height = 0.06
|
||||||
|
speed_wall_0 = 20
|
||||||
|
raft_interface_line_spacing = 3.0
|
||||||
|
speed_topbottom = 20
|
||||||
|
speed_infill = 45
|
||||||
|
infill_before_walls = False
|
||||||
|
retraction_speed = 40.0
|
||||||
|
skin_no_small_gaps_heuristic = False
|
||||||
|
infill_sparse_density = 22
|
||||||
|
shell_thickness = 1.05
|
||||||
|
cool_fan_speed_max = 100
|
||||||
|
raft_airgap = 0.0
|
||||||
|
material_bed_temperature = 70
|
||||||
|
infill_overlap = 15
|
||||||
|
speed_wall_x = 30
|
||||||
|
skirt_minimal_length = 150.0
|
||||||
|
speed_layer_0 = 20
|
||||||
|
bottom_thickness = 0.72
|
||||||
|
layer_height_0 = 0.26
|
||||||
|
magic_mesh_surface_mode = False
|
||||||
|
cool_fan_speed_min = 50
|
||||||
|
top_bottom_thickness = 0.72
|
||||||
|
skirt_gap = 3.0
|
||||||
|
raft_interface_line_width = 0.4
|
||||||
|
adhesion_type = brim
|
||||||
|
support_pattern = lines
|
||||||
|
raft_surface_line_width = 0.4
|
||||||
|
raft_surface_line_spacing = 3.0
|
||||||
|
|
46
resources/profiles/ultimaker2+/abs_0.4_normal.curaprofile
Normal file
46
resources/profiles/ultimaker2+/abs_0.4_normal.curaprofile
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
[general]
|
||||||
|
version = 1
|
||||||
|
name = Normal Quality
|
||||||
|
machine_type = ultimaker2plus
|
||||||
|
machine_variant = 0.4 mm
|
||||||
|
material = ABS
|
||||||
|
|
||||||
|
[settings]
|
||||||
|
raft_surface_thickness = 0.27
|
||||||
|
raft_base_line_width = 1.0
|
||||||
|
raft_margin = 5.0
|
||||||
|
support_enable = False
|
||||||
|
retraction_combing = All
|
||||||
|
cool_min_speed = 20
|
||||||
|
brim_line_count = 20
|
||||||
|
material_flow = 100.0
|
||||||
|
cool_lift_head = True
|
||||||
|
speed_print = 30
|
||||||
|
retraction_hop = 0.0
|
||||||
|
machine_nozzle_size = 0.35
|
||||||
|
speed_wall_0 = 20
|
||||||
|
raft_interface_line_spacing = 3.0
|
||||||
|
speed_topbottom = 20
|
||||||
|
speed_infill = 45
|
||||||
|
infill_before_walls = False
|
||||||
|
retraction_speed = 40.0
|
||||||
|
skin_no_small_gaps_heuristic = False
|
||||||
|
shell_thickness = 1.05
|
||||||
|
cool_fan_speed_max = 100
|
||||||
|
raft_airgap = 0.0
|
||||||
|
material_bed_temperature = 70
|
||||||
|
infill_overlap = 15
|
||||||
|
speed_wall_x = 30
|
||||||
|
skirt_minimal_length = 150.0
|
||||||
|
speed_layer_0 = 20
|
||||||
|
layer_height_0 = 0.26
|
||||||
|
magic_mesh_surface_mode = False
|
||||||
|
cool_fan_speed_min = 50
|
||||||
|
cool_min_layer_time = 3
|
||||||
|
skirt_gap = 3.0
|
||||||
|
raft_interface_line_width = 0.4
|
||||||
|
adhesion_type = brim
|
||||||
|
support_pattern = lines
|
||||||
|
raft_surface_line_width = 0.4
|
||||||
|
raft_surface_line_spacing = 3.0
|
||||||
|
|
50
resources/profiles/ultimaker2+/abs_0.6_normal.curaprofile
Normal file
50
resources/profiles/ultimaker2+/abs_0.6_normal.curaprofile
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
[general]
|
||||||
|
version = 1
|
||||||
|
name = Normal Quality
|
||||||
|
machine_type = ultimaker2plus
|
||||||
|
machine_variant = 0.6 mm
|
||||||
|
material = ABS
|
||||||
|
|
||||||
|
[settings]
|
||||||
|
raft_surface_thickness = 0.27
|
||||||
|
raft_base_line_width = 1.0
|
||||||
|
raft_margin = 5.0
|
||||||
|
cool_min_layer_time = 3
|
||||||
|
support_enable = False
|
||||||
|
retraction_combing = All
|
||||||
|
cool_min_speed = 20
|
||||||
|
brim_line_count = 14
|
||||||
|
top_thickness = 1.2
|
||||||
|
material_flow = 100.0
|
||||||
|
cool_lift_head = True
|
||||||
|
speed_print = 25
|
||||||
|
retraction_hop = 0.0
|
||||||
|
machine_nozzle_size = 0.53
|
||||||
|
layer_height = 0.15
|
||||||
|
speed_wall_0 = 20
|
||||||
|
raft_interface_line_spacing = 3.0
|
||||||
|
speed_topbottom = 20
|
||||||
|
speed_infill = 55
|
||||||
|
infill_before_walls = False
|
||||||
|
retraction_speed = 40.0
|
||||||
|
skin_no_small_gaps_heuristic = False
|
||||||
|
shell_thickness = 1.59
|
||||||
|
cool_fan_speed_max = 100
|
||||||
|
raft_airgap = 0.0
|
||||||
|
material_bed_temperature = 70
|
||||||
|
infill_overlap = 15
|
||||||
|
speed_wall_x = 30
|
||||||
|
skirt_minimal_length = 150.0
|
||||||
|
speed_layer_0 = 20
|
||||||
|
bottom_thickness = 1.2
|
||||||
|
layer_height_0 = 0.39
|
||||||
|
magic_mesh_surface_mode = False
|
||||||
|
cool_fan_speed_min = 50
|
||||||
|
top_bottom_thickness = 1.2
|
||||||
|
skirt_gap = 3.0
|
||||||
|
raft_interface_line_width = 0.4
|
||||||
|
adhesion_type = brim
|
||||||
|
support_pattern = lines
|
||||||
|
raft_surface_line_width = 0.4
|
||||||
|
raft_surface_line_spacing = 3.0
|
||||||
|
|
50
resources/profiles/ultimaker2+/abs_0.8_fast.curaprofile
Normal file
50
resources/profiles/ultimaker2+/abs_0.8_fast.curaprofile
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
[general]
|
||||||
|
version = 1
|
||||||
|
name = Fast Prints
|
||||||
|
machine_type = ultimaker2plus
|
||||||
|
machine_variant = 0.8 mm
|
||||||
|
material = ABS
|
||||||
|
|
||||||
|
[settings]
|
||||||
|
raft_surface_thickness = 0.27
|
||||||
|
raft_base_line_width = 1.0
|
||||||
|
raft_margin = 5.0
|
||||||
|
cool_min_layer_time = 3
|
||||||
|
support_enable = False
|
||||||
|
retraction_combing = All
|
||||||
|
cool_min_speed = 15
|
||||||
|
brim_line_count = 10
|
||||||
|
top_thickness = 1.2
|
||||||
|
material_flow = 100.0
|
||||||
|
cool_lift_head = True
|
||||||
|
speed_print = 20
|
||||||
|
retraction_hop = 0.0
|
||||||
|
machine_nozzle_size = 0.7
|
||||||
|
layer_height = 0.2
|
||||||
|
speed_wall_0 = 20
|
||||||
|
raft_interface_line_spacing = 3.0
|
||||||
|
speed_topbottom = 20
|
||||||
|
speed_infill = 40
|
||||||
|
infill_before_walls = False
|
||||||
|
retraction_speed = 40.0
|
||||||
|
skin_no_small_gaps_heuristic = False
|
||||||
|
shell_thickness = 2.1
|
||||||
|
cool_fan_speed_max = 100
|
||||||
|
raft_airgap = 0.0
|
||||||
|
material_bed_temperature = 70
|
||||||
|
infill_overlap = 15
|
||||||
|
speed_wall_x = 30
|
||||||
|
skirt_minimal_length = 150.0
|
||||||
|
speed_layer_0 = 20
|
||||||
|
bottom_thickness = 1.2
|
||||||
|
layer_height_0 = 0.5
|
||||||
|
magic_mesh_surface_mode = False
|
||||||
|
cool_fan_speed_min = 50
|
||||||
|
top_bottom_thickness = 1.2
|
||||||
|
skirt_gap = 3.0
|
||||||
|
raft_interface_line_width = 0.4
|
||||||
|
adhesion_type = brim
|
||||||
|
support_pattern = lines
|
||||||
|
raft_surface_line_width = 0.4
|
||||||
|
raft_surface_line_spacing = 3.0
|
||||||
|
|
50
resources/profiles/ultimaker2+/cpe_0.25_high.curaprofile
Normal file
50
resources/profiles/ultimaker2+/cpe_0.25_high.curaprofile
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
[general]
|
||||||
|
version = 1
|
||||||
|
name = High Quality
|
||||||
|
machine_type = ultimaker2plus
|
||||||
|
machine_variant = 0.25 mm
|
||||||
|
material = CPE
|
||||||
|
|
||||||
|
[settings]
|
||||||
|
cool_fan_speed_min = 50
|
||||||
|
retraction_hop = 0.0
|
||||||
|
support_enable = False
|
||||||
|
raft_airgap = 0.0
|
||||||
|
raft_surface_thickness = 0.27
|
||||||
|
raft_interface_line_spacing = 3.0
|
||||||
|
skin_no_small_gaps_heuristic = False
|
||||||
|
bottom_thickness = 0.72
|
||||||
|
raft_surface_line_spacing = 3.0
|
||||||
|
retraction_combing = All
|
||||||
|
adhesion_type = brim
|
||||||
|
cool_min_layer_time = 2
|
||||||
|
layer_height = 0.06
|
||||||
|
raft_margin = 5.0
|
||||||
|
speed_infill = 30
|
||||||
|
speed_layer_0 = 20
|
||||||
|
brim_line_count = 32
|
||||||
|
cool_lift_head = True
|
||||||
|
retraction_speed = 40.0
|
||||||
|
cool_fan_speed_max = 100
|
||||||
|
magic_mesh_surface_mode = False
|
||||||
|
speed_print = 20
|
||||||
|
shell_thickness = 0.88
|
||||||
|
speed_wall_0 = 20
|
||||||
|
material_flow = 100.0
|
||||||
|
support_pattern = lines
|
||||||
|
infill_sparse_density = 22
|
||||||
|
raft_interface_line_width = 0.4
|
||||||
|
layer_height_0 = 0.15
|
||||||
|
material_bed_temperature = 70
|
||||||
|
top_thickness = 0.72
|
||||||
|
top_bottom_thickness = 0.72
|
||||||
|
speed_wall_x = 25
|
||||||
|
infill_overlap = 17
|
||||||
|
infill_before_walls = False
|
||||||
|
raft_surface_line_width = 0.4
|
||||||
|
skirt_minimal_length = 150.0
|
||||||
|
speed_topbottom = 20
|
||||||
|
skirt_gap = 3.0
|
||||||
|
raft_base_line_width = 1.0
|
||||||
|
machine_nozzle_size = 0.22
|
||||||
|
|
50
resources/profiles/ultimaker2+/cpe_0.4_fast.curaprofile
Normal file
50
resources/profiles/ultimaker2+/cpe_0.4_fast.curaprofile
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
[general]
|
||||||
|
version = 1
|
||||||
|
name = Fast Prints
|
||||||
|
machine_type = ultimaker2plus
|
||||||
|
machine_variant = 0.4 mm
|
||||||
|
material = CPE
|
||||||
|
|
||||||
|
[settings]
|
||||||
|
cool_fan_speed_min = 50
|
||||||
|
retraction_hop = 0.0
|
||||||
|
skin_no_small_gaps_heuristic = False
|
||||||
|
raft_airgap = 0.0
|
||||||
|
speed_travel = 150
|
||||||
|
raft_surface_thickness = 0.27
|
||||||
|
raft_interface_line_spacing = 3.0
|
||||||
|
support_enable = False
|
||||||
|
raft_surface_line_width = 0.4
|
||||||
|
raft_surface_line_spacing = 3.0
|
||||||
|
retraction_combing = All
|
||||||
|
adhesion_type = brim
|
||||||
|
cool_min_layer_time = 3
|
||||||
|
layer_height = 0.15
|
||||||
|
raft_margin = 5.0
|
||||||
|
speed_infill = 45
|
||||||
|
bottom_thickness = 0.75
|
||||||
|
brim_line_count = 20
|
||||||
|
cool_lift_head = True
|
||||||
|
retraction_speed = 40.0
|
||||||
|
cool_fan_speed_max = 100
|
||||||
|
magic_mesh_surface_mode = False
|
||||||
|
speed_print = 30
|
||||||
|
shell_thickness = 0.7
|
||||||
|
speed_wall_0 = 30
|
||||||
|
material_flow = 100.0
|
||||||
|
support_pattern = lines
|
||||||
|
infill_sparse_density = 18
|
||||||
|
raft_interface_line_width = 0.4
|
||||||
|
layer_height_0 = 0.26
|
||||||
|
material_bed_temperature = 70
|
||||||
|
top_thickness = 0.75
|
||||||
|
top_bottom_thickness = 0.75
|
||||||
|
speed_wall_x = 40
|
||||||
|
infill_overlap = 17
|
||||||
|
infill_before_walls = False
|
||||||
|
skirt_minimal_length = 150.0
|
||||||
|
speed_topbottom = 20
|
||||||
|
skirt_gap = 3.0
|
||||||
|
raft_base_line_width = 1.0
|
||||||
|
machine_nozzle_size = 0.35
|
||||||
|
|
50
resources/profiles/ultimaker2+/cpe_0.4_high.curaprofile
Normal file
50
resources/profiles/ultimaker2+/cpe_0.4_high.curaprofile
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
[general]
|
||||||
|
version = 1
|
||||||
|
name = High Quality
|
||||||
|
machine_type = ultimaker2plus
|
||||||
|
machine_variant = 0.4 mm
|
||||||
|
material = CPE
|
||||||
|
|
||||||
|
[settings]
|
||||||
|
cool_fan_speed_min = 50
|
||||||
|
retraction_hop = 0.0
|
||||||
|
support_enable = False
|
||||||
|
raft_airgap = 0.0
|
||||||
|
raft_surface_thickness = 0.27
|
||||||
|
raft_interface_line_spacing = 3.0
|
||||||
|
skin_no_small_gaps_heuristic = False
|
||||||
|
bottom_thickness = 0.72
|
||||||
|
raft_surface_line_spacing = 3.0
|
||||||
|
retraction_combing = All
|
||||||
|
adhesion_type = brim
|
||||||
|
cool_min_layer_time = 3
|
||||||
|
layer_height = 0.06
|
||||||
|
raft_margin = 5.0
|
||||||
|
speed_infill = 45
|
||||||
|
speed_layer_0 = 20
|
||||||
|
brim_line_count = 20
|
||||||
|
cool_lift_head = True
|
||||||
|
retraction_speed = 40.0
|
||||||
|
cool_fan_speed_max = 100
|
||||||
|
magic_mesh_surface_mode = False
|
||||||
|
speed_print = 20
|
||||||
|
shell_thickness = 1.05
|
||||||
|
speed_wall_0 = 20
|
||||||
|
material_flow = 100.0
|
||||||
|
support_pattern = lines
|
||||||
|
infill_sparse_density = 22
|
||||||
|
raft_interface_line_width = 0.4
|
||||||
|
layer_height_0 = 0.26
|
||||||
|
material_bed_temperature = 70
|
||||||
|
top_thickness = 0.72
|
||||||
|
top_bottom_thickness = 0.72
|
||||||
|
speed_wall_x = 30
|
||||||
|
infill_overlap = 15
|
||||||
|
infill_before_walls = False
|
||||||
|
raft_surface_line_width = 0.4
|
||||||
|
skirt_minimal_length = 150.0
|
||||||
|
speed_topbottom = 20
|
||||||
|
skirt_gap = 3.0
|
||||||
|
raft_base_line_width = 1.0
|
||||||
|
machine_nozzle_size = 0.35
|
||||||
|
|
45
resources/profiles/ultimaker2+/cpe_0.4_normal.curaprofile
Normal file
45
resources/profiles/ultimaker2+/cpe_0.4_normal.curaprofile
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
[general]
|
||||||
|
version = 1
|
||||||
|
name = Normal Quality
|
||||||
|
machine_type = ultimaker2plus
|
||||||
|
machine_variant = 0.4 mm
|
||||||
|
material = CPE
|
||||||
|
|
||||||
|
[settings]
|
||||||
|
retraction_hop = 0.0
|
||||||
|
support_enable = False
|
||||||
|
raft_airgap = 0.0
|
||||||
|
raft_surface_thickness = 0.27
|
||||||
|
support_pattern = lines
|
||||||
|
raft_interface_line_spacing = 3.0
|
||||||
|
skin_no_small_gaps_heuristic = False
|
||||||
|
raft_surface_line_width = 0.4
|
||||||
|
cool_fan_speed_min = 50
|
||||||
|
retraction_combing = All
|
||||||
|
adhesion_type = brim
|
||||||
|
cool_min_layer_time = 3
|
||||||
|
infill_before_walls = False
|
||||||
|
speed_layer_0 = 20
|
||||||
|
brim_line_count = 20
|
||||||
|
cool_lift_head = True
|
||||||
|
raft_interface_line_width = 0.4
|
||||||
|
cool_fan_speed_max = 100
|
||||||
|
magic_mesh_surface_mode = False
|
||||||
|
speed_print = 20
|
||||||
|
shell_thickness = 1.05
|
||||||
|
speed_wall_0 = 20
|
||||||
|
material_flow = 100.0
|
||||||
|
raft_surface_line_spacing = 3.0
|
||||||
|
raft_margin = 5.0
|
||||||
|
retraction_speed = 40.0
|
||||||
|
layer_height_0 = 0.26
|
||||||
|
material_bed_temperature = 70
|
||||||
|
speed_wall_x = 30
|
||||||
|
infill_overlap = 15
|
||||||
|
speed_infill = 45
|
||||||
|
skirt_minimal_length = 150.0
|
||||||
|
speed_topbottom = 20
|
||||||
|
skirt_gap = 3.0
|
||||||
|
raft_base_line_width = 1.0
|
||||||
|
machine_nozzle_size = 0.35
|
||||||
|
|
49
resources/profiles/ultimaker2+/cpe_0.6_normal.curaprofile
Normal file
49
resources/profiles/ultimaker2+/cpe_0.6_normal.curaprofile
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
[general]
|
||||||
|
version = 1
|
||||||
|
name = Normal Quality
|
||||||
|
machine_type = ultimaker2plus
|
||||||
|
machine_variant = 0.6 mm
|
||||||
|
material = CPE
|
||||||
|
|
||||||
|
[settings]
|
||||||
|
cool_fan_speed_min = 50
|
||||||
|
retraction_hop = 0.0
|
||||||
|
support_enable = False
|
||||||
|
raft_airgap = 0.0
|
||||||
|
raft_surface_thickness = 0.27
|
||||||
|
raft_interface_line_spacing = 3.0
|
||||||
|
skin_no_small_gaps_heuristic = False
|
||||||
|
bottom_thickness = 1.2
|
||||||
|
support_pattern = lines
|
||||||
|
retraction_combing = All
|
||||||
|
adhesion_type = brim
|
||||||
|
cool_min_layer_time = 3
|
||||||
|
layer_height = 0.15
|
||||||
|
speed_infill = 40
|
||||||
|
speed_layer_0 = 20
|
||||||
|
brim_line_count = 14
|
||||||
|
cool_lift_head = True
|
||||||
|
retraction_speed = 40.0
|
||||||
|
cool_fan_speed_max = 100
|
||||||
|
magic_mesh_surface_mode = False
|
||||||
|
speed_print = 20
|
||||||
|
shell_thickness = 1.59
|
||||||
|
speed_wall_0 = 20
|
||||||
|
material_flow = 100.0
|
||||||
|
raft_surface_line_spacing = 3.0
|
||||||
|
raft_margin = 5.0
|
||||||
|
raft_interface_line_width = 0.4
|
||||||
|
layer_height_0 = 0.39
|
||||||
|
material_bed_temperature = 70
|
||||||
|
top_thickness = 1.2
|
||||||
|
top_bottom_thickness = 1.2
|
||||||
|
speed_wall_x = 30
|
||||||
|
infill_overlap = 17
|
||||||
|
infill_before_walls = False
|
||||||
|
raft_surface_line_width = 0.4
|
||||||
|
skirt_minimal_length = 150.0
|
||||||
|
speed_topbottom = 20
|
||||||
|
skirt_gap = 3.0
|
||||||
|
raft_base_line_width = 1.0
|
||||||
|
machine_nozzle_size = 0.53
|
||||||
|
|
49
resources/profiles/ultimaker2+/cpe_0.8_fast.curaprofile
Normal file
49
resources/profiles/ultimaker2+/cpe_0.8_fast.curaprofile
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
[general]
|
||||||
|
version = 1
|
||||||
|
name = Fast Prints
|
||||||
|
machine_type = ultimaker2plus
|
||||||
|
machine_variant = 0.8 mm
|
||||||
|
material = CPE
|
||||||
|
|
||||||
|
[settings]
|
||||||
|
cool_fan_speed_min = 50
|
||||||
|
retraction_hop = 0.0
|
||||||
|
support_enable = False
|
||||||
|
raft_airgap = 0.0
|
||||||
|
raft_surface_thickness = 0.27
|
||||||
|
raft_interface_line_spacing = 3.0
|
||||||
|
skin_no_small_gaps_heuristic = False
|
||||||
|
bottom_thickness = 1.2
|
||||||
|
support_pattern = lines
|
||||||
|
retraction_combing = All
|
||||||
|
adhesion_type = brim
|
||||||
|
cool_min_layer_time = 3
|
||||||
|
layer_height = 0.2
|
||||||
|
speed_infill = 40
|
||||||
|
speed_layer_0 = 20
|
||||||
|
brim_line_count = 10
|
||||||
|
cool_lift_head = True
|
||||||
|
retraction_speed = 40.0
|
||||||
|
cool_fan_speed_max = 100
|
||||||
|
magic_mesh_surface_mode = False
|
||||||
|
speed_print = 20
|
||||||
|
shell_thickness = 2.1
|
||||||
|
speed_wall_0 = 20
|
||||||
|
material_flow = 100.0
|
||||||
|
raft_surface_line_spacing = 3.0
|
||||||
|
raft_margin = 5.0
|
||||||
|
raft_interface_line_width = 0.4
|
||||||
|
layer_height_0 = 0.5
|
||||||
|
material_bed_temperature = 70
|
||||||
|
top_thickness = 1.2
|
||||||
|
top_bottom_thickness = 1.2
|
||||||
|
speed_wall_x = 30
|
||||||
|
infill_overlap = 17
|
||||||
|
infill_before_walls = False
|
||||||
|
raft_surface_line_width = 0.4
|
||||||
|
skirt_minimal_length = 150.0
|
||||||
|
speed_topbottom = 20
|
||||||
|
skirt_gap = 3.0
|
||||||
|
raft_base_line_width = 1.0
|
||||||
|
machine_nozzle_size = 0.7
|
||||||
|
|
48
resources/profiles/ultimaker2+/pla_0.25_high.curaprofile
Normal file
48
resources/profiles/ultimaker2+/pla_0.25_high.curaprofile
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
[general]
|
||||||
|
version = 1
|
||||||
|
name = High Quality
|
||||||
|
machine_type = ultimaker2plus
|
||||||
|
machine_variant = 0.25 mm
|
||||||
|
material = PLA
|
||||||
|
|
||||||
|
[settings]
|
||||||
|
retraction_combing = All
|
||||||
|
top_thickness = 0.72
|
||||||
|
speed_layer_0 = 20
|
||||||
|
speed_print = 20
|
||||||
|
speed_wall_0 = 20
|
||||||
|
raft_interface_line_spacing = 3.0
|
||||||
|
shell_thickness = 0.88
|
||||||
|
infill_overlap = 15
|
||||||
|
retraction_hop = 0.0
|
||||||
|
material_bed_temperature = 70
|
||||||
|
skin_no_small_gaps_heuristic = False
|
||||||
|
retraction_speed = 40.0
|
||||||
|
raft_surface_line_width = 0.4
|
||||||
|
raft_base_line_width = 1.0
|
||||||
|
raft_margin = 5.0
|
||||||
|
adhesion_type = brim
|
||||||
|
skirt_minimal_length = 150.0
|
||||||
|
layer_height = 0.06
|
||||||
|
brim_line_count = 36
|
||||||
|
infill_before_walls = False
|
||||||
|
raft_surface_thickness = 0.27
|
||||||
|
raft_airgap = 0.0
|
||||||
|
skirt_gap = 3.0
|
||||||
|
raft_interface_line_width = 0.4
|
||||||
|
speed_topbottom = 20
|
||||||
|
support_pattern = lines
|
||||||
|
layer_height_0 = 0.15
|
||||||
|
infill_sparse_density = 22
|
||||||
|
material_flow = 100.0
|
||||||
|
cool_fan_speed_min = 100
|
||||||
|
top_bottom_thickness = 0.72
|
||||||
|
cool_fan_speed_max = 100
|
||||||
|
speed_infill = 30
|
||||||
|
magic_mesh_surface_mode = False
|
||||||
|
bottom_thickness = 0.72
|
||||||
|
speed_wall_x = 25
|
||||||
|
machine_nozzle_size = 0.22
|
||||||
|
raft_surface_line_spacing = 3.0
|
||||||
|
support_enable = False
|
||||||
|
|
47
resources/profiles/ultimaker2+/pla_0.4_fast.curaprofile
Normal file
47
resources/profiles/ultimaker2+/pla_0.4_fast.curaprofile
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
[general]
|
||||||
|
version = 1
|
||||||
|
name = Fast Prints
|
||||||
|
machine_type = ultimaker2plus
|
||||||
|
machine_variant = 0.4 mm
|
||||||
|
material = PLA
|
||||||
|
|
||||||
|
[settings]
|
||||||
|
retraction_combing = All
|
||||||
|
top_thickness = 0.75
|
||||||
|
speed_print = 40
|
||||||
|
speed_wall_0 = 40
|
||||||
|
raft_surface_line_spacing = 3.0
|
||||||
|
shell_thickness = 0.7
|
||||||
|
infill_sparse_density = 18
|
||||||
|
retraction_hop = 0.0
|
||||||
|
material_bed_temperature = 70
|
||||||
|
skin_no_small_gaps_heuristic = False
|
||||||
|
retraction_speed = 40.0
|
||||||
|
raft_surface_line_width = 0.4
|
||||||
|
raft_base_line_width = 1.0
|
||||||
|
raft_margin = 5.0
|
||||||
|
adhesion_type = brim
|
||||||
|
skirt_minimal_length = 150.0
|
||||||
|
layer_height = 0.15
|
||||||
|
brim_line_count = 22
|
||||||
|
infill_before_walls = False
|
||||||
|
raft_surface_thickness = 0.27
|
||||||
|
raft_airgap = 0.0
|
||||||
|
infill_overlap = 15
|
||||||
|
raft_interface_line_width = 0.4
|
||||||
|
speed_topbottom = 30
|
||||||
|
support_pattern = lines
|
||||||
|
layer_height_0 = 0.26
|
||||||
|
raft_interface_line_spacing = 3.0
|
||||||
|
material_flow = 100.0
|
||||||
|
cool_fan_speed_min = 100
|
||||||
|
cool_fan_speed_max = 100
|
||||||
|
speed_travel = 150
|
||||||
|
skirt_gap = 3.0
|
||||||
|
magic_mesh_surface_mode = False
|
||||||
|
bottom_thickness = 0.75
|
||||||
|
speed_wall_x = 50
|
||||||
|
machine_nozzle_size = 0.35
|
||||||
|
top_bottom_thickness = 0.75
|
||||||
|
support_enable = False
|
||||||
|
|
48
resources/profiles/ultimaker2+/pla_0.4_high.curaprofile
Normal file
48
resources/profiles/ultimaker2+/pla_0.4_high.curaprofile
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
[general]
|
||||||
|
version = 1
|
||||||
|
name = High Quality
|
||||||
|
machine_type = ultimaker2plus
|
||||||
|
machine_variant = 0.4 mm
|
||||||
|
material = PLA
|
||||||
|
|
||||||
|
[settings]
|
||||||
|
retraction_combing = All
|
||||||
|
top_thickness = 0.72
|
||||||
|
speed_layer_0 = 20
|
||||||
|
speed_print = 30
|
||||||
|
speed_wall_0 = 30
|
||||||
|
raft_interface_line_spacing = 3.0
|
||||||
|
shell_thickness = 1.05
|
||||||
|
infill_overlap = 15
|
||||||
|
retraction_hop = 0.0
|
||||||
|
material_bed_temperature = 70
|
||||||
|
skin_no_small_gaps_heuristic = False
|
||||||
|
retraction_speed = 40.0
|
||||||
|
raft_surface_line_width = 0.4
|
||||||
|
raft_base_line_width = 1.0
|
||||||
|
raft_margin = 5.0
|
||||||
|
adhesion_type = brim
|
||||||
|
skirt_minimal_length = 150.0
|
||||||
|
layer_height = 0.06
|
||||||
|
brim_line_count = 22
|
||||||
|
infill_before_walls = False
|
||||||
|
raft_surface_thickness = 0.27
|
||||||
|
raft_airgap = 0.0
|
||||||
|
skirt_gap = 3.0
|
||||||
|
raft_interface_line_width = 0.4
|
||||||
|
speed_topbottom = 20
|
||||||
|
support_pattern = lines
|
||||||
|
layer_height_0 = 0.26
|
||||||
|
infill_sparse_density = 22
|
||||||
|
material_flow = 100.0
|
||||||
|
cool_fan_speed_min = 100
|
||||||
|
top_bottom_thickness = 0.72
|
||||||
|
cool_fan_speed_max = 100
|
||||||
|
speed_infill = 50
|
||||||
|
magic_mesh_surface_mode = False
|
||||||
|
bottom_thickness = 0.72
|
||||||
|
speed_wall_x = 40
|
||||||
|
machine_nozzle_size = 0.35
|
||||||
|
raft_surface_line_spacing = 3.0
|
||||||
|
support_enable = False
|
||||||
|
|
43
resources/profiles/ultimaker2+/pla_0.4_normal.curaprofile
Normal file
43
resources/profiles/ultimaker2+/pla_0.4_normal.curaprofile
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
[general]
|
||||||
|
version = 1
|
||||||
|
name = Normal Quality
|
||||||
|
machine_type = ultimaker2plus
|
||||||
|
machine_variant = 0.4 mm
|
||||||
|
material = PLA
|
||||||
|
|
||||||
|
[settings]
|
||||||
|
retraction_combing = All
|
||||||
|
shell_thickness = 1.05
|
||||||
|
speed_print = 30
|
||||||
|
speed_wall_0 = 30
|
||||||
|
raft_interface_line_spacing = 3.0
|
||||||
|
speed_layer_0 = 20
|
||||||
|
layer_height_0 = 0.26
|
||||||
|
retraction_hop = 0.0
|
||||||
|
material_bed_temperature = 70
|
||||||
|
skirt_gap = 3.0
|
||||||
|
retraction_speed = 40.0
|
||||||
|
raft_surface_line_width = 0.4
|
||||||
|
raft_base_line_width = 1.0
|
||||||
|
raft_margin = 5.0
|
||||||
|
adhesion_type = brim
|
||||||
|
skirt_minimal_length = 150.0
|
||||||
|
brim_line_count = 22
|
||||||
|
infill_before_walls = False
|
||||||
|
raft_surface_thickness = 0.27
|
||||||
|
raft_airgap = 0.0
|
||||||
|
infill_overlap = 15
|
||||||
|
raft_interface_line_width = 0.4
|
||||||
|
speed_topbottom = 20
|
||||||
|
support_pattern = lines
|
||||||
|
speed_infill = 50
|
||||||
|
material_flow = 100.0
|
||||||
|
cool_fan_speed_min = 100
|
||||||
|
cool_fan_speed_max = 100
|
||||||
|
skin_no_small_gaps_heuristic = False
|
||||||
|
magic_mesh_surface_mode = False
|
||||||
|
speed_wall_x = 40
|
||||||
|
machine_nozzle_size = 0.35
|
||||||
|
raft_surface_line_spacing = 3.0
|
||||||
|
support_enable = False
|
||||||
|
|
47
resources/profiles/ultimaker2+/pla_0.6_normal.curaprofile
Normal file
47
resources/profiles/ultimaker2+/pla_0.6_normal.curaprofile
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
[general]
|
||||||
|
version = 1
|
||||||
|
name = Normal Quality
|
||||||
|
machine_type = ultimaker2plus
|
||||||
|
machine_variant = 0.6 mm
|
||||||
|
material = PLA
|
||||||
|
|
||||||
|
[settings]
|
||||||
|
retraction_combing = All
|
||||||
|
top_thickness = 1.2
|
||||||
|
speed_layer_0 = 20
|
||||||
|
speed_print = 25
|
||||||
|
speed_wall_0 = 25
|
||||||
|
raft_interface_line_spacing = 3.0
|
||||||
|
shell_thickness = 1.59
|
||||||
|
infill_overlap = 15
|
||||||
|
retraction_hop = 0.0
|
||||||
|
material_bed_temperature = 70
|
||||||
|
skin_no_small_gaps_heuristic = False
|
||||||
|
retraction_speed = 40.0
|
||||||
|
raft_surface_line_width = 0.4
|
||||||
|
raft_base_line_width = 1.0
|
||||||
|
raft_margin = 5.0
|
||||||
|
adhesion_type = brim
|
||||||
|
skirt_minimal_length = 150.0
|
||||||
|
layer_height = 0.15
|
||||||
|
brim_line_count = 15
|
||||||
|
infill_before_walls = False
|
||||||
|
raft_surface_thickness = 0.27
|
||||||
|
raft_airgap = 0.0
|
||||||
|
skirt_gap = 3.0
|
||||||
|
raft_interface_line_width = 0.4
|
||||||
|
speed_topbottom = 20
|
||||||
|
support_pattern = lines
|
||||||
|
layer_height_0 = 0.39
|
||||||
|
material_flow = 100.0
|
||||||
|
cool_fan_speed_min = 100
|
||||||
|
top_bottom_thickness = 1.2
|
||||||
|
cool_fan_speed_max = 100
|
||||||
|
speed_infill = 55
|
||||||
|
magic_mesh_surface_mode = False
|
||||||
|
bottom_thickness = 1.2
|
||||||
|
speed_wall_x = 40
|
||||||
|
machine_nozzle_size = 0.53
|
||||||
|
raft_surface_line_spacing = 3.0
|
||||||
|
support_enable = False
|
||||||
|
|
47
resources/profiles/ultimaker2+/pla_0.8_fast.curaprofile
Normal file
47
resources/profiles/ultimaker2+/pla_0.8_fast.curaprofile
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
[general]
|
||||||
|
version = 1
|
||||||
|
name = Fast Prints
|
||||||
|
machine_type = ultimaker2plus
|
||||||
|
machine_variant = 0.8 mm
|
||||||
|
material = PLA
|
||||||
|
|
||||||
|
[settings]
|
||||||
|
retraction_combing = All
|
||||||
|
top_thickness = 1.2
|
||||||
|
speed_layer_0 = 20
|
||||||
|
speed_print = 20
|
||||||
|
speed_wall_0 = 25
|
||||||
|
raft_interface_line_spacing = 3.0
|
||||||
|
shell_thickness = 2.1
|
||||||
|
infill_overlap = 15
|
||||||
|
retraction_hop = 0.0
|
||||||
|
material_bed_temperature = 70
|
||||||
|
skin_no_small_gaps_heuristic = False
|
||||||
|
retraction_speed = 40.0
|
||||||
|
raft_surface_line_width = 0.4
|
||||||
|
raft_base_line_width = 1.0
|
||||||
|
raft_margin = 5.0
|
||||||
|
adhesion_type = brim
|
||||||
|
skirt_minimal_length = 150.0
|
||||||
|
layer_height = 0.2
|
||||||
|
brim_line_count = 11
|
||||||
|
infill_before_walls = False
|
||||||
|
raft_surface_thickness = 0.27
|
||||||
|
raft_airgap = 0.0
|
||||||
|
skirt_gap = 3.0
|
||||||
|
raft_interface_line_width = 0.4
|
||||||
|
speed_topbottom = 20
|
||||||
|
support_pattern = lines
|
||||||
|
layer_height_0 = 0.5
|
||||||
|
material_flow = 100.0
|
||||||
|
cool_fan_speed_min = 100
|
||||||
|
top_bottom_thickness = 1.2
|
||||||
|
cool_fan_speed_max = 100
|
||||||
|
speed_infill = 40
|
||||||
|
magic_mesh_surface_mode = False
|
||||||
|
bottom_thickness = 1.2
|
||||||
|
speed_wall_x = 30
|
||||||
|
machine_nozzle_size = 0.7
|
||||||
|
raft_surface_line_spacing = 3.0
|
||||||
|
support_enable = False
|
||||||
|
|
@ -31,6 +31,7 @@ Item
|
|||||||
|
|
||||||
property alias addMachine: addMachineAction;
|
property alias addMachine: addMachineAction;
|
||||||
property alias configureMachines: settingsAction;
|
property alias configureMachines: settingsAction;
|
||||||
|
property alias addProfile: addProfileAction;
|
||||||
property alias manageProfiles: manageProfilesAction;
|
property alias manageProfiles: manageProfilesAction;
|
||||||
|
|
||||||
property alias preferences: preferencesAction;
|
property alias preferences: preferencesAction;
|
||||||
@ -95,6 +96,12 @@ Item
|
|||||||
iconName: "configure";
|
iconName: "configure";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Action
|
||||||
|
{
|
||||||
|
id: addProfileAction;
|
||||||
|
text: catalog.i18nc("@action:inmenu menubar:profile","&Add Profile...");
|
||||||
|
}
|
||||||
|
|
||||||
Action
|
Action
|
||||||
{
|
{
|
||||||
id: manageProfilesAction;
|
id: manageProfilesAction;
|
||||||
|
@ -92,7 +92,7 @@ UM.MainWindow
|
|||||||
text: catalog.i18nc("@action:inmenu menubar:file", "&Save Selection to File");
|
text: catalog.i18nc("@action:inmenu menubar:file", "&Save Selection to File");
|
||||||
enabled: UM.Selection.hasSelection;
|
enabled: UM.Selection.hasSelection;
|
||||||
iconName: "document-save-as";
|
iconName: "document-save-as";
|
||||||
onTriggered: UM.OutputDeviceManager.requestWriteSelectionToDevice("local_file", Printer.jobName);
|
onTriggered: UM.OutputDeviceManager.requestWriteSelectionToDevice("local_file", Printer.jobName, false);
|
||||||
}
|
}
|
||||||
Menu
|
Menu
|
||||||
{
|
{
|
||||||
@ -108,7 +108,7 @@ UM.MainWindow
|
|||||||
MenuItem
|
MenuItem
|
||||||
{
|
{
|
||||||
text: model.description;
|
text: model.description;
|
||||||
onTriggered: UM.OutputDeviceManager.requestWriteToDevice(model.id, Printer.jobName);
|
onTriggered: UM.OutputDeviceManager.requestWriteToDevice(model.id, Printer.jobName, false);
|
||||||
}
|
}
|
||||||
onObjectAdded: saveAllMenu.insertItem(index, object)
|
onObjectAdded: saveAllMenu.insertItem(index, object)
|
||||||
onObjectRemoved: saveAllMenu.removeItem(object)
|
onObjectRemoved: saveAllMenu.removeItem(object)
|
||||||
@ -230,6 +230,7 @@ UM.MainWindow
|
|||||||
|
|
||||||
MenuSeparator { }
|
MenuSeparator { }
|
||||||
|
|
||||||
|
MenuItem { action: actions.addProfile; }
|
||||||
MenuItem { action: actions.manageProfiles; }
|
MenuItem { action: actions.manageProfiles; }
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -461,6 +462,7 @@ UM.MainWindow
|
|||||||
|
|
||||||
addMachineAction: actions.addMachine;
|
addMachineAction: actions.addMachine;
|
||||||
configureMachinesAction: actions.configureMachines;
|
configureMachinesAction: actions.configureMachines;
|
||||||
|
addProfileAction: actions.addProfile;
|
||||||
manageProfilesAction: actions.manageProfiles;
|
manageProfilesAction: actions.manageProfiles;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -473,7 +475,7 @@ UM.MainWindow
|
|||||||
height: childrenRect.height;
|
height: childrenRect.height;
|
||||||
Label
|
Label
|
||||||
{
|
{
|
||||||
text: UM.ActiveTool.properties.Rotation != undefined ? "%1°".arg(UM.ActiveTool.properties.Rotation) : "";
|
text: UM.ActiveTool.properties.getValue("Rotation") != undefined ? "%1°".arg(UM.ActiveTool.properties.getValue("Rotation")) : "";
|
||||||
}
|
}
|
||||||
|
|
||||||
visible: UM.ActiveTool.valid && UM.ActiveTool.properties.Rotation != undefined;
|
visible: UM.ActiveTool.valid && UM.ActiveTool.properties.Rotation != undefined;
|
||||||
@ -578,6 +580,7 @@ UM.MainWindow
|
|||||||
reloadAll.onTriggered: Printer.reloadAll()
|
reloadAll.onTriggered: Printer.reloadAll()
|
||||||
|
|
||||||
addMachine.onTriggered: addMachineWizard.visible = true;
|
addMachine.onTriggered: addMachineWizard.visible = true;
|
||||||
|
addProfile.onTriggered: { UM.MachineManager.createProfile(); preferences.visible = true; preferences.setPage(4); }
|
||||||
|
|
||||||
preferences.onTriggered: { preferences.visible = true; preferences.setPage(0); }
|
preferences.onTriggered: { preferences.visible = true; preferences.setPage(0); }
|
||||||
configureMachines.onTriggered: { preferences.visible = true; preferences.setPage(3); }
|
configureMachines.onTriggered: { preferences.visible = true; preferences.setPage(3); }
|
||||||
@ -670,7 +673,6 @@ UM.MainWindow
|
|||||||
id: addMachineWizard
|
id: addMachineWizard
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
AboutDialog
|
AboutDialog
|
||||||
{
|
{
|
||||||
id: aboutDialog
|
id: aboutDialog
|
||||||
|
@ -59,16 +59,13 @@ UM.PreferencesPage
|
|||||||
id: languageList
|
id: languageList
|
||||||
|
|
||||||
Component.onCompleted: {
|
Component.onCompleted: {
|
||||||
// append({ text: catalog.i18nc("@item:inlistbox", "Bulgarian"), code: "bg" })
|
|
||||||
// append({ text: catalog.i18nc("@item:inlistbox", "Czech"), code: "cs" })
|
|
||||||
append({ text: catalog.i18nc("@item:inlistbox", "English"), code: "en" })
|
append({ text: catalog.i18nc("@item:inlistbox", "English"), code: "en" })
|
||||||
append({ text: catalog.i18nc("@item:inlistbox", "Finnish"), code: "fi" })
|
append({ text: catalog.i18nc("@item:inlistbox", "Finnish"), code: "fi" })
|
||||||
append({ text: catalog.i18nc("@item:inlistbox", "French"), code: "fr" })
|
append({ text: catalog.i18nc("@item:inlistbox", "French"), code: "fr" })
|
||||||
append({ text: catalog.i18nc("@item:inlistbox", "German"), code: "de" })
|
append({ text: catalog.i18nc("@item:inlistbox", "German"), code: "de" })
|
||||||
// append({ text: catalog.i18nc("@item:inlistbox", "Italian"), code: "it" })
|
append({ text: catalog.i18nc("@item:inlistbox", "Italian"), code: "it" })
|
||||||
append({ text: catalog.i18nc("@item:inlistbox", "Polish"), code: "pl" })
|
append({ text: catalog.i18nc("@item:inlistbox", "Dutch"), code: "nl" })
|
||||||
// append({ text: catalog.i18nc("@item:inlistbox", "Russian"), code: "ru" })
|
append({ text: catalog.i18nc("@item:inlistbox", "Spanish"), code: "es" })
|
||||||
// append({ text: catalog.i18nc("@item:inlistbox", "Spanish"), code: "es" })
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,64 +0,0 @@
|
|||||||
// Copyright (c) 2015 Ultimaker B.V.
|
|
||||||
// Cura is released under the terms of the AGPLv3 or higher.
|
|
||||||
|
|
||||||
import QtQuick 2.2
|
|
||||||
import QtQuick.Controls 1.1
|
|
||||||
import QtQuick.Window 2.1
|
|
||||||
|
|
||||||
import UM 1.1 as UM
|
|
||||||
|
|
||||||
UM.Dialog
|
|
||||||
{
|
|
||||||
id: base
|
|
||||||
|
|
||||||
//: About dialog title
|
|
||||||
title: catalog.i18nc("@title:window","Load profile")
|
|
||||||
width: 400
|
|
||||||
height: childrenRect.height
|
|
||||||
|
|
||||||
Label
|
|
||||||
{
|
|
||||||
id: body
|
|
||||||
|
|
||||||
//: About dialog application description
|
|
||||||
text: catalog.i18nc("@label","Selecting this profile overwrites some of your customised settings. Do you want to merge the new settings into your current profile or do you want to load a clean copy of the profile?")
|
|
||||||
wrapMode: Text.WordWrap
|
|
||||||
width: parent.width
|
|
||||||
anchors.top: parent.top
|
|
||||||
anchors.margins: UM.Theme.sizes.default_margin.height
|
|
||||||
|
|
||||||
UM.I18nCatalog { id: catalog; name: "cura"; }
|
|
||||||
}
|
|
||||||
|
|
||||||
Label
|
|
||||||
{
|
|
||||||
id: show_details
|
|
||||||
|
|
||||||
//: About dialog application author note
|
|
||||||
text: catalog.i18nc("@label","Show details.")
|
|
||||||
wrapMode: Text.WordWrap
|
|
||||||
anchors.top: body.bottom
|
|
||||||
anchors.topMargin: UM.Theme.sizes.default_margin.height
|
|
||||||
}
|
|
||||||
|
|
||||||
rightButtons: Row
|
|
||||||
{
|
|
||||||
spacing: UM.Theme.sizes.default_margin.width
|
|
||||||
|
|
||||||
Button
|
|
||||||
{
|
|
||||||
text: catalog.i18nc("@action:button","Merge settings");
|
|
||||||
}
|
|
||||||
Button
|
|
||||||
{
|
|
||||||
text: catalog.i18nc("@action:button","Reset profile");
|
|
||||||
}
|
|
||||||
Button
|
|
||||||
{
|
|
||||||
text: catalog.i18nc("@action:button","Cancel");
|
|
||||||
|
|
||||||
onClicked: base.visible = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user