From 2aa6b8922126b05e223eb80296b66e2055b14b1a Mon Sep 17 00:00:00 2001 From: Daid Date: Mon, 4 Jun 2012 15:06:48 +0200 Subject: [PATCH] Add retract on jumps only setting --- Cura/cura_sf/fabmetheus_utilities/settings.py | 1 + .../skeinforge_plugins/craft_plugins/dimension.py | 9 +++++++-- Cura/util/profile.py | 1 + 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/Cura/cura_sf/fabmetheus_utilities/settings.py b/Cura/cura_sf/fabmetheus_utilities/settings.py index 82f8ee9..c847293 100644 --- a/Cura/cura_sf/fabmetheus_utilities/settings.py +++ b/Cura/cura_sf/fabmetheus_utilities/settings.py @@ -382,6 +382,7 @@ def getProfileInformation(): 'Retract_Within_Island': DEFSET, '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 cf8f6be..b56d4e3 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,6 +165,7 @@ 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.' @@ -192,6 +193,7 @@ class DimensionSkein: self.travelFeedRatePerSecond = None self.zDistanceRatio = 5.0 self.addRetraction = False + self.onlyRetractOnJumps = True def addLinearMoveExtrusionDistanceLine(self, extrusionDistance): 'Get the extrusion distance string from the extrusion distance.' @@ -203,6 +205,7 @@ 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 @@ -380,7 +383,7 @@ class DimensionSkein: self.absoluteDistanceMode = True elif firstWord == 'G91': self.absoluteDistanceMode = False - elif firstWord == '()': + elif firstWord == '()' and self.onlyRetractOnJumps: #Check for the space jump moves for retraction, these tags are added by the comb plugin. self.addLinearMoveExtrusionDistanceLine(-self.repository.retractionDistance.value * self.retractionRatio) self.addRetraction = True @@ -392,7 +395,7 @@ class DimensionSkein: self.distanceFeedRate.addLine('G92 E0') self.totalExtrusionDistance = 0.0 elif firstWord == 'M101': - if self.addRetraction: + if self.addRetraction or not self.onlyRetractOnJumps: self.addLinearMoveExtrusionDistanceLine(self.restartDistance * self.retractionRatio) self.addRetraction = False if self.totalExtrusionDistance > self.repository.maximumEValueBeforeReset.value: @@ -402,6 +405,8 @@ class DimensionSkein: self.isExtruderActive = True elif firstWord == 'M103': self.retractionRatio = self.getRetractionRatio(lineIndex) + if not self.onlyRetractOnJumps: + self.addLinearMoveExtrusionDistanceLine(-self.repository.retractionDistance.value * self.retractionRatio) self.isExtruderActive = False elif firstWord == 'M108': self.flowRate = float( splitLine[1][1 :] ) diff --git a/Cura/util/profile.py b/Cura/util/profile.py index 235f1c3..4742c5e 100644 --- a/Cura/util/profile.py +++ b/Cura/util/profile.py @@ -29,6 +29,7 @@ profileDefaultSettings = { 'retraction_speed': '40.0', 'retraction_amount': '0.0', 'retraction_extra': '0.0', + 'retract_on_jumps_only': 'True', 'travel_speed': '150', 'max_z_speed': '3.0', 'bottom_layer_speed': '20',