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 @@
+
+