2013-04-07 9 views
13

मैं निर्देशांक/पथ निकालने के लिए पायथन का उपयोग करके एक एसवीजी फ़ाइल को पार्स करना चाहता हूं (मुझे विश्वास है कि यह "पथ" आईडी के तहत सूचीबद्ध है, विशेष रूप से डी = "..." />)। अंततः इस डेटा का उपयोग 2 अक्ष सीएनसी ड्राइव करने के लिए किया जाएगा।पायथन एसवीजी पार्सर

मैंने पुस्तकालयों के लिए एसओ और Google पर खोज की है जो ऐसे पथों की स्ट्रिंग वापस कर सकते हैं ताकि मैं इसे आगे बढ़ा सकूं, लेकिन इसका कोई फायदा नहीं हुआ। क्या ऐसी पुस्तकालय मौजूद है?

उत्तर

18

की उपेक्षा रूपांतरण, तुम इतनी तरह एक एसवीजी से पथ तार निकाल सकते हैं:

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

आप जब परिवर्तनों महत्वपूर्ण हैं के लिए किसी भी सुझाव है? – Veech

+0

@Vech: यदि कोई परिवर्तन है, तो यह शायद महत्वपूर्ण है। दुर्भाग्य से उन्हें संभालने के लिए * बहुत * अधिक कोड लगता है। – icktoofay

+1

हाँ, मुझे यह एहसास हुआ है। मैंने पाया है कि [cjlano's svg repo] (https://github.com/cjlano/svg) पर्याप्त होने के लिए (कुछ संशोधनों के साथ)। – Veech

4

डी-स्ट्रिंग हो रही एक लाइन में किया जा सकता है या दो svgpathtools का उपयोग कर।

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

रास्तों svgpathtools पथ वस्तुओं (सिर्फ वक्र की जानकारी, कोई रंग, शैली, आदि से युक्त) की एक सूची है। गुण प्रत्येक पथ के गुणों को संग्रहीत संबंधित शब्दकोश वस्तुओं की एक सूची है।

, कहते हैं, बाहर तो डी-तार मुद्रित करने के लिए ...

for k, v in enumerate(attributes): 
    print v['d'] # print d-string of k-th path in SVG 
संबंधित मुद्दे