diff --git a/Cura/cura_sf/fabmetheus_utilities/settings.py b/Cura/cura_sf/fabmetheus_utilities/settings.py index 4f53c63a62..bbc9ff397f 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 38f552c343..8de6c3d38d 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 2e03548891..8c2f9cf4cd 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") diff --git a/Cura/gui/preview3d.py b/Cura/gui/preview3d.py index 9258a77bd3..b6eb69c298 100644 --- a/Cura/gui/preview3d.py +++ b/Cura/gui/preview3d.py @@ -178,12 +178,12 @@ class previewPanel(wx.Panel): self.gcodeDirty = True self.glCanvas.Refresh() - def updateCenterX(self, x): - self.machineCenter.x = x + def updateCenterX(self): + self.machineCenter.x = profile.getProfileSettingFloat('machine_center_x') self.glCanvas.Refresh() - def updateCenterY(self, y): - self.machineCenter.y = y + def updateCenterY(self): + self.machineCenter.y = profile.getProfileSettingFloat('machine_center_y') self.glCanvas.Refresh() def setViewMode(self, mode): diff --git a/Cura/util/sliceRun.py b/Cura/util/sliceRun.py index 0bc157fa1e..e4ddf2f665 100644 --- a/Cura/util/sliceRun.py +++ b/Cura/util/sliceRun.py @@ -61,7 +61,7 @@ def runSlice(fileNames): subprocess.call([pypyExe, os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", os.path.split(sys.argv[0])[1])), '-p', profile.getGlobalProfileString(), fileName]) def getSliceCommand(filename): - if profile.getPreference('slicer').startswith('Slic3r'): + if profile.getPreference('slicer').startswith('Slic3r') and getSlic3rExe() != False: slic3rExe = getSlic3rExe() if slic3rExe == False: return False