如何从 3D STL 转换为 2D SVG?
如果一个人在 cad 程序中打开 STL 文件并在 XY 平面上观察模型,他会看到一些起初很有希望的东西:
起初我认为将投影保存为 PDF 或 SVG(两者都是可能的),在 Illustrator 或 Inkscape 中打开它并删除不需要的行就可以了。
但...
STL 实际上是由数千个小三角形组成的 3D 表面。这是从倾斜方向看到的一块:
没有曲线。XY 平面投影包含数千个部分重叠的直线段。他们冻结了 Inkscape 并使 Illustrator 变慢。任何使用形状生成器制作单个形状的尝试都会冻结 Illustrator。在 Illustrator 中,可以选择线条并删除它们。PDF 版本的运行速度比 SVG 版本快一点。在 Inkscape 中,我没有从中得到任何有用的东西。
下载的形状很简单,所以我建议你重新绘制它们。如果您像我一样将 XY 平面投影到 Illustrator,您可以锁定它并使用钢笔工具绘制您自己的版本。您也可以使用屏幕截图作为模型。例如,您可以从 SketchUP 获取屏幕截图。
屏幕截图的计算机负载非常轻,您可以在 Inkscape 中对其进行绘制。
绘制它也是获得不重叠的连续路径的方法。我敢打赌激光切割机想要它们。
添加:只是为了测试 PDF 上的绘图过程,我用笔在 Illustrator 中绘制了一个形状。大概花了六分钟。曲线并不完美,但绘制速度很快。实际上只绘制了形状的左半部分,因为形状是对称的。右侧是翻页。
如果您对使用 CAD 程序进行更多尝试感兴趣,可以尝试在那里简化这些挤压形状。如果您使用足够简单的程序,这并不是特别困难。像我一样,获得 TurboCAD Deluxe 的免费演示并打开 STL 文件。全选并转到格式 > 分解:
它会移除所有表面并留下一堆漂浮在空间中的折线。倾斜的观察方向表明,表面三角形的大部分边已经消失,只剩下基本骨架:
然后将投影直线侧向转动并选择除 XY 平面中的线以外的所有线:
按 DEL,您只有 XY 平面多段线:
所有曲线实际上都是数十条连接的直线:
全选并保存为 SVG。我在 Inkscape 中打开了结果,并赋予它红色描边以使其可见。这里是:
我不知道切割师是否接受它。我只将 DXF 发送给切割机。我写的“切割机”是操作激光切割机的人。他扔掉了所有似乎想在没有他的情况下向机器输入东西的人。
我写了“与 CAD 战斗”。那是因为您可能必须在安装 CAD 程序之前工作几个小时,并且您已经学会了如何设置投影和进行选择。
祝你好运!
任何体面的 CAD 应用程序都会打开 STL,您应该能够设置正交投影并导出或保存为 SVG。
哎呀,你可以用Blender或OnShape ......甚至我认为Draftsight或FreeCAD来做到这一点 -所有这些都是免费软件。
Blender 包括可以根据各种设置绘制轮廓的自由式,默认设置包括适合您需要的轮廓。一旦您的渲染包含自由式线条,您就可以使用 Freestyle SVG exporter。
虽然我不确定它是否符合您的需求,但您可能需要查看blenderCAM,它为 CNC 机器生成 g 代码。我认为到目前为止它仍然只支持铣床,查看项目叉可能会发现有人在支持其他机器。
一种解决方案是免费的开源 OpenScad,这是程序员的实体 3D CAD 建模器。这个解决方案的灵感来自于 OpenScad 中的批处理文章。以下四行代码导入 STL 文件并沿 Z 轴投影 3D 形状。OpenScad 脚本是:
param1=0; // param1 is the keyword of the first shell argument
FileToLoad=param1;
echo(FileToLoad);
projection() import(FileToLoad);
为了自动执行此操作,bash 脚本处理下载文件夹中的所有 STL 文件,包括子目录,将 STL 文件传递给上述 OpenScad 脚本,并将结果保存为 SVG。假设上述代码在 中~/Downloads/slicer.scad,则 bash 脚本为:
for entry in $(find ~/Downloads -type f -name *.stl)
do
new_entry=$(echo $entry | sed 's/.stl/.svg/g')
openscad -o $new_entry -D param1=\"$entry\" ~/Downloads/slicer.scad
echo "$new_entry"
done
生成的 SVG 如下:










