1. Продукти
  2.   CAD
  3.   Python
  4.   build123d
 
  

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 при проектиране на обекти. Библиотеката е много лесна за работа и човек може лесно да позиционира и управлява обекти навсякъде.

Previous Next

Първи стъпки с 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)
 
 
 Български