CuraEngine.wiki 7.生成区域

返回 CuraEngine.wiki 0.开发文档目录

文章翻译自官方说明文档,如有错误请积极发言不吝指正
CuraEngine.wiki - Generating Areas

生成区域

CuraEngine 创建模型的横截面后,它会将每个层细分为指定要填充材料的区域,以用于特定目的。这些“特征”中最重要的是填充、表皮、墙和支撑。该切片阶段的输入是一组层,输出是每个层的一组多边形。这些多边形按特征分组:是否必须使用填充、皮肤等进行填充。

分离出墙壁

将层划分为区域的第一步是分离出将要成为墙的部分。

为此,从原始层形状产生多个轮廓,每个墙一个。在下图中,生成了三面墙。一个用于外墙(红色),另外两个用于内墙(绿色)。

在层的图形中生产轮廓

第一个轮廓(以红色绘制)是为外墙生成的。它的偏移为外墙线宽的 1/2. 结果是穿过外壁中间的轮廓。该轮廓的角最终将在 G 代码中结束,作为喷嘴必须向其移动的目标坐标。

第二个轮廓(绿色)是为第一个内壁生成的。它是第一个轮廓勾勒出的形状的轮廓。此插入的距离等于外壁线宽度的一半加上内壁线宽度的一半。外壁线宽度的一半终止于外壁线的内侧边缘,然后增加内壁线宽度的另一半,以再次终止于该第一内壁的中心线。

第三个轮廓和任何进一步的轮廓是为第二个内壁和更远的地方生成的。这是一个内壁线宽度的轮廓,距离前一个轮廓。然后,该形状又是下一个内壁的中心线。

最后,从最里面的壁产生一个额外的插入,内壁线宽度的一半(以黑色绘制)。此轮廓标记了墙的内侧边缘。然后,必须用表皮或填充物填充该形状。

将皮肤与填充分离

然后,CuraEngine 需要用皮肤和填充物填充这个中间的轮廓。它需要确定放置皮肤的位置和放置填充的位置。

根据皮肤的厚度,找到需要填充底部皮肤的区域(例如)的基本技术是查看你下面的几层。只要下层有空气,当前层就一定有皮肤。

在这里插入图片描述
在这里插入图片描述

在上面的图像中,细分为皮肤和填充的图层显示为红色。它正在查看蓝色图层,以确定该区域的哪一部分将成为皮肤,哪一部分将成为填充。红色区域内而不是蓝色区域内的部分将成为皮肤。红色和蓝色区域中的零件都将成为内嵌。

然而,实际情况要稍微复杂一些:CuraEngine 不仅必须查看当前层下面的一个皮肤厚度的层,还必须查看中间的所有层。否则,层中小于皮肤厚度的间隙将不会被拾取。

对于顶部皮肤,CuraEngine 必须查看当前层上方的层,而不是其下方的层。

支持

生成支持是一个相当复杂的算法,但其思想的要点在这里得到了体现。

生成支持的第一步是确定打印中的悬垂位置。在这一点上,3D 网格的表面不再保留在内存中,所以我们不能只看与 Z 轴成一定角度的三角形。我们必须只查看 2D 图层。

假设普通的填充层支撑其上的层。它也会很好地支撑它上面的层,即使它上面的层稍微超出下面的层。我们称之为“支撑距离”,它限制了上面的层可以延伸到多远才能仍然被下面的层支撑。如果我们假设下面的层支撑上面的层,如果这些层的边之间的坡度小于某个角度(悬垂角度设置),那么我们可以用一个简单的公式来计算支撑距离: tan(a) * layer_height

在这里插入图片描述

CuraEngine 将按此支撑距离(以灰色绘制)对当前层(以黑色绘制在下面)执行偏移,然后从上面的层中减去该距离,以获得称为“基本支撑”(以蓝色绘制)的区域。

在这里插入图片描述

然而,这种类型的支持不能很好地打印。一切都支离破碎。通常,这会产生长而细的区域(约 0.2mm 宽),这些区域需要支撑,但中间有间隙,因为从技术上讲,中间的部分由前一层支撑。

为了获得更连续的支持区域,基本支持区域被合并。此合并是通过将支撑区域偏移支撑距离来完成的。由于基本支撑区域倾向于在它们之间具有支撑距离,这导致相邻的支撑区域重叠并合并在一起。

在这里插入图片描述

这确实会将支撑扩展到需要支撑的原始部分之外,因此它会从不在上面的层中的支撑中减去所有内容。这就是所谓的“扩展支撑”,它构成了最终将被支撑模式填充的区域的基础。虽然它需要一些轻微的修改。

支持 X/Y 和 Z 距离

扩展支持将产生如下所示的支持:

延伸支撑,无距离

这看起来很好,但并不理想,因为支撑直接与网格相邻。它会很好地粘在网格上。因此,在支撑和模型之间会产生一定的距离。CURA 有几个关于 Z 方向以及 X 和 Y 方向距离的设置。

保持 Z 距离的方法是,不直接查看当前层上方的层中需要支撑的部分,而是查看更高的几个层,这些层的总厚度等于 Z 距离。这将创建如下所示的打印:

