Libreria Python open source per disegni CAD 2D e 3D
Libreria CAD Python open source per la creazione e la gestione di modelli 2D e 3D. Crea blocchi Lego parametrici e usa i selettori nelle app Python.
Cos'è la libreria Build123d?
Build123d è un pacchetto CAD 3D Python open source che aiuta gli sviluppatori software a creare disegni 2D e 3D all'interno delle proprie applicazioni Python. La libreria Build123d utilizza il gestore di contesto Python standard e sono disponibili tre builder per la gestione dei disegni. Il builder BuildLine può essere utilizzato per oggetti monodimensionali, il builder BuildSketch per oggetti bidimensionali planari e il builder BuildPart per oggetti tridimensionali. Un builder utilizza i contesti di posizione per posizionare oggetti o operazioni.
La libreria include il supporto per varie operazioni 2D e 3D, come raccordo, specchio, offset, scala, divisione, controforo, controforo, estrusione, foro, loft, rivoluzione, scala, sezione, divisione e molte altre. Oltre a quanto sopra, la libreria include anche diversi selettori, operatori di selezione, operatori di bordo e di filo, operatori di piano, operatori vettoriali e operatori di vertice.
La libreria Build123d è un'utile alternativa all'API Build123d, che offre numerosi vantaggi. Il più importante è che Build123d abilita l'utilizzo completo degli strumenti Python durante la progettazione di oggetti. La libreria è molto semplice da usare e consente di posizionare e gestire facilmente gli oggetti ovunque.
Introduzione a Build123d
Il modo più semplice per installare la versione stabile di Build123d è tramite GitHub. Per un'installazione fluida, utilizza il seguente comando
Installa Build123d tramite GitHub
python3 -m pip install git+https://github.com/gumyr/build123d.git#egg=build123d
È possibile scaricare la libreria condivisa compilata dal repository Github.
Come utilizzare i selettori tramite la libreria Python
Quando si utilizza un sistema CAD con interfaccia grafica, l'utente spesso fa clic su una feature per selezionarla per un'operazione. I selettori sono procedure che mostrano come gli utenti possono separare una feature da un progetto utilizzando metodi di filtro e ordinamento Python, tipicamente implementati come un insieme di operazioni Python personalizzate. Vertice(), Edges(), Wires(), Solids() e Faces() sono alcuni esempi di selettori. I tipi di operando sono: Axis, SortBy e GeomType. Si noti che i metodi standard per le liste, come sorted o filtered, sono utili per generare selettori complessi.
Creare un blocco Lego parametrico tramite la libreria Python
La libreria Python open source Build123d consente agli sviluppatori software di creare blocchi Lego parametrici all'interno delle proprie applicazioni Python. Per prima cosa, è necessario importare l'ambiente build123d e definire le dimensioni del blocco Lego. Ora possiamo passare alla parte di costruzione e creare la struttura interna dei blocchi. Per la struttura, dobbiamo disegnare uno schizzo bidimensionale che verrà successivamente estruso in un oggetto tridimensionale. Successivamente, possiamo definire il perimetro rettangolare, creare le pareti del blocco e creare la griglia interna. Successivamente, dobbiamo convertire la griglia interna in creste, rimuovendo il centro. Ora creiamo un set di cilindri cavi interni ed estrudiamo lo schizzo in pareti. Dopo aver completato le pareti, dobbiamo aggiungere la parte superiore del blocco e il passaggio finale è l'aggiunta dei punti.
Come creare dimensioni e griglia interna di blocchi Lego tramite 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)