Open-Source-Python-Bibliothek für 3D-Modellierung & Datenaustausch
Kostenlose Python-Bibliothek für 3D-Modellierung und Datenaustausch‑Verarbeitung. Sie ermöglicht die Arbeit mit 3D-CAD-, BIM-, PLM- und CAM-Dateiformaten über die Python‑API online.
Was ist die PythonOCC-Core Bibliothek ?
PythonOCC-Core ist eine kostenlose 3D-Modellierungs- und CAD-Automatisierungsbibliothek. Sie verwendet Python, eine weit verbreitete Programmiersprache, auf dem OpenCASCADE Technology (OCCT)-Kernel. Diese Kombination bietet eine solide Grundlage für das Erstellen, Ändern und Untersuchen komplexer 3D-Formen. Durch die Kombination von Pythons Einfachheit mit den leistungsstarken Modellierungswerkzeugen von OCCT erhalten Sie ein vielseitiges und effektives Werkzeug. Mit seiner intuitiven Python‑Schnittstelle und dem umfangreichen Funktionsumfang bietet die Bibliothek ein nahtloses Erlebnis sowohl für Anfänger als auch für erfahrene Entwickler auf diesem Gebiet. Sie befähigt Architekten und Ingenieure wie Sie, parametrische Modelle zu erstellen, Baupläne zu produzieren und Strukturanalysen durchzuführen. Dieses Werkzeug verbessert den Design‑Workflow, ermöglicht präzise Visualisierung und effektive Teamarbeit. Es ist in verschiedenen Branchen wie Automobil, Luft‑ und Raumfahrt sowie Produktdesign beliebt, um komplexe 3D‑Modelle zu entwickeln und zu verfeinern. Mit dieser Bibliothek können Sie die Prototypenerstellung, Simulationen und Designanalysen beschleunigen und damit den Produktentwicklungsprozess vereinfachen.
Die Visualisierungsfunktionen von PythonOCC-Core sind perfekt für die Erstellung von Spielen und Virtual‑Reality-Erlebnissen. Mit diesem Werkzeug können Sie fesselnde Umgebungen, realistische Simulationen und interaktive Abenteuer bauen. Darüber hinaus bietet die Bibliothek wesentliche Funktionen wie die Arbeit mit medizinischer Bildgebung, die Manipulation von 3D‑Geometrie, das Importieren und Exportieren von CAD‑Daten, das Durchführen fortgeschrittener Simulationen von 3D‑Modellen, die Visualisierung von 3D‑Inhalten in Webbrowsern und die Darstellung von 3D‑Visualisierungen über beliebte Python‑GUIs. Die Bibliothek spielt auch eine zentrale Rolle in wissenschaftlichen Forschungsbereichen wie der rechnerischen Physik, Materialwissenschaft und biomedizinischen Technik. Viele Software‑Profis und Entwickler in verschiedenen Branchen finden PythonOCC-Core attraktiv, weil es die Einfachheit von Python mit der Stärke von OCCT kombiniert. Mit PythonOCC-Core können Sie Ihre Kreativität steigern und komplexe CAD‑Prozesse optimieren. Das eröffnet neue Möglichkeiten für Innovation und Produktivität im 3D‑Modelling und Design.
Erste Schritte mit PythonOCC-Core
Der einfachste Weg, die stabile Version von PythonOCC-Core zu installieren, ist die Verwendung von pip. Bitte verwenden Sie den folgenden Befehl für eine reibungslose Installation.
PythonOCC-Core via pip installieren
pip install pythonocc-corePythonOCC-Core via Conda installieren
conda install -c conda-forge pythonocc-coreSie können PythonOCC-Core auch über Conda mit dem folgenden Befehl installieren.
conda install -c 1adrianb face_alignmentSie können die kompilierte Shared Library aus dem Github-Repository herunterladen.
Erstellen & Verwalten von 3D-Geometrien mit Python
Die Open-Source-Bibliothek PythonOCC-Core bietet vollständige Unterstützung für das Erstellen und Verwalten von 3D-Modellen in Python-Anwendungen. Darüber hinaus stellt die Bibliothek ein umfangreiches Set an Werkzeugen zum Erzeugen und Manipulieren von 3D-geometrischen Formen bereit, einschließlich Punkten, Kurven, Oberflächen und Festkörpern. Sie liefert eine breite Palette von Algorithmen zum Konstruieren und Modifizieren komplexer Objekte, wie Boolesche Operationen, Abrundungen und Fasen. Das folgende Beispiel zeigt, wie Softwareentwickler Kerngeometrie‑Bounding‑Boxes mithilfe von Python-Befehlen erstellen können.
Wie berechnet und zeigt man Begrenzungsrahmen in Python-Apps an?
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-Automatisierung mit Python-API
Die Open-Source-Bibliothek PythonOCC-Core bietet sehr nützliche Funktionen zur Bewältigung verschiedener Aufgaben im Zusammenhang mit CAD-Diagrammen. Die Bibliothek unterstützt verschiedene in CAD häufig verwendete Dateiformate, darunter STEP, IGES, STL und BREP. Die Bibliothek ermöglicht Entwicklern die Automatisierung wiederkehrender CAD-Aufgaben, wie das Erzeugen parametrischer Designs, das Durchführen geometrischer Transformationen und die Durchführung geometrischer Analysen. Sie stellt eine hochrangige API bereit, die die Implementierung von CAD-Workflows vereinfacht und somit eine ideale Wahl für den Aufbau von CAD-Automatisierungswerkzeugen dar.
Wie erstellt man ein Shape und exportiert es über die Python-API in das CAD-STEP-Dateiformat?
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")