Massenänderung Füllmuster
  • Frank April 24
    Hallo zusammen,
    gibt es eine Möglichkeit zur Massenänderung bei Füllmustern?

    Zum
    Hintergrund: Ich habe in einer Datei eigentlich nur 4 Füllmuster nötig.
    Vermutlich durch Strecken von Objekten mit Füllmustern sind davon
    etliche Kopien entstanden mit den gestreckten Mustern. Da es hunderte
    von Objekten sind, die sich auch nicht räumlich auswählen lassen, suche
    ich nach einer Möglichkeit, alle Objekte mit Füllmuster "rot-5-4" in
    Füllmuster "rot" zu ändern.

    Vielen Dank für eure Unterstützung.

    (Version 0.92.3; die Datei ist auch schon von Vorversionen bearbeitet worden)

    Freundliche Grüße

    Frank
  • Moini April 25
    Inkscape hat einen Suchen-Dialog: Strg+F
    Damit kannst Du alle entspr. Objekte finden, sie sind dann ausgewählt und Du kannst auf alle dasselbe Muster anwenden.

    Oder Du öffnest die Datei mit einem Texteditor, und suchst+ersetzt (bitte nicht innerhalb der tags, sondern erst danach).
  • Frank April 25
    Hallo Moini,

    vielen Dank für die Tipps.
    Mit dem Suchen-Dialog schaffe ich es nicht nach allen Füllmusterbezeichnung zu suchen.
    Das Füllmuster "wbraun" findet inkscape, das Füllmuster "wbraun-4-4-5-9" nicht, obwohl es genau so im Text der SVG-Datei steht. Werden evtl. die Minuszeichen anders interpretiert?

    Den zweiten Ansatz habe ich auch ausprobiert, da ich mir aber nicht sicher war, habe ich ein Füllmuster (wbraun-4-4-5-9) von einem Objekt in inkscape verändert (in wbraun) und mir die Änderung in der Datei angesehen.

    Entfernt wird:
        <pattern
           inkscape:collect="always"
           xlink:href="#pattern8309-1-1-60-1"
           id="pattern8822-6-5"
           patternTransform="matrix(1,0,0,0.25640533,17716.538,9835.0418)" />
        <pattern
           inkscape:collect="always"
           xlink:href="#pattern7757-7-5-2-1"
           id="pattern8309-1-1-60-1"
           patternTransform="matrix(1,0,0,6.8460194,12082.678,-135863.11)" />
        <pattern
           inkscape:collect="always"
           xlink:href="#wbraun-4-4-5-9"
           id="pattern7757-7-5-2-1"
           patternTransform="matrix(1,0,0,8.3364867e-3,460.63007,21755.158)" />

    geändert wird:
    <rect
           style="display:inline;fill:url(#pattern8822-6-5);fill-opacity:1;stroke:none;stroke-width:0.19352829"
     
    zu:
    <rect
           style="display:inline;fill:url(#wbraun);fill-opacity:1.0;stroke:none;stroke-width:0.19352829"

    Wenn ich das richtig interpretiere ist rect das Zeichenobjekt und pattern die Definition der Muster.

    Ich hätte jetzt erwartet ein Zeichenobjekt mit der Eigenschaft "wbraun-4-4-5-9" zu finden.
    Hier sieht es aber ehr nach einer Art "Verweiskette" aus.
    Ist das richtig, wie ich mir das vorstelle?
    Falls ja, wie soll ich denn an die Eigenschaft "pattern8822-6-5" kommen, denn die hätte ich ja dann austauschen müssen?

    Sorry für die vielen Fragen, aber mir ist das noch nicht klar.

    Vielen Dank und freundliche Grüße

    Frank


  • Kannst Du nicht eines auswählen und über Kontext-Menu: Das Gleiche auswählen->Füllfarbe alles erwischen und dann in einem Zug ändern?

    Gruß
    Frank
    image
    453 x 456 - 41K
  • Frank April 25
    Hallo Namenvetter,

    das funktioniert gut. Da ich aber noch ettliche Muster über habe und nicht weiß, wo die Objekte liegen (sehen zu ähnlich aus) wäre es gut nach einem Muster suchen zu können.

    Am besten wäre ein regulärer Ausdruck alles was mit "wbraun" beginnt und dem dann - und Ziffern folgen, wie
    "wbraun-4-4-5-9", "wbraun-4-4" usw. in "wbraun" ändern. Ich weiß aber nicht, ob so etwas geht und die Fälle mit "pattern7757-7-5-2-1" sind natürlich nicht sprechend.

    Vielen Dank für den Tipp und freundliche Grüße

    Frank
  • Moini April 25
    @Frank

    Die Muster, die entfernt werden, sind jeweils abgeleitete Muster von anderen Mustern. Das erkennst Du daran, dass dort keine eigentlichen Musterdaten enthalten sind, sondern nur ein 'patternTransform' (zeigt an, wie das Muster verformt worden ist) und ein 'xlink:href' (linkt zum übergeordneten Muster).
    Das kann eine ganze Kette von Verlinkungen haben, bis zum eigentlichen Muster, was recht unübersichtlich und lästig ist.

    Läst sich vermeiden, wenn:
    - Muster nicht mit dem Knotenwerkzeug manipuliert werden, und
    - Objekte nicht mit absoluten Koordinaten gespeichert werden bzw.
    - nicht gequetscht/gestaucht/verschoben werden sondern nur mittels Knotenwerkzeug bearbeitet werden...
    - Und wenn Du Objekte nicht duplizierst.
    - Und die Option 'Füllmuster mit Objekten verschieben' in den Optionen für das Auswahlwerkzeug (ganz rechts in dess Werkzeugeinstellungsleiste) deaktivierst.

    Sobald ein Muster auf welche Art auch immer irgendwie verschoben wird, wird eine neue Definition angelegt, die nur die Verschiebung/Verformung enthält, und ansonsten auf das übergeordnete Muster verweist.

    Was Du tun musst, ist:

    - für die betroffenen Objekte die 'fill:url(#wbraun)' setzen
    - die betroffenen Objekte hinterher nicht mehr bewegen... oder verformen

    Ich glaube, ich würde das wirklich über einen Texteditor mit Suchfunktion für reguläre Ausdrücke machen:

    ersetze
    url\(#wbraun.*\)

    durch

    url(#wbraun)

    Kannst dabei jeden einzelnen nochmal überprüfen vorher.

    Es mag sein, dass Du so einige Objekte nicht erwischst, falls die, wie das Rechteck aus dem Beispiel, gar kein 'wbraun-2-3' oder ähnlich in ihren Stileigenschaften enthalten.

    Meine Suche findet auch Teile von Eigenschaften - ich hatte nun allerdings auch keine mit - in der Datei zum Testen.


  • Frank April 27
    Vielen Dank für die wertvollen Tipps.

    Ich habe in einem Texteditor über reguläre Ausdrücke alle direkten Muster geändert.
    Um die abgeleiteten Muster zu ändern habe ich inkscape verwendet, das ist einfacher, wenn die Datei 2MB groß ist.
    Da man nach den Mustern mit einem "-" im Namen anscheinend nicht suchen kann, habe ich einem schon richtig gefüllten Rechteck die zu ändernde Füllung zugewiesen dann "Gleiche markieren nach Füllfarbe" und dann allen die richtige Füllung zugewiesen.
    Das "Säubern der Definitionen" hat dann auch die überflüssigen Muster entfernt und die Dateigröße ordnetlich reduziert.

    Gut sind die Erklärungen, wie es zu diesen abgeleiteten Mustern kommt.
    Mit Duplizieren habe ich sehr viel gearbeitet, da es sich um eine Gruppe von 8 "verschiedenfarbigen" Rechtecken handelt, die sich so immer wiederholen, nur an anderer Position und anderer Ausrichtung.
    Ich hätte also besser eine Farbe statt eines Musters verwendet, da dabei die Probleme nicht auftauschen.

    Die Muster werden mir bei starkem Zoomen auch nicht mehr angezeigt. Da sie aber unterschiedlich "verschwinden" Frage ich mich wovon das anhängt?
    Gerade wenn ich mir die Details ansehe wären sie wichtig. Leider werden beim Export in ein png die Muster auch nicht alle exportiert. Es scheint sehr von der Auflösung ab zu hängen.
    Gibt es eine Lösung dafür?

    Vielen Dank und einen schönen Tag

    Frank
  • Moini April 27
    Richtig, bekannter Fehler, der leider als 'repariert' markiert wurde...
    https://bugs.launchpad.net/inkscape/+bug/1465753

    Du kannst Dich ja mit mir mit beschweren, oder besser, einfach einen neuen Fehlerbericht öffnen und darin den obigen verlinken...

    Workaround:
    Der Musterursprung muss möglichst *im* gemusterten Objekt liegen.

    Problem dabei:
    Das Verschieben des Musterursprungs erzeugt ein abgeleitetes Muster.

    Lösung:
    ?
  • Vielen Dank für die Antwort.

    Der Workaround ist für mich keine Lösung, dafür sind es einfach zu viele Objekte.
    Dann werde ich die Muster durch Farben ersetzten, die lassen sich beliebig zoomen.

    Viele Grüße

    Frank

Hey Fremder!

Sieht so aus als wenn du neu hier bist. Wenn du mitmachen willst, drücke einen dieser Buttons!

In dieser Diskussion