chiark / gitweb /
Add support for {filename} tag in gcode.
authordaid <daid303@gmail.com>
Thu, 5 Jul 2012 13:42:59 +0000 (15:42 +0200)
committerdaid <daid303@gmail.com>
Thu, 5 Jul 2012 13:42:59 +0000 (15:42 +0200)
Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/alteration.py
Cura/util/profile.py

index 38aab5b4d21c0756977dbe9ddc549a3e469c568f..f55bb2c6ba1fec8f3c4a9605f36e4440f97210e6 100644 (file)
@@ -93,9 +93,9 @@ __license__ = 'GNU Affero General Public License http://www.gnu.org/licenses/agp
 
 def getCraftedText(fileName, text='', repository=None):
        'Alteration a gcode linear move text.'
-       return getCraftedTextFromText(archive.getTextIfEmpty(fileName, text), repository)
+       return getCraftedTextFromText(archive.getTextIfEmpty(fileName, text), repository, fileName)
 
-def getCraftedTextFromText(gcodeText, repository=None):
+def getCraftedTextFromText(gcodeText, repository=None, fileName=''):
        'Alteration a gcode linear move text.'
        if gcodec.isProcedureDoneOrFileIsEmpty(gcodeText, 'alteration'):
                return gcodeText
@@ -103,7 +103,7 @@ def getCraftedTextFromText(gcodeText, repository=None):
                repository = settings.getReadRepository(AlterationRepository())
        if not repository.activateAlteration.value:
                return gcodeText
-       return AlterationSkein().getCraftedGcode(gcodeText, repository)
+       return AlterationSkein().getCraftedGcode(gcodeText, repository, fileName)
 
 def getGcodeTextWithoutRedundantMcode(gcodeText):
        'Get gcode text without redundant M104 and M108.'
@@ -170,11 +170,12 @@ class AlterationSkein:
 
        def addFromUpperLowerFile(self, fileName):
                "Add lines of text from the fileName or the lowercase fileName, if there is no file by the original fileName in the directory."
-               alterationFileLines = settings.getAlterationFileLines(fileName)
+               alterationFileLines = map(lambda l: l.replace('?filename?', self.fileName), settings.getAlterationFileLines(fileName))
                self.distanceFeedRate.addLinesSetAbsoluteDistanceMode(alterationFileLines)
 
-       def getCraftedGcode(self, gcodeText, repository):
+       def getCraftedGcode(self, gcodeText, repository, fileName):
                "Parse gcode text and store the bevel gcode."
+               self.fileName = fileName
                self.lines = archive.getTextLines(gcodeText)
                if repository.replaceVariableWithSetting.value:
                        self.setSettingDictionary()
index 52178579424e7105bbfdc9c8b00b9f77875f9ab5..d525fa3fb66e5fd7486e258fb97a2f907ac37a94 100644 (file)
@@ -81,7 +81,7 @@ profileDefaultSettings = {
 }\r
 alterationDefault = {\r
 #######################################################################################\r
-       'start.gcode': """;Sliced at: {day} {date} {time}\r
+       'start.gcode': """;Sliced {filename} at: {day} {date} {time}\r
 ;Basic settings: Layer height: {layer_height} Walls: {wall_thickness} Fill: {fill_density}\r
 ;Print time: {print_time}\r
 ;Filament used: {filament_amount}m {filament_weight}g\r
@@ -388,7 +388,7 @@ def calculateSolidLayerCount():
 ## Alteration file functions\r
 #########################################################\r
 def replaceTagMatch(m):\r
-       tag = m.group(0)[1:-1]\r
+       tag = m.group(1)\r
        if tag == 'time':\r
                return time.strftime('%H:%M:%S')\r
        if tag == 'date':\r
@@ -410,7 +410,7 @@ def replaceTagMatch(m):
        elif isPreference(tag):\r
                f = getProfileSettingFloat(tag)\r
        else:\r
-               return tag\r
+               return '?%s?' % (tag)\r
        if (f % 1) == 0:\r
                return str(int(f))\r
        return str(f)\r
@@ -478,5 +478,5 @@ def getAlterationFileContents(filename):
                #Always remove the extruder on/off M codes. These are no longer needed in 5D printing.\r
                prefix = 'M101\nM103\n'\r
        \r
-       return unicode(prefix + re.sub("\{[^\}]*\}", replaceTagMatch, alterationContents).rstrip() + '\n' + postfix).encode('utf-8')\r
+       return unicode(prefix + re.sub("\{([^\}]*)\}", replaceTagMatch, alterationContents).rstrip() + '\n' + postfix).encode('utf-8')\r
 \r