将svg:g id更改为inkscape:label

时间:2014-11-28 05:11:57

标签: svg inkscape

我在Inkscape中制作了一个矢量图形,包括层和子层,以便在Processing中进一步使用。我在UI中命名了所有图层,并意识到最终的SVG只创建了一个具有该名称的inkscape:label属性,但id仍然是通用的:

<svg:g id="layer1" inkscape:label="My custom label">

我知道我可以在XML编辑器中手动编辑标签,但是有一个设置可以自动将图层名称用作id吗?

3 个答案:

答案 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代码。

示例

Inkscape GUI

  • 绘制一个黄色矩形并将其选中
  • 单击对象-> 对象属性...
  • 在菜单中,将 ID 设置为yellow_rect,将 Label 设置为#yellow_rect
  • 通过点击设置
  • 应用更改
  • 要完成此示例,请重复上述步骤以创建red_rect,设置标签和ID
  • 最终,对可识别字词进行分组,并同时为该组设置标识符。

enter image description here

XML代码

当我打开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成为图层元素。