Пример кода на Python
Приведённый ниже пример демонстрирует, как средствами библиотеки SolidPython создать пустотелую STL-модель неваляшки.
![](/Images/tumbler1.png)
# Подключение модулей
from solid import * # сама библиотека SolidPython
from subprocess import run # запуск OpenSCAD для выполнения рендеринга в STL
# Коэффициент масштабирования при вычитании объёмов для создания полостей
scaleFactor = 0.9
# Создаём шар-"Тело"
c = translate([0,0,10]) (sphere(10)) # Шар радиусом 10, центр которого сдвинут по оси Z на 10
# Вычитаем из "Тела" другой шар (радиусом 9 и приподнятый на 1 по оси Z). Тело становится пустым
c -= translate([0,0,1]) (scale([scaleFactor,scaleFactor,scaleFactor]) (c))
# Создаём шар для "Головы"
b = translate([0,0,26]) (sphere(7))
# Приделываем к нему цилиндр-"Шею"
b += translate([0,0,18.6]) (cylinder(h=2.5,r=4.5))
# Вычитаем из "Головы" куб, чтобы сплющить часть шара и получить таким образом "Лицо"
b -= translate([4.6,-6,21]) (cube(12))
# Уменьшаем полученное геометрическое тело, приподнимаем его и вычитаем его из "Головы". Получаем "Пустую Голову"
b -= translate([0,0,2.5]) (scale([scaleFactor,scaleFactor,scaleFactor]) (b))
# Соединяем "Тело" и "Голову"
c += b
# Пробиваем "дырку" между полостью "Головы" и полостью "Тела", т.о. соединяя эти полости между собой
c -= translate([0,0,16]) (cylinder(h=5,r=4.5*scaleFactor))
# Важный момент: для того, чтобы внутренняя полость отрендерилась в итоговой STL-модели,
# необходимо чтобы она (полость) сообщалась с внешним миром.
# Поэтому проделываем в "Темечке" крохотное отверстие, чтобы внутреннее пространство
# имело выход наружу.
# Без этого внутренняя полость не отрендерится и модель при контрольном разрезе булет сплошной!
c -= translate([0,0,25]) (cylinder(h=10,r=0.1))
# Приделываем правую "руку"
c += translate([2,7,20]) (sphere(3))
# Приделываем левую "руку"
c += translate([2,-7,20]) (sphere(3))
# Получение STL средствами SolidPython
# Создаём в текущей папке промежуточный файл в формате приложения OpenSCAD
scad_render_to_file(c, 'Tumbler1.scad')
# Запускаем OpenSCAD с ключом "-o", выполняя т.о. рендеринг модели из файла .scad в формат .stl
run([r'C:\Program Files\OpenSCAD\openscad.exe', '-o', 'Tumbler1.stl', 'Tumbler1.scad'])
# В примере указан путь установки по умолчанию для 64-разрядной версии OpenSCAD в Windows.
# Ваш путь модет отличаться (например для Linux, или 32-разрядной версии Windows, или в случае установки OpenSCAD в другой каталог)
Приведённый код демонстрирует основные конструкции, которые могут понадобиться при выполнении задания. Полный перечень возможностей библиотеки SolidPython приведён в документации.