diff --git a/Cura/cura_sf/fabmetheus_utilities/settings.py b/Cura/cura_sf/fabmetheus_utilities/settings.py index 92d3262..811aaea 100644 --- a/Cura/cura_sf/fabmetheus_utilities/settings.py +++ b/Cura/cura_sf/fabmetheus_utilities/settings.py @@ -25,6 +25,8 @@ def storedSettingInt(name): return lambda setting: int(profile.getProfileSettingFloat(name)) def storedPreference(name): return lambda setting: profile.getPreference(name) +def storedSettingInvertBoolean(name): + return lambda setting: profile.getProfileSetting(name) == "False" def ifSettingAboveZero(name): return lambda setting: profile.getProfileSettingFloat(name) > 0 @@ -376,10 +378,9 @@ def getProfileInformation(): 'Filament_Packing_Density_ratio': storedSettingFloat("filament_density"), 'Maximum_E_Value_before_Reset_float': DEFSET, 'Minimum_Travel_for_Retraction_millimeters': storedSettingFloat("retraction_min_travel"), - 'Retract_Within_Island': DEFSET, + 'Retract_Within_Island': storedSettingInvertBoolean("retract_on_jumps_only"), 'Retraction_Distance_millimeters': storedSettingFloat('retraction_amount'), 'Restart_Extra_Distance_millimeters': storedSettingFloat('retraction_extra'), - 'Only_Retract_On_Jumps': storedSetting("retract_on_jumps_only"), },'alteration': { 'Activate_Alteration': storedSetting('add_start_end_gcode'), 'Name_of_End_File': "end.gcode", diff --git a/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/dimension.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/dimension.py index 59b9cff..4080fc9 100644 --- a/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/dimension.py +++ b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/dimension.py @@ -165,7 +165,6 @@ class DimensionRepository: self.retractionDistance = settings.FloatSpin().getFromValue( 0.0, 'Retraction Distance (millimeters):', self, 100.0, 0.0 ) self.restartExtraDistance = settings.FloatSpin().getFromValue( 0.0, 'Restart Extra Distance (millimeters):', self, 100.0, 0.0 ) self.executeTitle = 'Dimension' - self.onlyRetractOnJumps = settings.BooleanSetting().getFromValue('Only Retract On Jumps', self, True ) def execute(self): 'Dimension button has been clicked.' @@ -194,7 +193,6 @@ class DimensionSkein: self.zDistanceRatio = 5.0 self.addRetraction = True self.reverseRetraction = False - self.onlyRetractOnJumps = True def addLinearMoveExtrusionDistanceLine(self, extrusionDistance): 'Get the extrusion distance string from the extrusion distance.' @@ -206,7 +204,6 @@ class DimensionSkein: def getCraftedGcode(self, gcodeText, repository): 'Parse gcode text and store the dimension gcode.' self.repository = repository - self.onlyRetractOnJumps = repository.onlyRetractOnJumps.value filamentRadius = 0.5 * repository.filamentDiameter.value filamentPackingArea = math.pi * filamentRadius * filamentRadius * repository.filamentPackingDensity.value self.minimumTravelForRetraction = self.repository.minimumTravelForRetraction.value @@ -264,7 +261,7 @@ class DimensionSkein: if isActive: if not self.repository.retractWithinIsland.value: locationEnclosureIndex = self.getSmallestEnclosureIndex(location.dropAxis()) - if locationEnclosureIndex != self.getSmallestEnclosureIndex(self.oldLocation.dropAxis()): + if locationEnclosureIndex == self.getSmallestEnclosureIndex(self.oldLocation.dropAxis()): return None locationMinusOld = location - self.oldLocation xyTravel = abs(locationMinusOld.dropAxis()) @@ -306,7 +303,7 @@ class DimensionSkein: 'Get the retraction ratio.' distanceToNextThread = self.getDistanceToNextThread(lineIndex) if distanceToNextThread == None: - return 1.0 + return 0.0 if distanceToNextThread >= self.doubleMinimumTravelForRetraction: return 1.0 if distanceToNextThread <= self.minimumTravelForRetraction: @@ -384,27 +381,17 @@ class DimensionSkein: self.absoluteDistanceMode = True elif firstWord == 'G91': self.absoluteDistanceMode = False - elif firstWord == '()': - if self.onlyRetractOnJumps: - self.addRetraction = False - elif firstWord == '()': - if self.onlyRetractOnJumps: - self.addRetraction = True - if not self.reverseRetraction: - self.retractionRatio = self.getRetractionRatio(lineIndex) - self.addLinearMoveExtrusionDistanceLine(-self.repository.retractionDistance.value * self.retractionRatio) - self.reverseRetraction = True elif firstWord == '(': self.layerIndex += 1 + print '=layer=' settings.printProgress(self.layerIndex, 'dimension') elif firstWord == '()': if self.totalExtrusionDistance > 0.0 and not self.repository.relativeExtrusionDistance.value: self.distanceFeedRate.addLine('G92 E0') self.totalExtrusionDistance = 0.0 elif firstWord == 'M101': - if self.reverseRetraction: + if self.retractionRatio > 0.0: self.addLinearMoveExtrusionDistanceLine(self.restartDistance * self.retractionRatio) - self.reverseRetraction = False if self.totalExtrusionDistance > self.repository.maximumEValueBeforeReset.value: if not self.repository.relativeExtrusionDistance.value: self.distanceFeedRate.addLine('G92 E0') @@ -412,9 +399,8 @@ class DimensionSkein: self.isExtruderActive = True elif firstWord == 'M103': self.retractionRatio = self.getRetractionRatio(lineIndex) - if self.addRetraction and not self.reverseRetraction: + if self.retractionRatio > 0.0: self.addLinearMoveExtrusionDistanceLine(-self.repository.retractionDistance.value * self.retractionRatio) - self.reverseRetraction = True self.isExtruderActive = False elif firstWord == 'M108': self.flowRate = float( splitLine[1][1 :] )