Bibliothèque Python open source pour les dessins CAO 2D et 3D
Bibliothèque CAO Python open source pour la création et la gestion de modèles 2D et 3D. Créez des blocs Lego paramétriques et utilisez des sélecteurs dans les applications Python.
Qu'est-ce que la bibliothèque Build123d ?
Build123d est un package Python open source de CAO 3D qui permet aux développeurs de créer des dessins 2D et 3D dans leurs propres applications Python. La bibliothèque Build123d utilise le gestionnaire de contexte Python standard et trois générateurs sont disponibles pour gérer les dessins : le générateur BuildLine pour les objets unidimensionnels, le générateur BuildSketch pour les objets bidimensionnels plans et le générateur BuildPart pour les objets tridimensionnels. Un générateur utilise des contextes de localisation pour positionner les objets ou les opérations.
La bibliothèque prend en charge diverses opérations 2D et 3D, telles que le congé, la symétrie, le décalage, la mise à l'échelle, le fractionnement, le contre-alésage, le contre-perçage, l'extrusion, le perçage, le lissage, la révolution, la mise à l'échelle, la section, le fractionnement, et bien d'autres. Outre les éléments mentionnés ci-dessus, la bibliothèque propose également plusieurs sélecteurs, opérateurs de sélecteur, opérateurs d'arêtes et de fils, opérateurs de plans, opérateurs de vecteurs et opérateurs de sommets.
La bibliothèque Build123d est une alternative utile à l'API Build123d, présentant de nombreux avantages, le plus important étant qu'elle permet d'utiliser l'ensemble des outils Python pour la conception d'objets. Très simple d'utilisation, elle permet de positionner et de gérer facilement des objets où qu'ils soient.
Démarrer avec Build123d
Le moyen le plus simple d'installer la version stable de Build123d est d'utiliser GitHub. Veuillez utiliser la commande suivante pour une installation fluide.
Installer Build123d via GitHub
python3 -m pip install git+https://github.com/gumyr/build123d.git#egg=build123d
Vous pouvez télécharger la bibliothèque partagée compilée à partir du dépôt Github.
Comment utiliser les sélecteurs via la bibliothèque Python
Lorsqu'on utilise un système de CAO basé sur une interface graphique, l'utilisateur clique souvent sur une entité pour la sélectionner et effectuer une opération. Les sélecteurs sont des procédures qui montrent comment séparer une entité d'une conception à l'aide de méthodes de filtrage et de tri Python, généralement implémentées sous forme d'un ensemble d'opérations Python personnalisées. vertices(), edge(), wires(), solids() et faces() sont des exemples de sélecteurs. Les types d'opérandes sont : Axis, SortBy et GeomType. N'oubliez pas que les méthodes de liste standard telles que sorted ou filtered sont utiles pour générer des sélecteurs complexes.
Créer un bloc Lego paramétrique via la bibliothèque Python
La bibliothèque Python open source Build123d permet aux développeurs de créer des blocs Lego paramétriques dans leurs propres applications Python. Il faut d'abord implémenter l'environnement Build123d et définir les dimensions du bloc Lego. Passons maintenant à la partie constructeur et créons la structure interne des blocs. Pour la structure, nous devons dessiner une esquisse bidimensionnelle qui sera ensuite extrudée en un objet tridimensionnel. Ensuite, nous pouvons définir un rectangle périphérique, créer des parois et une grille interne. Ensuite, nous devons convertir la grille interne en crêtes, dont le centre doit être supprimé. Créez ensuite un ensemble de cylindres creux internes et extrudez l'esquisse en parois. Une fois les parois terminées, ajoutez le haut du bloc et la dernière étape consiste à ajouter les points.
Comment créer des dimensions et une grille interne d'un bloc Lego via l'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)