1. Producten
  2.   3D
  3.   Python
  4.   PythonOCC-Core
 
  

Open source Python-bibliotheek voor 3D-modellering & data-uitwisseling

Gratis Python-bibliotheek voor 3D-modellering en data-uitwisseling. Het maakt werken met 3D CAD-, BIM-, PLM- en CAM-bestandsformaten via de Python API online mogelijk.

Wat is PythonOCC-Core bibliotheek?

PythonOCC-Core is een gratis 3D-modellerings- en CAD-automatiseringsbibliotheek. Het maakt gebruik van Python, een veelgebruikte programmeertaal, bovenop de OpenCASCADE Technology (OCCT) kernel. Deze combinatie biedt een solide basis voor het maken, wijzigen en bestuderen van ingewikkelde 3D-vormen. Door de eenvoud van Python te combineren met de krachtige modelleringsgereedschappen van OCCT, krijg je een veelzijdig en effectief hulpmiddel tot je beschikking. Met zijn intuïtieve Python‑interface en uitgebreide set functionaliteiten biedt de bibliotheek een naadloze ervaring voor zowel beginners als ervaren ontwikkelaars op dit gebied. Het stelt architecten en ingenieurs zoals jij in staat om parametrische modellen te maken, bouwlay‑outs te produceren en structurele analyses uit te voeren. Dit hulpmiddel verbetert de ontwerpworkflow, waardoor precieze visualisatie en effectief teamwork mogelijk zijn. Het is populair in diverse sectoren zoals de auto‑industrie, lucht‑ en ruimtevaart en productontwerp voor het ontwikkelen en verfijnen van ingewikkelde 3D-modellen. Met deze bibliotheek kun je prototyping, simulaties en ontwerpanalyses versnellen, waardoor het proces van productontwikkeling wordt vereenvoudigd.

De visualisatiefuncties van PythonOCC-Core zijn perfect voor het maken van games en virtual reality-ervaringen. Met deze tool kun je boeiende omgevingen, levensechte simulaties en interactieve avonturen bouwen. Daarnaast biedt de bibliotheek essentiële functies zoals werken met medische beeldvorming, het manipuleren van 3D-geometry, het importeren en exporteren van CAD-gegevens, het uitvoeren van geavanceerde simulaties op 3D-modellen, het visualiseren van 3D-inhoud in webbrowsers en het tonen van 3D-visuals via populaire Python-GUI's. De bibliotheek speelt ook een cruciale rol in wetenschappelijk onderzoek, zoals computationele fysica, materiaalkunde en biomedische techniek. Veel softwareprofessionals en ontwikkelaars in verschillende sectoren vinden PythonOCC-Core aantrekkelijk omdat het de eenvoud van Python combineert met de kracht van OCCT. Met PythonOCC-Core kun je je creativiteit vergroten en complexe CAD-processen stroomlijnen. Dit opent nieuwe mogelijkheden voor innovatie en productiviteit in 3D-modellering en -ontwerp.

Previous Next

Aan de slag met PythonOCC-Core

De gemakkelijkste manier om de stabiele release van PythonOCC-Core te installeren is via pip. Gebruik alstublieft het volgende commando voor een soepele installatie.

Installeer PythonOCC-Core via pip

pip install pythonocc-core

Installeer PythonOCC-Core via Conda

conda install -c conda-forge pythonocc-core

U kunt PythonOCC-Core ook installeren via Conda met het volgende commando.

conda install -c 1adrianb face_alignment

U kunt de gecompileerde gedeelde bibliotheek downloaden van de Github repository.

Maak & beheer 3D-geometrieën via Python

De open source PythonOCC-Core bibliotheek biedt volledige ondersteuning voor het creëren en beheren van 3D-modellen binnen Python-toepassingen. Bovendien biedt de bibliotheek een uitgebreide set gereedschappen voor het maken en manipuleren van 3D-geometrische vormen, waaronder punten, curven, oppervlakken en solide. Het voorziet in een breed scala aan algoritmen voor het construeren en wijzigen van complexe objecten, zoals Booleaanse bewerkingen, afrondingen en afschuiningen. Het volgende voorbeeld laat zien hoe softwareontwikkelaars kerngeometrie‑bounding boxes kunnen maken met python‑commando's.

Hoe bereken en toon je begrenzingskaders in Python-apps?

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-automatisering met Python API

De open source PythonOCC-Core bibliotheek heeft zeer nuttige functies geleverd voor het afhandelen van diverse taken met betrekking tot CAD-diagrammen. De bibliotheek ondersteunt verschillende bestandsformaten die vaak in CAD worden gebruikt, waaronder STEP, IGES, STL en BREP. De bibliotheek stelt ontwikkelaars in staat repetitieve CAD-taken te automatiseren, zoals het genereren van parametrische ontwerpen, het uitvoeren van geometrische transformaties en het uitvoeren van geometrische analyses. Het biedt een high-level API die de implementatie van CAD-werkstromen vereenvoudigt, waardoor het een ideale keuze is voor het bouwen van CAD-automatiseringstools.

Hoe maak je een vorm & exporteer je deze naar CAD STEP-bestandsformaat via de 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")
 
 Dutch