我在Inkscape中制作了一个矢量图形,包括层和子层,以便在Processing中进一步使用。我在UI中命名了所有图层,并意识到最终的SVG只创建了一个具有该名称的inkscape:label
属性,但id
仍然是通用的:
<svg:g id="layer1" inkscape:label="My custom label">
我知道我可以在XML编辑器中手动编辑标签,但是有一个设置可以自动将图层名称用作id吗?
答案 0 :(得分:1)
当我为Fritzing创建一个svg时,我有同样的要求,因为fritzing没有引用inkscape:label。在这种情况下,我可以确保标签保持id的合法值。因此,我制作了一个脚本,以便将自己从肮脏而繁重的工作中解救出来。
请注意脚本仅阅读&#39;普通SVG&#39; 格式。 https://gist.github.com/TerrenceSun/972ef4eea97f331af1e6abfcafb7c6e5
答案 1 :(得分:0)
我最近在寻找同一主题时遇到了这个问题。事实证明,Inkscape(v0.92)现在具有用于此目的的功能。
您可以在Object Properties
菜单的Inkscape GUI中设置 ID 和标签,然后它们将应用于XML代码。
yellow_rect
,将 Label 设置为#yellow_rect
red_rect
,设置标签和ID 当我打开SVG文件时,Inkscape会将我的标识符放入相应的XML标记中。
<g
id="rect_group">
<rect
rx="0.11797347"
y="250.69791"
x="5.0270834"
height="18.785416"
width="30.427082"
id="yellow_rect1"
style="fill:#f4ff00;fill-opacity:1;stroke:#000000;stroke-width:0.52916667;stroke-linejoin:round;stroke-miterlimit:3.79999995;stroke-dasharray:none;stroke-opacity:1" />
<rect
rx="0.11797347"
y="258.89999"
x="24.606249"
height="16.933332"
width="33.602081"
id="red_rect1"
style="fill:#f40000;fill-opacity:1;stroke:#000000;stroke-width:0.52916664;stroke-linejoin:round;stroke-miterlimit:3.79999995;stroke-dasharray:none;stroke-opacity:1" />
</g>
答案 2 :(得分:-1)
我不知道自动使用图层名称作为id的设置。但是为什么不反过来呢:如果删除inkscape:label
属性,则图层名称会自动成为inkscape UI中id
的{{1}}。
属性svg:g
足以使inkscape:groupmode=layer
成为图层元素。