2013-04-07 12 views
13

Voglio analizzare un file SVG usando python per estrarre coordinate/percorsi (credo che questo sia elencato sotto l'ID "percorso", in particolare d = "..." />). Questi dati verranno infine utilizzati per pilotare un CNC a 2 assi.parser SVG Python

Ho cercato su SO e Google per le librerie in grado di restituire la stringa di tali percorsi in modo da poter ulteriormente analizzare, ma senza alcun risultato. Esiste una tale biblioteca?

risposta

18

Ignorare trasforma, è possibile estrarre lo stringhe di percorso da uno SVG in questo modo:

from xml.dom import minidom 

doc = minidom.parse(svg_file) # parseString also exists 
path_strings = [path.getAttribute('d') for path 
       in doc.getElementsByTagName('path')] 
doc.unlink() 
+1

Hai qualche suggerimento per quando le trasformazioni sono importanti? – Veech

+0

@Veech: se c'è una trasformazione, è probabilmente importante. Sfortunatamente ci vuole un * lotto * di codice in più per gestirli. – icktoofay

+1

Sì, sono arrivato a rendermene conto. Ho scoperto che [cjlano's svg repo] (https://github.com/cjlano/svg) è abbastanza buono (con alcune modifiche). – Veech

4

Ottenere il d-stringa può essere fatto in una o due righe utilizzando svgpathtools.

from svgpathtools import svg2paths 
paths, attributes = svg2paths('some_svg_file.svg') 

percorsi è una lista di oggetti svgpathtools percorso (che contengono solo le informazioni della curva, senza colori, stili, ecc). attributi è un elenco di oggetti dizionario corrispondenti che memorizzano gli attributi di ciascun percorso.

, per esempio, stampare le D-stringhe poi ...

for k, v in enumerate(attributes): 
    print v['d'] # print d-string of k-th path in SVG