mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-04-22 05:39:37 +08:00

Yes, it's my name. I'm okay with people learning that if they are really looking. I'm less okay with search engines learning that. Removing my name here linked to my nickname will eventually cause search engines to unlink it too.
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 AGPLv3 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 |