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);
}
}
}
示例输出
禁用修饰符允许您注释掉一个或多个子树。与使用通常的行或多行注释相比,它了解层次结构,这使得即使在不需要搜索子树的结尾的情况下,禁用更大的树也更容易。
此函数将内容打印到编译窗口(又名控制台)。对调试代码很有用。另请参阅字符串函数 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