将简单SVG解析为Python的最简单方法,应用所有转换
我想在Inkscape中绘制一些简单的对象(线、圆、矩形),对它们进行分组、移动、缩放、旋转、复制等。然后我需要一些东西,让我将SVG加载到Python中,并迭代所有这些形状,获得相关属性(对于圆:中心和半径;对于直线:两个端点等) 我已经安装并尝试了svg UTIL、PySSVG、svgfig,并阅读了关于inkex的内容,虽然所有这些似乎都允许我以不同程度的笨拙重复XML结构,但据我所知,它们都没有将转换应用于元素。因此,如果我从(0,0)到(1,1)划一条线,将其分组,将其移动到(100100),那么它的XML标记仍然是(0,0)到(1,1),但它的实际位置是通过将其包含组中的转换应用于这些端点来计算的 我不想自己编写所有这些转换应用程序代码,因为那将是重新发明自行车。但我需要帮助找到一辆方便的现有自行车 一个可能有用的方法是找到一个简单格式的导出器,它已经解决了所有这些问题。下面是我发现的一个示例:将简单SVG解析为Python的最简单方法,应用所有转换,python,svg,transformation,Python,Svg,Transformation,我想在Inkscape中绘制一些简单的对象(线、圆、矩形),对它们进行分组、移动、缩放、旋转、复制等。然后我需要一些东西,让我将SVG加载到Python中,并迭代所有这些形状,获得相关属性(对于圆:中心和半径;对于直线:两个端点等) 我已经安装并尝试了svg UTIL、PySSVG、svgfig,并阅读了关于inkex的内容,虽然所有这些似乎都允许我以不同程度的笨拙重复XML结构,但据我所知,它们都没有将转换应用于元素。因此,如果我从(0,0)到(1,1)划一条线,将其分组,将其移动到(1001
但是这里列出的哪种导出格式可能是最简单的?您可以发布一个您想要创建的svg示例,以及您想要的输出是什么吗?您可以使用,因此可以应用转换。@miah输入描述得很充分。输出如下:
{'circles':[(0,0,1),(10,10,1)],‘线’:[((0,0),(10,10)),((1,1),(2,2))]}
。所有不是圆和线的对象都将被忽略。对于圆,描述是中心+半径,对于线,描述是两个端点。@LukasGraf这是一个有趣的想法。他们从组中取出东西的方式,无论这些东西有多深,都是通过剪切然后粘贴。