Ссылочная геометрия


Смещение

Путём смещения оболочек, строит утолщённое/утончённое тело на основании прототипа proto и радиуса утолщения r. Если r положительный, оболочка смещается наружу, если отрицательный - внутрь.

Сигнатура:

offset(proto, distance)

Пример:

offset(cone(r1=15,r2=10,h=20), 5)


Линейчатая поверхность

Строит грань, задаваемую линейчатое поверхностью, опирающейся на линии a, b.

Сигнатура:

ruled(a, b)

Пример:

ruled(circle(r=20, wire=True), circle(r=20, wire=True).up(20))
ruled(circle(r=20, wire=True), circle(r=20, wire=True).rotZ(math.pi/2*3).up(20))
ruled(
    interpolate([(0,0),(-4,10),(4,20),(-6,30),(6,40)]),
    interpolate([(0,0),(-2,10),(2,20),(-4,30),(4,40)]).up(20),
)



Увязка

Построение оболочки на масиве каркасных линий profiles. При активации опции shell вместо твёрдого тела строится оболочка. Активации опции smooth изменяет режим линейчатой поверхности на гладкую апроксимацию. При активной апроксимации опция maxdegree ограничивает максимальную степень полинома.

Сигнатура:

loft(profiles, smooth=False, shell=False, maxdegree=4)

Пример:

profiles = [circle(10, wire=True), circle(15, wire=True).up(20),
            circle(8, wire=True).up(40)]
body = loft(profiles, smooth=True)
shell = loft(profiles, smooth=True, shell=True)



loft(..., shell=False) возвращает Solid и требует замкнутых профилей для построения корректного тела. Для открытых профилей используйте shell=True, результат — Shell. Открытый профиль при shell=False вызывает ValueError с номером профиля. Эта проверка выполняется при вычислении операции; прочие дефекты геометрии проверяйте через result.validate().