1. Producten
  2.   CAD
  3.   Python
  4.   build123d
 
  

Open Source Python-bibliotheek voor 2D- en 3D-CAD-tekeningen

Open source Python CAD-bibliotheek voor het maken en beheren van 2D- en 3D-modellen. Creëer parametrische Lego-blokken en gebruik selectoren in Python-apps.

Wat is de Build123d-bibliotheek?

Build123d is een open-source Python 3D CAD-pakket waarmee softwareontwikkelaars 2D- en 3D-tekeningen kunnen maken in hun eigen Python-applicaties. De Build123d-bibliotheek maakt gebruik van de standaard Python-contextmanager en er zijn drie builders beschikbaar voor het verwerken van tekeningen. De BuildLine-builder kan worden gebruikt voor eendimensionale objecten, de BuildSketch-builder voor vlakke tweedimensionale objecten en de BuildPart-builder voor driedimensionale objecten. Een builder gebruikt locatiecontexten voor het positioneren van objecten of bewerkingen.

De bibliotheek biedt ondersteuning voor diverse 2D- en 3D-bewerkingen, zoals fillet, mirror, offset, scale, split, CounterBoreHole, CounterSinkHole, Extrude, Hole, Loft, Revolve, Scale, Section, Split en nog veel meer. Naast bovenstaande zijn er ook diverse selectoren, selectoroperatoren, rand- en draadoperatoren, vlakke operatoren, vectoroperatoren en vertexoperatoren in de bibliotheek opgenomen.

De Build123d-bibliotheek is een nuttig alternatief voor de Build123d API en biedt veel voordelen. Het belangrijkste voordeel is dat de Build123d-bibliotheek de volledige Python-toolbox ondersteunt bij het ontwerpen van objecten. De bibliotheek is zeer eenvoudig te bedienen en objecten kunnen overal eenvoudig worden gepositioneerd en beheerd.

Previous Next

Aan de slag met Build123d

De makkelijkste manier om de stabiele release van Build123d te installeren is via GitHub. Gebruik de volgende opdracht voor een soepele installatie

Installeer Build123d via GitHub

python3 -m pip install git+https://github.com/gumyr/build123d.git#egg=build123d 

Je kunt de gecompileerde gedeelde bibliotheek downloaden van de Github-repository.

Selectors gebruiken via de Python-bibliotheek

Bij gebruik van een CAD-systeem op basis van een grafische gebruikersinterface klikt de gebruiker vaak op een object om het voor een bepaalde bewerking te selecteren. Selectors zijn procedures die laten zien hoe gebruikers een object van een ontwerp kunnen scheiden met behulp van filter- en sorteermethoden in Python, die doorgaans worden geïmplementeerd als een set aangepaste Python-bewerkingen. Vertices(), Edges(), Wires(), Solids() en Faces() zijn enkele voorbeelden van selectors. De operandtypen zijn: Axis, SortBy en GeomType. Houd er rekening mee dat standaardlijstmethoden zoals sorted of filtered nuttig zijn bij het genereren van complexe selectors.

Parametrische Lego-blokken maken via de Python-bibliotheek

Met de open-source Python-bibliotheek Build123d kunnen softwareontwikkelaars parametrische Lego-blokken maken in hun eigen Python-applicaties. Eerst moet je de build123d-omgeving aanpassen en de afmetingen van het Lego-blok definiëren. Nu kunnen we verder met het builder-gedeelte en de interne structuur van de blokken creëren. Voor de structuur tekenen we een tweedimensionale schets die later wordt geëxtrudeerd tot een driedimensionaal object. Daarna definiëren we de omtrekrechthoek, maken we wanden van de blokrechthoek en creëren we een intern raster. Daarna moeten we het interne raster omzetten naar ribbels en het midden verwijderen. Maak nu een set interne holle cilinders en extrudeer de schets naar wanden. Nadat de wanden zijn voltooid, moet de bovenkant van het blok worden toegevoegd en de laatste stap is het toevoegen van de punten.

Hoe maak ik afmetingen en een intern raster van een Lego-blok via de 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)
 
 
 Dutch