注释
我使用 meshcut 库成功地将网格切片为 g 代码! PoC代码: """
Basic usage example on a ply mesh. Note that this require a closed, manifold
input mesh.
"""
##
import os
import numpy as np
import itertools
import utils
import ply
import meshcut
if __name__ == '__main__':
example_fname = "/home/harvie/Temp/meshcut/examples/data/mesh.ply"
with open(example_fname) as f:
verts, faces, _ = ply.load_ply(f)
plane_orig = (0.02, 0, 0) #vyska
plane_norm = (1, 0, 0)
contours = meshcut.cross_section(verts, faces, plane_orig, plane_norm)
for contour in contours:
print("(---------------)")
#print(contour)
first = contour[0]
print("g0 x%f y%f"%(first[1],first[2]))
for segment in contour:
print("g1 x%f y%f"%(segment[1],segment[2]))
print("g1 x%f y%f"%(first[1],first[2]))
|
哇!我刚刚意识到创建真正的 3D 刀具路径来切割 3d 模型是多么容易。我认为一旦我们获得可靠的切片我们就可以做到……现在它需要一些调整…… |
目前我正在尝试解决根本没有被切割的孔的问题:julienr/meshcut#3 |
这看起来很酷,如果我的小型 meshcut 库有帮助,我很高兴 |
在#937 向切片器插件添加了基本的网格操作: 添加了 3D 切片(对未来的 3D 凸轮工作很有用): |
@julienr事实上,我刚刚在切片 sphere.stl(由您的库提供)时发现了错误,例如。在 Y 层 0、-2、-4 等等。您可以看到半圆形内外的细线,它们不应该出现在这些地方: 它用于以下设置:
直接在 bCNC 中,您可以使用以下设置启动它: 你认为你可以检查发生了什么吗? 无论如何感谢您的工作!它可能会将 bCNC 带到全新的水平! |
@julienr我从侧面与球体相交。stl 实际上是半球。这意味着它不会沿 Z 轴扩展到负值。但在 Y 中确实如此。也许我的轴混淆了。我说的是那个半圆切片。正如您在 meshlab 中看到的: 如果我从侧面切几片,就会出现问题。你可以在切片中看到很多虚线和伪影(青绿色突出显示),而应该只有几个半圆(如灰色的): 但是,即使在您的屏幕截图中似乎也存在一些差距: |
屏幕截图中的差距只是绘图时最后一点没有连接到第一点,所以我认为这不是问题所在。 我试图在 bCNC 中重现该问题,但我有点迷茫(我以前没有使用过 bCNC)。你能给我重现你得到的结果的确切步骤吗?当我运行切片网格插件时,我得到的只是一个球体,但我没有像你那样看到切片。 另外,我怎样才能像你的截图一样显示黄色的切片列表? 另一种选择是,如果您可以使用 |
@julienr单击编辑器选项卡:
我会尝试切片你的 sphere.stl … |
我刚刚发现从 3D STL 生成 3D g 代码的怪异方法。这远非精确,但它很容易做到,所以我不得不这样做。现在我用 minz 标签标记所有 Z 切片,所以当你选择它们并将它们标记为“岛”时,你将自动在每个切片中获得正确的高度。这意味着当我做平口袋或“压平”并切割它时,这些岛会导致 3D 模型印在压平代码上: 结果看起来很糟糕,但我在大约 10 分钟内设法添加了此功能:-) 使用更高的步距,它看起来更平滑: 这种方法甚至比大多数 3D CAM 用于粗加工策略的方法更糟糕,因为显然它会创建阶梯而不是平滑曲线,但仍然需要大量时间才能完成,因为它使用的是通常用于精加工路径的平行刀具路径。此外,电磨偏移在 Z 方向上不正确。这更多的是实验。但我认为这是在 bCNC 中完成的第一个 3D CAM 操作,当我排除高度图插件时:-) 顺便说一句,我认为这是对岛切割代码的良好测试,因为它处理了很多与许多重叠岛相交的刀具路径:-D |
@Harvie感谢您的解释,成功地在我的 meshcut 示例中重现了!我打开julienr/meshcut#7是为了不让我的调试进度污染这个问题。当我设法修复它时,我会在这里通知你。 |
@julienr非常感谢你! https://github.com/Harvie/bCNC/blob/master/plugins/slicemesh.py 并设法消除了 stl.py 中对“枚举”库的需求: https://github.com/Harvie/bCNC/blob/master/lib/stl/stl.py 我的长期计划是尽量减少解析 PLY 和 STL 文件所需的基础设施,并添加对二进制 PLY 文件的支持(目前仅支持 ASCII PLY)。 |
@Harvie我确实在切片代码中发现了一个错误,并将一些修复推送给了 master。现在应该工作得更好。 |
实现了 STL 切片。如果有意愿在其上实现 3D CAM,我们可以单独开一个 issue。 |
python 中的 STL 切片器编写器可能足以集成到 bCNC 中:
https://github.com/matthewelse/pySlice
我们只需要从 STL 中提取二维轮廓(层交叉切割),然后我们就可以使用 bCNC 在这些轮廓上创建操作。