mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-04-21 21:29:41 +08:00

These seem to be wrong by accident. Let's update them to reflect the rest of Cura which falls under the LGPLv3 or higher.
59 lines
2.0 KiB
Python
59 lines
2.0 KiB
Python
# Copyright (c) 2017 Ghostkeeper
|
|
# The PostProcessingPlugin is released under the terms of the LGPLv3 or higher.
|
|
|
|
import re #To perform the search and replace.
|
|
|
|
from ..Script import Script
|
|
|
|
|
|
class SearchAndReplace(Script):
|
|
"""Performs a search-and-replace on all g-code.
|
|
|
|
Due to technical limitations, the search can't cross the border between
|
|
layers.
|
|
"""
|
|
|
|
def getSettingDataString(self):
|
|
return """{
|
|
"name": "Search and Replace",
|
|
"key": "SearchAndReplace",
|
|
"metadata": {},
|
|
"version": 2,
|
|
"settings":
|
|
{
|
|
"search":
|
|
{
|
|
"label": "Search",
|
|
"description": "All occurrences of this text will get replaced by the replacement text.",
|
|
"type": "str",
|
|
"default_value": ""
|
|
},
|
|
"replace":
|
|
{
|
|
"label": "Replace",
|
|
"description": "The search text will get replaced by this text.",
|
|
"type": "str",
|
|
"default_value": ""
|
|
},
|
|
"is_regex":
|
|
{
|
|
"label": "Use Regular Expressions",
|
|
"description": "When enabled, the search text will be interpreted as a regular expression.",
|
|
"type": "bool",
|
|
"default_value": false
|
|
}
|
|
}
|
|
}"""
|
|
|
|
def execute(self, data):
|
|
search_string = self.getSettingValueByKey("search")
|
|
if not self.getSettingValueByKey("is_regex"):
|
|
search_string = re.escape(search_string) #Need to search for the actual string, not as a regex.
|
|
search_regex = re.compile(search_string)
|
|
|
|
replace_string = self.getSettingValueByKey("replace")
|
|
|
|
for layer_number, layer in enumerate(data):
|
|
data[layer_number] = re.sub(search_regex, replace_string, layer) #Replace all.
|
|
|
|
return data |