OpenSCAD 社区的一般建议是“扩展您的切割并嵌入您的连接”(来源)。渲染工件是一回事,而只是一种烦恼;然而,z-fighting 也会在 STL 导出期间导致意外错误(我自己到目前为止还没有遇到过,只是在某处阅读)。
因此,您可以非常轻微地更改对象的尺寸(0.01
mm 工作正常),以便:
- 对于 a
union()
,零件之间存在重叠量
- 对于 a
difference()
,相交部分在相交部分的内部和外部都有体积
现在,您可以调整零件的尺寸和位置,以保持最终零件的数学精确尺寸。但我发现对于 3D 打印而言,这样的精度并不值得,因为它使公式变得如此复杂。
相反,我调整或者部分的位置或大小,这取决于在每种情况下简单。最终设计中的测量值将偏离 0.01 毫米,这无关紧要。
我将 0.01 毫米的偏移量保存在一个名为nothing
(在某处找到并喜欢它......)的变量中。这样可以直观地理解计算。
例子
要创建一个圆柱体并将孔切到其深度的一半,我会这样做:
//!OpenSCAD
nothing=0.01;
height=40;
difference(){
cylinder(h=height, r=20, center=true);
translate([0, 0, height/4 + nothing])
cylinder(h=height/2, r=15, center=true);
}
现在这个孔nothing=0.01
比圆柱体的一半还浅——这是我接受的不准确之处。
(注意:如果您没有安装 OpenSCAD,您也可以通过复制粘贴到OpenJSCAD在线尝试上面的代码。在第一行包含魔术注释以将其切换为 OpenSCAD 语法。)