我的 SVG 有多个线对象形成一个封闭的形状。我必须将其转换为单一路径,以便激光切割机沿着路径从材料中切割出形状而不会跳跃。
当然,这可以通过 inkscape 手动完成:
- 将所有单个对象转换为一条路径,生成一条路径,但形状的每个角度都有两个重叠节点
- 对于每个角度,选择共享相同坐标的两个节点并连接所选节点 (Shift+J)
但是,它需要执行步骤 2) 数千次(每个角度一次),是否有自动合并所有重叠节点的选项?
即使在我的例子中,重叠节点的坐标完全匹配,因为浮点数之间没有完全相等,最终可以提供一个距离来研究重叠节点,例如所有节点(或以像素n1, n2
为 distance(n1, n2) ≤ 1e-6 mm
单位)合并到一个节点中。
如果在此容差范围内有 2 个以上的节点,就会开始发生冲突,但是加入选定节点 (Shift+J)工具本身似乎无法处理这种情况,只能合并两个节点。
此选项也可用于在板上多次复制单个形状,并防止激光切割同一边缘多次损坏材料。但它似乎更先进,因为有几条路径。
这是输入文件的示例:
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
version="1.1" id="svg5169"
viewBox="0 0 20.302442 20.250575"
height="5.7151623mm"
width="5.7298002mm">
<g
transform="translate(-41.214011,-1123.8181)"
id="layer1">
<g
transform="matrix(0.99667782,0,0,0.99980745,-163.30415,1035.5366)"
id="g4" />
<path
id="line134"
d="m 41.339286,1123.9953 20,0"
style="stroke:#191919;stroke-width:0.35433069;stroke-miterlimit:4;stroke-dasharray:none" />
<path
id="line138"
d="m 41.339286,1123.9434 20,20"
style="stroke:#191919;stroke-width:0.35433072;stroke-miterlimit:4;stroke-dasharray:none" />
<path
id="line142"
d="m 61.339287,1143.8181 0,-20"
style="stroke:#191919;stroke-width:0.35433072;stroke-miterlimit:4;stroke-dasharray:none" />
</g>
</svg>
以及我需要产生的输出以发送到激光切割机,即具有单一路径的相同对象:
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
version="1.1" id="svg5169"
viewBox="0 0 20.604885 20.60488"
height="5.815155mm"
width="5.8151565mm">
<g
transform="translate(-84.099911,-1123.8181)"
id="layer1">
<g
transform="matrix(0.99667782,0,0,0.99980745,-163.30415,1035.5366)"
id="g4" />
<path
id="line142-9"
d="m 104.52763,1123.9953 -20.000004,0 20.000004,20 z"
style="fill:none;stroke:#191919;stroke-width:0.35433072;stroke-miterlimit:4;stroke-dasharray:none" />
</g>
</svg>