From b71180bb4799e894dfe913cc7cb5ca18d3c97062 Mon Sep 17 00:00:00 2001 From: daid Date: Thu, 12 Apr 2012 12:23:34 +0200 Subject: [PATCH] Only retract on space jumps, saves a lot of needless retractions. --- .../skeinforge_plugins/craft_plugins/comb.py | 4 ++++ .../skeinforge_plugins/craft_plugins/dimension.py | 10 ++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/comb.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/comb.py index 665f7bfc..8f98e985 100644 --- a/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/comb.py +++ b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/comb.py @@ -238,6 +238,7 @@ class CombSkein: def getAroundBetweenPath(self, begin, end): 'Get the path around the loops in the way of the original line segment.' + addedJumpLine = False aroundBetweenPath = [] boundaries = self.getBoundaries() boundarySegments = self.getBoundarySegments(begin, boundaries, end) @@ -245,6 +246,9 @@ class CombSkein: segment = boundarySegment.segment if boundarySegmentIndex < len(boundarySegments) - 1 and self.runningJumpSpace > 0.0: segment = boundarySegment.getSegment(boundarySegmentIndex, boundarySegments, self.edgeWidth, self.runningJumpSpace) + if not addedJumpLine: + self.distanceFeedRate.addLine("()") + addedJumpLine = True aroundBetweenPath += self.getAroundBetweenLineSegment(segment[0], boundaries, segment[1]) if boundarySegmentIndex < len(boundarySegments) - 1: aroundBetweenPath.append(segment[1]) 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 0d16a9c7..ce89001e 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 @@ -191,6 +191,7 @@ class DimensionSkein: self.totalExtrusionDistance = 0.0 self.travelFeedRatePerSecond = None self.zDistanceRatio = 5.0 + self.addRetraction = False def addLinearMoveExtrusionDistanceLine(self, extrusionDistance): 'Get the extrusion distance string from the extrusion distance.' @@ -379,11 +380,17 @@ class DimensionSkein: self.absoluteDistanceMode = True elif firstWord == 'G91': self.absoluteDistanceMode = False + elif firstWord == '()': + #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 elif firstWord == '(': self.layerIndex += 1 settings.printProgress(self.layerIndex, 'dimension') elif firstWord == 'M101': - self.addLinearMoveExtrusionDistanceLine(self.restartDistance * self.retractionRatio) + if self.addRetraction: + self.addLinearMoveExtrusionDistanceLine(self.restartDistance * self.retractionRatio) + self.addRetraction = False if self.totalExtrusionDistance > self.repository.maximumEValueBeforeReset.value: if not self.repository.relativeExtrusionDistance.value: self.distanceFeedRate.addLine('G92 E0') @@ -391,7 +398,6 @@ class DimensionSkein: self.isExtruderActive = True elif firstWord == 'M103': self.retractionRatio = self.getRetractionRatio(lineIndex) - self.addLinearMoveExtrusionDistanceLine(-self.repository.retractionDistance.value * self.retractionRatio) self.isExtruderActive = False elif firstWord == 'M108': self.flowRate = float( splitLine[1][1 :] ) -- 2.30.2