Python библиотека с отворен код за 2D и 3D CAD чертежи
CAD библиотека с отворен код на Python за създаване и управление на 2D и 3D модели. Създавайте параметрични Lego блокове и използвайте селектори в Python приложения.
Какво е библиотеката Build123d?
Build123d е 3D CAD пакет с отворен код, написан на Python, който помага на разработчиците на софтуер да създават 2D и 3D чертежи в собствените си Python приложения. Библиотеката Build123d използва стандартния мениджър на контекста на Python и са налични три инструмента за работа с чертежи. BuildLine може да се използва за едномерни обекти, BuildSketch - за равнинни двумерни обекти, а BuildPart - за тримерни обекти. Конструкторът използва Location Contexts за позициониране на обекти или операции.
Библиотеката включва поддръжка за различни 2D и 3D операции, като например заобляне, огледало, отместване, мащабиране, разделяне, CounterBoreHole, CounterSinkHole, Extrude, Hole, Loft, Revolve, Scale, Section, Split и много други. Освен горепосоченото, библиотеката включва няколко селектора, селекторни оператори, оператори за ръбове и проводници, оператори за равнини, векторни оператори и оператори за върхове.
Библиотеката Build123d е полезна алтернатива на Build123d API, имаща много предимства пред него, като най-важното е, че build123d позволява пълния набор от инструменти на Python при проектиране на обекти. Библиотеката е много лесна за работа и човек може лесно да позиционира и управлява обекти навсякъде.
Първи стъпки с Build123d
Най-лесният начин да инсталирате стабилната версия на Build123d е чрез GitHub. Моля, използвайте следната команда за безпроблемна инсталация
Инсталирайте Build123d чрез GitHub
python3 -m pip install git+https://github.com/gumyr/build123d.git#egg=build123d
Можете да изтеглите компилираната споделена библиотека от хранилището Github.
Как да използваме селектори чрез Python библиотека
Когато използва CAD система, базирана на графичен потребителски интерфейс, потребителят често кликва върху даден елемент, за да го избере за някаква операция. Селекторите са процедури, които показват как потребителите могат да отделят даден елемент от дизайн, използвайки методи за филтриране и сортиране на Python, обикновено реализирани като набор от персонализирани Python операции. vertices(), edges(), wires(), solids() и faces() са някои примери за селектори. Типовете операнди са: Axis, SortBy и GeomType. Моля, не забравяйте, че стандартните методи за списъци, като sorted или filtered, са полезни при генерирането на сложни селектори.
Създаване на параметричен Lego блок чрез Python библиотека
Библиотеката с отворен код Build123d на Python позволява на разработчиците на софтуер да създават параметричен Lego блок в собствените си Python приложения. Първо трябва да се използва средата build123d и да се дефинират размерите на Lego блока. Сега можем да преминем към частта за изграждане и да създадем вътрешната структура на блоковете. За структурата трябва да начертаем двуизмерна скица, която по-късно ще бъде екструдирана в триизмерен обект. След това можем да дефинираме правоъгълник по периметъра и да създадем стени на правоъгълника на блока и да създадем вътрешна мрежа. След това трябва да конвертираме вътрешната мрежа в ребра, като центърът трябва да бъде премахнат. Сега създайте набор от вътрешни кухи цилиндри и екструдирайте скица в стени. След завършване на стените, трябва да се добави горната част на блока и последната стъпка е да се добавят издатини.
Как да създадем размери и вътрешна мрежа от Lego блок чрез Python API?
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)