与根不同的操作

时间:2018-11-18 18:46:34

标签: openscad

有没有办法直接从根源上有所作为?我想做这样的事情:

difference(){
    root();
    cube();
}

代替此:

difference(){
    union(){
        object1();
        object2();
        .
        .
        objectN();
    }
    cube();
}

2 个答案:

答案 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(),并在两个立方体中都减去。