Ich habe eine Weile damit zu kämpfen und kann anscheinend nirgendwo eine Antwort finden (die funktioniert). Ich habe eine SVG-Datei, die so aussieht:
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
...
width="72.9375"
height="58.21875"
...>
...
<g
...
transform="translate(10.75,-308.96875)"
style="...">
<path
inkscape:connector-curvature="0"
d="m -10.254587,345.43597 c 0,-1.41732 0.17692,-2.85384 0.5312502,-3.5625 0.70866,-1.41733 2.14518,-2.82259 3.5625,-3.53125 1.41733,-0.70866 2.11392,-0.70867 3.53125,0 1.41732,0.70866 ... z"
... />
</g>
</svg>
Ich möchte die transform="..."
Linie entfernen , aber mein Bild bleibt dort, wo ich es platziert habe (in InkScape). Wenn ich die Transformation manuell entferne, wird das Bild (wie erwartet) auf einen anderen Teil des Bildschirms verschoben, aber ich muss die Transformation vollständig entfernen und gleichzeitig das Bild genau dort belassen, wo ich es haben möchte. Gibt es eine Möglichkeit, die Transformationen in die Pfadkoordinaten selbst zu entfernen / zu reduzieren? (Die einzigen Transformationen, mit denen ich mich befassen muss, sind Übersetzen und Skalieren, keine Matrizen.)
Antworten:
So entfernen Sie Transformationen in Inkscape
So verschieben Sie alle Objekte insgesamt, ohne weitere Transformationsattribute zu erstellen
Gehen Sie zu Objekt -> Transformieren
Im Transformationsbedienfeld
Deaktivieren Sie Relative Verschiebung und aktivieren Sie die Option Auf jedes Objekt separat anwenden
quelle
Ich habe herausgefunden, wo das Problem liegt. Ich hatte gehofft, nicht auf Roberts Antwort zurückgreifen zu müssen, obwohl ich mich über die Bestätigung freue, dass es funktionieren würde! Am Ende war Duopixels Antwort tatsächlich die nächste, obwohl sich herausstellte, dass noch etwas anderes vor sich ging.
Wenn Sie in Inkscape-Dokumenten mit unterschiedlichen Pfaden arbeiten, besteht das Standardverhalten meiner Meinung nach darin, sie unter einem
<svg:g.../>
Tag zusammenzufassen. Beim Ändern von Pfaden in einer Gruppe fügt Inkscape der Gruppe automatisch eine Transformation hinzu, um diese Änderungen darzustellen. Wenn Sie jedoch den XML-Editor öffnen und Ihren Pfad außerhalb des<svg:g.../>
Tags ziehen und ihn zu einem eigenen<svg:path.../>
Tag machen, kann Inkscape die einzelnen Punkte nach Belieben bearbeiten. Am Ende stellte sich heraus, dass es sich um ein Gruppierungsproblem handelte, obwohl ich nur mit einem Pfad arbeitete! Hoffe das hilft anderen in ähnlichen Situationen.quelle
quelle
Es gibt eine inkscape-Erweiterung namens Transformationen anwenden , die Pfade mit ihren Transformationen neu berechnet. Genau das habe ich gesucht.
Nach der Installation finden Sie das Menü unter Erweiterungen> Pfad ändern> Transformieren anwenden .
Credits: Inkscape-Forum> Entfernen Sie alle Transformationen, während Sie an Ort und Stelle bleiben
quelle
Für Gruppen kann die Umgruppierung die Arbeit schnell erledigen. Wählen Sie die Gruppe aus und drücken Sie Strg + Umschalt + G (Degroup) und dann Strg + G (Gruppe).
Bei einigen Objekten mit einem ähnlichen Problem, z. B. Spiralen und Sternen, können Sie schnell Strg + Alt + C (Strich zu Pfad) drücken. Dadurch wird das Objekt jedoch in einen reinen Pfad konvertiert und alle zusätzlichen Attribute werden entfernt. wie Sodipodi: cx, Sodipodi: Revolutionen und so weiter.
quelle
Öffne dein SVG auf Inkscape :
Auf diese Weise werden Sie die auf die Gruppe angewendeten Transformationen entfernen und sie werden auf die Pfade übertragen, die in dieser Gruppe enthalten sind.
quelle
Wenn Sie Inkscape verwenden, reicht es meiner Erfahrung nach aus, das Pfadelement leicht zu verschieben (z. B. mit den Cursortasten), und Inkscape löscht das Transformationsattribut und passt die Pfaddaten entsprechend an. (Ärgerlich, wenn Sie das Transformationsattribut tatsächlich beibehalten möchten.)
Sie können also einfach den Pfad auswählen (stellen Sie sicher, dass es sich um den Pfad und nicht um die umgebende Gruppe handelt), die rechte und die linke Cursortaste drücken und fertig.
quelle
<g>
und ich die Transformation auf der beibehalten möchte<g>
.Ich bevorzuge Inkscape, Affinity Designer hat mir (~ $ 40 / Mac) Stunden bei der Arbeit mit Android Vector Drawables erspart.
Öffnen Sie eine SVG, Datei -> Exportieren -> SVG -> Mehr -> Transformationen reduzieren hat hervorragend funktioniert.
quelle
SVGO ist ein hervorragendes Open-Source-Befehlszeilentool für diese und eine Reihe anderer Optimierungen. Es gibt eine ebenso hervorragende Online-Web-Benutzeroberfläche namens SVGOMG
Die relevanten Optionen sind in diesem Fall
moveGroupAttrsToElems
(SVGOMG:Move group attrs to elements
) zu bewegentransform
Attribute von Gruppen Pfadelemente plusconvertPathData
(SVGOMG:Round/rewrite paths
) abzuflachentransform
ind
.quelle
Es sollte erwähnt werden, dass es in den Einstellungen den "Optimierten" Modus gibt:
Inkscape-Einstellungen> Transformationen> Speichertransformation> Optimiert
Was das Auftreten von
transform
Attributen so weit wie möglich minimieren soll (aber nicht).Dies scheint ohnehin standardmäßig aktiviert zu sein.
Laut einer Diskussion ist ein Fall, in dem diesem optimierten Modus der Eifer fehlt, die Größenänderung der Seite . Dadurch wird eine
translate
Transformation auf das Ebenenelement angewendet<g>
. Es scheint, dass die Evakuierung der Kinder in eine andere Schicht derzeit die beste Lösung ist.quelle
translate
auf jeder Ebene störende Transformationen zu erstellen , öffnen Sie die.svg
Datei in einem Texteditor und bearbeiten Sie die oben angezeigten Attribute für Höhe und Breite.Inkscape hat die Option, die Transformationsdaten zu löschen, den Wert des Objekts jedoch unverändert zu lassen.
Wählen Sie in Inkscape das Objekt und das Menü "Pfad" "Vereinfachen". Jetzt werden die Transformationen entfernt.
quelle
In diesem Fall addieren Sie einfach die Übersetzung zu den m-Werten für jedes Kind, also -10,254587 + 10,75 = -0,504587 und -308,96875 + 345,43597 = 36,46722.
Da alle Begriffe im Beispiel relativ sind (dh Kleinbuchstaben), ist das alles. Wenn irgendwelche absolut (Großbuchstaben) wären, z. B. M oder C, müssten sie ebenfalls angepasst werden.
Für die Skalierung würden Sie grundsätzlich alle untergeordneten Werte mit der Skalierung multiplizieren.
quelle
Um das Transformationsattribut aus einem
g
Element (einer Gruppe) in Inkscape zu entfernen , können Sie die Gruppe an ihren endgültigen Platz verschieben, die Gruppierung aufheben und dann alle Elemente neu gruppieren. Jetzt wurde eine neue Gruppe erstellt. Wenn Sie sie nicht erneut verschieben, wird ihr kein Transformationsattribut zugeordnet.quelle
quelle
<g>
mit demtransform
Attribut bleibt so wie es war. Auch mein Objekt (genau wie das in der Frage hier gezeigte) ist bereits ein Pfad.Wenn hier jemand landet und in Sketch 3 nach einer Lösung sucht, wählen Sie die Ebene aus und klicken Sie dann auf Ebene-> Pfade-> Reduzieren.
quelle
Fand es:
*: Oder platzieren Sie die Objekte zumindest dort, wo Sie sie benötigen, relativ zur oberen linken Ecke der Seite. Es ist bedauerlich, dass SVG-Koordinaten auf die obere linke Ecke verweisen, während Inkscape die Größe der Seite relativ zur unteren linken Ecke ändert!
quelle
Ich konnte eine
matrix(...)
Transformation (aufgrund von Spiegelung) entfernen, indem ich den Pfad mit einem Rechteck kombinierte und dann die Knoten des Rechtecks entfernte. Dertranslate(...)
Teil blieb jedoch.quelle
In meinem Fall hat das Speichern als optimiertes SVG das Problem gelöst. Verwenden Sie also in Inkscape:
Datei -> Speichern unter ... -> Optimierte SVG.
quelle
transform
Attribut von Android Studio nicht unterstützt wird.Dies funktioniert, wenn Sie Inkscape verwenden:
In allen Fällen, die ich versucht habe, wurden dadurch alle Transformationsattribute entfernt. Ich bin mir nicht sicher, ob es für komplexere SVG funktioniert.
quelle
Ich habe die hier veröffentlichte Lösung ausprobiert, nämlich die Gruppen-Tags in der SVG-Datei zu entfernen und in Inkscape (in meinem Fall 0.48.3.1) erneut zu öffnen. Leider wurden die Gruppen-Tags wieder angezeigt, nachdem ich die Pfade erneut im Auswahl- und Transformationsmodus (F1) übersetzt und gespeichert hatte! Inkscape speichert alle auf den Pfad angewendeten Transformationen in einem umgebenden Gruppenelement. Wenn Sie nicht das Pfadknoten-Auswahlwerkzeug (F2) verwenden, drücken Sie Strg + a und verschieben Sie die Knoten des Pfads an die richtige Stelle. Nachdem ich dies stattdessen getan und danach gespeichert hatte, fügte Inkscape die Gruppen-Tags nicht hinzu, da diese Übersetzung direkt auf das Pfadmodell angewendet wurde. Hoffe das hilft.
quelle
In meinem Fall werden die Gruppen tatsächlich durch Ebenen verursacht. Durch das Löschen aller Ebenen im Dokument wurden die Gruppe und die Transformation entfernt (möglicherweise kombiniert mit dem Aufheben der Gruppierung von Objekten und dem Umgruppieren von Objekten usw. wie unter Entfernen von Transformationen in SVG-Dateien (Antwort-35490189 von @Charlie oben)).
quelle
Mein spezifisches Problem waren Symbole, die außerhalb der Seite definiert wurden, sodass eine Transformation auf der Seite angezeigt werden musste.
Um die Symbole auf die Seite zu verschieben, ohne dass eine Transformation erforderlich ist, musste ich in Inkscape die folgenden Schritte ausführen:
quelle
Dies scheint zufällig zu sein, aber nichts anderes, was ich versucht habe, hat funktioniert, also gehst du zufällig zu einer anderen Person. Einige meiner Pfade hatten eine Art Rand, der nur bei der Auswahl sichtbar war ( ). Ich denke, dies wurde erstellt, als ich eine Ebene aus einer anderen Inkscape-Datei eingefügt und um 90 Grad gedreht habe. Dies führte dazu, dass eine Musterfüllung auf den Formen eine andere Transformation aufwies (Linien, die weiter voneinander entfernt waren). Außerdem wurden Ausrichtungsobjekte nicht wie erwartet ausgeführt. Die Verwendung der von @Piotr_cz erwähnten Apply Transform hat das Transformationsproblem behoben, aber der seltsame Rand blieb bestehen. Ich habe es versehentlich beseitigt, indem ich die Unschärfe beim Strich auf einen beliebigen Wert geändert und wieder auf Null gesetzt habe.
quelle
Irgendwie hatte ich mit keinem der Ansätze Glück. Wenn es
<defs>
in Ihrem SVG einen Abschnitt gibt und solche Verwendungen:Möglicherweise müssen Sie alle Verwendungen löschen und alles aus dem Abschnitt defs entfernen. Dann können Sie inkscape verwenden, um alles richtig zu platzieren und dann Transformationen mit dem genannten Plugin anzuwenden. Hoffe es hilft jemandem.
quelle
Ich habe dieses Problem seit Jahren. Die Lösung besteht eindeutig darin, dynamisch mit Transformationen im Browser spielen zu können, wenn dies in inkscape nicht "behoben" wird.
Ein Benutzer Mc in den Inkscape-Foren gab mir diese Lösung .
Die Lösung erstellt die aktuelle Transformation zwischen einem SVG-Element und seinem SVG-Stammelement und gibt dann einen vollständigen Satz von BBox-Informationen basierend auf der Summe der Transformationen zurück.
Es wäre auch möglich, leicht zu ändern, auf welches Element sich die Berechnungen beziehen, wenn Sie im Browser zwischen zwei Teilen derselben SVG-Datei arbeiten möchten.
Endlich kann ich tatsächlich ein schwenkbares SVG-Ansichtsfenster haben.
quelle
Inkscape 1.0 auf Kubuntu 20.04
Obwohl dieser Thread ziemlich alt ist, möchte ich meine Erfahrungen / Lösungen veröffentlichen. Ich bin auf dieses Problem gestoßen, als ich versucht habe, eine Vorlage für die TechDrawing-Workbench von FreeCAD zu erstellen. Diese Vorlagen dürfen keine Transformationen enthalten.
In meinem Fall musste ich ein Firmenlogo aus einer externen .svg-Datei hinzufügen (vollständig mit Inkscape erstellt). Dieses Logo enthält sowohl Grafik- als auch Textelemente. Beim Kopieren dieses Logos in die Vorlage wurden Transformationen erstellt, die dazu führten, dass die Vorlage in FreeCAD nicht richtig funktionierte.
Erstens funktioniert diese auf www.freecadweb.org / ... vorgeschlagene Lösung bei mir nicht. Deshalb habe ich im Internet gesucht und diese Diskussion gefunden.
Zweitens hat keine der oben vorgeschlagenen Lösungen für mich funktioniert, aber sie haben mich auf den richtigen Weg gebracht. Charlies Antwort kam nahe, aber Objekt> Transformieren> Relative Bewegung deaktivieren> Anwenden zeigte keinen Unterschied.
Was für mich funktioniert hat war:
Funktioniert gut, wenn ich diese Vorlage in FreeCAD verwende.
Ein seltsames Detail: Obwohl meine Lösung besagt, dass Textelemente in meinem Fall das Problem waren, kann es nicht so einfach sein. Tatsächlich enthält das Basisdokument (das, in das ich das Logo kopiert habe) viele Textelemente, und ich habe keines davon konvertiert. Es könnte sich also um die Kombination von "externer Quelle" und Textelementen handeln. Ich poste dieses Detail lediglich als Hinweis für andere, die möglicherweise damit verbundene Probleme haben.
quelle