Recommended resources
The freely available resources this lesson will direct you to.
Здравствуйте! Добро пожаловать на наш курс по созданию параметрических 3D-моделей с помощью build123d. Наша цель — научиться проектировать и печатать полезные предметы, в частности, корпуса для ваших электронных устройств.
Сегодняшнее первое занятие закладывает фундамент для всей нашей дальнейшей работы. Мы сфокусируемся на создании чистого и воспроизводимого рабочего окружения для Python-проекта. Вы узнаете, как настроить проект с помощью uv — современного и очень быстрого менеджера зависимостей, который вы выбрали для этого курса. К концу этого урока у вас будет полностью настроенный проект, готовый к работе с build123d.
Зачем мы используем uv?
Поскольку вы имеете большой опыт в Python-разработке, вы знаете, насколько важен правильный менеджмент зависимостей и окружений. uv — это инструмент от создателей ruff, написанный на Rust, который стремится объединить и значительно ускорить работу, традиционно выполняемую связкой pip, venv, pip-tools и другими.
Для быстрого знакомства с основными идеями uv предлагаю посмотреть короткое видео.
Why Python Developers Are Switching to UV
В этом видео от Dave Ebbelaar кратко и наглядно показаны ключевые преимущества uv по сравнению с традиционными инструментами, такими как pip.
Посмотрите вступление (первые 50 секунд), чтобы получить общее представление об инструменте.
Для более глубокого понимания, какие именно проблемы в экосистеме Python решает uv, вы можете прочитать следующий материал. Он хорошо объясняет мотивацию создания такого инструмента.
Год с uv — инструментом управления Python-проектами
В этой статье на Habr автор подробно разбирает проблемы бутстрапинга Python-проектов и то, как uv элегантно их решает.
Прочтите раздел «Какие проблемы пытается решить uv» и «Правильный бутстрапинг». Это поможет понять философию инструмента.
Шаг 1: Установка uv
Если uv у вас еще не установлен, это можно сделать одной командой. В вашей Linux-среде наиболее удобным способом будет использование curl.

Выполните в терминале:
curl -LsSf https://astral.sh/uv/install.sh | sh
После установки убедитесь, что uv доступен в вашей системе, проверив его версию:
uv --version
Вы должны увидеть что-то вроде uv 0.2.10.
Шаг 2: Создание и инициализация проекта
Теперь давайте создадим директорию для нашего проекта и инициализируем в ней uv.
-
Создайте папку для проекта и перейдите в нее:
mkdir b3d-enclosures cd b3d-enclosures -
Инициализируйте проект с помощью
uv:uv init
Эта команда создаст несколько файлов, формирующих каркас проекта:
pyproject.toml: Центральный конфигурационный файл проекта, соответствующий современным стандартам (PEP 621). Здесь будут перечислены зависимости, метаданные проекта и т.д..gitignore: Стандартный файл для Git, исключающий из репозитория ненужные файлы, например, виртуальное окружение.README.md: Файл для описания проекта.hello.pyи.python-version: Вспомогательные файлы, которые можно проигнорировать или удалить.
Шаг 3: Установка build123d
Теперь, когда у нас есть структура проекта, добавим нашу основную библиотеку — build123d.
Выполните команду:
uv add build123d
Обратите внимание на то, что произошло:
uvобнаружил, что виртуальное окружение еще не создано, и автоматически создал его в папке.venv.build123dи все его зависимости были скачаны и установлены в это окружение. Вы наверняка заметите, насколько быстро это происходит.- Файл
pyproject.tomlбыл автоматически обновлен. Зависимостьbuild123dтеперь прописана в секции[project.dependencies].
Откройте pyproject.toml в Helix, чтобы увидеть изменения:
[project]
name = "b3d-enclosures"
version = "0.1.0"
description = "Add your description here"
authors = [
{ name = "<Your Name>", email = "<your@email.com>" },
]
dependencies = [
"build123d>=0.9.3", # Ваша версия может отличаться
]
readme = "README.md"
requires-python = ">=3.9" # Ваша версия Python
# ... остальной файл
Этот подход обеспечивает декларативное и воспроизводимое управление зависимостями, что является ключевым для поддержания порядка в проекте.
Шаг 4: Проверка установки
Чтобы убедиться, что все настроено правильно, создадим минимальный скрипт, использующий build123d, и запустим его.
-
Создайте файл
lesson1_box.py. -
Добавьте в него следующий код:
# lesson1_box.py from build123d import Box # Создаем простой параллелепипед размерами 10x20x30 мм my_box = Box(10, 20, 30) print("Скрипт выполнен успешно! Объект Box создан.") print(f"Тип объекта: {type(my_box)}") -
Теперь запустим этот скрипт с помощью
uv. Командаuv runавтоматически активирует виртуальное окружение.venvдля выполнения скрипта.uv run lesson1_box.py
Если вы видите в консоли сообщение Скрипт выполнен успешно!, значит, окружение настроено верно, build123d установлена, и Python может импортировать её модули.
Проверьте себя!
Предположим, для анализа геометрии или других вычислений в будущем вам может понадобиться библиотека numpy, но только на этапе разработки, а не как основная зависимость проекта.
Задание:
- Добавьте
numpyв проект как "dev" зависимость. - Убедитесь, что она появилась в
pyproject.tomlв отдельной секции. - Затем удалите
numpyиз проекта.
Показать решение
-
Добавление "dev" зависимости:
Используйте флаг--dev, чтобы указать, что это зависимость для разработки.uv add numpy --dev -
Проверка
pyproject.toml:
Откройте файл. Вы увидите новую секцию[tool.uv.dev-dependencies], содержащуюnumpy.# ... [tool.uv.dev-dependencies] numpy = "*" -
Удаление зависимости:
Командаuv removeудаляет пакет и очищаетpyproject.toml. Для "dev" зависимостей нужно также указать флаг--dev.uv remove numpy --devПосле этого секция
[tool.uv.dev-dependencies]должна исчезнуть изpyproject.toml.
Ключевые выводы
Поздравляю! Вы успешно настроили профессиональное окружение для нашего CAD-проекта. Сегодня мы:
- Разобрались с назначением
uvи его преимуществами. - Создали новый Python-проект с помощью
uv init. - Научились добавлять и управлять зависимостями командой
uv add. - Установили
build123dи проверили, что всё работает, запустив скрипт черезuv run.
Эта прочная основа позволит нам сосредоточиться на самом интересном — 3D-моделировании.
Что дальше?
В следующем уроке мы сделаем наш первый видимый шаг в 3D. Мы научимся:
- Интегрировать 3D-вьювер OCP CAD Viewer в ваш рабочий процесс с
tmuxиHelix. - Создавать первый параметрический объект и изменять его размеры через переменные.
- Экспортировать модель в STL-файл, готовый для 3D-принтера.