跳转到内容

OpenSCAD 用户手册/修饰符字符

来自维基教科书,开放的书籍,开放的世界

修饰符字符用于更改子节点的外观或行为。它们在调试中特别有用,在那里它们可以用于突出显示特定对象,或包含或排除它们从渲染中。

高级概念

[编辑 | 编辑源代码]

OpenSCAD 使用不同的库来实现功能,这可能会导致转换的 F5 预览行为出现一些不一致。传统的转换(平移、旋转、缩放、镜像和多矩阵)是在预览中使用 OpenGL 执行的,而其他更高级的转换(如调整大小)则执行 CGAL 操作,表现得像影响底层对象的 CSG 操作,而不仅仅是转换它。特别是,这可能会影响修饰符字符(特别是“#”和“%”)的显示,其中突出显示可能不会直观地显示,例如,突出显示预调整大小的对象,但突出显示后缩放的对象。

注意:字符修饰符触发的颜色变化仅在“编译”模式下出现,而在“编译并渲染(CGAL)”模式下不会出现。(如颜色部分所述。)

背景修饰符

[编辑 | 编辑源代码]

在正常渲染过程中忽略此子树,并以透明灰色绘制它(所有转换仍然应用于此树中的节点)。

由于标记的子树被完全忽略,因此在使用它时可能会出现意外影响,例如,与 difference() 中的第一个对象一起使用。在这种情况下,此对象以透明灰色渲染,但它不会用作 difference() 的基础!

用法

 % { ... }

示例

difference() {
	cylinder (h = 12, r=5, center = true, $fn=100);
	// first object to be subtracted
	rotate ([90,0,0]) cylinder (h = 15, r=1, center = true, $fn=100);
	// second object to be subtracted
	%rotate ([0,90,0]) cylinder (h = 15, r=3, center = true, $fn=100);
}

示例输出

没有修饰符的输出。
添加了修饰符的输出。
渲染的模型。


调试修饰符

[编辑 | 编辑源代码]

像往常一样在渲染过程中使用此子树,但也要以透明粉红色绘制它。

用法

 # { ... }

示例

difference() {
	// start objects
	cylinder (h = 12, r=5, center = true, $fn=100);
        // first object to be subtracted
	#rotate ([90,0,0]) cylinder (h = 15, r=1, center = true, $fn=100);
        // second object to be subtracted
	#rotate ([0,90,0]) cylinder (h = 15, r=3, center = true, $fn=100);
}

示例输出

没有修饰符的输出。
添加了修饰符的输出。


根修饰符

[编辑 | 编辑源代码]

忽略设计中的其余部分,并使用此子树作为设计根。

用法

 ! { ... }

示例

difference() {
	cube(10, center = true);
	translate([0, 0, 5]) {
		!rotate([90, 0, 0]) {
			#cylinder(r = 2, h = 20, center = true, $fn = 40);
		}
	}
}

示例输出

没有修饰符的输出。
添加了修饰符的输出。


如使用激活的根修饰符的示例输出所示,rotate() 作为标记有根修饰符的子树的一部分执行,但 translate() 没有效果。

禁用修饰符

[编辑 | 编辑源代码]

只需忽略整个子树。

用法

 * { ... }

示例

difference() {
	cube(10, center = true);
	translate([0, 0, 5]) {
		rotate([0, 90, 0]) {
			cylinder(r = 2, h = 20, center = true, $fn = 40);
		}
		*rotate([90, 0, 0]) {
			#cylinder(r = 2, h = 20, center = true, $fn = 40);
		}
	}
}

示例输出

没有修饰符的输出。
添加了修饰符的输出。


禁用修饰符允许您注释掉一个或多个子树。与使用通常的行或多行注释相比,它了解层次结构,这使得即使在不需要搜索子树的结尾的情况下,禁用更大的树也更容易。

回声语句

[编辑 | 编辑源代码]
另请参阅:OpenSCAD 用户手册/其他语言功能#回声函数

此函数将内容打印到编译窗口(又名控制台)。对调试代码很有用。另请参阅字符串函数 str()

数值四舍五入到 5 位有效数字。

使用“variable=variable”作为表达式来轻松标记变量可能很方便,请参见下面的示例。

用法示例

my_h=50;
my_r=100;
echo("This is a cylinder with h=", my_h, " and r=", my_r);
echo(my_h=my_h,my_r=my_r); // shortcut
cylinder(h=my_h, r=my_r);

在控制台中显示为

ECHO: "This is a cylinder with h=", 50, " and r=", 100
ECHO: my_h = 50, my_r = 100
华夏公益教科书