mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-08-12 19:49:00 +08:00
Merge branch '15.06'
* 15.06: Store the disallowed areas as polygons and use those to test for intersection Account for skirt size and disallowed areas to set the scale to max size Fix the JSON file after moving the initial layer height setting Move initial layer thickness from layer height children into category Disable the low/high quality slicing and slider settings if we are not in simple mode Remove sidebar right margin Exclude ConsoleLogger and MLP* and OBJWriter plugins from the windows installer Switch to using a proper windows application Properly run the vcredist installer in quiet mode Use the application as source for the shortcut icon Bump version to 15.05.96 Properly add and set the window icon Update UMO start/end gcode to reflect what is used in Cura 15.04 Do not hide enable retraction check box even if all children are visible Update setting ranges to reflect those that are used in the current Cura lowers the printbed so the mesh and grid no longer z-fight If we skip an object because it does not have a bounding box, retrigger the change timer Restyling of the save to toolpath button
This commit is contained in:
commit
58702d0bb7
@ -42,6 +42,9 @@ class BuildVolume(SceneNode):
|
||||
def setDepth(self, depth):
|
||||
self._depth = depth
|
||||
|
||||
def getDisallowedAreas(self):
|
||||
return self._disallowed_areas
|
||||
|
||||
def setDisallowedAreas(self, areas):
|
||||
self._disallowed_areas = areas
|
||||
|
||||
@ -109,19 +112,43 @@ class BuildVolume(SceneNode):
|
||||
v = self._grid_mesh.getVertex(n)
|
||||
self._grid_mesh.setVertexUVCoordinates(n, v[0], v[2])
|
||||
|
||||
disallowed_area_size = 0
|
||||
if self._disallowed_areas:
|
||||
mb = MeshBuilder()
|
||||
for area in self._disallowed_areas:
|
||||
for polygon in self._disallowed_areas:
|
||||
points = polygon.getPoints()
|
||||
mb.addQuad(
|
||||
area[0],
|
||||
area[1],
|
||||
area[2],
|
||||
area[3],
|
||||
Vector(points[0, 0], 0.1, points[0, 1]),
|
||||
Vector(points[1, 0], 0.1, points[1, 1]),
|
||||
Vector(points[2, 0], 0.1, points[2, 1]),
|
||||
Vector(points[3, 0], 0.1, points[3, 1]),
|
||||
color = Color(174, 174, 174, 255)
|
||||
)
|
||||
# Find the largest disallowed area to exclude it from the maximum scale bounds
|
||||
size = abs(numpy.max(points[:, 1]) - numpy.min(points[:, 1]))
|
||||
disallowed_area_size = max(size, disallowed_area_size)
|
||||
|
||||
self._disallowed_area_mesh = mb.getData()
|
||||
else:
|
||||
self._disallowed_area_mesh = None
|
||||
|
||||
self._aabb = AxisAlignedBox(minimum = Vector(minW, minH - 1.0, minD), maximum = Vector(maxW, maxH, maxD))
|
||||
|
||||
settings = Application.getInstance().getActiveMachine()
|
||||
|
||||
skirt_size = 0.0
|
||||
if settings.getSettingValueByKey("adhesion_type") == "None":
|
||||
skirt_size = settings.getSettingValueByKey("skirt_line_count") * settings.getSettingValueByKey("skirt_line_width") + settings.getSettingValueByKey("skirt_gap")
|
||||
elif settings.getSettingValueByKey("adhesion_type") == "Brim":
|
||||
skirt_size = settings.getSettingValueByKey("brim_line_count") * settings.getSettingValueByKey("skirt_line_width")
|
||||
else:
|
||||
skirt_size = settings.getSettingValueByKey("skirt_line_width")
|
||||
|
||||
skirt_size += settings.getSettingValueByKey("skirt_line_width")
|
||||
|
||||
scale_to_max_bounds = AxisAlignedBox(
|
||||
minimum = Vector(minW + skirt_size, minH, minD + skirt_size + disallowed_area_size),
|
||||
maximum = Vector(maxW - skirt_size, maxH, maxD - skirt_size - disallowed_area_size)
|
||||
)
|
||||
|
||||
Application.getInstance().getController().getScene()._maximum_bounds = scale_to_max_bounds
|
||||
|
@ -18,6 +18,7 @@ from UM.Preferences import Preferences
|
||||
from UM.Message import Message
|
||||
from UM.PluginRegistry import PluginRegistry
|
||||
from UM.JobQueue import JobQueue
|
||||
from UM.Math.Polygon import Polygon
|
||||
|
||||
from UM.Scene.BoxRenderer import BoxRenderer
|
||||
from UM.Scene.Selection import Selection
|
||||
@ -36,7 +37,7 @@ from . import PrintInformation
|
||||
from . import CuraActions
|
||||
|
||||
from PyQt5.QtCore import pyqtSlot, QUrl, Qt, pyqtSignal, pyqtProperty
|
||||
from PyQt5.QtGui import QColor
|
||||
from PyQt5.QtGui import QColor, QIcon
|
||||
|
||||
import platform
|
||||
import sys
|
||||
@ -52,6 +53,8 @@ class CuraApplication(QtApplication):
|
||||
|
||||
super().__init__(name = "cura", version = "master")
|
||||
|
||||
self.setWindowIcon(QIcon(Resources.getPath(Resources.ImagesLocation, "cura-icon.png")))
|
||||
|
||||
self.setRequiredPlugins([
|
||||
"CuraEngineBackend",
|
||||
"MeshView",
|
||||
@ -464,23 +467,13 @@ class CuraApplication(QtApplication):
|
||||
disallowed_areas = machine.getSettingValueByKey("machine_disallowed_areas")
|
||||
areas = []
|
||||
if disallowed_areas:
|
||||
|
||||
for area in disallowed_areas:
|
||||
polygon = []
|
||||
polygon.append(Vector(area[0][0], 0.2, area[0][1]))
|
||||
polygon.append(Vector(area[1][0], 0.2, area[1][1]))
|
||||
polygon.append(Vector(area[2][0], 0.2, area[2][1]))
|
||||
polygon.append(Vector(area[3][0], 0.2, area[3][1]))
|
||||
areas.append(polygon)
|
||||
areas.append(Polygon(numpy.array(area, numpy.float32)))
|
||||
|
||||
self._volume.setDisallowedAreas(areas)
|
||||
|
||||
self._volume.rebuild()
|
||||
|
||||
if self.getController().getTool("ScaleTool"):
|
||||
bbox = self._volume.getBoundingBox()
|
||||
bbox.setBottom(0.0)
|
||||
self.getController().getTool("ScaleTool").setMaximumBounds(bbox)
|
||||
|
||||
offset = machine.getSettingValueByKey("machine_platform_offset")
|
||||
if offset:
|
||||
self._platform.setPosition(Vector(offset[0], offset[1], offset[2]))
|
||||
|
@ -49,6 +49,7 @@ class PlatformPhysics:
|
||||
|
||||
bbox = node.getBoundingBox()
|
||||
if not bbox or not bbox.isValid():
|
||||
self._change_timer.start()
|
||||
continue
|
||||
|
||||
# Mark the node as outside the build volume if the bounding box test fails.
|
||||
@ -93,14 +94,19 @@ class PlatformPhysics:
|
||||
move_vector.setX(overlap[0] * 1.1)
|
||||
move_vector.setZ(overlap[1] * 1.1)
|
||||
|
||||
if hasattr(node, "_convex_hull"):
|
||||
# Check for collisions between disallowed areas and the object
|
||||
for area in self._build_volume.getDisallowedAreas():
|
||||
overlap = node._convex_hull.intersectsPolygon(area)
|
||||
if overlap is None:
|
||||
continue
|
||||
|
||||
node._outside_buildarea = True
|
||||
|
||||
if move_vector != Vector():
|
||||
op = PlatformPhysicsOperation.PlatformPhysicsOperation(node, move_vector)
|
||||
op.push()
|
||||
|
||||
if node.getBoundingBox().intersectsBox(self._build_volume.getBoundingBox()) == AxisAlignedBox.IntersectionResult.FullIntersection:
|
||||
op = ScaleToBoundsOperation(node, self._build_volume.getBoundingBox())
|
||||
op.push()
|
||||
|
||||
def _onToolOperationStarted(self, tool):
|
||||
self._enabled = False
|
||||
|
||||
|
@ -38,6 +38,8 @@ class PrintInformation(QObject):
|
||||
def __init__(self, parent = None):
|
||||
super().__init__(parent)
|
||||
|
||||
self._enabled = False
|
||||
|
||||
self._minimum_print_time = Duration(None, self)
|
||||
self._current_print_time = Duration(None, self)
|
||||
self._maximum_print_time = Duration(None, self)
|
||||
@ -103,6 +105,21 @@ class PrintInformation(QObject):
|
||||
def timeQualityValue(self):
|
||||
return self._time_quality_value
|
||||
|
||||
def setEnabled(self, enabled):
|
||||
if enabled != self._enabled:
|
||||
self._enabled = enabled
|
||||
|
||||
if self._enabled:
|
||||
self._updateTimeQualitySettings()
|
||||
self._onSlicingStarted()
|
||||
|
||||
self.enabledChanged.emit()
|
||||
|
||||
enabledChanged = pyqtSignal()
|
||||
@pyqtProperty(bool, fset = setEnabled, notify = enabledChanged)
|
||||
def enabled(self):
|
||||
return self._enabled
|
||||
|
||||
@pyqtSlot(int)
|
||||
def setTimeQualityValue(self, value):
|
||||
if value != self._time_quality_value:
|
||||
@ -132,7 +149,10 @@ class PrintInformation(QObject):
|
||||
self._material_amount = round(amount / 10) / 100
|
||||
self.materialAmountChanged.emit()
|
||||
|
||||
if self._slice_reason != self.SliceReason.SettingChanged:
|
||||
if not self._enabled:
|
||||
return
|
||||
|
||||
if self._slice_reason != self.SliceReason.SettingChanged or not self._minimum_print_time.valid or not self._maximum_print_time.valid:
|
||||
self._slice_pass = self.SlicePass.LowQualitySettings
|
||||
self._backend.slice(settings = self._low_quality_settings, save_gcode = False, save_polygons = False, force_restart = False, report_progress = False)
|
||||
else:
|
||||
@ -166,7 +186,7 @@ class PrintInformation(QObject):
|
||||
self._slice_reason = self.SliceReason.ActiveMachineChanged
|
||||
|
||||
def _updateTimeQualitySettings(self):
|
||||
if not self._current_settings:
|
||||
if not self._current_settings or not self._enabled:
|
||||
return
|
||||
|
||||
if not self._low_quality_settings:
|
||||
|
@ -1,5 +1,5 @@
|
||||
!ifndef VERSION
|
||||
!define VERSION '15.05.95'
|
||||
!define VERSION '15.05.96'
|
||||
!endif
|
||||
|
||||
; The name of the installer
|
||||
@ -92,7 +92,7 @@ Section "Cura ${VERSION}"
|
||||
|
||||
CreateDirectory "$SMPROGRAMS\Cura ${VERSION}"
|
||||
CreateShortCut "$SMPROGRAMS\Cura ${VERSION}\Uninstall Cura ${VERSION}.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0
|
||||
CreateShortCut "$SMPROGRAMS\Cura ${VERSION}\Cura ${VERSION}.lnk" "$INSTDIR\Cura.exe" '' "$INSTDIR\resources\cura.ico" 0
|
||||
CreateShortCut "$SMPROGRAMS\Cura ${VERSION}\Cura ${VERSION}.lnk" "$INSTDIR\Cura.exe" '' "$INSTDIR\Cura.exe" 0
|
||||
|
||||
SectionEnd
|
||||
|
||||
@ -107,7 +107,7 @@ Section "Install Visual Studio 2010 Redistributable"
|
||||
File "vcredist_2010_20110908_x86.exe"
|
||||
|
||||
IfSilent +2
|
||||
ExecWait '"$INSTDIR\vcredist_2010_20110908_x86.exe" /silent /norestart'
|
||||
ExecWait '"$INSTDIR\vcredist_2010_20110908_x86.exe" /q /norestart'
|
||||
|
||||
SectionEnd
|
||||
|
||||
|
BIN
resources/images/cura-icon.png
Normal file
BIN
resources/images/cura-icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.1 KiB |
Binary file not shown.
@ -272,7 +272,6 @@ UM.MainWindow {
|
||||
top: parent.top;
|
||||
bottom: parent.bottom;
|
||||
right: parent.right;
|
||||
rightMargin: UM.Theme.sizes.window_margin.width;
|
||||
}
|
||||
|
||||
width: UM.Theme.sizes.panel.width;
|
||||
|
@ -8,7 +8,7 @@ import QtQuick.Layouts 1.1
|
||||
|
||||
import UM 1.0 as UM
|
||||
|
||||
Button {
|
||||
Rectangle {
|
||||
id: base;
|
||||
|
||||
property Action saveAction;
|
||||
@ -16,8 +16,6 @@ Button {
|
||||
property real progress: UM.Backend.progress;
|
||||
Behavior on progress { NumberAnimation { duration: 250; } }
|
||||
|
||||
enabled: progress >= 0.95;
|
||||
|
||||
property string currentDevice: "local_file"
|
||||
property bool defaultOverride: false;
|
||||
property bool defaultAmbiguous: false;
|
||||
@ -25,9 +23,6 @@ Button {
|
||||
property variant printDuration: PrintInformation.currentPrintTime;
|
||||
property real printMaterialAmount: PrintInformation.materialAmount;
|
||||
|
||||
iconSource: UM.Theme.icons[Printer.outputDevices[base.currentDevice].icon];
|
||||
tooltip: Printer.outputDevices[base.currentDevice].description;
|
||||
|
||||
Connections {
|
||||
target: Printer;
|
||||
onOutputDevicesChanged: {
|
||||
@ -51,120 +46,162 @@ Button {
|
||||
}
|
||||
}
|
||||
|
||||
style: ButtonStyle {
|
||||
background: UM.AngledCornerRectangle {
|
||||
implicitWidth: control.width;
|
||||
implicitHeight: control.height;
|
||||
Rectangle{
|
||||
id: background
|
||||
implicitWidth: base.width;
|
||||
implicitHeight: parent.height;
|
||||
color: UM.Theme.colors.save_button_background;
|
||||
border.width: UM.Theme.sizes.save_button_border.width
|
||||
border.color: UM.Theme.colors.save_button_border
|
||||
|
||||
color: UM.Theme.colors.save_button_border;
|
||||
cornerSize: UM.Theme.sizes.default_margin.width;
|
||||
Rectangle {
|
||||
id: infoBox
|
||||
width: parent.width - UM.Theme.sizes.default_margin.width * 2;
|
||||
height: UM.Theme.sizes.save_button_slicing_bar.height
|
||||
|
||||
UM.AngledCornerRectangle {
|
||||
anchors.fill: parent;
|
||||
anchors.margins: UM.Theme.sizes.save_button_border.width;
|
||||
cornerSize: UM.Theme.sizes.default_margin.width;
|
||||
color: UM.Theme.colors.save_button;
|
||||
}
|
||||
anchors.top: parent.top
|
||||
anchors.topMargin: UM.Theme.sizes.default_margin.height;
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: UM.Theme.sizes.default_margin.width;
|
||||
|
||||
UM.AngledCornerRectangle {
|
||||
anchors {
|
||||
left: parent.left;
|
||||
top: parent.top;
|
||||
bottom: parent.bottom;
|
||||
}
|
||||
|
||||
width: Math.max(parent.height + (parent.width - parent.height) * control.progress, parent.height);
|
||||
cornerSize: UM.Theme.sizes.default_margin.width;
|
||||
|
||||
color: !control.enabled ? UM.Theme.colors.save_button_inactive : control.hovered ? UM.Theme.colors.save_button_active_hover : UM.Theme.colors.save_button_active;
|
||||
Behavior on color { ColorAnimation { duration: 50; } }
|
||||
}
|
||||
|
||||
UM.AngledCornerRectangle {
|
||||
anchors.left: parent.left;
|
||||
width: parent.height + UM.Theme.sizes.save_button_border.width;
|
||||
height: parent.height;
|
||||
cornerSize: UM.Theme.sizes.default_margin.width;
|
||||
color: UM.Theme.colors.save_button;
|
||||
}
|
||||
|
||||
UM.AngledCornerRectangle {
|
||||
anchors.left: parent.left;
|
||||
width: parent.height + UM.Theme.sizes.save_button_border.width;
|
||||
height: parent.height;
|
||||
cornerSize: UM.Theme.sizes.default_margin.width;
|
||||
|
||||
color: UM.Theme.colors.save_button;
|
||||
}
|
||||
|
||||
UM.AngledCornerRectangle {
|
||||
id: icon;
|
||||
|
||||
anchors.left: parent.left;
|
||||
width: parent.height;
|
||||
height: parent.height;
|
||||
cornerSize: UM.Theme.sizes.default_margin.width;
|
||||
color: !control.enabled ? UM.Theme.colors.save_button_inactive : control.hovered ? UM.Theme.colors.save_button_active_hover : UM.Theme.colors.save_button_active;
|
||||
Behavior on color { ColorAnimation { duration: 50; } }
|
||||
|
||||
Image {
|
||||
anchors.centerIn: parent;
|
||||
|
||||
width: UM.Theme.sizes.button_icon.width;
|
||||
height: UM.Theme.sizes.button_icon.height;
|
||||
|
||||
sourceSize.width: width;
|
||||
sourceSize.height: height;
|
||||
|
||||
source: control.iconSource;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
label: Column {
|
||||
border.width: UM.Theme.sizes.save_button_border.width
|
||||
border.color: UM.Theme.colors.save_button_border
|
||||
color: UM.Theme.colors.save_button_estimated_text_background;
|
||||
Label {
|
||||
id: label;
|
||||
anchors.left: parent.left;
|
||||
anchors.leftMargin: control.height + UM.Theme.sizes.save_button_label_margin.width;
|
||||
|
||||
color: UM.Theme.colors.save_button_text;
|
||||
font: UM.Theme.fonts.default;
|
||||
|
||||
text: control.text;
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: UM.Theme.sizes.save_button_text_margin.width;
|
||||
visible: base.progress >= 0 && base.progress < 0.99 ? false : true
|
||||
color: UM.Theme.colors.save_button_estimated_text;
|
||||
font: UM.Theme.fonts.small;
|
||||
text:
|
||||
if(base.progress < 0) {
|
||||
//: Save button label
|
||||
return qsTr("Please load a 3D model");
|
||||
} else if (base.progress < 0.99) {
|
||||
//: Save button label
|
||||
return qsTr("Calculating Print-time");
|
||||
} else if (base.progress > 0.99){
|
||||
//: Save button label
|
||||
return qsTr("Estimated Print-time");
|
||||
} else if (base.progress == null){
|
||||
return qsTr("");
|
||||
}
|
||||
}
|
||||
Label {
|
||||
anchors.left: parent.left;
|
||||
anchors.leftMargin: control.height + UM.Theme.sizes.save_button_label_margin.width;
|
||||
|
||||
color: UM.Theme.colors.save_button_text;
|
||||
font: UM.Theme.fonts.default;
|
||||
|
||||
text: (!control.printDuration || !control.printDuration.valid) ? "" : control.printDuration.getDisplayString(UM.DurationFormat.Long)
|
||||
id: printDurationLabel
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.left: label.right;
|
||||
anchors.leftMargin: UM.Theme.sizes.save_button_text_margin.width;
|
||||
color: UM.Theme.colors.save_button_printtime_text;
|
||||
font: UM.Theme.fonts.small;
|
||||
visible: base.progress < 0.99 ? false : true
|
||||
text: (!base.printDuration || !base.printDuration.valid) ? "" : base.printDuration.getDisplayString(UM.DurationFormat.Long);
|
||||
}
|
||||
Label {
|
||||
anchors.left: parent.left;
|
||||
anchors.leftMargin: control.height + UM.Theme.sizes.save_button_label_margin.width;
|
||||
|
||||
color: UM.Theme.colors.save_button_text;
|
||||
font: UM.Theme.fonts.default;
|
||||
|
||||
id: printMaterialLabel
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.left: printDurationLabel.right;
|
||||
anchors.leftMargin: UM.Theme.sizes.save_button_text_margin.width;
|
||||
color: UM.Theme.colors.save_button_printtime_text;
|
||||
font: UM.Theme.fonts.small;
|
||||
visible: base.progress < 0.99 ? false : true
|
||||
//: Print material amount save button label
|
||||
text: control.printMaterialAmount < 0 ? "" : qsTr("%1m material").arg(control.printMaterialAmount);
|
||||
text: base.printMaterialAmount < 0 ? "" : qsTr("%1m material").arg(base.printMaterialAmount);
|
||||
}
|
||||
}
|
||||
Rectangle {
|
||||
id: infoBoxOverlay
|
||||
anchors {
|
||||
left: infoBox.left;
|
||||
top: infoBox.top;
|
||||
bottom: infoBox.bottom;
|
||||
}
|
||||
width: Math.max(infoBox.width * base.progress);
|
||||
color: UM.Theme.colors.save_button_active
|
||||
visible: base.progress > 0.99 ? false : true
|
||||
}
|
||||
|
||||
Button {
|
||||
id: saveToButton
|
||||
anchors.top: infoBox.bottom
|
||||
anchors.topMargin: UM.Theme.sizes.save_button_text_margin.height;
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: UM.Theme.sizes.default_margin.width;
|
||||
tooltip: ''
|
||||
enabled: progress >= 0.99;
|
||||
|
||||
width: infoBox.width/6*4.5
|
||||
height: UM.Theme.sizes.save_button_save_to_button.height
|
||||
style: ButtonStyle {
|
||||
background: Rectangle {
|
||||
color: !control.enabled ? UM.Theme.colors.save_button_inactive : control.hovered ? UM.Theme.colors.save_button_active_hover : UM.Theme.colors.save_button_active;
|
||||
Label {
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
color: UM.Theme.colors.save_button_safe_to_text;
|
||||
font: UM.Theme.fonts.sidebar_save_to;
|
||||
text: Printer.outputDevices[base.currentDevice].description;
|
||||
}
|
||||
}
|
||||
}
|
||||
onClicked:
|
||||
if(base.defaultAmbiguous) {
|
||||
devicesMenu.popup();
|
||||
} else {
|
||||
Printer.writeToOutputDevice(base.currentDevice);
|
||||
}
|
||||
}
|
||||
|
||||
Button {
|
||||
id: deviceSelectionMenu;
|
||||
anchors.top: infoBox.bottom
|
||||
anchors.topMargin: UM.Theme.sizes.save_button_text_margin.height
|
||||
anchors.right: parent.right
|
||||
anchors.rightMargin: UM.Theme.sizes.default_margin.width;
|
||||
tooltip: ''
|
||||
|
||||
width: infoBox.width/6*1.3 - UM.Theme.sizes.save_button_text_margin.height;
|
||||
height: UM.Theme.sizes.save_button_save_to_button.height
|
||||
|
||||
style: ButtonStyle {
|
||||
background: Rectangle {
|
||||
color: UM.Theme.colors.save_button_background;
|
||||
border.width: control.hovered ? UM.Theme.sizes.save_button_border.width : 0
|
||||
border.color: UM.Theme.colors.save_button_border
|
||||
Rectangle {
|
||||
id: deviceSelectionIcon
|
||||
color: UM.Theme.colors.save_button_background;
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: UM.Theme.sizes.save_button_text_margin.width / 2;
|
||||
anchors.verticalCenter: parent.verticalCenter;
|
||||
width: parent.height - UM.Theme.sizes.save_button_text_margin.width ;
|
||||
height: parent.height - UM.Theme.sizes.save_button_text_margin.width;
|
||||
UM.RecolorImage {
|
||||
anchors.centerIn: parent;
|
||||
width: parent.width;
|
||||
height: parent.height;
|
||||
sourceSize.width: width;
|
||||
sourceSize.height: height;
|
||||
color: UM.Theme.colors.save_button_active
|
||||
source: UM.Theme.icons[Printer.outputDevices[base.currentDevice].icon];
|
||||
}
|
||||
}
|
||||
Label {
|
||||
id: deviceSelectionArrow
|
||||
anchors.right: parent.right;
|
||||
anchors.rightMargin: UM.Theme.sizes.save_button_text_margin.height
|
||||
anchors.verticalCenter: parent.verticalCenter;
|
||||
text: "▼";
|
||||
font: UM.Theme.fonts.tiny;
|
||||
color: UM.Theme.colors.save_button_active;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent;
|
||||
|
||||
acceptedButtons: Qt.RightButton;
|
||||
|
||||
onClicked: devicesMenu.popup();
|
||||
}
|
||||
|
||||
Menu {
|
||||
menu: Menu {
|
||||
id: devicesMenu;
|
||||
|
||||
Instantiator {
|
||||
model: Printer.outputDeviceNames;
|
||||
MenuItem {
|
||||
@ -184,28 +221,8 @@ Button {
|
||||
onObjectAdded: devicesMenu.insertItem(index, object)
|
||||
onObjectRemoved: devicesMenu.removeItem(object)
|
||||
}
|
||||
|
||||
ExclusiveGroup { id: devicesMenuGroup; }
|
||||
}
|
||||
|
||||
text: {
|
||||
if(base.progress < 0) {
|
||||
//: Save button label
|
||||
return qsTr("Please load a 3D model");
|
||||
} else if (base.progress < 0.95) {
|
||||
//: Save button label
|
||||
return qsTr("Calculating Print-time");
|
||||
} else {
|
||||
//: Save button label
|
||||
return qsTr("Estimated Print-time");
|
||||
}
|
||||
}
|
||||
|
||||
onClicked: {
|
||||
if(base.defaultAmbiguous) {
|
||||
devicesMenu.popup();
|
||||
} else {
|
||||
Printer.writeToOutputDevice(base.currentDevice);
|
||||
}
|
||||
}
|
||||
}
|
@ -8,15 +8,13 @@ import QtQuick.Layouts 1.1
|
||||
|
||||
import UM 1.0 as UM
|
||||
|
||||
UM.AngledCornerRectangle {
|
||||
Rectangle {
|
||||
id: base;
|
||||
|
||||
property Action addMachineAction;
|
||||
property Action configureMachinesAction;
|
||||
property alias saveAction: saveButton.saveAction;
|
||||
|
||||
cornerSize: UM.Theme.sizes.default_margin.width;
|
||||
|
||||
color: UM.Theme.colors.sidebar;
|
||||
|
||||
function showTooltip(item, position, text) {
|
||||
@ -41,7 +39,6 @@ UM.AngledCornerRectangle {
|
||||
ColumnLayout {
|
||||
anchors.fill: parent;
|
||||
anchors.topMargin: UM.Theme.sizes.default_margin.height;
|
||||
anchors.bottomMargin: UM.Theme.sizes.window_margin.height;
|
||||
|
||||
spacing: UM.Theme.sizes.default_margin.height;
|
||||
|
||||
@ -93,11 +90,9 @@ UM.AngledCornerRectangle {
|
||||
|
||||
SaveButton {
|
||||
id: saveButton;
|
||||
Layout.preferredWidth: base.width - UM.Theme.sizes.default_margin.width * 2;
|
||||
Layout.preferredHeight: UM.Theme.sizes.button.height;
|
||||
Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter;
|
||||
implicitWidth: base.width
|
||||
implicitHeight: UM.Theme.sizes.save_button_text_margin.height * 2 + UM.Theme.sizes.save_button_slicing_bar.height + UM.Theme.sizes.save_button_save_to_button.height + UM.Theme.sizes.default_margin.height
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
SidebarTooltip {
|
||||
|
@ -20,6 +20,9 @@ Item {
|
||||
property variant minimumPrintTime: PrintInformation.minimumPrintTime;
|
||||
property variant maximumPrintTime: PrintInformation.maximumPrintTime;
|
||||
|
||||
Component.onCompleted: PrintInformation.enabled = true
|
||||
Component.onDestruction: PrintInformation.enabled = false
|
||||
|
||||
ColumnLayout {
|
||||
anchors.fill: parent;
|
||||
|
||||
|
@ -41,25 +41,22 @@
|
||||
"unit": "mm",
|
||||
"type": "float",
|
||||
"default": 0.1,
|
||||
"min_value": 0.00001,
|
||||
"min_value": 0.0001,
|
||||
"min_value_warning": 0.04,
|
||||
"max_value_warning": 2.0,
|
||||
"always_visible": true,
|
||||
"children": {
|
||||
"max_value_warning": 0.32
|
||||
},
|
||||
"layer_height_0": {
|
||||
"label": "Initial Layer Height",
|
||||
"description": "The layer height of the bottom layer. A thicker bottom layer makes for better bed adhesion.",
|
||||
"label": "Initial Layer Thickness",
|
||||
"description": "The layer thickness of the bottom layer. A thicker bottom layer makes sticking to the bed easier.",
|
||||
"unit": "mm",
|
||||
"type": "float",
|
||||
"default": 0.3,
|
||||
"min_value": 0.0,
|
||||
"min_value": 0.0001,
|
||||
"min_value_warning": 0.04,
|
||||
"max_value_warning": 2.0,
|
||||
"max_value_warning": 0.32,
|
||||
"visible": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"shell": {
|
||||
"label": "Shell",
|
||||
@ -73,7 +70,8 @@
|
||||
"type": "float",
|
||||
"default": 0.8,
|
||||
"min_value": 0.0,
|
||||
"max_value": 5.0,
|
||||
"min_value_warning": 0.2,
|
||||
"max_value_warning": 5.0,
|
||||
"children": {
|
||||
"wall_thickness": {
|
||||
"label": "Wall Thickness",
|
||||
@ -81,9 +79,8 @@
|
||||
"unit": "mm",
|
||||
"default": 0.8,
|
||||
"min_value": 0.0,
|
||||
"max_value": 5.0,
|
||||
"min_value_warning": 0.4,
|
||||
"max_value_warning": 2.0,
|
||||
"min_value_warning": 0.2,
|
||||
"max_value_warning": 5.0,
|
||||
"type": "float",
|
||||
"visible": false,
|
||||
|
||||
@ -91,6 +88,7 @@
|
||||
"wall_line_count": {
|
||||
"label": "Wall Line Count",
|
||||
"description": "Number of shell lines. This these lines are called perimeter lines in other tools and impact the strength and structural integrity of your print.",
|
||||
"min_value": 0,
|
||||
"default": 2,
|
||||
"type": "int",
|
||||
"visible": false,
|
||||
@ -100,6 +98,9 @@
|
||||
"label": "Wall Line Width",
|
||||
"description": "Width of a single shell line. Each line of the shell will be printed with this width in mind.",
|
||||
"unit": "mm",
|
||||
"min_value": 0.0,
|
||||
"min_value_warning": 0.2,
|
||||
"max_value_warning": 5.0,
|
||||
"default": 0.4,
|
||||
"type": "float",
|
||||
"visible": false,
|
||||
@ -110,6 +111,9 @@
|
||||
"label": "Outer Wall Line Width",
|
||||
"description": "Width of the outermost shell line. By printing a thinner outermost wall line you can print higher details with a larger nozzle.",
|
||||
"unit": "mm",
|
||||
"min_value": 0.0,
|
||||
"min_value_warning": 0.2,
|
||||
"max_value_warning": 5.0,
|
||||
"default": 0.4,
|
||||
"type": "float",
|
||||
"visible": false
|
||||
@ -118,6 +122,9 @@
|
||||
"label": "Other Walls Line Width",
|
||||
"description": "Width of a single shell line for all shell lines except the outermost one.",
|
||||
"unit": "mm",
|
||||
"min_value": 0.0,
|
||||
"min_value_warning": 0.2,
|
||||
"max_value_warning": 5.0,
|
||||
"default": 0.4,
|
||||
"type": "float",
|
||||
"visible": false
|
||||
@ -126,6 +133,9 @@
|
||||
"label": "Skirt line width",
|
||||
"description": "Width of a single skirt line.",
|
||||
"unit": "mm",
|
||||
"min_value": 0.0,
|
||||
"min_value_warning": 0.2,
|
||||
"max_value_warning": 5.0,
|
||||
"default": 0.4,
|
||||
"type": "float",
|
||||
"visible": false
|
||||
@ -134,6 +144,9 @@
|
||||
"label": "Top/bottom line width",
|
||||
"description": "Width of a single top/bottom printed line, used to fill up the top/bottom areas of a print.",
|
||||
"unit": "mm",
|
||||
"min_value": 0.0,
|
||||
"min_value_warning": 0.2,
|
||||
"max_value_warning": 5.0,
|
||||
"default": 0.4,
|
||||
"type": "float",
|
||||
"visible": false
|
||||
@ -142,6 +155,9 @@
|
||||
"label": "Infill line width",
|
||||
"description": "Width of the inner infill printed lines.",
|
||||
"unit": "mm",
|
||||
"min_value": 0.0,
|
||||
"min_value_warning": 0.2,
|
||||
"max_value_warning": 5.0,
|
||||
"default": 0.4,
|
||||
"type": "float",
|
||||
"visible": false
|
||||
@ -150,6 +166,9 @@
|
||||
"label": "Support line width",
|
||||
"description": "Width of the printed support structures lines.",
|
||||
"unit": "mm",
|
||||
"min_value": 0.0,
|
||||
"min_value_warning": 0.2,
|
||||
"max_value_warning": 5.0,
|
||||
"default": 0.4,
|
||||
"type": "float",
|
||||
"visible": false,
|
||||
@ -198,6 +217,7 @@
|
||||
"label": "Top Thickness",
|
||||
"description": "This controls the thickness of the top layers. The number of solid layers printed is calculated from the layer thickness and this value. Having this value be a multiple of the layer thickness makes sense. And keep it nearto your wall thickness to make an evenly strong part.",
|
||||
"unit": "mm",
|
||||
"min_value": 0.0,
|
||||
"default": 0.8,
|
||||
"type": "float",
|
||||
"visible": false,
|
||||
@ -206,6 +226,7 @@
|
||||
"top_layers": {
|
||||
"label": "Top Layers",
|
||||
"description": "This controls the amount of top layers.",
|
||||
"min_value": 0,
|
||||
"default": 8,
|
||||
"type": "int",
|
||||
"visible": false,
|
||||
@ -217,6 +238,7 @@
|
||||
"label": "Bottom Thickness",
|
||||
"description": "This controls the thickness of the bottom layers. The number of solid layers printed is calculated from the layer thickness and this value. Having this value be a multiple of the layer thickness makes sense. And keep it near to your wall thickness to make an evenly strong part.",
|
||||
"unit": "mm",
|
||||
"min_value": 0.0,
|
||||
"default": 0.8,
|
||||
"type": "float",
|
||||
"visible": false,
|
||||
@ -225,6 +247,7 @@
|
||||
"bottom_layers": {
|
||||
"label": "Bottom Layers",
|
||||
"description": "This controls the amount of bottom layers.",
|
||||
"min_value": 0,
|
||||
"default": 8,
|
||||
"type": "int",
|
||||
"visible": false,
|
||||
@ -393,18 +416,18 @@
|
||||
"description": "The temperature used for printing. Set at 0 to pre-heat yourself. For PLA a value of 210C is usually used.\nFor ABS a value of 230C or higher is required.",
|
||||
"unit": "°C",
|
||||
"type": "float",
|
||||
"default": 220,
|
||||
"min_value": 10,
|
||||
"max_value": 340
|
||||
"default": 210,
|
||||
"min_value": 0,
|
||||
"max_value_warning": 260
|
||||
},
|
||||
"material_bed_temperature": {
|
||||
"label": "Bed Temperature",
|
||||
"description": "The temperature used for the heated printer bed. Set at 0 to pre-heat it yourself.",
|
||||
"unit": "°C",
|
||||
"type": "float",
|
||||
"default": 70,
|
||||
"default": 60,
|
||||
"min_value": 0,
|
||||
"max_value": 340
|
||||
"max_value_warning": 260
|
||||
},
|
||||
"material_diameter": {
|
||||
"label": "Diameter",
|
||||
@ -412,8 +435,8 @@
|
||||
"unit": "mm",
|
||||
"type": "float",
|
||||
"default": 2.85,
|
||||
"min_value": 0.4,
|
||||
"max_value": 5.0
|
||||
"min_value_warning": 0.4,
|
||||
"max_value_warning": 3.5
|
||||
},
|
||||
"material_flow": {
|
||||
"label": "Flow",
|
||||
@ -422,7 +445,8 @@
|
||||
"default": 100.0,
|
||||
"type": "float",
|
||||
"min_value": 5.0,
|
||||
"max_value": 300.0
|
||||
"min_value_warning": 50.0,
|
||||
"max_value_warning": 150.0
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -436,6 +460,8 @@
|
||||
"description": "The speed at which printing happens. A well-adjusted Ultimaker can reach 150mm/s, but for good quality prints you will want to print slower. Printing speed depends on a lot of factors, so you will need to experiment with optimal settings for this.",
|
||||
"unit": "mm/s",
|
||||
"type": "float",
|
||||
"min_value": 0.1,
|
||||
"max_value_warning": 150.0,
|
||||
"default": 50.0,
|
||||
|
||||
"children": {
|
||||
@ -444,6 +470,8 @@
|
||||
"description": "The speed at which infill parts are printed. Printing the infill faster can greatly reduce printing time, but this can negatively affect print quality.",
|
||||
"unit": "mm/s",
|
||||
"type": "float",
|
||||
"min_value": 0.1,
|
||||
"max_value_warning": 150.0,
|
||||
"default": 50.0,
|
||||
"visible": false
|
||||
},
|
||||
@ -452,6 +480,8 @@
|
||||
"description": "The speed at which shell is printed. Printing the outer shell at a lower speed improves the final skin quality.",
|
||||
"unit": "mm/s",
|
||||
"type": "float",
|
||||
"min_value": 0.1,
|
||||
"max_value_warning": 150.0,
|
||||
"default": 50.0,
|
||||
"visible": false,
|
||||
|
||||
@ -461,6 +491,8 @@
|
||||
"description": "The speed at which outer shell is printed. Printing the outer shell at a lower speed improves the final skin quality. However, having a large difference between the inner shell speed and the outer shell speed will effect quality in a negative way.",
|
||||
"unit": "mm/s",
|
||||
"type": "float",
|
||||
"min_value": 0.1,
|
||||
"max_value_warning": 150.0,
|
||||
"default": 50.0,
|
||||
"visible": false
|
||||
},
|
||||
@ -469,6 +501,8 @@
|
||||
"description": "The speed at which all inner shells are printed. Printing the inner shell fasster than the outer shell will reduce printing time. It is good to set this in between the outer shell speed and the infill speed.",
|
||||
"unit": "mm/s",
|
||||
"type": "float",
|
||||
"min_value": 0.1,
|
||||
"max_value_warning": 150.0,
|
||||
"default": 50.0,
|
||||
"visible": false
|
||||
}
|
||||
@ -479,6 +513,8 @@
|
||||
"description": "Speed at which top/bottom parts are printed. Printing the top/bottom faster can greatly reduce printing time, but this can negatively affect print quality.",
|
||||
"unit": "mm/s",
|
||||
"type": "float",
|
||||
"min_value": 0.1,
|
||||
"max_value_warning": 150.0,
|
||||
"default": 50.0,
|
||||
"visible": false
|
||||
},
|
||||
@ -487,6 +523,8 @@
|
||||
"description": "The speed at which exterior support is printed. Printing exterior supports at higher speeds can greatly improve printing time. And the surface quality of exterior support is usually not important, so higher speeds can be used.",
|
||||
"unit": "mm/s",
|
||||
"type": "float",
|
||||
"min_value": 0.1,
|
||||
"max_value_warning": 150.0,
|
||||
"default": 50.0,
|
||||
"visible": false,
|
||||
"inherit_function": "speed_wall_0",
|
||||
@ -530,6 +568,8 @@
|
||||
"description": "The speed at which travel moves are done. A well-built Ultimaker can reach speeds of 250mm/s. But some machines might have misaligned layers then.",
|
||||
"unit": "mm/s",
|
||||
"type": "float",
|
||||
"min_value": 0.1,
|
||||
"max_value_warning": 300.0,
|
||||
"default": 150.0
|
||||
},
|
||||
"speed_layer_0": {
|
||||
@ -537,6 +577,7 @@
|
||||
"description": "The print speed for the bottom layer: You want to print the first layer slower so it sticks to the printer bed better.",
|
||||
"unit": "mm/s",
|
||||
"type": "float",
|
||||
"min_value": 0.1,
|
||||
"default": 15.0,
|
||||
"visible": false,
|
||||
|
||||
@ -546,6 +587,7 @@
|
||||
"description": "The speed at which the skirt and brim are printed. Normally this is done at the initial layer speed. But sometimes you want to print the skirt at a different speed.",
|
||||
"unit": "mm/s",
|
||||
"type": "float",
|
||||
"min_value": 0.1,
|
||||
"default": 15.0,
|
||||
"visible": false
|
||||
}
|
||||
@ -555,6 +597,7 @@
|
||||
"label": "Amount of Slower Layers",
|
||||
"description": "The first few layers are printed slower then the rest of the object, this to get better adhesion to the printer bed and improve the overall success rate of prints. The speed is gradually increased over these layers. 4 layers of speed-up is generally right for most materials and printers.",
|
||||
"type": "int",
|
||||
"min_value": 0,
|
||||
"default": 4,
|
||||
"visible": false
|
||||
}
|
||||
@ -856,6 +899,8 @@
|
||||
"description": "Fan speed used for the print cooling fan on the printer head.",
|
||||
"unit": "%",
|
||||
"type": "float",
|
||||
"min_value": 0.0,
|
||||
"max_value": 100.0,
|
||||
"default": 100.0,
|
||||
"visible": false,
|
||||
"inherit_function": "100.0 if parent_value else 0.0",
|
||||
@ -866,6 +911,8 @@
|
||||
"description": "Normally the fan runs at the minimum fan speed. If the layer is slowed down due to minimum layer time, the fan speed adjusts between minimum and maximum fan speed.",
|
||||
"unit": "%",
|
||||
"type": "float",
|
||||
"min_value": 0.0,
|
||||
"max_value": 100.0,
|
||||
"default": 100.0,
|
||||
"visible": false
|
||||
},
|
||||
@ -874,6 +921,8 @@
|
||||
"description": "Normally the fan runs at the minimum fan speed. If the layer is slowed down due to minimum layer time, the fan speed adjusts between minimum and maximum fan speed.",
|
||||
"unit": "%",
|
||||
"type": "float",
|
||||
"min_value": 0.0,
|
||||
"max_value": 100.0,
|
||||
"default": 100.0,
|
||||
"visible": false
|
||||
}
|
||||
@ -886,6 +935,7 @@
|
||||
"description": "The height at which the fan is turned on completely. For the layers below this the fan speed is scaled linearly with the fan off for the first layer.",
|
||||
"unit": "mm",
|
||||
"type": "float",
|
||||
"min_value": 0.0,
|
||||
"default": 0.5,
|
||||
"visible": false,
|
||||
|
||||
@ -894,6 +944,7 @@
|
||||
"label": "Fan Full on at Layer",
|
||||
"description": "The layer number at which the fan is turned on completely. For the layers below this the fan speed is scaled linearly with the fan off for the first layer.",
|
||||
"type": "int",
|
||||
"min_value": 0,
|
||||
"default": 4,
|
||||
"visible": false,
|
||||
"inherit_function": "int((parent_value - layer_height_0 + 0.001) / layer_height)"
|
||||
@ -905,6 +956,7 @@
|
||||
"description": "The minimum time spent in a layer: Gives the layer time to cool down before the next one is put on top. If a layer would print in less time, then the printer will slow down to make sure it has spent at least this many seconds printing the layer.",
|
||||
"unit": "sec",
|
||||
"type": "float",
|
||||
"min_value": 0.0,
|
||||
"default": 5.0,
|
||||
"visible": false
|
||||
},
|
||||
@ -913,6 +965,7 @@
|
||||
"description": "The minimum time spent in a layer which will cause the fan to be at minmum speed. The fan speed increases linearly from maximal fan speed for layers taking minimal layer time to minimal fan speed for layers taking the time specified here.",
|
||||
"unit": "sec",
|
||||
"type": "float",
|
||||
"min_value": 0.0,
|
||||
"default": 10.0,
|
||||
"visible": false
|
||||
},
|
||||
@ -1123,6 +1176,8 @@
|
||||
"description": "The maximum angle of overhangs for which support will be added. With 0 degrees being vertical, and 90 degrees being horizontal. A smaller overhang angle leads to more support.",
|
||||
"unit": "°",
|
||||
"type": "float",
|
||||
"min_value": 0.0,
|
||||
"max_value": 90.0,
|
||||
"default": 60.0,
|
||||
"visible": false,
|
||||
"active_if": {
|
||||
@ -1135,6 +1190,8 @@
|
||||
"description": "Distance of the support structure from the print, in the X/Y directions. 0.7mm typically gives a nice distance from the print so the support does not stick to the surface.",
|
||||
"unit": "mm",
|
||||
"type": "float",
|
||||
"min_value": 0.0,
|
||||
"max_value_warning": 10.0,
|
||||
"default": 0.7,
|
||||
"visible": false,
|
||||
"active_if": {
|
||||
@ -1147,6 +1204,8 @@
|
||||
"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",
|
||||
"type": "float",
|
||||
"min_value": 0.0,
|
||||
"max_value_warning": 10.0,
|
||||
"default": 0.15,
|
||||
"visible": false,
|
||||
"active_if": {
|
||||
@ -1158,6 +1217,8 @@
|
||||
"label": "Top Distance",
|
||||
"description": "Distance from the top of the support to the print.",
|
||||
"unit": "mm",
|
||||
"min_value": 0.0,
|
||||
"max_value_warning": 10.0,
|
||||
"default": 0.15,
|
||||
"type": "float",
|
||||
"visible": false
|
||||
@ -1166,6 +1227,8 @@
|
||||
"label": "Bottom Distance",
|
||||
"description": "Distance from the print to the bottom of the support.",
|
||||
"unit": "mm",
|
||||
"min_value": 0.0,
|
||||
"max_value_warning": 10.0,
|
||||
"default": 0.15,
|
||||
"type": "float",
|
||||
"visible": false
|
||||
@ -1255,6 +1318,8 @@
|
||||
"description": "The angle of the rooftop of a tower. Larger angles mean more pointy towers. ",
|
||||
"unit": "°",
|
||||
"type": "int",
|
||||
"min_value": 0,
|
||||
"max_value": 90,
|
||||
"default": 65,
|
||||
"visible": false,
|
||||
"active_if": {
|
||||
@ -1294,6 +1359,8 @@
|
||||
"description": "The amount of infill structure in the support, less infill gives weaker support which is easier to remove.",
|
||||
"unit": "%",
|
||||
"type": "float",
|
||||
"min_value": 0.0,
|
||||
"max_value": 100.0,
|
||||
"default": 15,
|
||||
"visible": false,
|
||||
"active_if": {
|
||||
@ -1306,6 +1373,7 @@
|
||||
"description": "Distance between the printed support lines.",
|
||||
"unit": "mm",
|
||||
"type": "float",
|
||||
"min_value": 0.0,
|
||||
"default": 2.66,
|
||||
"visible": false,
|
||||
"active_if": {
|
||||
|
@ -19,7 +19,14 @@
|
||||
"machine_nozzle_gantry_distance": { "default": 55 },
|
||||
"machine_nozzle_offset_x_1": { "default": 18.0 },
|
||||
"machine_nozzle_offset_y_1": { "default": 0.0 },
|
||||
"machine_gcode_flavor": { "default": "RepRap (Marlin/Sprinter)" }
|
||||
"machine_gcode_flavor": { "default": "RepRap (Marlin/Sprinter)" },
|
||||
|
||||
"machine_start_gcode": {
|
||||
"default": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 X0 Y0 ;move X/Y to min endstops\nG28 Z0 ;move Z to min endstops\nG1 Z15.0 F9000 ;move the platform down 15mm\nG92 E0 ;zero the extruded length\nG1 F200 E3 ;extrude 3mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 F9000\n;Put printing message on LCD screen\nM117 Printing..."
|
||||
},
|
||||
"machine_end_gcode": {
|
||||
"default": "M104 S0 ;extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more\nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\nM84 ;steppers off\nG90 ;absolute positioning"
|
||||
}
|
||||
},
|
||||
|
||||
"categories": {
|
||||
|
@ -27,6 +27,10 @@
|
||||
"capitalize": true,
|
||||
"family": "Roboto"
|
||||
},
|
||||
"sidebar_save_to": {
|
||||
"size": 1.0,
|
||||
"family": "Roboto"
|
||||
},
|
||||
"timeslider_time": {
|
||||
"size": 1.0,
|
||||
"bold": true,
|
||||
@ -105,12 +109,15 @@
|
||||
|
||||
"tooltip": [255, 225, 146, 255],
|
||||
|
||||
"save_button": [255, 255, 255, 255],
|
||||
"save_button_border": [205, 202, 201, 255],
|
||||
"save_button_inactive": [205, 202, 201, 255],
|
||||
"save_button_active": [12, 159, 227, 255],
|
||||
"save_button_active_hover": [34, 150, 190, 255],
|
||||
"save_button_text": [35, 35, 35, 255],
|
||||
"save_button_safe_to_text": [255, 255, 255, 255],
|
||||
"save_button_estimated_text": [140, 144, 154, 255],
|
||||
"save_button_estimated_text_background": [255, 255, 255, 255],
|
||||
"save_button_printtime_text": [12, 169, 227, 255],
|
||||
"save_button_background": [249, 249, 249, 255],
|
||||
|
||||
"message": [205, 202, 201, 255],
|
||||
"message_text": [35, 35, 35, 255],
|
||||
@ -153,7 +160,10 @@
|
||||
"tooltip_margins": [1.0, 1.0],
|
||||
|
||||
"save_button_border": [0.06, 0.06],
|
||||
"save_button_text_margin": [0.6, 0.6],
|
||||
"save_button_slicing_bar": [0.0, 2.2],
|
||||
"save_button_label_margin": [0.5, 0.5],
|
||||
"save_button_save_to_button": [0.3, 2.7],
|
||||
|
||||
"message": [30.0, 5.0],
|
||||
"message_close": [1.25, 1.25]
|
||||
|
6
setup.py
6
setup.py
@ -47,12 +47,12 @@ setup(name="Cura",
|
||||
url="http://software.ultimaker.com/",
|
||||
license="GNU AFFERO GENERAL PUBLIC LICENSE (AGPL)",
|
||||
scripts=["cura_app.py"],
|
||||
#windows=[{"script": "printer.py", "dest_name": "Cura"}],
|
||||
console=[{"script": "cura_app.py"}],
|
||||
windows=[{"script": "cura_app.py", "dest_name": "Cura", "icon_resources": [(1, "icons/cura.ico")]}],
|
||||
#console=[{"script": "cura_app.py"}],
|
||||
options={"py2exe": {"skip_archive": False, "includes": includes}})
|
||||
|
||||
print("Coping Cura plugins.")
|
||||
shutil.copytree(os.path.dirname(UM.__file__) + "/../plugins", "dist/plugins")
|
||||
shutil.copytree(os.path.dirname(UM.__file__) + "/../plugins", "dist/plugins", ignore = shutil.ignore_patterns("ConsoleLogger", "OBJWriter", "MLPWriter", "MLPReader"))
|
||||
for path in os.listdir("plugins"):
|
||||
shutil.copytree("plugins/" + path, "dist/plugins/" + path)
|
||||
print("Coping resources.")
|
||||
|
Loading…
x
Reference in New Issue
Block a user