// МАНИФЕСТ
ЦИФРОВАЯ МАТЕРИЯ ИЗ ЧИСТОГО КОДА.
ПАРАМЕТРИЧЕСКИЙ ДИЗАЙН
Мы не рисуем. Мы задаем правила. Форма рождается из логики алгоритма.
ОТКРЫТЫЙ КОД
Построено на плечах гигантов: OpenSCAD, Python, SolidPython2.
// ГЕНЕРАТОР_КОДА
PYTHON > SOLIDPYTHON2 > OpenSCAD WASM > STL
⚡ Инициализация системы... ⏳ Загрузка Pyodide... ⏳ Загрузка OpenSCAD WASM...
⏳ Ожидание компиляции...
Нажмите СКОМПИЛИРОВАТЬ для генерации 3D модели
// ДОКУМЕНТАЦИЯ
КАК ИСПОЛЬЗОВАТЬ
- Напишите код на Python используя
from solid2 import * - Создайте объект и выведите его:
print(scad_render(my_object)) - Нажмите СКОМПИЛИРОВАТЬ()
- Модель автоматически отобразится справа
- Нажмите СКАЧАТЬ STL для сохранения файла
ПРИМЕРЫ КОДА
Простой куб:
from solid2 import *
obj = cube(10)
print(scad_render(obj))
Сфера:
from solid2 import *
obj = sphere(r=15)
print(scad_render(obj))
Цилиндр:
from solid2 import *
obj = cylinder(r=10, h=20)
print(scad_render(obj))
Параметрическая функция:
from solid2 import *
def create_box(width, height, depth):
return cube([width, height, depth])
model = create_box(30, 40, 50)
print(scad_render(model))
Экструзия 2D формы:
from solid2 import *
shape = circle(r=15, _fn=6)
extruded = linear_extrude(
height=50, twist=90, scale=1.5, slices=50
)(shape)
print(scad_render(extruded))
Вращательная экструзия:
from solid2 import *
profile = polygon(points=[
[0, 0], [20, 0], [25, 30],
[20, 50], [15, 50], [10, 30]
])
vase = rotate_extrude(angle=360, _fn=60)(profile)
print(scad_render(vase))
Паттерн с циклом:
from solid2 import *
import math
def create_pattern():
objects = []
for i in range(8):
angle = (360 / 8) * i
x = 30 * math.cos(math.radians(angle))
y = 30 * math.sin(math.radians(angle))
obj = translate([x, y, 0])(cube([5, 5, 20]))
objects.append(obj)
return union()(objects)
model = create_pattern()
print(scad_render(model))
Сложная модель (ваза с закруткой):
from solid2 import *
def generate_vase():
outer = linear_extrude(
height=150, twist=90, scale=1.2, slices=150
)(circle(r=40, _fn=6))
inner = linear_extrude(
height=160, twist=90, scale=1.2, slices=150
)(circle(r=38, _fn=6))
inner = translate([0, 0, 2])(inner)
return difference()([outer, inner])
model = generate_vase()
print(scad_render(model))
ПОДДЕРЖИВАЕМЫЕ ПАТТЕРНЫ КОДА
Генератор поддерживает различные стили написания кода:
1. Простой код
from solid2 import *
obj = cube(10)
print(scad_render(obj))
2. Функции с параметрами
from solid2 import *
def create_box(width, height, depth):
return cube([width, height, depth])
model = create_box(30, 40, 50)
print(scad_render(model))
3. Параметрические модели
from solid2 import *
def parametric_model(size=20, height=30):
base = cube([size, size, height])
top = translate([0, 0, height])(sphere(r=size/2))
return union()([base, top])
model = parametric_model(25, 35)
print(scad_render(model))
4. Классы
from solid2 import *
class ParametricBox:
def __init__(self, size):
self.size = size
def render(self):
return cube(self.size)
box = ParametricBox([10, 10, 10])
print(scad_render(box.render()))
5. Циклы и паттерны
from solid2 import *
def create_pattern():
objects = []
for i in range(5):
obj = translate([i*10, 0, 0])(cube(5))
objects.append(obj)
return union()(objects)
model = create_pattern()
print(scad_render(model))
ДВИЖОК РЕНДЕРИНГА
Вы можете выбрать движок рендеринга в верхней панели генератора:
1. АВТО (Рекомендуется)
Автоматически выбирает лучший доступный движок:
- Сначала пытается использовать OpenSCAD WASM для полной совместимости
- Если OpenSCAD недоступен, использует Простой парсер для базовых примитивов
2. OpenSCAD WASM
Полнофункциональный рендерер SCAD кода прямо в браузере. Обеспечивает полную совместимость с OpenSCAD.
Преимущества:
- ✅ Поддержка всех операций OpenSCAD (union, difference, intersection, hull, minkowski)
- ✅ Работает с любыми сложными моделями
- ✅ Точное соответствие результатам десктопного OpenSCAD
Недостатки:
- ⚠ Требует загрузки WASM модуля (~10-20 МБ)
- ⚠ Может быть медленнее для простых моделей
3. Простой парсер
Быстрый JavaScript парсер для базовых примитивов. Работает мгновенно без загрузки.
Поддерживаемые примитивы:
- ✅
cube()- куб - ✅
sphere()- сфера - ✅
cylinder()- цилиндр (включая конические) - ✅
union()- объединение нескольких примитивов
Преимущества:
- ✅ Мгновенный рендеринг без загрузки
- ✅ Работает всегда, даже без интернета
- ✅ Идеально для простых моделей
Ограничения:
- ⚠ Только базовые примитивы
- ⚠ Не поддерживает сложные операции (difference, intersection, hull)
- ⚠ Не поддерживает трансформации (rotate, translate, scale)
ОПТИМИЗАЦИИ OpenSCAD
OpenSCAD WASM поддерживает следующие оптимизации:
- Manifold - быстрая библиотека для CSG операций
- Fast-CSG - оптимизированные CSG операции
- Lazy Union - пропуск финального union для скорости
AI ГЕНЕРАЦИЯ КОДА
Используйте кнопку 🤖 AI для автоматической генерации сложного Python кода через OpenRouter AI.
Как использовать:
- Нажмите кнопку 🤖 AI в панели генератора
- Опишите модель, которую хотите создать (например: "сложная ваза с орнаментом")
- AI сгенерирует оптимизированный Python код
- Скомпилируйте и получите готовую модель для 3D печати
МОДИФИКАТОРЫ 3D ПЕЧАТИ
Модификаторы изменяют Python код модели для оптимизации под 3D печать:
- Толщина стенок - автоматически корректирует размеры отверстий и стенок в коде
- Заполнение - добавляет параметры заполнения в код (для использования в слайсере)
- Тип заполнения - указывает паттерн заполнения в комментариях кода
- Поддержки - добавляет код для генерации поддержек под нависающими элементами
- Юбка (Brim) - добавляет код для создания юбки в основании модели
- Высота слоя - добавляет параметр высоты слоя в код
Как работает: Модификаторы анализируют ваш Python код и автоматически добавляют/изменяют соответствующие части кода для оптимизации модели под 3D печать.
АЛЬТЕРНАТИВНЫЕ КОМПИЛЯТОРЫ OpenSCAD
Вы можете выбрать один из нескольких онлайн-компиляторов OpenSCAD:
1. OpenSCAD.cloud (Ochafik WASM) — Самый аутентичный
Порт оригинального OpenSCAD на WebAssembly. Полная совместимость с синтаксисом OpenSCAD.
Ссылка: ochafik.com/openscad
Плюсы: Полная совместимость, привычный интерфейс
Минусы: Может работать медленнее на "тяжелых" моделях
2. OpenJSCAD — Самый быстрый
Изначально создан для JavaScript, но поддерживает синтаксис SCAD. Очень быстрый рендеринг.
Ссылка: openjscad.xyz
Плюсы: Очень быстрый рендеринг, современный интерфейс, экспорт в STL
Минусы: Некоторые специфические функции OpenSCAD могут работать не так, как ожидается
3. CadHub
Современная платформа для параметрического моделирования, поддерживающая OpenSCAD и CadQuery.
Ссылка: cadhub.xyz
Плюсы: Удобный редактор кода, возможность сохранять проекты (Git-подобная система)
4. Smart SCAD (Экспериментальный)
Еще один вариант редактора с предпросмотром.
Ссылка: openscad.net
ПРОМПТ ДЛЯ AI ГЕНЕРАЦИИ КОДА
Для генерации кода через AI используйте следующий формат запроса:
Опишите модель, которую хотите создать, например:
- "Сложная ваза с орнаментом и параметрическими размерами"
- "Параметрическая решетка для вентиляции с настраиваемой плотностью"
- "Декоративная скульптура с органическими формами"
- "Функциональная деталь с креплениями и отверстиями"
- "Параметрический контейнер с крышкой"
Библиотеки и зависимости для компилятора:
AI автоматически использует следующие библиотеки:
- solid2 (SolidPython2) - основная библиотека для генерации OpenSCAD кода из Python
- math - стандартная библиотека Python для математических операций
- sys - системные функции (используется компилятором)
- io - для работы с потоками ввода/вывода (используется компилятором)
Обязательные требования к коду:
- Импорт:
from solid2 import * - В конце кода обязательно:
print(scad_render(my_object)) - Использование параметрических переменных для размеров
- Комментарии на русском языке
- Оптимизация для 3D печати (толщина стенок, углы, отверстия)
Поддерживаемые паттерны кода:
- Простой код (прямое создание объектов)
- Функции с параметрами
- Параметрические модели с настройками
- Классы и объектно-ориентированный подход
- Циклы и паттерны (for, while)
- Условные конструкции (if/else)
- Импорт дополнительных модулей (math, random и т.д.)
БИБЛИОТЕКИ
- OpenSCAD WASM - WebAssembly порт OpenSCAD
- SolidPython2 - Python библиотека для генерации OpenSCAD кода
- Pyodide - Python в браузере
- Three.js - 3D визуализация
- OpenRouter AI - Генерация кода через AI