Inkscape命令行界面语法选择对象/路径。

3

我有以下SVG文件:

<svg width="18px" height="18px" viewBox="0 0 18 18" version="1.1" xmlns="http://www.w3.org/2000/svg">
<title>Kalender</title>
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
    <g transform="translate(-178.000000, -704.000000)" stroke="#0067C5">
        <g transform="translate(139.000000, 20.000000)">
            <g transform="translate(36.000000, 681.000000)">
                <polyline points="7 5.66666667 4.33333333 5.66666667 4.33333333 19.6666667 19.6666667 19.6666667 19.6666667 5.66666667 17 5.66666667"></polyline>
                <polygon points="7 4.33333333 9 4.33333333 9 7 7 7"></polygon>
                <polygon points="15 4.33333333 17 4.33333333 17 7 15 7"></polygon>
                <path d="M9,5 L15,5"></path>
                <path d="M4.33333333,9 L19.6666667,9"></path>
            </g>
        </g>
    </g>
</g>

这段内容涉及到一系列带有笔画的对象,我需要将其转换为路径。

在Inkscape的GUI版本中,解决我的问题的步骤如下:

  • 选择左侧工具栏上的“通过节点编辑路径”工具(使用普通选择工具无法正常工作)
  • 单击要选择的对象
  • 然后转到“编辑 > 选择相同 > 笔画样式”(以选择所有其他具有相同笔画的对象)
  • 接着转到“路径 > 笔画转路径”

但我需要相同操作的CLI语法,以便自动化处理一系列SVG文件。

我尝试了以下方法:

inkscape -f $1"-stroketopath/"$svgfile --verb="EditSelectAll" --verb="EditSelectSameStrokeStyle" --verb="StrokeToPath" --verb="FileSave" --verb="FileQuit"

这并不起作用。我怀疑它失败的原因与上述相同(即“编辑>选择相同>描边样式”操作不能使用常规选择工具(在“编辑>选择全部”操作中使用))。

那么,有人知道如何用“按节点编辑路径”工具替换--verb="EditSelectAll",然后选择文件中的一个或所有对象吗?

1个回答

2
这个问题的解决方法是遍历所有SVG,并在第一个类型为pathrectcircleellipselinepolylinepolygon的元素上注入id="inkscape"属性。

然后我可以运行:

inkscape -f $svgfile --select="inkscape" --verb="EditSelectSameStrokeStyle" --verb="StrokeToPath" --verb="SelectionUnion" --verb="FileSave" --verb="FileQuit"

使用--select命令(详见此处)。

--select命令将导致选择具有指定ID的对象。这允许各种动作对它们进行操作。要删除所有选择,请使用--verb=EditDeselect。可用的对象ID取决于指定要加载的文档。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接