kopia lustrzana https://github.com/inkstitch/inkstitch
Scale and toggle commands (etc) (#1611)
* scale and toggle commands * fix tie in when first stitch is a jump stitch * set tie modus to 3 for cutwork objects * cutwork set stitch length * fix bug in remove embroidery settingspull/1620/head
rodzic
c575aeda96
commit
7ecfa7a2e6
|
@ -8,6 +8,7 @@ from lib.extensions.troubleshoot import Troubleshoot
|
|||
from .auto_satin import AutoSatin
|
||||
from .break_apart import BreakApart
|
||||
from .cleanup import Cleanup
|
||||
from .commands_scale_symbols import CommandsScaleSymbols
|
||||
from .convert_to_satin import ConvertToSatin
|
||||
from .convert_to_stroke import ConvertToStroke
|
||||
from .cut_satin import CutSatin
|
||||
|
@ -29,6 +30,7 @@ from .lettering_generate_json import LetteringGenerateJson
|
|||
from .lettering_remove_kerning import LetteringRemoveKerning
|
||||
from .letters_to_font import LettersToFont
|
||||
from .object_commands import ObjectCommands
|
||||
from .object_commands_toggle_visibility import ObjectCommandsToggleVisibility
|
||||
from .output import Output
|
||||
from .palette_split_text import PaletteSplitText
|
||||
from .palette_to_text import PaletteToText
|
||||
|
@ -51,8 +53,10 @@ __all__ = extensions = [StitchPlanPreview,
|
|||
Flip,
|
||||
SelectionToPattern,
|
||||
ObjectCommands,
|
||||
ObjectCommandsToggleVisibility,
|
||||
LayerCommands,
|
||||
GlobalCommands,
|
||||
CommandsScaleSymbols,
|
||||
ConvertToSatin,
|
||||
ConvertToStroke,
|
||||
CutSatin,
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
# Authors: see git history
|
||||
#
|
||||
# Copyright (c) 2010 Authors
|
||||
# Licensed under the GNU GPL version 3.0 or later. See the file LICENSE for details.
|
||||
|
||||
from inkex import NSS, Transform
|
||||
|
||||
from .base import InkstitchExtension
|
||||
|
||||
|
||||
class CommandsScaleSymbols(InkstitchExtension):
|
||||
def __init__(self, *args, **kwargs):
|
||||
InkstitchExtension.__init__(self, *args, **kwargs)
|
||||
self.arg_parser.add_argument("-s", "--size", dest="size", type=float, default=1)
|
||||
|
||||
def effect(self):
|
||||
size = self.options.size
|
||||
|
||||
svg = self.document.getroot()
|
||||
command_symbols = svg.xpath(".//svg:symbol[starts-with(@id,'inkstitch_')]", namespaces=NSS)
|
||||
for symbol in command_symbols:
|
||||
transform = Transform(symbol.get('transform')).add_scale(size)
|
||||
symbol.set('transform', str(transform))
|
|
@ -5,14 +5,15 @@
|
|||
|
||||
from math import atan2, degrees
|
||||
|
||||
import inkex
|
||||
from lxml import etree
|
||||
from shapely.geometry import LineString, Point
|
||||
|
||||
import inkex
|
||||
|
||||
from ..elements import Stroke
|
||||
from ..i18n import _
|
||||
from ..svg import get_correction_transform
|
||||
from ..svg.tags import INKSCAPE_LABEL, SVG_PATH_TAG
|
||||
from ..svg.tags import INKSCAPE_LABEL, INKSTITCH_ATTRIBS, SVG_PATH_TAG
|
||||
from .base import InkstitchExtension
|
||||
|
||||
|
||||
|
@ -141,6 +142,8 @@ class CutworkSegmentation(InkstitchExtension):
|
|||
{
|
||||
"style": color,
|
||||
"transform": get_correction_transform(element.node),
|
||||
INKSTITCH_ATTRIBS["ties"]: "3",
|
||||
INKSTITCH_ATTRIBS["running_stitch_length_mm"]: "1",
|
||||
"d": d
|
||||
})
|
||||
self.new_elements.append([stroke_element, sector['id']])
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
# Authors: see git history
|
||||
#
|
||||
# Copyright (c) 2022 Authors
|
||||
# Licensed under the GNU GPL version 3.0 or later. See the file LICENSE for details.
|
||||
|
||||
from inkex import NSS
|
||||
|
||||
from .base import InkstitchExtension
|
||||
|
||||
|
||||
class ObjectCommandsToggleVisibility(InkstitchExtension):
|
||||
|
||||
def effect(self):
|
||||
svg = self.document.getroot()
|
||||
# toggle object commands (in fact it's display or hide all of them)
|
||||
command_groups = svg.xpath(".//svg:g[starts-with(@id,'command_group')]", namespaces=NSS)
|
||||
display = "none"
|
||||
first_iteration = True
|
||||
for command_group in command_groups:
|
||||
if first_iteration:
|
||||
first_iteration = False
|
||||
if not command_group.is_visible():
|
||||
display = "inline"
|
||||
command_group.style['display'] = display
|
|
@ -46,22 +46,21 @@ class RemoveEmbroiderySettings(InkstitchExtension):
|
|||
|
||||
def remove_commands(self):
|
||||
if not self.svg.selected:
|
||||
# we are not able to grab commands by a specific id
|
||||
# so let's move through every object instead and see if it has a command
|
||||
xpath = ".//svg:path|.//svg:circle|.//svg:rect|.//svg:ellipse"
|
||||
elements = find_elements(self.svg, xpath)
|
||||
# remove intact command groups
|
||||
xpath = ".//svg:g[starts-with(@id,'command_group')]"
|
||||
groups = find_elements(self.svg, xpath)
|
||||
for group in groups:
|
||||
group.getparent().remove(group)
|
||||
else:
|
||||
elements = self.get_selected_elements()
|
||||
|
||||
if elements:
|
||||
for element in elements:
|
||||
for command in find_commands(element):
|
||||
group = command.connector.getparent()
|
||||
group.getparent().remove(group)
|
||||
|
||||
if not self.svg.selected:
|
||||
# remove standalone commands
|
||||
standalone_commands = ".//svg:use[starts-with(@xlink:href, '#inkstitch_')]"
|
||||
# remove standalone commands and ungrouped object commands
|
||||
standalone_commands = ".//svg:use[starts-with(@xlink:href, '#inkstitch_')]|.//svg:path[starts-with(@id, 'command_connector')]"
|
||||
self.remove_elements(standalone_commands)
|
||||
|
||||
# let's remove the symbols (defs), we won't need them in the document
|
||||
|
|
|
@ -40,12 +40,12 @@ def stitch_groups_to_stitch_plan(stitch_groups, collapse_len=None, disable_ties=
|
|||
color_block = stitch_plan.new_color_block(color=stitch_group.color)
|
||||
|
||||
# always start a color with a JUMP to the first stitch position
|
||||
color_block.add_stitch(stitch_group.stitches[0], jump=True)
|
||||
color_block.add_stitch(stitch_group.stitches[0], jump=True, tie_modus=stitch_group.tie_modus)
|
||||
else:
|
||||
if (len(color_block) and
|
||||
((stitch_group.stitches[0] - color_block.stitches[-1]).length() > collapse_len or
|
||||
color_block.stitches[-1].force_lock_stitches)):
|
||||
color_block.add_stitch(stitch_group.stitches[0], jump=True)
|
||||
color_block.add_stitch(stitch_group.stitches[0], jump=True, tie_modus=stitch_group.tie_modus)
|
||||
|
||||
color_block.add_stitches(stitches=stitch_group.stitches, tie_modus=stitch_group.tie_modus,
|
||||
force_lock_stitches=stitch_group.force_lock_stitches, no_ties=stitch_group.stitch_as_is)
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<inkscape-extension translationdomain="inkstitch" xmlns="http://www.inkscape.org/namespace/inkscape/extension">
|
||||
<name>Scale Command Symbols</name>
|
||||
<id>org.inkstitch.commands_scale_symbols</id>
|
||||
<param name="extension" type="string" gui-hidden="true">commands_scale_symbols</param>
|
||||
<param name="size" type="float" precision="1" min="0" max="2" gui-text="Size" appearance="full">1.0</param>
|
||||
<effect>
|
||||
<object-type>all</object-type>
|
||||
<effects-menu>
|
||||
<submenu name="Ink/Stitch" translatable="no">
|
||||
<submenu name="Commands" />
|
||||
</submenu>
|
||||
</effects-menu>
|
||||
</effect>
|
||||
<script>
|
||||
{{ command_tag | safe }}
|
||||
</script>
|
||||
</inkscape-extension>
|
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<inkscape-extension translationdomain="inkstitch" xmlns="http://www.inkscape.org/namespace/inkscape/extension">
|
||||
<name>Display|Hide Object Commands</name>
|
||||
<id>org.inkstitch.object_commands_toggle_visibility</id>
|
||||
<param name="extension" type="string" gui-hidden="true">object_commands_toggle_visibility</param>
|
||||
<effect>
|
||||
<object-type>all</object-type>
|
||||
<effects-menu>
|
||||
<submenu name="Ink/Stitch" translatable="no">
|
||||
<submenu name="Commands" />
|
||||
</submenu>
|
||||
</effects-menu>
|
||||
</effect>
|
||||
<script>
|
||||
{{ command_tag | safe }}
|
||||
</script>
|
||||
</inkscape-extension>
|
Ładowanie…
Reference in New Issue