chiark / gitweb /
Change the way the only jump retraction works, this allows retraction when moving...
authorDaid <daid303@gmail.com>
Wed, 20 Jun 2012 00:34:59 +0000 (02:34 +0200)
committerDaid <daid303@gmail.com>
Wed, 20 Jun 2012 00:34:59 +0000 (02:34 +0200)
Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/comb.py
Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/dimension.py
Cura/gui/opengl.py

index 8f98e985e23a2f7c40569efaa0fc6813c22f4f59..665f7bfc7af04d1543c9aa6a4b1ff47e3d04b783 100644 (file)
@@ -238,7 +238,6 @@ 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)
@@ -246,9 +245,6 @@ 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("(<nextmovehasspacejump>)")
-                                       addedJumpLine = True
                        aroundBetweenPath += self.getAroundBetweenLineSegment(segment[0], boundaries, segment[1])
                        if boundarySegmentIndex < len(boundarySegments) - 1:
                                aroundBetweenPath.append(segment[1])
index b56d4e3e05794634c3701e67f0d29455a0815924..684f8e9d0187215ff33cfc9ec9d60e676ca4da4b 100644 (file)
@@ -192,7 +192,8 @@ class DimensionSkein:
                self.totalExtrusionDistance = 0.0
                self.travelFeedRatePerSecond = None
                self.zDistanceRatio = 5.0
-               self.addRetraction = False
+               self.addRetraction = True
+               self.reverseRetraction = False
                self.onlyRetractOnJumps = True
 
        def addLinearMoveExtrusionDistanceLine(self, extrusionDistance):
@@ -383,10 +384,15 @@ class DimensionSkein:
                        self.absoluteDistanceMode = True
                elif firstWord == 'G91':
                        self.absoluteDistanceMode = False
-               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
+               elif firstWord == '(<nestedRing>)':
+                       if self.onlyRetractOnJumps:
+                               self.addRetraction = False
+               elif firstWord == '(</nestedRing>)':
+                       if self.onlyRetractOnJumps:
+                               self.addRetraction = True
+                               self.retractionRatio = self.getRetractionRatio(lineIndex)
+                               self.addLinearMoveExtrusionDistanceLine(-self.repository.retractionDistance.value * self.retractionRatio)
+                               self.reverseRetraction = True
                elif firstWord == '(<layer>':
                        self.layerIndex += 1
                        settings.printProgress(self.layerIndex, 'dimension')
@@ -395,9 +401,9 @@ class DimensionSkein:
                                self.distanceFeedRate.addLine('G92 E0')
                                self.totalExtrusionDistance = 0.0
                elif firstWord == 'M101':
-                       if self.addRetraction or not self.onlyRetractOnJumps:
+                       if self.reverseRetraction:
                                self.addLinearMoveExtrusionDistanceLine(self.restartDistance * self.retractionRatio)
-                       self.addRetraction = False
+                               self.reverseRetraction = False
                        if self.totalExtrusionDistance > self.repository.maximumEValueBeforeReset.value: 
                                if not self.repository.relativeExtrusionDistance.value:
                                        self.distanceFeedRate.addLine('G92 E0')
@@ -405,8 +411,9 @@ class DimensionSkein:
                        self.isExtruderActive = True
                elif firstWord == 'M103':
                        self.retractionRatio = self.getRetractionRatio(lineIndex)
-                       if not self.onlyRetractOnJumps:
+                       if self.addRetraction:
                                self.addLinearMoveExtrusionDistanceLine(-self.repository.retractionDistance.value * self.retractionRatio)
+                               self.reverseRetraction = True
                        self.isExtruderActive = False
                elif firstWord == 'M108':
                        self.flowRate = float( splitLine[1][1 :] )
index 7f6fcb12a569a244846e9d2c06463063f947b039..ab685d59ccd263abcb5a01530d93c46d72482462 100644 (file)
@@ -228,7 +228,7 @@ def DrawGCodeLayer(layer):
        fillCycle = 0\r
        fillColorCycle = [[0.5,0.5,0.0],[0.0,0.5,0.5],[0.5,0.0,0.5]]\r
        moveColor = [0,0,1]\r
-       retractColor = [0,1,1]\r
+       retractColor = [1,0,0.5]\r
        supportColor = [0,1,1]\r
        extrudeColor = [1,0,0]\r
        innerWallColor = [0,1,0]\r
@@ -312,7 +312,8 @@ def DrawGCodeLayer(layer):
                        for v in path.list:\r
                                glVertex3f(v.x, v.y, v.z)\r
                        glEnd()\r
-               prevPathWasRetract = False\r
+               if not path.type == 'move':\r
+                       prevPathWasRetract = False\r
                if path.type == 'retract' and path.list[0].almostEqual(path.list[-1]):\r
                        prevPathWasRetract = True\r
        glEnable(GL_CULL_FACE)\r