cleanup extension (#713)

Co-authored-by: Lex Neva <github.com@lexneva.name>
pull/722/head
Kaalleen 2020-05-27 16:08:19 +02:00 zatwierdzone przez GitHub
rodzic b461b2d85b
commit 455b02847f
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
4 zmienionych plików z 71 dodań i 1 usunięć

Wyświetl plik

@ -76,11 +76,16 @@ class Stroke(EmbroideryElement):
@property
def paths(self):
path = self.parse_path()
flattened = self.flatten(path)
# manipulate invalid path
if len(flattened[0]) == 1:
return [[[flattened[0][0][0], flattened[0][0][1]], [flattened[0][0][0]+1.0, flattened[0][0][1]]]]
if self.manual_stitch_mode:
return [self.strip_control_points(subpath) for subpath in path]
else:
return self.flatten(path)
return flattened
@property
@cache

Wyświetl plik

@ -1,5 +1,6 @@
from auto_satin import AutoSatin
from break_apart import BreakApart
from cleanup import Cleanup
from convert_to_satin import ConvertToSatin
from cut_satin import CutSatin
from embroider import Embroider
@ -38,6 +39,7 @@ __all__ = extensions = [Embroider,
Lettering,
Troubleshoot,
RemoveEmbroiderySettings,
Cleanup,
BreakApart,
ImportThreadlist,
Simulator]

Wyświetl plik

@ -0,0 +1,39 @@
import sys
from ..elements import Fill, Stroke
from ..i18n import _
from .base import InkstitchExtension
class Cleanup(InkstitchExtension):
def __init__(self, *args, **kwargs):
InkstitchExtension.__init__(self, *args, **kwargs)
self.OptionParser.add_option("-f", "--rm_fill", dest="rm_fill", type="inkbool", default=True)
self.OptionParser.add_option("-s", "--rm_stroke", dest="rm_stroke", type="inkbool", default=True)
self.OptionParser.add_option("-a", "--fill_threshold", dest="fill_threshold", type="int", default=20)
self.OptionParser.add_option("-l", "--stroke_threshold", dest="stroke_threshold", type="int", default=5)
def effect(self):
self.rm_fill = self.options.rm_fill
self.rm_stroke = self.options.rm_stroke
self.fill_threshold = self.options.fill_threshold
self.stroke_threshold = self.options.stroke_threshold
# Remove selection, we want every element in the document
self.selected = {}
if not self.get_elements():
return
count = 0
for element in self.elements:
if (isinstance(element, Fill) and self.rm_fill and
element.shape.area < self.fill_threshold):
element.node.getparent().remove(element.node)
count += 1
if (isinstance(element, Stroke) and self.rm_stroke and
element.shape.length < self.stroke_threshold and element.node.getparent() is not None):
element.node.getparent().remove(element.node)
count += 1
print >> sys.stderr, _("%s elements removed" % count)

Wyświetl plik

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<name>{% trans %}Cleanup Document{% endtrans %}</name>
<id>org.inkstitch.cleanup.{{ locale }}</id>
<param name="description" type="description">{% trans %}Use this extension to remove small objects from the document.{% endtrans %}</param>
<param name="rm_fill" type="boolean" _gui-text="{% trans %}Remove Small Fill Areas{% endtrans %}"
_gui-description="{% trans %}Removes areas smaller than dedined by threshold.{% endtrans %}">true</param>
<param name="fill_threshold" type="int" _gui-text="{% trans %}Fill area threshold{% endtrans %}" min="1" max="800">20</param>
<param name="rm_stroke" type="boolean" _gui-text="Remove Small strokes"
_gui-description="{% trans %}Removes small strokes shorter than defined by threshold.{% endtrans %}">true</param>
<param name="stroke_threshold" type="int" _gui-text="{% trans %}Stroke threshold{% endtrans %}" min="2" max="800">5</param>
<param name="extension" type="string" gui-hidden="true">cleanup</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu name="Ink/Stitch">
<submenu name="{% trans %}Troubleshoot{% endtrans %}" />
</submenu>
</effects-menu>
</effect>
<script>
{{ command_tag | safe }}
</script>
</inkscape-extension>