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

Bibliotecă Python open source pentru modelare 3D și schimb de date

Bibliotecă Python gratuită pentru modelare 3D și gestionarea schimbului de date. Permite lucrul cu formate de fișiere 3D CAD, BIM, PLM și CAM prin API Python online.

Ce este biblioteca PythonOCC-Core?

PythonOCC-Core este o bibliotecă gratuită pentru modelare 3D și automatizare CAD. Folosește Python, un limbaj de programare larg utilizat, deasupra nucleului OpenCASCADE Technology (OCCT). Această combinație oferă o bază solidă pentru crearea, modificarea și studiul formelor 3D complexe. Prin combinarea ușurinței Python cu instrumentele puternice de modelare ale OCCT, obții un instrument versatil și eficient la dispoziție. Cu interfața sa intuitivă în Python și setul extins de funcționalități, biblioteca oferă o experiență fluidă atât pentru începători, cât și pentru dezvoltatori experimentați în domeniu. Îți permite arhitecților și inginerilor ca tine să creeze modele parametrice, să producă planuri de construcție și să efectueze analize structurale. Acest instrument îmbunătățește fluxul de lucru în proiectare, permițând vizualizare precisă și colaborare eficientă. Este popular în diverse sectoare, cum ar fi automotive, aerospațial și design de produse, pentru dezvoltarea și rafinarea modelelor 3D complexe. Cu această bibliotecă, poți accelera prototiparea, simulările și analiza de design, simplificând astfel procesul de dezvoltare a produsului.

Funcțiile de vizualizare ale PythonOCC-Core sunt perfecte pentru crearea de jocuri și experiențe de realitate virtuală. Cu acest instrument, poți construi medii captivante, simulări realiste și aventuri interactive. În plus, biblioteca oferă funcții esențiale precum lucrul cu imagistică medicală, manipularea geometriei 3D, importul și exportul de date CAD, rularea de simulări avansate pe modele 3D, vizualizarea conținutului 3D în browsere web și prezentarea vizualurilor 3D prin intermediul interfețelor grafice Python populare. . Biblioteca joacă, de asemenea, un rol vital în domenii de cercetare științifică precum fizica computațională, știința materialelor și ingineria biomedicală. Mulți profesioniști în software și dezvoltatori din diferite industrii găsesc PythonOCC-Core atrăgător deoarece combină ușurința Python cu puterea OCCT. Cu PythonOCC-Core, poți stimula creativitatea și simplifica procesele CAD complexe. Acest lucru deschide noi posibilități pentru inovație și productivitate în modelarea și proiectarea 3D.

Previous Next

Începeți cu PythonOCC-Core

Cea mai simplă modalitate de a instala versiunea stabilă a PythonOCC-Core este prin utilizarea pip. Vă rugăm să folosiți comanda de mai jos pentru o instalare fără probleme.

Instalați PythonOCC-Core prin pip

pip install pythonocc-core

Instalați PythonOCC-Core prin Conda

conda install -c conda-forge pythonocc-core

De asemenea, poți instala PythonOCC-Core prin Conda utilizând comanda următoare.

conda install -c 1adrianb face_alignment

Puteți descărca biblioteca partajată compilată de pe depozitul Github.

Creați și gestionați geometrie 3D prin Python

Biblioteca open source PythonOCC-Core include suport complet pentru crearea și gestionarea modelelor 3D în aplicațiile Python. În plus, biblioteca oferă un set extins de instrumente pentru crearea și manipularea formelor geometrice 3D, inclusiv puncte, curbe, suprafețe și solide. Aceasta furnizează o gamă largă de algoritmi pentru construirea și modificarea obiectelor complexe, cum ar fi operațiile booleene, rotunjirea marginilor și șlefuirea. Exemplul de mai jos arată cum dezvoltatorii de software pot crea cutii de delimitare ale geometriei de bază utilizând comenzi Python.

Cum să calculezi și să afișezi cutiile de delimitare în aplicațiile 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)

 

Automatizare CAD utilizând API Python

Biblioteca open source PythonOCC-Core a oferit funcționalități foarte utile pentru gestionarea diferitelor sarcini legate de diagramele CAD. Biblioteca suportă diverse formate de fișiere utilizate frecvent în CAD, inclusiv STEP, IGES, STL și BREP. Biblioteca permite dezvoltatorilor să automatizeze sarcinile repetitive CAD, cum ar fi generarea de modele parametrice, efectuarea de transformări geometrice și realizarea de analize geometrice. Oferă un API de nivel înalt care simplifică implementarea fluxurilor de lucru CAD, făcând-o o alegere ideală pentru construirea de instrumente de automatizare CAD.

Cum să creezi o formă și să o exporți în formatul CAD STEP prin API-ul Python?

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")
 
 Română