diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 86280252da..d9fe2a72e0 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1346,7 +1346,7 @@ "description": "The height of infill of a given density before switching to half the density.", "unit": "mm", "type": "float", - "default_value": 5.0, + "default_value": 1.5, "minimum_value": "0.0001", "minimum_value_warning": "3 * resolveOrValue('layer_height')", "maximum_value_warning": "100", diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index 86185727b2..8066e2665a 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -30,6 +30,7 @@ Item id: infillCellLeft anchors.top: parent.top anchors.left: parent.left + anchors.topMargin: UM.Theme.getSize("default_margin").height width: base.width * .45 - UM.Theme.getSize("default_margin").width height: childrenRect.height @@ -47,7 +48,7 @@ Item } } - Flow + Row { id: infillCellRight @@ -63,10 +64,11 @@ Item id: infillListView property int activeIndex: { - var density = parseInt(infillDensity.properties.value) + var density = parseInt(infillDensity.properties.value); + var steps = parseInt(infillSteps.properties.value); for(var i = 0; i < infillModel.count; ++i) { - if(density > infillModel.get(i).percentageMin && density <= infillModel.get(i).percentageMax ) + if(density > infillModel.get(i).percentageMin && density <= infillModel.get(i).percentageMax && steps > infillModel.get(i).stepsMin && steps <= infillModel.get(i).stepsMax) { return i; } @@ -85,7 +87,7 @@ Item { id: infillIconLining - width: (infillCellRight.width - 3 * UM.Theme.getSize("default_margin").width) / 4; + width: (infillCellRight.width - ((infillModel.count - 1) * UM.Theme.getSize("default_margin").width)) / (infillModel.count); height: width border.color: @@ -150,6 +152,7 @@ Item if (infillListView.activeIndex != index) { infillDensity.setPropertyValue("value", model.percentage) + infillSteps.setPropertyValue("value", model.steps) } } onEntered: @@ -181,37 +184,61 @@ Item Component.onCompleted: { infillModel.append({ - name: catalog.i18nc("@label", "Hollow"), + name: catalog.i18nc("@label", "Empty"), percentage: 0, + steps: 0, percentageMin: -1, percentageMax: 0, - text: catalog.i18nc("@label", "No (0%) infill will leave your model hollow at the cost of low strength"), + stepsMin: -1, + stepsMax: 0, + text: catalog.i18nc("@label", "Empty infill will leave your model hollow with low strength"), icon: "hollow" }) infillModel.append({ name: catalog.i18nc("@label", "Light"), percentage: 20, + steps: 0, percentageMin: 0, percentageMax: 30, + stepsMin: -1, + stepsMax: 0, text: catalog.i18nc("@label", "Light (20%) infill will give your model an average strength"), icon: "sparse" }) infillModel.append({ name: catalog.i18nc("@label", "Dense"), percentage: 50, + steps: 0, percentageMin: 30, percentageMax: 70, + stepsMin: -1, + stepsMax: 0, text: catalog.i18nc("@label", "Dense (50%) infill will give your model an above average strength"), icon: "dense" }) infillModel.append({ name: catalog.i18nc("@label", "Solid"), percentage: 100, + steps: 0, percentageMin: 70, - percentageMax: 100, + percentageMax: 9999999999, + stepsMin: -1, + stepsMax: 0, text: catalog.i18nc("@label", "Solid (100%) infill will make your model completely solid"), icon: "solid" }) + infillModel.append({ + name: catalog.i18nc("@label", "Gradual"), + percentage: 90, + steps: 5, + percentageMin: 0, + percentageMax: 9999999999, + stepsMin: 0, + stepsMax: 9999999999, + infill_layer_height: 1.5, + text: catalog.i18nc("@label", "This will gradually increase the amount of infill towards the top"), + icon: "gradual" + }) } } } @@ -220,7 +247,7 @@ Item { id: helpersCell anchors.top: infillCellRight.bottom - anchors.topMargin: UM.Theme.getSize("default_margin").height + anchors.topMargin: UM.Theme.getSize("default_margin").height * 2 anchors.left: parent.left anchors.right: parent.right height: childrenRect.height @@ -392,7 +419,7 @@ Item property alias _hovered: adhesionMouseArea.containsMouse anchors.top: supportExtruderCombobox.bottom - anchors.topMargin: UM.Theme.getSize("default_margin").height + anchors.topMargin: UM.Theme.getSize("default_margin").height * 2 anchors.left: adhesionHelperLabel.right anchors.leftMargin: UM.Theme.getSize("default_margin").width @@ -467,7 +494,7 @@ Item { id: tipsCell anchors.top: helpersCell.bottom - anchors.topMargin: UM.Theme.getSize("default_margin").height + anchors.topMargin: UM.Theme.getSize("default_margin").height * 2 anchors.left: parent.left width: parent.width height: childrenRect.height @@ -480,7 +507,7 @@ Item anchors.rightMargin: UM.Theme.getSize("default_margin").width wrapMode: Text.WordWrap //: Tips label - text: catalog.i18nc("@label", "Need help improving your prints? Read the Ultimaker Troubleshooting Guides").arg("https://ultimaker.com/en/troubleshooting"); + text: catalog.i18nc("@label", "Need help improving your prints?
Read the Ultimaker Troubleshooting Guides").arg("https://ultimaker.com/en/troubleshooting"); font: UM.Theme.getFont("default"); color: UM.Theme.getColor("text"); linkColor: UM.Theme.getColor("text_link") @@ -498,6 +525,16 @@ Item storeIndex: 0 } + UM.SettingPropertyProvider + { + id: infillSteps + + containerStackId: Cura.MachineManager.activeStackId + key: "gradual_infill_steps" + watchedProperties: [ "value" ] + storeIndex: 0 + } + UM.SettingPropertyProvider { id: platformAdhesionType diff --git a/resources/themes/cura/icons/gradual.svg b/resources/themes/cura/icons/gradual.svg new file mode 100644 index 0000000000..ed7f301e18 --- /dev/null +++ b/resources/themes/cura/icons/gradual.svg @@ -0,0 +1,102 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + +