2016-08-26 22 views
9

Ben bir mikroskop filtre üreteci yapıyorum, önce svg görüntü çizer sonra 3d baskı için 3D dönüştürülür. I 'svgwrite'python çizim svg şekilleri veya dönüştürmek yolu ile

kullanılan

Bununla birlikte, bu librayry şekillerde (, dairesel, vs) SVG'yi oluşturur zamanda biliyorum değil ama her 3D dönüştürme librayry/yazılımları yolunu içeren SVG'yi gerekmektedir.

yolu ile svg dosyaları üreten bir librayry var mı (ancak, kolayca çevreler, çizgiler çizmek için komut bana izin vs?)

Veya yolunu svg olanlar svg şeklini dönüştürmek için bir yol var? şekli ile benim şimdiki SVG

örnek:

<?xml version="1.0" encoding="utf-8" ?> 
<svg baseProfile="tiny" height="100%" version="1.2" width="100%" xmlns="http://www.w3.org/2000/svg" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:xlink="http://www.w3.org/1999/xlink"> 
<defs /> 
<circle cx="270" cy="270" fill="white" r="135.0" stroke="black" stroke-width="10" /> 
<circle cx="270" cy="270" r="25.0" /> 
<line stroke="black" stroke-width="10" x1="270" x2="270" y1="270" y2="135.0" /> 
<line stroke="black" stroke-width="10" x1="270" x2="405.0" y1="270" y2="347.9423" /> 
<line stroke="black" stroke-width="10" x1="270" x2="135.0" y1="270" y2="347.9423" /> 
</svg> 

teşekkürler.

Not: Bu programı yapmak zorunda olduğumdan dolayı çok fazla filtre üretmeyi planlıyorum.

cevap

3

Kendi gereksinimlerim için SVG öğeleriyle, sınırlayıcı kutuların, dönüştürmelerin ve benzerlerinin değerlendirilmesi gibi bazı benzer görevleri işlemek için bazı şeyler yazdım. Böylece, bu görev benim için böyle bir dönüşüm uygulamak için nispeten basit görünüyor. İhtiyacınız olan tek şey, yalnızca "d" özniteliğinin hangi yollardan oluştuğu bilgisidir - aslında bir çizgi, elctiv yay ve bezier eğrileri listesi vardır (hatta en karmaşık dizilere bile ihtiyacınız yoktur). Bu özel eğitimle ilgileniyorsanız, bu yararlı öğreticiye bakın - http://tutorials.jenkov.com/svg/path-element.html

Ancak, size cevap vermeye başladığımda, gereksinimlerinize tam olarak uyan, kullanıma hazır bir kitaplık buldum.

Line(start, end) 
Arc(start, radius, rotation, large_arc, sweep, end) 
# See docstring for a detailed explanation of these parameters, 
# but you're definetely able to create cirlces that way 

gibi, başlangıçta üst düzey nesneleri oluşturabilir, Yani https://pypi.python.org/pypi/svgpathtools/

Ve sonra sadece bir yüksek yapmak -

O "svgpathtools yüklemek pip" seçeneğini kullanarak geçerli (manuel orada bakınız) onlardan düzey Yolu nesne

path = Path(*segemnts) # segments are decribed above - Line(), Arc(), etc 

Şimdi, path.d() dize almak ve tek yapmanız gereken nitelikler (inme kullanarak bir XML gösterimini oluşturmak edebiliyoruz ana svg yolu verisi tam olarak "d" niteliğinde saklandığından, hangi değere sahip olduğunuzdan, strok genişliği vb.Ayrıca

, senin sevk svgwrite lib da zaten kendisi (Henüz tüm bu avantajlara çözemedi)

o vardır XML için bizzat

Muhtemelen
svgwrite.path.Path(d=path.d(), stroke='black', **extra) 
# **extra is every other common SVG attribute as keyword arguments 

bile svgpathtools inşa etmek için bir yol sağlar

Bir şey hala yanıtlanmadıysa lütfen yorum yapın.

+0

Bu harika, teşekkürler. –

0

Çizgi ve Daire, MoveTo/LineTo/EllipticalArc kullanarak bir Yol öğesinin basit bir çevirisine sahiptir. Bu satırları Xml kaynağında değiştirmek ve geri kalanını ev yapımı bir komut dosyasıyla tutmak çok önemli olmamalıdır.