diff --git a/Cura/cura_sf/fabmetheus_utilities/settings.py b/Cura/cura_sf/fabmetheus_utilities/settings.py index 4f53c63..bbc9ff3 100644 --- a/Cura/cura_sf/fabmetheus_utilities/settings.py +++ b/Cura/cura_sf/fabmetheus_utilities/settings.py @@ -237,6 +237,7 @@ def getProfileInformation(): 'Support_Gap_over_Perimeter_Extrusion_Width_ratio': calcSupportDistanceRatio, 'Support_Material_Choice_': storedSetting('support'), 'Support_Minimum_Angle_degrees': DEFSET, + 'Support_Margin_mm': storedSettingFloat('support_margin'), },'skirt': { 'Skirt_line_count': storedSetting("skirt_line_count"), 'Convex': "True", diff --git a/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py index 38f552c..8de6c3d 100644 --- a/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py +++ b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py @@ -400,6 +400,8 @@ class RaftRepository: self.supportChoiceExteriorOnly = settings.MenuRadio().getFromMenuButtonDisplay(self.supportMaterialChoice, 'Exterior Only', self, False) self.supportMinimumAngle = settings.FloatSpin().getFromValue(40.0, 'Support Minimum Angle (degrees):', self, 80.0, 60.0) self.executeTitle = 'Raft' + self.supportMargin = settings.FloatSpin().getFromValue( + 1.0, 'Support Margin (mm):', self, 5.0, 3.0) def execute(self): 'Raft button has been clicked.' @@ -596,6 +598,7 @@ class RaftSkein: self.cornerMinimumComplex = self.cornerMinimum.dropAxis() originalExtent = self.cornerMaximumComplex - self.cornerMinimumComplex self.raftOutsetRadius = self.repository.raftMargin.value + self.repository.raftAdditionalMarginOverLengthPercent.value * 0.01 * max(originalExtent.real, originalExtent.imag) + self.supportOutsetRadius = self.repository.supportMargin.value self.setBoundaryLayers() outsetSeparateLoops = intercircle.getInsetSeparateLoopsFromLoops(self.boundaryLayers[0].loops, -self.raftOutsetRadius, 0.8) self.interfaceIntersectionsTable = {} @@ -1035,7 +1038,7 @@ class RaftSkein: euclidean.joinXIntersectionsTables(aboveXIntersectionsTable, xIntersectionsTable) for supportLayerIndex in xrange(len(self.supportLayers)): supportLayer = self.supportLayers[supportLayerIndex] - self.extendXIntersections(supportLayer.supportLoops, self.raftOutsetRadius, supportLayer.xIntersectionsTable) + self.extendXIntersections(supportLayer.supportLoops, self.supportOutsetRadius, supportLayer.xIntersectionsTable) for supportLayer in self.supportLayers: euclidean.subtractXIntersectionsTable(supportLayer.xIntersectionsTable, supportLayer.fillXIntersectionsTable) self.addSegmentTablesToSupportLayers() diff --git a/Cura/gui/expertConfig.py b/Cura/gui/expertConfig.py index 2e03548..8c2f9cf 100644 --- a/Cura/gui/expertConfig.py +++ b/Cura/gui/expertConfig.py @@ -32,17 +32,19 @@ class expertConfigWindow(configBase.configWindowBase): validators.validInt(c, 0, 100) configBase.TitleRow(left, "Raft (if enabled)") - c = configBase.SettingRow(left, "Raft extra margin (mm)", 'raft_margin', '3.0', 'If the raft is enabled, this is the extra raft area around the object which is also rafted. Increasing this margin will create a stronger raft.') + c = configBase.SettingRow(left, "Extra margin (mm)", 'raft_margin', '3.0', 'If the raft is enabled, this is the extra raft area around the object which is also rafted. Increasing this margin will create a stronger raft.') validators.validFloat(c, 0.0) - c = configBase.SettingRow(left, "Raft base material amount (%)", 'raft_base_material_amount', '100', 'The base layer is the first layer put down as a raft. This layer has thick strong lines and is put firmly on the bed to prevent warping. This setting adjust the amount of material used for the base layer.') + c = configBase.SettingRow(left, "Base material amount (%)", 'raft_base_material_amount', '100', 'The base layer is the first layer put down as a raft. This layer has thick strong lines and is put firmly on the bed to prevent warping. This setting adjust the amount of material used for the base layer.') validators.validFloat(c, 0.0) - c = configBase.SettingRow(left, "Raft interface material amount (%)", 'raft_interface_material_amount', '100', 'The interface layer is a weak thin layer between the base layer and the printed object. It is designed to has little material to make it easy to break the base off the printed object. This setting adjusts the amount of material used for the interface layer.') + c = configBase.SettingRow(left, "Interface material amount (%)", 'raft_interface_material_amount', '100', 'The interface layer is a weak thin layer between the base layer and the printed object. It is designed to has little material to make it easy to break the base off the printed object. This setting adjusts the amount of material used for the interface layer.') validators.validFloat(c, 0.0) configBase.TitleRow(left, "Support") - c = configBase.SettingRow(left, "Support material amount (%)", 'support_rate', '100', 'Amount of material used for support, less material gives a weaker support structure which is easier to remove.') + c = configBase.SettingRow(left, "Material amount (%)", 'support_rate', '100', 'Amount of material used for support, less material gives a weaker support structure which is easier to remove.') validators.validFloat(c, 0.0) - c = configBase.SettingRow(left, "Support distance from object (mm)", 'support_distance', '0.5', 'Distance between the support structure and the object.') + c = configBase.SettingRow(left, "Distance from object (mm)", 'support_distance', '0.5', 'Distance between the support structure and the object. Empty gap in which no support structure is printed.') + validators.validFloat(c, 0.0) + c = configBase.SettingRow(left, "Extra margin (mm)", 'support_margin', '3.0', 'Extra margin which is used to extend the support lines outwards. A margin of 0 generates support structure only directly underneath the model.') validators.validFloat(c, 0.0) configBase.TitleRow(right, "Infill")