Bootstrap

如何使用 Matlab 制作 GrabCAD 体素打印切片

本教程适用于已经对 Matlab 和 J750 操作有所了解的用户。

它不是有关如何使用 Matlab 软件或 PolyJet 打印机的全面课程。

Stratasys 为您提供以下内容:

  1. 第 1 步:什么是体素?

    就像 2D 数字图像由像素组成一样,您可以将 3D 数字形状视为由“体素”组成。

    它们是规则的矩形结构,包含 3D 打印中该点的颜色或材料数据。

    在 3D 中:体素在 2D 栅格化中

    但是,与其在 3D 中描绘体素,不如在脑海中思考 2D 中发生的事情,以及 3D 打印的每一个切片。切片不是“体素化”,而是“栅格化”。你可以看到,要在 2D 中表示一个字母,我们必须做出许多决定,关于网格中的哪个方格是深色填充、轻度填充或根本不填充。

    因为为每个切片做出数千个这样的决策会产生一个巨大的值矩阵,这就是使用 Matlab 的一个原因,它有许多工具来处理大型矩阵。

  2. 第 2 步:一般切片准则

    很容易想象,如果体素打印的每一层都有 1,000+ 渐进式切片,如下所示:

    您可以在 J750 中将它们一个接一个地堆叠起来,并获得如下打印效果:

    但是有一些规则需要遵循。

  3. 第 3 步:规则 1:所有切片必须具有相同的维度

    体素打印中的每个切片都必须具有相同的像素尺寸(宽度和高度)。例如,在下面的球体中,每个 PNG 切片都是一个 709 像素高 x 1424 像素宽的矩形(即使在球体顶部和底部附近的切片处,那里没有发生太多事情)。

    这些只是创建切片的工程师选择的维度。他可以选择任何尺寸,只要照片中的每一片都是相同的。

    我们将使用 Matlab 循环命令来确保每个切片的大小相同。

  4. 步骤 4:规则 2:切片之间的 Z 间隙应与打印机层设置匹配

    您应该计划在与 J750 所能做的层高相匹配的层高处切割所需的最终形状。

    例如,在下面的球体中,假设每个 PNG 切片与下一个切片相距 0.027 毫米,以形成最终形状。

    作为参考,J750 层高为:

    (注意:如果您的切片厚度与打印机层厚度不匹配,打印机将尝试补偿差异。例如,如果您生成的切片厚度为 0.0135 毫米,并且您的打印模式为“混合”,则打印机将打印每个图像两次,以达到所需的 0.027 毫米厚度。最佳做法是创建切片以匹配您将要打印的模式。

  5. 第 5 步:规则 3:所有切片都应使用相同的前缀按顺序命名

    Voxel Print 实用程序不知道切片的“正确”顺序。它只是按文件名。

    它将在单个文件夹中查找,并对所有标有已定义前缀的 PNG 文件进行排序。

    在此示例中,前缀为 “slice_”。

    序列将按递增数字。

    我们将使用 Matlab 循环在切片生成时按顺序编号。

  6. 步骤 6:规则 4:在所有切片中仅使用 6 种 RGB 颜色

    J750 只能容纳 6 种材料 + 支撑。

    Voxel Print Utility 将按 RGB 值分隔每个切片中的材质使用。

    因此,在给定的打印中,在所有切片的组合中,您只能使用 6 个 RGB 值。

    以下是一些常见 J750 材质的 RGB 值,以供参考:

    从这里开始,我们将进入 Matlab 命令。

  7. 第 7 步: 现在,RGB 图像如何存储在 Matlab 中?

    Matlab 附带的示例图像之一是 'peppers.png' (如下)。

    要将该图像加载到 Matlab 变量中,请使用以下命令:

    运行该命令后,Matlab 向您展示 RGBsample 现在被定义为 384 x 512 x 3 矩阵:

    要查看 peppers.png 中的任何给定像素,请使用以下命令:

    结果:

    这意味着,从辣椒图片的顶角往下 50 行,往上 100 列,有一个 RGB 值为 (66,38,68) 的像素,或者像这样:

  8. 第 8 步:最简单的体素打印(红砖)

    现在,我们将尝试制作最简单的体素打印之一,即均匀的红砖:

    为此,我们将使用 Matlab 来定义和编号所需的切片(并非显示所有切片)。

    从命令开始:

    应生成一个 300 x 600 x 3 的整数矩阵:

    用零填充:

    现在让我们制作矩阵的第一层 = 161,第二层 = 35,第三层 = 99。这对应于 (161,35,99) 的 RGB,应该是 VeroMagenta。

    >>brickslice(:,:,1) =161;

    >>brickslice(:,:,2) =35;

    >>brickslice(:,:,3) =99;

    然后我们用 Image Show ('imshow') 命令进行测试:

    >>imshow(brickslice)

    这应该会导致:

  9. 第 9 步:一个 'for' 循环,按顺序对我们的 941 个切片进行编号和命名

    Matlab 循环的一般结构:

    我们的循环:

  10. 第 10 步:对第一个 'for' 循环结果的想法

    如果您将该 for 循环保存在 Matlab '.m' 文件中并运行它,您可能会注意到一些事情:

    为什么我们指定 941 个切片?

    如果您还记得,我们想要一块 1 英寸高的积木:

    如果我们的 J750 设置为高混合模式,切片相距 0.027 毫米,因此 25.4 / 0.027 = 940.7,我将其四舍五入为 941。

    2. 为什么所有生成的 PNG 都有错误的尺寸?

    如果您右键单击我们刚刚创建的任何 PNG 并查看“属性”,您会发现它们不是我们想要的 300x600 像素:

    这是因为 Matlab 的 'imshow' 命令以默认解显示图像,我们现在必须更改该解。我们将在下一步中展示如何执行此操作。

  11. 第 11 步:在我们的 'for' 循环中控制输出像素尺寸

    我们的 REVISED 循环:

  12. 第 12 步:Matlab 切片的结果

    在与 Matlab '.m' 文件相同的文件夹中,您现在应该有 941 个单独的 PNG 切片文件,所有文件都按顺序编号并具有相同的前缀:

    (我将我的更改为 'brick_slice' 以匹配 .m 文件的名称,你可以在循环中设置任何你想要的前缀。

    它们都应该具有正确的像素尺寸。

    现在,我们已准备好进入 GrabCAD Print

    从这里开始,我们将使用 GrabCAD Print 和 Voxel 实用程序

  13. 第 13 步:Voxel Print Utility 将位于“应用程序”下,类似于 Insight

  14. 第 14 步:Voxel Print Utility 将在此窗口中打开

  15. 第 15 步:使用 Voxel Print 实用程序

  16. 第 16 步:点击“下一步”后,实用程序运行

    这也是将显示错误的屏幕。如果您收到“Too Many Colors”错误,请参阅本演示文稿后面的疑难解答指南。

  17. 第 17 步:接下来,我们必须将 RGB 值映射到 J750 材质

    这是 Utility 告诉我们它在切片中找到了哪些 RGB 值(记住最多 6 个)的地方。

    我们必须为每个值指定一些 J750 材料。

    但是看到不对劲了吗?

  18. 第 18 步:疑难解答:“Too many colors”错误

    请记住,我们的切片中只能有 6 个 RGB 值。但是我们在 Matlab 中只指定了 1,那么是什么呢?答案来自放大 Matlab 的任何 PNG 输出:

    虽然切片在预览中可能看起来不错:

    甚至当你打开一个时看起来也不错:

    如果放大某个角落,则会看到问题:抖动

    这似乎是 Matlab 输出图像方式的默认设置,它尝试对纯色的边缘进行“抗锯齿”。

    比我更好的 Matlab 用户可能知道关闭此功能的命令,但现在请注意,如果您在切片矩阵中指定了 6 种颜色,体素打印实用程序会将这些边缘视为 EXTRA 颜色并给您一个错误,因为它们是新的 RGB 值。

    照片编辑软件是检查这一点的好方法。

    1. 打开颜色选择器。

    2. 单击切片中的抖动区域。

    3. 查看 RGB 值是否发生变化或与您的预期不同。

    如果是这样,这些额外的 RGB 值可能是导致“颜色过多”错误的原因!

    其他选项:

    一个。您没有将正确的颜色指定为 “background”。

    B. 颜色下的不同 Alpha 通道被视为不同的 RGB 值,因此我们实际上只能有 6 个 RGBA。

  19. 第 19 步:接下来,我们必须将 RGB 值映射到 J750 材质

    由于我们现在无法修复 Matlab 抖动问题,因此我们将为每个找到的 RGB 值指定一个材质(我选择黄色作为抖动,希望这不会产生太大影响):

  20. 第 20 步:点击“完成”,即可创建 GCVF 文件

  21. 第 21 步:将 GCVF 文件添加到托盘之前

    您必须打开这两个“首选项”才能将 GCVF 导入 GrabCAD Print:

    然后您可以将 GCVF 文件导入到托盘上。

  22. 第 22 步:我们终于有了洋红色立方体

    等?一个立方体?

    我以为我们正在制作一个 RECTANGLE,高 300 像素,宽 600 像素?

    发生这种情况是因为......(请参阅下一步)

  23. 第 23 步:X 和 Y 方向在 J750 上具有不同的 DPI

    回到 Voxel Utility,您可能已经注意到窗口中的这两个不可编辑的字段。

    由于 PolyJet 技术的性质,像素在 X 方向上的堆叠紧密程度是 Y 方向的两倍:

  24. 第 24 步:这就是为什么我们得到一个 1 英寸 x 1 英寸的立方体作为我们的结果

    我们怎么知道它是一个 1 英寸 x 1 英寸的立方体?

    因为,如果你添加一个 CAD 零件,它每英寸和每一厘米都有切口(你们都应该有),你可以看到立方体很好地适合两个“英寸”切口之间。

    (这就是为什么我在原始尺寸中选择 300 x 600 的原因,这样就会发生这种情况。

  25. 第 25 步:结论

    在此过程中,您可能已经注意到以下几点:

    预览不以彩色显示。

    光是这个小立方体就有 941 个切片。尝试显示这 941 个切片中每个切片的数千个像素会导致大多数显卡崩溃。这就是为什么对于任何 .gcvf 文件来说,它都是简单的灰色预览。

    2. 我们试图创造一个红砖。结果是一个洋红色的立方体。

    没有“VeroRed”。在体素打印中,您需要将 J750 材质颜色的 RGB 体素彼此相邻放置,以便从远处获得某种颜色效果,就像电视一样。

    此外,在调整大小时,请注意 300 DPI 与 600 DPI 问题。

    3. 每一片都是一样

    在这个例子中,我们使用 Matlab 'for' 循环对切片进行编号,使用相同的矩阵 every 循环。但要实现体素打印的真正力量,您显然会希望每个切片都是独一无二的,体素的形状、材料和排列会改变每一层。

    编程超出了本教程的范围,但有很多很多 Matlab 帮助文档详细介绍了如何对 'for' 循环进行编程以应对日益增加的复杂性。但这应该足以让您开始使用 Voxel 打印,如果您需要任何进一步的帮助,请联系您当地的 Stratasys 经销商或 [email protected]

;