Я выполняю постобработку вывода из скрипта Python, который генерирует GCODE для моего доморощенного перьевого плоттера.
Постпроцессор добавляет пробел в мой GCODE сразу после важной информации (после каждого Xи значение координаты Y), в результате чего GCODE становится недействительным.
Пример того, как он должен выглядеть:
Пример того, как выглядит мой вывод:
Я пытался удалить операторы \ s из подозрительных фрагментов кода, я пытался использовать .lstrip () в различных областях для удаления пробелов, но безрезультатно.Я также удалил все двойные пробелы, которые присутствовали в коде, и пока ничего не помогло.
Я подозреваю, что этот код делает это:
def round_coordinates(self,parameters) :
try:
round_ = int(parameters)
except :
self.error("Bad parameters for round. Round should be an integer! \n(Parameters: '%s')"%(parameters), "error")
gcode = ""
for s in self.gcode.split("\n"):
for a in "xyzijkaf" :
r = re.search(r"(?i)("+a+r")\s*(-?\s*(\d*\.?\d*))", s)
if r :
if r.group(2)!="":
s = re.sub(
r"(?i)("+a+r")\s*(-?)\s*(\d*\.?\d*)",
(r"\1 %0."+str(round_)+"f" if round_>0 else r"\1 %d")%round(float(r.group(2)),round_),
s)
gcode += s + "\n"
self.gcode = gcode
Я надеюсь, что смогу выяснить, откуда появляются пробелы, возможно, я не показываю нужный бит кода, поэтому у меня естьсвязал исходный файл.Он появляется в строке 2648, а в строке 5440 также присутствует функция округления, которая, по-видимому, связана.
Вот вставка к полному коду: https://pastebin.com/s8J1H8r6