Open Source knihovna Pythonu pro 2D a 3D CAD výkresy
Open source CAD knihovna v Pythonu pro vytváření a správu 2D a 3D modelů. Vytvářejte parametrické Lego bloky a používejte selektory v Python aplikacích.
Co je knihovna Build123d?
Build123d je open source 3D CAD balíček v Pythonu, který pomáhá vývojářům softwaru vytvářet 2D a 3D výkresy v jejich vlastních aplikacích v Pythonu. Knihovna Build123d používá standardní správce kontextu Pythonu a pro práci s výkresy jsou k dispozici tři nástroje. Nástroj BuildLine lze použít pro jednorozměrné objekty, nástroj BuildSketch pro rovinné dvourozměrné objekty a nástroj BuildPart pro trojrozměrné objekty. Nástroj používá kontexty umístění pro polohování objektů nebo operací.
Knihovna obsahuje podporu pro různé 2D a 3D operace, jako je zaoblení, zrcadlení, odsazení, měřítko, rozdělení, zaoblení, zapuštění, vysunutí, díra, podložení, rotace, změna měřítka, řez, rozdělení a mnoho dalších. Kromě výše uvedeného je součástí knihovny také několik selektorů, selektorových operátorů, operátorů hran a drátů, operátorů rovin, vektorových operátorů a vertexových operátorů.
Knihovna Build123d je užitečnou alternativou k API Build123d a má oproti němu mnoho výhod, z nichž nejdůležitější je, že build123d umožňuje plnohodnotné nástroje Pythonu při navrhování objektů. Knihovna se velmi snadno ovládá a objekty lze snadno umisťovat a spravovat kdekoli.
Začínáme s Build123d
Nejjednodušší způsob instalace stabilní verze Build123d je pomocí GitHubu. Pro hladký průběh instalace použijte následující příkaz
Nainstalujte Build123d přes GitHub
python3 -m pip install git+https://github.com/gumyr/build123d.git#egg=build123d
Zkompilovanou sdílenou knihovnu si můžete stáhnout z repozitáře Github.
Jak používat selektory prostřednictvím knihovny Pythonu
Při používání CAD systému založeného na grafickém uživatelském rozhraní uživatel často klikne na prvek, aby jej vybral pro nějakou operaci. Selektory jsou procedury, které ukazují, jak mohou uživatelé oddělit prvek od návrhu pomocí filtrů a třídicích metod Pythonu, které jsou obvykle implementovány jako sada vlastních operací Pythonu. vertices(), edges(), wires(), solids() a faces() jsou některé příklady selektorů. Typy operandů jsou: Axis, SortBy a GeomType. Nezapomeňte, že standardní metody seznamů, jako je sorted nebo filtered, jsou užitečné při generování složitých selektorů.
Vytvoření parametrického Lego bloku pomocí knihovny Pythonu
Open source knihovna Pythonu Build123d umožňuje vývojářům softwaru vytvářet parametrický Lego blok v jejich vlastních Python aplikacích. Nejprve je třeba definovat prostředí build123d a rozměry Lego bloku. Nyní se můžeme přesunout k části builder a vytvořit vnitřní strukturu bloků. Pro strukturu musíme nakreslit dvourozměrný náčrt, který bude později extrudován do trojrozměrného objektu. Poté můžeme definovat obvodový obdélník a vytvořit stěny obdélníku bloku a vytvořit vnitřní mřížku. Poté musíme převést vnitřní mřížku na hřebeny, střed je třeba odstranit. Nyní vytvořte sadu vnitřních dutých válců a extrudujte náčrt do Zdí. Po dokončení zdí je třeba přidat horní část bloku a posledním krokem je přidání výčnělků.
Jak vytvořit rozměry a vnitřní mřížku Lego kostky pomocí 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)