有没有办法直接从根源上有所作为?我想做这样的事情:
difference(){
root();
cube();
}
代替此:
difference(){
union(){
object1();
object2();
.
.
objectN();
}
cube();
}
答案 0 :(得分:1)
您已经在那儿了。您只需要将root()
和cube()
定义为如下模块:
difference(){
root();
cube();
}
module root(){
object1();
object2();
...
}
module cube(){
//some cube definition
}
在后台,OpenSCAD会为您在每个模块周围秘密创建一个union(),就像您编写的一样:
module xyz(){
union(){
//objects
}
}
因此,在此示例中,创建了一个对象root()
,并且将从该对象中减去cube()
。通过使用模块定义,您可以按要求将代码保持模块化。
您可能还想看看正式的文档和备忘单here。
答案 1 :(得分:0)
difference()模块从第一个孩子中减去所有其他孩子。在第一个代码段中,第一个子项是root(),在第二个第一个子项中是union(),并在两个立方体中都减去。