应用的 Z 距离

如果斜坡非常陡峭,或者在垂直墙旁边有一点悬垂,这仍然会导致问题,因为支撑仍然非常接近打印的侧面。这可以在打印底部的上图中看到。因此,CuraEngine 还保持水平距离,即支持 X/Y 距离设置。

然而,这在支持必须保持到模型的距离中引入了两个约束:它必须保持一定的 Z 距离和一定的 X/Y 距离。两者都不能太小或太大。这是过度约束,因此其中一个必须取代另一个。这是由支持距离优先级设置决定的,该设置可以设置为优先考虑 Z 距离或 X/Y 距离。默认情况下,优先考虑 Z 距离。这导致我们的打印看起来有点像这样:

应用的 X/Y 距离

正如你所看到的,X/Y 距离仅在 Z 距离不适用时才适用:在底部坡度完全垂直的小区域中。这确实抓住了许多机械部件的情况,尽管垂直的墙壁紧挨着一块悬垂部分。

然而,在许多具有更多有机形状的情况下,这仍然是不理想的,因为支撑物仍然会粘在_几乎_垂直的斜面上。对于这些情况,还有另一个设置“最小支撑 X/Y 距离”,它将再次覆盖 Z 距离。打印结果将如下所示:

最小 X/Y 距离

在上面的图片中,如果你仔细观察,会发现沿着支架顶部的曲线有一个轻微的扭结。在扭结上方,Z 距离领先。在扭结下方,最小支撑 X/Y 距离领先。

阶梯式

为了能够轻松地从倾斜表面移除支撑,添加了阶梯。

如果必须在倾斜曲面上方生成支撑,则将使用支撑楼梯台阶高度和台阶可以具有的支撑楼梯台阶最大宽度作为参数来调用踏步。我们的想法是从一个层开始,对于其上接下来的几个层(由台阶高度和层高度决定),将这些层“锁定”在斜坡的特定区域中。之后(当达到台阶高度时),“释放”下一层,并将其作为下一个基础。

在实践中,这将创建一个倒置的楼梯,其中台阶的尖端最接近模型,并且可能是唯一的接触点。

楼梯踏步

这张照片清楚地显示了楼梯是用来做什么的。为清楚起见,所有“支撑偏移”距离都已设置为 0。

然而,当涉及到 X/Y 距离偏移和 Z 距离偏移时,阶梯算法有一些微妙之处:即,_如果_由于 X/Y 距离,支撑高于倾斜区域,然后在产生“台阶”时考虑模型_不是_上方的额外高度。

楼梯踏步

正如你在上面的图片中所看到的,在这种情况下(Z 距离设置为 0,X/Y 距离增加,但低于台阶高度),就好像完成_第一_了步进,然后才减去 X/Y 距离(这不_相当_是它的内部工作方式,但这里的效果是相同的)。

但是,_如果_由于 Z 距离的原因,支撑在倾斜区域上方较高,然后在创建台阶时考虑模型_是_上方的附加高度。

楼梯踏步

在上面的图片中,你可以看到这种情况下的效果(Z 距离增加,X/Y 距离设置为 0)。请注意支撑是如何升高到模型上方的,但楼梯台阶的高度不受影响。

当然,在实践中,X/Y-和 Z-距离偏移通常都大于零。在这种情况下,它取决于模型的斜率,是 X/Y 覆盖 Z 还是相反,以及所涉及的特定距离。

上一篇 CuraEngine.wiki 6.模型切片

下一篇 CuraEngine.wiki 8.G代码导出

wiki.js是一个开源的自托管维基系统,用于创建易于维护、实时协作的在线文档。以下是搭建wiki.js的基本步骤: 1. **下载安装包**:首先从GitHub(https://github.com/wikijs/wikijs)克隆或下载最新版本的wiki.js源码。 2. **选择服务器环境**:wiki.js支持Node.js环境,建议使用版本4.x以上。确保已经安装了Node.js。 3. **创建项目目录**:在本地创建一个新的文件夹,例如`my-wiki`,然后进入该目录。 4. **初始化项目**:运行`npm init -y`命令快速创建一个package.json文件,并配置基本的依赖。 5. **安装依赖**:在项目目录下执行`npm install wikijs express ejs socket.io`来安装必要的模块。 6. **设置服务器**:在项目根目录创建一个名为`server.js`的文件,引入所需的库并设置基础的Express应用,监听端口。例如: ```javascript const express = require('express'); const app = express(); const wiki = require('wikijs')(); app.use(express.static(__dirname + '/public')); app.set('view engine', 'ejs'); // ... (其他服务器配置) app.listen(3000, () => { console.log('Server is running on port 3000'); }); ``` 7. **配置wiki.js**:创建一个`data`目录作为wiki的数据存储,然后在`server.js`中加载wiki实例,并设置数据目录。 8. **启动服务**:运行`node server.js`命令启动你的wiki.js服务器。 9. **访问wiki**:在浏览器中访问`http://localhost:3000`,你应该能看到初始的wiki界面。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值