%和#

问题描述

在Mac OS 10.15.7上使用OpenSCAD 2019.05,

difference() {
  cube(size = [14,24,17],center = false);
  % cube(size = [10,20,center = false);
}

失败(有时会出现常见的“无几何”错误,有时是没有减法的立方体)。

但是,仅用#代替%,就会产生预期的行为。我是否误解了#和%的语义?

(正如您期望的那样,我不是用这种方式编写代码,而是从原始程序中提取了CSG输出,并将其简化为以下示例。)

解决方法

我也曾经被他们弄糊涂。 %允许您将东西放到模型的F5预览中,而这些东西不会在F6的实际渲染中显示。参见https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Modifier_Characters#Background_Modifier “忽略普通渲染过程的该子树,并以透明的灰色绘制它(所有转换仍将应用于该树中的节点)。”

因此,带有%的行在渲染时将被忽略,这将导致第一个多维数据集未修改。