ПАРАМЕТРИЧЕСКИЙ ДИЗАЙН

Мы не рисуем. Мы задаем правила. Форма рождается из логики алгоритма.

ОТКРЫТЫЙ КОД

Построено на плечах гигантов: OpenSCAD, Python, SolidPython2.

КОД В МАТЕРИЮ • PYTHON В SCAD • ВИРТУАЛЬНОЕ В ФИЗИЧЕСКОЕ • КОД В МАТЕРИЮ • PYTHON В SCAD • ВИРТУАЛЬНОЕ В ФИЗИЧЕСКОЕ •
ВВОД: PYTHON
🤖 AI ГЕНЕРАЦИЯ КОДА
📚 БИБЛИОТЕКА ШАБЛОНОВ
ВЫВОД: 3D МОДЕЛЬ
⚡ Инициализация системы...
⏳ Загрузка Pyodide...
⏳ Загрузка OpenSCAD WASM...

⏳ Ожидание компиляции...

Нажмите СКОМПИЛИРОВАТЬ для генерации 3D модели

КАК ИСПОЛЬЗОВАТЬ

  1. Напишите код на Python используя from solid2 import *
  2. Создайте объект и выведите его: print(scad_render(my_object))
  3. Нажмите СКОМПИЛИРОВАТЬ()
  4. Модель автоматически отобразится справа
  5. Нажмите СКАЧАТЬ 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.

Как использовать:

  1. Нажмите кнопку 🤖 AI в панели генератора
  2. Опишите модель, которую хотите создать (например: "сложная ваза с орнаментом")
  3. AI сгенерирует оптимизированный Python код
  4. Скомпилируйте и получите готовую модель для 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