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

Biblioteca Python de Código Abierto para Modelado 3D e Intercambio de Datos

Biblioteca Python gratuita para modelado 3D y manejo de intercambio de datos. Permite trabajar con formatos de archivos 3D CAD, BIM, PLM y CAM mediante API Python en línea.

¿Qué es la biblioteca PythonOCC-Core?

PythonOCC-Core es una biblioteca gratuita de modelado 3D y automatización CAD. Utiliza Python, un lenguaje de programación ampliamente usado, sobre el kernel OpenCASCADE Technology (OCCT). Esta combinación ofrece una base sólida para crear, modificar y estudiar formas 3D intrincadas. Al combinar la facilidad de Python con las potentes herramientas de modelado de OCCT, obtienes una herramienta versátil y eficaz a tu disposición. Con su interfaz intuitiva de Python y su amplio conjunto de funcionalidades, la biblioteca brinda una experiencia fluida tanto para principiantes como para desarrolladores experimentados en el campo. Empodera a arquitectos e ingenieros como tú para crear modelos paramétricos, producir planos de edificios y realizar análisis estructurales. Esta herramienta mejora el flujo de trabajo de diseño, permitiendo una visualización precisa y un trabajo en equipo eficaz. Es popular en varios sectores como automotriz, aeroespacial y diseño de productos para desarrollar y refinar modelos 3D intrincados. Con esta biblioteca, puedes acelerar la creación de prototipos, simulaciones y análisis de diseño, simplificando así el proceso de desarrollo de productos.

Las funciones de visualización de PythonOCC-Core son perfectas para crear juegos y experiencias de realidad virtual. Con esta herramienta, puedes construir entornos atractivos, simulaciones realistas y aventuras interactivas. Además, la biblioteca ofrece funciones esenciales como trabajar con imágenes médicas, manipular geometría 3D, importar y exportar datos CAD, ejecutar simulaciones avanzadas en modelos 3D, visualizar contenido 3D en navegadores web y mostrar visuales 3D a través de populares interfaces gráficas de Python. La biblioteca también desempeña un papel vital en áreas de investigación científica como la física computacional, la ciencia de materiales y la ingeniería biomédica. Muchos profesionales del software y desarrolladores en diferentes industrias encuentran atractivo PythonOCC-Core porque combina la facilidad de Python con la potencia de OCCT. Con PythonOCC-Core, puedes impulsar tu creatividad y simplificar procesos CAD complejos. Esto abre nuevas posibilidades para la innovación y la productividad en el modelado y diseño 3D.

Previous Next

Comenzando con PythonOCC-Core

La forma más fácil de instalar la versión estable de PythonOCC-Core es usando pip. Por favor, use el siguiente comando para una instalación sin problemas.

Instalar PythonOCC-Core vía pip

pip install pythonocc-core

Instalar PythonOCC-Core vía Conda

conda install -c conda-forge pythonocc-core

También puedes instalar PythonOCC-Core vía Conda usando el siguiente comando.

conda install -c 1adrianb face_alignment

Puede descargar la biblioteca compartida compilada desde el repositorio Github.

Crear y gestionar geometrías 3D mediante Python

La biblioteca de código abierto PythonOCC-Core incluye soporte completo para crear y gestionar modelos 3D dentro de aplicaciones Python. Además, la biblioteca ofrece un conjunto extenso de herramientas para crear y manipular formas geométricas 3D, incluidos puntos, curvas, superficies y sólidos. Proporciona una amplia gama de algoritmos para construir y modificar objetos complejos, como operaciones booleanas, redondeos y chaflanes. El siguiente ejemplo muestra cómo los desarrolladores de software pueden crear cajas delimitadoras de geometría central usando comandos de python.

¿Cómo calcular y mostrar cajas delimitadoras dentro de aplicaciones 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)

 

Automatización CAD usando la API de Python

La biblioteca de código abierto PythonOCC-Core ha proporcionado funciones muy útiles para manejar diversas tareas relacionadas con diagramas CAD. La biblioteca soporta varios formatos de archivo comúnmente usados en CAD, incluidos STEP, IGES, STL y BREP. La biblioteca permite a los desarrolladores automatizar tareas CAD repetitivas, como generar diseños paramétricos, realizar transformaciones geométricas y llevar a cabo análisis geométricos. Proporciona una API de alto nivel que simplifica la implementación de flujos de trabajo CAD, lo que la convierte en una opción ideal para crear herramientas de automatización CAD.

¿Cómo crear una forma y exportarla al formato CAD STEP mediante la API de 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")
 
 Español