Contact me: hankecnc@gmail.com

SVG Import 无法正确定位不包含在单独图层中的元素 #1455

推推 grbl 3年前 (2023-01-28) 590次浏览
关闭
阿拉斯泰拉 打开了这个问题 2021 年 5 月 10 日 · 8 条评论 · 由#1658修复
关闭

SVG Import 无法正确定位不包含在单独图层中的元素#1455

阿拉斯泰拉 打开了这个问题 2021 年 5 月 10 日 · 8 条评论 · 由#1658修复

注释

SVG Import 无法正确定位不包含在单独图层中的元素 #1455
阿拉斯泰拉 评论了 2021 年 5 月 10 日  

在 LaserGRBL v4.3.0 中,当导入包含已放置在 SVG 文档主体而不是单独层中的元素的 SVG 文件时,似乎无法正确定位这些元素。

附在 zip 文件中的简单复制(存档仅包含一个 SVG 文件,但 Github 不允许您上传带有 SVG 扩展名的文件 – 哦!),其中网格线放置在单独的层中(“第 1 层”) , 具有 translate(0.25,60.25) 属性。文本和轮廓不包含在该层中。SVG 在 Inkscape 中和在 Microsoft Edge 等浏览器中加载时正确呈现,但在 LaserGRBL 中呈现不正确,如屏幕截图所示。

LaserGRBL-LayerBug.zip

SVG Import 无法正确定位不包含在单独图层中的元素 #1455
SVG Import 无法正确定位不包含在单独图层中的元素 #1455
SVG Import 无法正确定位不包含在单独图层中的元素 #1455

SVG Import 无法正确定位不包含在单独图层中的元素 #1455

可能相关 – 此 SVG 文件最初是从 OpenSCAD 导出的,然后才被引入 Inkscape。而且,即使它在 Inkscape 中正确呈现,因此它的某些结构似乎可能与 Inkscape 在内部定义相同文件的方式不同。

我注意到,在 Inkscape 中从头开始创建 SVG 文件时,所有元素都放置在一个层中(尽管根据 SVG 标准,我不认为这是一项要求)。
但是,在这个文件中,我开始意识到问题实际上出在不在层内的元素,而是作为根标记的直接子元素。

SVG Import 无法正确定位不包含在单独图层中的元素 #1455 阿拉斯泰拉 更改了标题 SVG 导入不考虑图层转换 SVG Import 无法正确定位不包含在单独图层中的元素 2021 年 5 月 10 日
SVG Import 无法正确定位不包含在单独图层中的元素 #1455

我看得越多,就越相信问题是由于该文件源自 OpenSCAD,并且它对 SVG“非标准标准”的定义与 Inkscape 使用的定义不同(我同意,应该是 LaserGRBL 所基于的 SVG 版本)。

确定问题后,有一个相对简单的解决方法,就是编辑 -> 剪切所有对象并将它们粘贴到 Inkscape 中的一个层(默认的“第 1 层”或一个新层)。然后再次保存 SVG。

SVG Import 无法正确定位不包含在单独图层中的元素 #1455
所有者

你好。目前,将 SVG 转换为 GCode 的代码不是我自己编写的,而是我从另一个项目“按原样”复制的代码。我的错误就是他的错误,即使我尝试修复其中的一些错误,因为它是第三方代码,所以总是很难在不冒破坏某些东西的风险的情况下进行干预。

如果我们还假设这段代码写得不是很好,以及解释 SVG 规范的难度,事实证明我更愿意在这部分尽可能少地干预。

我认为“最后”一步是丢弃这段代码,并用像这样更好、更受支持的库完成的 SVG 读取替换它,并实现我自己的“从 svg 到 gcode”例程。

SVG Import 无法正确定位不包含在单独图层中的元素 #1455

是的,我认为尽管 LaserGRBL 以不同于其他平台的方式呈现此文件,但它不一定做错任何事情,或者您应该“修复”的东西……希望这个线程可能有用,以防其他人在未来,但很高兴暂时关闭它。干杯!