Булевы операции.

CSG геометрия операется на булевы операции. В zencad представлены операции объединения, вычитания и пересечения 3д и 2д объектов. В zencad есть два группы этих операций:

! Примечание: ! Не стоит пытаться с помощью булевых операций получить составную линию из простых линий или сшить оболочку из граней. Для этих манипуляций, существуют специальные процедуры сшивки, освещенные в соответствующих разделах.


Объединение тел.

Сигнатура:

# Функция:
result = union(array)

# Оператор:
result = shp0 + shp1

Пример:

#with operators:
sphere(r=10) + cylinder(r=5, h=10, center=True) + cylinder(r=5, h=10, center=True).rotateX(deg(90))

#with function:
union([
sphere(r=10),
cylinder(r=5, h=10, center=True),
cylinder(r=5, h=10, center=True).rotateX(deg(90))
])



Вычитание тел.

Сигнатура:

# Функция:
result = difference(array)

# Оператор:
result = shp0 - shp1

Пример:

#with operators:
sphere(r=10) - cylinder(r=5, h=10, center=True) - cylinder(r=5, h=10, center=True).rotateX(deg(90))

#with function:
difference([
sphere(r=10),
cylinder(r=5, h=10, center=True),
cylinder(r=5, h=10, center=True).rotateX(deg(90))
])



Пересечение тел.

Сигнатура:

# Функция:
result = intersect(array)

# Оператор:
result = shp0 ^ shp1

Пример:

#with operators:
sphere(r=10) ^ cylinder(r=5, h=10, center=True) ^ cylinder(r=5, h=10, center=True).rotateX(deg(90))

#with function:
intersect([
sphere(r=10),
cylinder(r=5, h=10, center=True),
cylinder(r=5, h=10, center=True).rotateX(deg(90))
])



Пересечение оболочек.

Побратим операции intersect, производящий вычисление пересечения оболочек тел.

Сигнатура:

# Функция:
result = section(a, b)

Пример:

m0 = section(box(10, center=True) - sphere(4))
m1 = section(box(10, center=True), sphere(7))


Булевы операции над двумерными телами.

Точно также как и к трёхмерным объектам, перечисленные выше операции могут применяться к двумерным объектам до тех пор, пока они находятся в одной плоскости.

Пример:

m0 = sphere(10) - square(10)
m1 = sphere(10) + square(10)
m2 = sphere(10) ^ square(10)
m2 = section(sphere(10), square(10))