mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-06 22:47:29 -06:00
Rename GCodeReader to GCodeProfileReader
The new name is more appropriate since it reads only the profiles from the g-code. In the future there might be some other plug-in that reads the actual g-code as for instance a mesh. Contributes to issue CURA-34.
This commit is contained in:
parent
edbbc96281
commit
63d007c02c
2 changed files with 5 additions and 5 deletions
46
plugins/GCodeProfileReader/GCodeProfileReader.py
Normal file
46
plugins/GCodeProfileReader/GCodeProfileReader.py
Normal file
|
@ -0,0 +1,46 @@
|
|||
# Copyright (c) 2015 Ultimaker B.V.
|
||||
# Cura is released under the terms of the AGPLv3 or higher.
|
||||
|
||||
from UM.Application import Application #To get the current profile that should be updated with the settings from the g-code.
|
||||
from UM.Settings.ProfileReader import ProfileReader
|
||||
import re #Regular expressions for parsing escape characters in the settings.
|
||||
|
||||
## A class that reads profile data from g-code files.
|
||||
#
|
||||
# It reads the profile data from g-code files and stores the profile as a new
|
||||
# profile, and then immediately activates that profile.
|
||||
# This class currently does not process the rest of the g-code in any way.
|
||||
class GCodeProfileReader(ProfileReader):
|
||||
## Initialises the g-code reader as a mesh reader.
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
|
||||
## Reads a g-code file, loading the profile from it.
|
||||
def read(self, file_name):
|
||||
version = 1 #IF YOU CHANGE THIS FUNCTION IN A WAY THAT BREAKS REVERSE COMPATIBILITY, INCREMENT THIS VERSION NUMBER!
|
||||
prefix = ";SETTING_" + str(version) + " "
|
||||
|
||||
#Loading all settings from the file. They are all at the end, but Python has no reverse seek any more since Python3. TODO: Consider moving settings to the start?
|
||||
serialised = "" #Will be filled with the serialised profile.
|
||||
try:
|
||||
with open(file_name) as f:
|
||||
for line in f:
|
||||
if line.startswith(prefix):
|
||||
serialised += line[len(prefix):-1] #Remove the prefix and the newline from the line, and add it to the rest.
|
||||
except IOError as e:
|
||||
Logger.log("e", "Unable to open file %s for reading: %s", file_name, str(e))
|
||||
|
||||
#Unescape the serialised profile.
|
||||
escape_characters = { #Which special characters (keys) are replaced by what escape character (values).
|
||||
#Note: The keys are regex strings. Values are not.
|
||||
"\\\\": "\\", #The escape character.
|
||||
"\\n": "\n", #Newlines. They break off the comment.
|
||||
"\\r": "\r" #Carriage return. Windows users may need this for visualisation in their editors.
|
||||
}
|
||||
escape_characters = dict((re.escape(key), value) for key, value in escape_characters.items())
|
||||
pattern = re.compile("|".join(escape_characters.keys()))
|
||||
serialised = pattern.sub(lambda m: escape_characters[re.escape(m.group(0))], serialised) #Perform the replacement with a regular expression.
|
||||
|
||||
#Apply the changes to the current profile.
|
||||
profile = Application.getInstance().getMachineManager().getActiveProfile()
|
||||
profile.unserialise(serialised)
|
25
plugins/GCodeProfileReader/__init__.py
Normal file
25
plugins/GCodeProfileReader/__init__.py
Normal file
|
@ -0,0 +1,25 @@
|
|||
# Copyright (c) 2015 Ultimaker B.V.
|
||||
# Cura is released under the terms of the AGPLv3 or higher.
|
||||
|
||||
from . import GCodeProfileReader
|
||||
|
||||
from UM.i18n import i18nCatalog
|
||||
catalog = i18nCatalog("cura")
|
||||
|
||||
def getMetaData():
|
||||
return {
|
||||
"plugin": {
|
||||
"name": catalog.i18nc("@label", "GCode Profile Reader"),
|
||||
"author": "Ultimaker",
|
||||
"version": "1.0",
|
||||
"description": catalog.i18nc("@info:whatsthis", "Provides support for importing profiles from g-code files."),
|
||||
"api": 2
|
||||
},
|
||||
"profile_reader": {
|
||||
"extension": "gcode",
|
||||
"description": catalog.i18nc("@item:inlistbox", "G-code File")
|
||||
}
|
||||
}
|
||||
|
||||
def register(app):
|
||||
return { "profile_reader": GCodeProfileReader.GCodeProfileReader() }
|
Loading…
Add table
Add a link
Reference in a new issue