Recommended resources
The freely available resources this lesson will direct you to.
Здравствуйте!
В предыдущих уроках мы освоили ключевые инструменты build123d: создание примитивов, их модификацию с помощью булевых операций, точное позиционирование и, наконец, эффективное создание массивов с помощью паттернов. Теперь у нас есть все необходимые базовые навыки, чтобы приступить к нашей главной задаче — проектированию корпуса для электроники.
Как и было анонсировано, сегодня мы начинаем работу над самим корпусом. Цель этого урока — спроектировать монолитный блок, который будет определять внешние габариты нашего будущего устройства. Это первый и очень важный шаг в методологии проектирования "сверху-вниз" (top-down), которую мы будем использовать.
1. Стратегия проектирования "сверху-вниз"
Вместо того чтобы строить корпус "снизу-вверх", создавая отдельные стенки и соединяя их, мы начнем с цельного блока и будем "удалять" из него лишний материал. Представьте, что мы скульптор, который начинает с глыбы мрамора и отсекает все ненужное, чтобы получить желаемую форму.
Этот подход имеет несколько преимуществ, которые особенно ценны в CAD-as-code:
- Надежность: Все элементы корпуса (основание, крышка, стойки) будут происходить из одного "мастер-тела". Это гарантирует, что они идеально сойдутся при сборке.
- Простота управления: Легче контролировать общие габариты и форму, изменяя параметры исходного блока, чем редактировать каждую стенку по отдельности.
- Логичность: Мы сначала определяем внешнее пространство, которое займет наше устройство, а затем прорабатываем внутреннее устройство.
Итак, наша первая задача — создать ту самую "глыбу мрамора".
2. Определение габаритов и создание блока
Любой корпус проектируется для чего-то. В нашем случае — для печатной платы (PCB). Поэтому внешние размеры корпуса напрямую зависят от размеров платы и необходимых зазоров для стенок, компонентов и крепежа.
Давайте создадим новый файл enclosure_v1.py и определим в нем параметры нашего будущего корпуса. На данном этапе мы зададим их как константы, но в будущем сможем сделать их зависимыми от размеров конкретной платы.
# enclosure_v1.py
from build123d import *
# ================== ПАРАМЕТРЫ ==================
# Внешние габариты будущего корпуса в миллиметрах
enclosure_length = 100.0
enclosure_width = 70.0
enclosure_height = 35.0
# ================== ПРОЕКТИРОВАНИЕ ==================
# Создаем монолитный блок.
# Используем align, чтобы отцентровать его относительно начала координат.
# Это стандартная и очень удобная практика.
solid_block = Box(
length=enclosure_length,
width=enclosure_width,
height=enclosure_height,
align=(Align.CENTER, Align.CENTER, Align.CENTER)
)
# ================== ВИЗУАЛИЗАЦИЯ ==================
# Проверяем, что получилось
if "show_object" in locals():
show_object(solid_block, name="Monolithic Block")
Запустите этот код. Вы увидите простой прямоугольный параллелепипед. Это и есть наш исходный монолитный блок.
Ключевые моменты в коде:
- Параметризация: Все размеры вынесены в переменные в начале файла. Это отличная практика, позволяющая легко изменять дизайн. Если нам понадобится корпус другого размера, мы просто изменим значения
enclosure_length,enclosure_widthиenclosure_height. Box: Для создания блока мы используем самый прямой и очевидный инструмент — примитивBox. Хотя того же результата можно было бы добиться, нарисовавRectangleвBuildSketchи затем применивextrude, для такой простой формыBoxявляется более лаконичным решением.align=(Align.CENTER, Align.CENTER, Align.CENTER): Этот параметр чрезвычайно важен. Он центрирует наш объект по осям X, Y и Z относительно начала координат. Работа с симметричными, отцентрованными объектами значительно упрощает последующие операции, такие как зеркальное отражение, позиционирование внутренних компонентов и создание симметричных вырезов.
Этот простой блок — фундамент всего нашего проекта. На следующих этапах мы превратим его в полый корпус, разделим на части и добавим все необходимые функциональные элементы.
Проверьте себя!
Представьте, что вы проектируете корпус для печатной платы, похожей на ту, что изображена на рисунке.

Допустим, размеры этой платы — 85 мм в длину и 56 мм в ширину. Самый высокий компонент на плате имеет высоту 12 мм.
Задание:
На основе этих данных, спроектируйте монолитный блок для корпуса. При расчете габаритов блока руководствуйтесь следующими требованиями к зазорам (clearances):
- 3 мм зазора между платой и каждой из боковых стенок (слева, справа, спереди, сзади).
- 5 мм зазора между платой и дном корпуса.
- 8 мм зазора между верхушкой самого высокого компонента и крышкой корпуса.
Напишите код на build123d, который вычисляет итоговые размеры блока и создает его.
Показать решение
# exercise_solution.py
from build123d import *
# ================== ИСХОДНЫЕ ДАННЫЕ ==================
pcb_length = 85.0
pcb_width = 56.0
pcb_max_height = 12.0
# ================== ТРЕБОВАНИЯ К ЗАЗОРАМ ==================
side_clearance = 3.0
bottom_clearance = 5.0
top_clearance = 8.0
# ================== РАСЧЕТ ГАБАРИТОВ КОРПУСА ==================
# Длина корпуса = длина платы + зазор слева + зазор справа
enclosure_length = pcb_length + 2 * side_clearance
# Ширина корпуса = ширина платы + зазор спереди + зазор сзади
enclosure_width = pcb_width + 2 * side_clearance
# Высота корпуса = зазор снизу + высота платы с компонентами + зазор сверху
enclosure_height = bottom_clearance + pcb_max_height + top_clearance
# ================== ПРОЕКТИРОВАНИЕ ==================
# Создаем монолитный блок с рассчитанными размерами
calculated_block = Box(
length=enclosure_length,
width=enclosure_width,
height=enclosure_height,
align=(Align.CENTER, Align.CENTER, Align.CENTER)
)
# ================== ВИЗУАЛИЗАЦИЯ ==================
print(f"Рассчитанные габариты корпуса: {enclosure_length} x {enclosure_width} x {enclosure_height} мм")
if "show_object" in locals():
show_object(calculated_block, name="Calculated Monolithic Block")
# Ожидаемый результат:
# Рассчитанные габариты корпуса: 91.0 x 62.0 x 25.0 мм
Этот пример демонстрирует, как параметрический подход позволяет выводить размеры одних частей проекта (корпуса) из размеров других (платы). Это основа гибкого и легко адаптируемого дизайна.
Ключевые выводы
- Мы начали проектирование корпуса, используя методологию "сверху-вниз", которая повышает надежность и упрощает управление дизайном.
- Первым шагом этой методологии является создание монолитного блока, определяющего внешние габариты.
- Использование параметров (переменных) для всех размеров — критически важная практика для создания гибких и легко изменяемых моделей.
- Центрирование основного тела относительно начала координат является хорошим тоном и упрощает дальнейшую работу.
Что дальше?
Наш проект пока представляет собой просто кирпич. В следующем уроке мы сделаем самый важный шаг — превратим этот сплошной блок в тонкостенную полую коробку. Для этого мы изучим операцию thicken, которая является одним из самых мощных инструментов для создания корпусов.