我正在制作显微镜滤镜生成器,首先绘制svg图像,然后将它们转换为3D以进行3D打印.
我用'svgwrite'
然而,这个librayry生成svg与形状(线,圆等),当时我不知道,但每个3D转换librayry /软件需要svg包含路径.
是否有一个librayry生成带路径的svg文件(但允许我在脚本中轻松绘制圆圈,线等?)
或者有没有办法将这些svg形状转换为svg路径?
我当前svg的形状示例:
<?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>
Run Code Online (Sandbox Code Playgroud)
谢谢.
PS:请注意我必须这样做,因为我打算生成很多过滤器.
我已经根据自己的需要编写了一些东西,以使用 SVG 元素处理一些类似的任务,例如评估边界框、转换等。因此,这个任务对于我来说实现这样的转换似乎相对简单。您所需要的只是了解“d”属性由哪些路径组成 - 实际上有一系列直线、椭圆弧和贝塞尔曲线(您甚至不需要最复杂的后者)。如果您对此自定义感兴趣,请参阅此有用的教程 - http://tutorials.jenkov.com/svg/path-element.html
\n\n但是当我开始回答你时,我发现了一个最近可用的库,它似乎完全适合你的需求。
\n\n可以使用“pip install svgpathtools”(请参阅那里的手册)\xe2\x80\x94 https://pypi.python.org/pypi/svgpathtools/
\n\n因此,您最初可能会创建高级对象,例如
\n\nLine(start, end)\nArc(start, radius, rotation, large_arc, sweep, end) \n# See docstring for a detailed explanation of these parameters, \n# but you\'re definetely able to create cirlces that way\nRun Code Online (Sandbox Code Playgroud)\n\n然后从它们中创建一个高级 Path 对象
\n\npath = Path(*segemnts) # segments are decribed above - Line(), Arc(), etc\nRun Code Online (Sandbox Code Playgroud)\n\n现在,您可以获取 path.d() 字符串,并使用所需的属性(笔画、笔划宽度等)构建 XML 表示形式,因为主 svg 路径数据完全存储在“d”属性中,该属性的值你已经有了。
\n\n此外,您提到的svgwrite lib 也已经提供了一种构建 XML 表示的方法
\n\nsvgwrite.path.Path(d=path.d(), stroke=\'black\', **extra) \n# **extra is every other common SVG attribute as keyword arguments\nRun Code Online (Sandbox Code Playgroud)\n\n甚至可能svgpathtools本身也有它(我还没有想到它的所有优点)
\n\n如果还有什么问题没有得到解答,请在评论中询问我。
\n| 归档时间: |
|
| 查看次数: |
1914 次 |
| 最近记录: |