Библиотека Python с открытым исходным кодом для 2D- и 3D-чертежей САПР
Библиотека Python CAD с открытым исходным кодом для создания и управления 2D- и 3D-моделями. Создавайте параметрические блоки Lego и используйте селекторы в приложениях Python.
Что такое библиотека Build123d?
Build123d — это пакет 3D-САПР на Python с открытым исходным кодом, помогающий разработчикам программного обеспечения создавать 2D- и 3D-чертежи в своих приложениях Python. Библиотека Build123d использует стандартный менеджер контекста Python и предлагает три конструктора для работы с чертежами. Конструктор BuildLine можно использовать для одномерных объектов, конструктор BuildSketch — для плоских двумерных объектов, а конструктор BuildPart — для трёхмерных объектов. Конструктор использует контексты расположения для позиционирования объектов или выполнения операций.
Библиотека поддерживает различные 2D- и 3D-операции, такие как скругление, зеркальное отражение, смещение, масштабирование, разделение, контрсверление, контрсверление, выдавливание, отверстие, лофт, вращение, масштабирование, сечение, разделение и многие другие. Помимо вышеперечисленного, в библиотеку также входят селекторы, операторы селекторов, операторы ребер и проводников, операторы плоскостей, векторные операторы и операторы вершин.
Библиотека Build123d — это полезная альтернатива API Build123d, обладающая множеством преимуществ, самым важным из которых является то, что build123d предоставляет полный набор инструментов Python для проектирования объектов. Библиотека очень проста в использовании, и с её помощью можно легко размещать объекты и управлять ими где угодно.
Начало работы с Build123d
Установить стабильную версию Build123d проще всего с GitHub. Для быстрой установки используйте следующую команду
Установите Build123d через GitHub
python3 -m pip install git+https://github.com/gumyr/build123d.git#egg=build123d
Вы можете загрузить скомпилированную общую библиотеку из репозитория Github.
Как использовать селекторы через библиотеку Python
При использовании САПР с графическим интерфейсом пользователь часто щёлкает по элементу, чтобы выбрать его для выполнения какой-либо операции. Селекторы — это процедуры, которые показывают, как пользователи могут отделить элемент от проекта с помощью методов фильтрации и сортировки Python, обычно реализованных в виде набора пользовательских операций Python. Примерами селекторов являются vertices(), edges(), wires(), solids() и faces(). Типы операндов: Axis, SortBy и GeomType. Помните, что стандартные методы работы со списками, такие как sorted или filtered, полезны для создания сложных селекторов.
Создание параметрического блока Lego с помощью библиотеки Python
Библиотека Python с открытым исходным кодом Build123d позволяет разработчикам создавать параметрические блоки Lego в своих приложениях Python. Сначала необходимо настроить среду build123d и определить размеры блока Lego. Теперь можно перейти к конструктору и создать внутреннюю структуру блоков. Для создания структуры необходимо нарисовать двухмерный эскиз, который затем будет выдавлен в трёхмерный объект. После этого можно задать прямоугольник периметра, создать стены блока и создать внутреннюю сетку. После этого внутреннюю сетку нужно преобразовать в ребра, удалив центр. Теперь создадим набор внутренних полых цилиндров и выдавим эскиз в стены. После завершения создания стен необходимо добавить верхнюю часть блока, а последний шаг — добавить точки.
Как создать размеры и внутреннюю сетку блока Lego с помощью API Python?
from build123d import *
pip_count = 6
lego_unit_size = 8
pip_height = 1.8
pip_diameter = 4.8
block_length = lego_unit_size * pip_count
block_width = 16
base_height = 9.6
block_height = base_height + pip_height
support_outer_diameter = 6.5
support_inner_diameter = 4.8
ridge_width = 0.6
ridge_depth = 0.3
wall_thickness = 1.2
// instantiate a BuildPart
with BuildPart() as lego:
//create a sketch builder
with BuildPart() as lego:
# Draw the bottom of the block
with BuildSketch() as plan:
//create Perimeter Rectangle
with BuildPart() as lego:
# Draw the bottom of the block
with BuildSketch() as plan:
# Start with a Rectangle the size of the block
perimeter = Rectangle(width=block_length, height=block_width)
//create the walls of the block
ith BuildPart() as lego:
# Draw the bottom of the block
with BuildSketch() as plan:
# Start with a Rectangle the size of the block
perimeter = Rectangle(width=block_length, height=block_width)
# Subtract an offset to create the block walls
Offset(
perimeter,
amount=-wall_thickness,
kind=Kind.INTERSECTION,
mode=Mode.SUBTRACT,
)
//Create Internal Grid
with BuildPart() as lego:
# Draw the bottom of the block
with BuildSketch() as plan:
# Start with a Rectangle the size of the block
perimeter = Rectangle(width=block_length, height=block_width)
# Subtract an offset to create the block walls
Offset(
perimeter,
amount=-wall_thickness,
kind=Kind.INTERSECTION,
mode=Mode.SUBTRACT,
)
# Add a grid of lengthwise and widthwise bars
with GridLocations(x_spacing=0, y_spacing=lego_unit_size, x_count=1, y_count=2):
Rectangle(width=block_length, height=ridge_width)
with GridLocations(lego_unit_size, 0, pip_count, 1):
Rectangle(width=ridge_width, height=block_width)