是否有将图像转换为二维模型的技术?

3D打印 2d opencad
2021-05-25 02:57:23

总体目标是制作自由钟的印刷品。不需要拍板。不需要支撑梁。我只是想模仿铃铛的外部形状。在应用了 Google-fu 之后,我找到了这张图片。它已经被清理和裁剪了一点。

在此处输入图片说明

在 OpenScad 中,表面函数应用于 png 以生成高度模型。我减去了几个立方体,最终得到了大约 0.1 层高。

我的邪恶(双关语)计划是将其分解为二维模型。然后通过从自身移动模型的副本,并将两者相减。那应该只留下曲线。然后旋转挤出曲线以生成所需厚度的实际钟形。

我看到问题来了。如果模型分层到零高度,它将消失。让我没有什么可以旋转。

那么问题来了。

是否有任何工具或技术可以将图像转换为 2d openscad 对象或失败,还有其他方法可以解决问题吗?

弗雷德指出我的方向是可行的。我没有使用此处显示的实际图像,而是从 OpenScad 手动生成的图像。作为概念证明,该技术运行良好。

3个回答

由于您已经熟悉 OpenSCAD,请考虑使用 project () 函数来实现您的目标。

如果您认为可以在下方的表面上投射零件的阴影,则它会成为零件的 2D 表示。这就是 OpenSCAD 中投影的有效工作方式。

请注意,下面的零件图像以 x、y、z 为中心,并且切割/投影操作发生在 z = 0 平面上:

示例模型图像

当函数应用于这个模型时,结果是一个不连续的二维图像:

投影切割图像

当 cut 参数被忽略或设置为 false 时,生成的图像实际上是整个对象的正交阴影,而不是选定的切片:

平面阴影图像

当然,它会变得更好。在 OpenSCAD 中,平移、旋转和缩放功能适用。可以将模型翻转过来、调整其大小、旋转它、结合剪切参数并从原始模型中获得二维图像的任意组合:

旋转模型图像

阴影旋转模型

需要注意的是,OpenSCAD 在渲染或预览时确实为这些投影提供了非零厚度。我总是让那两个互换。由于您的目标是 2D 结果,您可以从 PNG(另存为图像)或导出为 DXF 或 SVG 中进行选择。

重新阅读您的帖子,我也错过了一个更有用的答案的一部分。获得所需的轮廓后,您可以在生成的轮廓上使用rotate_extrude 函数尽管厚度不为零,但它使用零厚度方面从该函数创建模型。

答案的这方面留给读者作为练习,因为选项很多,结果可能很复杂。

两种选择:

  1. 使用TRACE2SCAD( http://aggregate.org/MAKE/TRACE2SCAD )
  2. 对于更冒险的:挖掘建议trace()模块的旧拉取请求https : //github.com/openscad/openscad/pull/1110

你可以用 OpenSCAD 做到这一点,有关于挤压的说明。

就我个人而言,我只是用Image 2 STL 2 Heightmap Mesh Converter Generator做 1 个高度复制 ,然后在 OpenSCAD 中旋转。它被称为rotate_extrude()并用于贝壳。

在 MeshLab 中,您可以使用Laplacian Smooth 对其进行去像素化/抗锯齿处理。