我正在尝试编写一个简单的程序,让我可以使用带有特定切割头的路由器在木板上可视化一系列连续的切割。我试图找到一个几何库,它能够通过扫过其他 3D 实体来减法修改 3D 形状或实体。
具体来说,我希望能够定义一个矩形实体(木板),然后定义一个位轮廓形状,并通过矩形实体进行切割(有时在直线上,有时在圆弧上)。有谁知道会这样做吗?
pythonOCC也是一个有趣的选择!
也许FreeCAD的 Python 级别可以满足您的要求。
CGAL看起来可以使用3D Minkowski Sums进行 3D 扫描。(请参阅页面下方的“滑行”部分。)
到目前为止,我可以看到使用 Minkowski 和的唯一限制是,如果通过 3D 路径扫描对象,您似乎无法同时旋转对象。(我可能错了。)例如,如果您尝试在旋转圆柱体的外表面上使用路由器或铣削钻头模拟切割路径,例如第 4 或第 5铣床上的轴旋转工作台。但最初的问题是关于沿着 2D 路径扫描 3D 对象,模拟平面上的切割,例如一块木头,所以这个限制对我来说可能很重要,但对 OP 并不重要。
CGAL 被OpenSCAD使用。OpenSCAD 有一个看似使用 CGAL 3D Minkowski 功能的 minkowski() 原语。OpenSCAD或许能够提供快速的可行性测试以及长期的刀具路径可视化解决方案。(我最后一次看这个我不这么认为,但那可能是 OpenSCAD 的旧版本。)
CGAL 是 C++,开源,双重许可。到目前为止,我发现了两个 python 绑定:
我们正在使用sgCore
非常强大和简单的库。
采用 C++ 方式,如果您有 Direct3D/OpenGL 经验,您可以使用TetGen和GTS将一些东西放在一起。
警告:非常长的学习曲线。
更新:我最近对Carve CSG进行了试验,对目前的结果感到满意。您可以轻松地从木板上减去切口以获得您想要的结果。
HeeksCAD 可能会为您完成这项工作。http://code.google.com/p/heekscad/
虽然不完全是一个库,但这样做的一种方法可能是建立在大多数这些库都支持的 2D 到 3D 挤压能力之上。执行此操作的暂定算法可能是:
该算法似乎充满了边缘情况,但到目前为止我还没有想到。我想知道为什么,如果它这么简单,那么没有更多的软件包已经在这样做了。