布尔主要包括两种操作,分别是Fusion(布尔并和布尔减)和Intersection(布尔交),在布尔时,参与布尔的几何体会被抹除原有的颜色信息。因此需要重新设置颜色。

4.1 布尔并与布尔减

在新版的参数化组件中,布尔并与布尔减可以用加号“+”和减号“-”来表示。

布尔并示例:

# 融合(布尔并与布尔减)
testa = translation(100,100,0) * scale(1000,300,500) * Cube().color(1,0,0,1)
testb = translation(0,0,0) * scale(1000,300,500) * Cube().color(0,1,0,1)
testFusion = testa+testb

布尔减示例:

# 融合(布尔并与布尔减)
testa = translation(100,100,0) * scale(1000,300,500) * Cube().color(1,0,0,1)
testb = translation(0,0,0) * scale(1000,300,500) * Cube().color(0,1,0,1)
testFusion = testa-testb

4.2 布尔交

函数:Intersect
Intersect中可以装填多个几何体,最终生成所有几何体的“交集”。

testa = translation(100,100,0) * scale(1000,300,500) * Cube().color(1,0,0,1)
testb = translation(0,0,0) * scale(1000,300,500) * Cube().color(0,1,0,1)
testFusion = Intersect(testa,testb)

4.3 组合 Combine

组合不同于布尔,组合时并不会将两个几何体重叠的部分进行处理,同时,颜色信息也不会被抹除。如果对组合后的模型赋予颜色,那combine中的所有几何体都会变为该颜色。

示例:

testa = translation(100,100,0) * scale(1000,300,500) * Cube().color(1,0,0,1)
testb = translation(0,0,0) * scale(1000,300,500) * Cube().color(0,1,0,1)
TestCombine = combine(testa,testb)