chiark / gitweb /
Add retract on jumps only setting
authorDaid <daid303@gmail.com>
Mon, 4 Jun 2012 13:06:48 +0000 (15:06 +0200)
committerDaid <daid303@gmail.com>
Mon, 4 Jun 2012 13:06:48 +0000 (15:06 +0200)
Cura/cura_sf/fabmetheus_utilities/settings.py
Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/dimension.py
Cura/util/profile.py

index 82f8ee9ac0fb3af828852ea65df0f8c94846ce06..c84729308078cdc423632435b6d11ca7f7671480 100644 (file)
@@ -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",
index cf8f6bed582e4b2e1072aed57c9ccd42bc4fbdcc..b56d4e3e05794634c3701e67f0d29455a0815924 100644 (file)
@@ -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 == '(<nextmovehasspacejump>)':
+               elif firstWord == '(<nextmovehasspacejump>)' 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 :] )
index 235f1c388ecc9541073dfa98415382c22ae795f4..4742c5e9320e62d56b02c5168fbc6907d90e0560 100644 (file)
@@ -29,6 +29,7 @@ profileDefaultSettings = {
        'retraction_speed': '40.0',\r
        'retraction_amount': '0.0',\r
        'retraction_extra': '0.0',\r
+       'retract_on_jumps_only': 'True',\r
        'travel_speed': '150',\r
        'max_z_speed': '3.0',\r
        'bottom_layer_speed': '20',\r