1. Товары
  2.   3D
  3.   Python
  4.   PythonOCC-Core
 
  

Открытая библиотека Python для 3D-моделирования и обмена данными

Бесплатная библиотека Python для 3D-моделирования и обработки обмена данными. Позволяет работать с форматами файлов 3D CAD, BIM, PLM и CAM через онлайн Python API.

Что такое библиотека PythonOCC-Core?

PythonOCC-Core — это бесплатная библиотека для 3D-моделирования и автоматизации CAD. Она использует Python, широко применяемый язык программирования, поверх ядра OpenCASCADE Technology (OCCT). Такое сочетание предоставляет прочную основу для создания, изменения и изучения сложных 3D-форм. Сочетая простоту Python с мощными инструментами моделирования OCCT, вы получаете универсальный и эффективный инструмент в своём распоряжении. Благодаря интуитивному интерфейсу Python и обширному набору функций библиотека обеспечивает бесшовный опыт как для начинающих, так и для опытных разработчиков в этой области. Она даёт возможность архитекторам и инженерам, как вы, создавать параметрические модели, разрабатывать планы зданий и проводить структурный анализ. Этот инструмент улучшает рабочий процесс проектирования, позволяя точно визуализировать и эффективно работать в команде. Он популярен в различных секторах, таких как автомобильная промышленность, аэрокосмическая отрасль и промышленный дизайн, для разработки и уточнения сложных 3D‑моделей. С этой библиотекой вы можете ускорить прототипирование, симуляции и анализ дизайна, тем самым упрощая процесс разработки продукта.

Визуализационные возможности PythonOCC-Core идеально подходят для создания игр и виртуальной реальности. С помощью этого инструмента вы можете создавать захватывающие окружения, реалистичные симуляции и интерактивные приключения. Кроме того, библиотека предоставляет важные функции, такие как работа с медицинскими изображениями, манипулирование 3D‑геометрией, импорт и экспорт CAD‑данных, проведение продвинутых симуляций 3D‑моделей, визуализация 3D‑контента в веб‑браузерах и демонстрация 3D‑визуализаций через популярные Python‑GUI. Библиотека также играет ключевую роль в научных исследованиях, таких как вычислительная физика, материаловедение и биомедицинская инженерия. Многие специалисты по программному обеспечению и разработчики в различных отраслях находят PythonOCC-Core привлекательным, поскольку он сочетает простоту Python и мощь OCCT. С PythonOCC-Core вы можете повысить свою креативность и упростить сложные CAD‑процессы. Это открывает новые возможности для инноваций и продуктивности в 3D‑моделировании и дизайне.

Previous Next

Начало работы с PythonOCC-Core

Самый простой способ установить стабильный релиз PythonOCC-Core — использовать pip. Пожалуйста, используйте следующую команду для беспроблемной установки.

Установить PythonOCC-Core через pip

pip install pythonocc-core

Установить PythonOCC-Core через Conda

conda install -c conda-forge pythonocc-core

Вы также можете установить PythonOCC-Core через Conda, используя следующую команду.

conda install -c 1adrianb face_alignment

Вы можете скачать скомпилированную общую библиотеку из репозитория Github.

Создавайте и управляйте 3D-геометрией с помощью Python

Библиотека с открытым исходным кодом PythonOCC-Core включает полную поддержку создания и управления 3D‑моделями в приложениях на Python. Кроме того, библиотека предлагает обширный набор инструментов для создания и манипулирования 3D‑геометрическими формами, включая точки, кривые, поверхности и тела. Она предоставляет широкий спектр алгоритмов для построения и модификации сложных объектов, таких как булевы операции, скругление и фаска. Следующий пример показывает, как разработчики программного обеспечения могут создавать ограничивающие коробки основной геометрии с помощью команд Python.

Как вычислить и отобразить ограничивающие коробки в приложениях Python?

def get_boundingbox(shape, tol=1e-6, use_mesh=True):

bbox = Bnd_Box()
    bbox.SetGap(tol)
    if use_mesh:
        mesh = BRepMesh_IncrementalMesh()
        mesh.SetParallelDefault(True)
        mesh.SetShape(shape)
        mesh.Perform()
        if not mesh.IsDone():
            raise AssertionError("Mesh not done.")
    brepbndlib_Add(shape, bbox, use_mesh)

    xmin, ymin, zmin, xmax, ymax, zmax = bbox.Get()
    return xmin, ymin, zmin, xmax, ymax, zmax, xmax - xmin, ymax - ymin, zmax - zmin


print("Box bounding box computation")
box_shape = BRepPrimAPI_MakeBox(10.0, 20.0, 30.0).Shape()
bb1 = get_boundingbox(box_shape)
print(bb1)

print("Cylinder bounding box computation")
cyl_shape = BRepPrimAPI_MakeCylinder(10.0, 20.0).Shape()
bb2 = get_boundingbox(cyl_shape)
print(bb2)

print("Torus bounding box computation")
torus_shape = BRepPrimAPI_MakeCylinder(15.0, 5.0).Shape()
bb3 = get_boundingbox(torus_shape)
print(bb3)

 

Автоматизация CAD с использованием Python API

Библиотека с открытым исходным кодом PythonOCC-Core предоставила очень полезные возможности для выполнения различных задач, связанных с CAD‑диаграммами. Библиотека поддерживает различные форматы файлов, часто используемые в CAD, включая STEP, IGES, STL и BREP. Библиотека позволяет разработчикам автоматизировать повторяющиеся CAD‑задачи, такие как создание параметрических моделей, выполнение геометрических преобразований и проведение геометрического анализа. Она предоставляет высокоуровневый API, упрощающий реализацию CAD‑рабочих процессов, делая её идеальным выбором для создания инструментов автоматизации CAD.

Как создать форму и экспортировать её в формат CAD STEP с помощью Python API?

from __future__ import print_function

from OCC.Core.BRepPrimAPI import BRepPrimAPI_MakeBox

from OCC.Core.STEPControl import STEPControl_Writer, STEPControl_AsIs
from OCC.Core.Interface import Interface_Static_SetCVal
from OCC.Core.IFSelect import IFSelect_RetDone

# creates a basic shape
box_s = BRepPrimAPI_MakeBox(10, 20, 30).Shape()

# initialize the STEP exporter
step_writer = STEPControl_Writer()
dd = step_writer.WS().TransferWriter().FinderProcess()
print(dd)

Interface_Static_SetCVal("write.step.schema", "AP203")

# transfer shapes and write file
step_writer.Transfer(box_s, STEPControl_AsIs)
status = step_writer.Write("box.stp")

if status != IFSelect_RetDone:
    raise AssertionError("load failed")
 
 Русский