Zeichnung Svg in Python mit Pfaden nicht Formen oder konvertieren sie

9

Ich mache einen Mikroskop-Filter-Generator, zuerst zeichnet er Svg-Bild, dann werden sie in 3D für 3D-Druck konvertiert.

Ich habe 'svgwrite'

verwendet

Allerdings generiert diese Bibliothek SVG mit Formen (Linie, Kreis, usw.), zu der Zeit, wusste ich nicht, aber jede 3D-Konvertierung librayry / Software benötigt die Svg Pfad enthalten.

Gibt es eine Bibliothek, die Svg-Dateien mit Pfad generiert (aber erlauben Sie mir im Skript, leicht Kreise, Linien usw. zu zeichnen?)

Oder gibt es eine Möglichkeit, diese SVG-Form in SVG-Pfad zu konvertieren?

Beispiel meiner aktuellen Svg mit Form:

%Vor%

Danke.

PS: Beachten Sie, dass ich das programmatisch machen muss, weil ich viele Filter erzeugen möchte.

    
sliders_alpha 26.08.2016, 11:29
quelle

2 Antworten

3

Ich habe schon einige Sachen für meine eigenen Bedürfnisse geschrieben, um einige ähnliche Aufgaben mit SVG-Elementen zu bearbeiten, wie zum Beispiel das Auswerten von Bounding-Boxen, Transformationen und so weiter. Daher scheint diese Aufgabe für mich relativ einfach zu sein, eine solche Umwandlung zu implementieren. Alles, was Sie dafür brauchen, ist nur das Wissen darüber, aus welchen Pfaden das "d" -Attribut besteht - es gibt tatsächlich eine Liste von Linien, Ellipsenbögen und Bezierkurven (Sie brauchen nicht einmal die kompliziertesten letzteren). Sehen Sie sich dieses nützliche Tutorial an, wenn Sie an einer Anpassung dieser - Ссылка

interessiert sind

Aber als ich angefangen habe, Sie zu beantworten, habe ich eine kürzlich fertiggestellte Bibliothek gefunden, die perfekt auf Ihre Bedürfnisse zugeschnitten ist.

Es ist verfügbar mit "pip install svgpathtools" (siehe Handbuch dort) - Ссылка

Sie können also anfänglich High-Level-Objekte wie

erstellen %Vor%

Und dann mache einfach ein high-level Path-Objekt von ihnen

%Vor%

Jetzt können Sie die Datei path.d () abrufen und einfach eine XML-Repräsentation mit den gewünschten Attributen (Strich, Strichbreite usw.) erstellen, da die wichtigsten Svg-Pfaddaten genau im Attribut "d" gespeichert sind , welchen Wert Sie bereits haben.

Außerdem bietet Ihre referenzierte svgwrite -Bibliothek bereits eine Möglichkeit zum Erstellen einer XML-Darstellung

%Vor%

Wahrscheinlich sogar die svgpathtools selbst hat es (ich habe noch nicht alle Vorteile daraus gezogen)

Frag mich bitte im Kommentar, wenn noch etwas unbeantwortet ist.

    
Nikolay Prokopyev 02.09.2016, 20:46
quelle
0

Linie und Kreis haben eine direkte Übersetzung in eine Path-Entität mit MoveTo / LineTo / EllipticalArc.

Es sollte nicht so einfach sein, diese Zeilen in der Xml-Quelle zu ersetzen und den Rest mit einem selbst erstellten Skript zu behalten.

    
Yves Daoust 29.08.2016 12:35
quelle

Tags und Links