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

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

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

Stratasys 为您提供以下内容:

第 1 步:什么是体素?

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

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

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

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

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

第 2 步:一般切片准则

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

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

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

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

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

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

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

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

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

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

作为参考,J750 层高为:

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

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

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

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

在此示例中,前缀为 "slice_"。

序列将按递增数字。

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

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

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

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

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

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

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

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

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

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

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

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

结果:

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

第 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 步:一个 'for' 循环,按顺序对我们的 941 个切片进行编号和命名

Matlab 循环的一般结构:

我们的循环:

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

如果您将该 for 循环保存在 Matlab '.m' 文件中并运行它,您可能会注意到一些事情:
**为什么我们指定 941 个切片?**

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

![](https://img-blog.csdnimg.cn/img_convert/af55a09ef3e24212f27eab57a5c0527c.png)

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

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

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

![](https://img-blog.csdnimg.cn/img_convert/2b93d6e49f844b7b8adbc32c69a5542c.png)

这是因为 Matlab 的 'imshow' 命令以默认解显示图像,我们现在必须更改该解。我们将在下一步中展示如何执行此操作。
#### **第 11 步:在我们的 'for' 循环中控制输出像素尺寸**

我们的 **REVISED** 循环:

![](https://img-blog.csdnimg.cn/img_convert/6dcd9b2d26b16aa8ddad11f77ab9fd5c.png)
#### **第 12 步:Matlab 切片的结果**

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

![](https://img-blog.csdnimg.cn/img_convert/9d9a8337c8de907fa6040011bf9555df.png)

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

![](https://img-blog.csdnimg.cn/img_convert/2abfed734ee8da0a0a38b07ef51670f1.png)

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

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

**从这里开始,我们将使用 GrabCAD Print 和 Voxel 实用程序**
#### **第 13 步:Voxel Print Utility 将位于"应用程序"下,类似于 Insight**

![](https://img-blog.csdnimg.cn/img_convert/16f8be75c97e49814e9b164e41b31342.png)
#### **第 14 步:Voxel Print Utility 将在此窗口中打开**

![](https://img-blog.csdnimg.cn/img_convert/0ce32511dc7e532530434bb55b5789d9.png)

![](https://img-blog.csdnimg.cn/img_convert/ff33d708ed468deb74610e0a1bc4a5c0.png)
#### **第 15 步:使用 Voxel Print 实用程序**

![](https://img-blog.csdnimg.cn/img_convert/eec37350b1af53690a5982d9f8551633.png)

![](https://img-blog.csdnimg.cn/img_convert/e59f1bb0307493449285629047b4b143.png)
#### **第 16 步:点击"下一步"后,实用程序运行**

![](https://img-blog.csdnimg.cn/img_convert/207e252986af01ebcce106cf7ab86df7.png)

这也是将显示错误的屏幕。如果您收到**"Too Many Colors"**错误,请参阅本演示文稿后面的疑难解答指南。
#### **第 17 步:接下来,我们必须将 RGB 值映射到 J750 材质**

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

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

![](https://img-blog.csdnimg.cn/img_convert/36a37f2d687ae3d6a1d1c1c4cce18a55.png)

但是看到不对劲了吗?
#### **第 18 步:疑难解答:"Too many colors"错误**

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

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

![](https://img-blog.csdnimg.cn/img_convert/99ceb77578e82d00b661a79cd67f03e0.png)

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

![](https://img-blog.csdnimg.cn/img_convert/fc09ba2b044ec816e2efa4bc007a4f25.png)

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

![](https://img-blog.csdnimg.cn/img_convert/5355f892a701e832e5610ed2e84d5f97.png)

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

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

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

1. 打开颜色选择器。

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

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

![](https://img-blog.csdnimg.cn/img_convert/082b809d2ca3f8adb8b4b910c4739ebb.png)

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

其他选项:

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

B. 颜色下的不同 Alpha 通道被视为不同的 RGB 值,因此我们实际上只能有 6 个 RGBA。
#### **第 19 步:接下来,我们必须将 RGB 值映射到 J750 材质**

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

![](https://img-blog.csdnimg.cn/img_convert/be94b113cf254d0c791a8bce8ca0269f.png)
#### **第 20 步:点击"完成",即可创建 GCVF 文件**

![](https://img-blog.csdnimg.cn/img_convert/99ecbf7120a969b3aa794cb03677ac91.png)
#### **第 21 步:将 GCVF 文件添加到托盘之前**

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

![](https://img-blog.csdnimg.cn/img_convert/161d0d182c6501e6a265cc22fca0922c.png)

然后您可以将 GCVF 文件导入到托盘上。
#### **第 22 步:我们终于有了洋红色立方体**

等?一个立方体?

![](https://img-blog.csdnimg.cn/img_convert/9fb32e86e83ca2b7eea526bf7543fcdd.png)

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

发生这种情况是因为......(请参阅下一步)
#### **第 23 步:X 和 Y 方向在 J750 上具有不同的 DPI**

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

![](https://img-blog.csdnimg.cn/img_convert/72e8637eeb820fbbca98c525217e6bf3.png)

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

![](https://img-blog.csdnimg.cn/img_convert/1254daafd2f46f44ec3c2425b32b9bc8.png)
#### **第 24 步:这就是为什么我们得到一个 1 英寸 x 1 英寸的立方体作为我们的结果**

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

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

![](https://img-blog.csdnimg.cn/img_convert/8aa97b6f99250873f98f02a2d77b5543.png)

*(这就是为什么我在原始尺寸中选择 300 x 600 的原因,这样就会发生这种情况。*
#### **第 25 步:结论**

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

**预览不以彩色显示。**

![](https://img-blog.csdnimg.cn/img_convert/06f3a8d41f56904f03990a4bba0517dd.png)

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

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

![](https://img-blog.csdnimg.cn/img_convert/64de89fd7c4ca484c1123590226e05e6.png)

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

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

3. **每一片都是一样**的

![](https://img-blog.csdnimg.cn/img_convert/10162ee37c392684a1b5c3ca3584be0e.png)

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

编程超出了本教程的范围,但有很多很多 Matlab 帮助文档详细介绍了如何对 'for' 循环进行编程以应对日益增加的复杂性。但这应该足以让您开始使用 Voxel 打印,如果您需要任何进一步的帮助,请联系您当地的 Stratasys 经销商或 print@grabcad.com!
相关推荐
月光水岸New2 小时前
Ubuntu 中建的mysql数据库使用Navicat for MySQL连接不上
数据库·mysql·ubuntu
狄加山6752 小时前
数据库基础1
数据库
我爱松子鱼2 小时前
mysql之规则优化器RBO
数据库·mysql
chengooooooo2 小时前
苍穹外卖day8 地址上传 用户下单 订单支付
java·服务器·数据库
Rverdoser3 小时前
【SQL】多表查询案例
数据库·sql
Galeoto3 小时前
how to export a table in sqlite, and import into another
数据库·sqlite
人间打气筒(Ada)4 小时前
MySQL主从架构
服务器·数据库·mysql
leegong231114 小时前
学习PostgreSQL专家认证
数据库·学习·postgresql
喝醉酒的小白4 小时前
PostgreSQL:更新字段慢
数据库·postgresql
敲敲敲-敲代码4 小时前
【SQL实验】触发器
数据库·笔记·sql