用于 3D 建模和数据交换的开源 Python 库
免费 Python 库,用于 3D 建模和数据交换处理。它允许通过在线 Python API 处理 3D CAD、BIM、PLM 和 CAM 文件格式。
什么是 PythonOCC-Core 库?
PythonOCC-Core 是一个免费 3D 建模和 CAD 自动化库。它在 OpenCASCADE Technology (OCCT) 核心之上使用了广泛使用的编程语言 Python。这种组合为创建、修改和研究复杂的 3D 形状提供了坚实的基础。通过将 Python 的简易性与 OCCT 强大的建模工具相结合,您将拥有一个多功能且高效的工具。凭借直观的 Python 接口和丰富的功能集,该库为初学者和经验丰富的开发者提供了无缝的使用体验。它赋能像您这样的建筑师和工程师,打造参数化模型、生成建筑布局并进行结构分析。此工具改进了设计工作流程,实现精确可视化和高效团队协作。它在汽车、航空航天和产品设计等多个行业中广受欢迎,用于开发和完善复杂的 3D 模型。使用此库,您可以加速原型制作、仿真和设计分析,从而简化产品开发过程。
PythonOCC-Core 的可视化功能非常适合创建游戏和虚拟现实体验。使用此工具,您可以构建引人入胜的环境、逼真的仿真以及交互式冒险。除此之外,该库还提供了诸如医学影像处理、3D 几何操作、CAD 数据的导入导出、对 3D 模型进行高级仿真、在网页浏览器中可视化 3D 内容,以及通过流行的 Python GUI 展示 3D 可视化等关键功能。该库在计算物理、材料科学和生物医学工程等科学研究领域也发挥着重要作用。许多不同行业的软件专业人士和开发者对 PythonOCC-Core 青睐有加,因为它融合了 Python 的易用性和 OCCT 的强大功能。借助 PythonOCC-Core,您可以提升创意并简化复杂的 CAD 过程,为 3D 建模和设计的创新与生产力打开新的可能性。
PythonOCC-Core 入门指南
安装 PythonOCC-Core 稳定版的最简方式是使用 pip。请使用以下命令以顺利完成安装。
通过 pip 安装 PythonOCC-Core
pip install pythonocc-core通过 Conda 安装 PythonOCC-Core
conda install -c conda-forge pythonocc-core您也可以使用以下命令通过 Conda 安装 PythonOCC-Core。
conda install -c 1adrianb face_alignment您可以从 Github 仓库下载已编译的共享库。
通过 Python 创建和管理 3D 几何体
开源的 PythonOCC-Core 库已完整支持在 Python 应用程序中创建和管理 3D 模型。此外,该库提供了丰富的工具,用于创建和操作 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)
使用 Python API 进行 CAD 自动化
开源的 PythonOCC-Core 库提供了非常有用的功能,用于处理与 CAD 图纸相关的各种任务。该库支持 CAD 中常用的多种文件格式,包括 STEP、IGES、STL 和 BREP。该库使开发者能够自动化重复的 CAD 任务,如生成参数化设计、执行几何变换以及进行几何分析。它提供了高级 API,简化了 CAD 工作流的实现,使其成为构建 CAD 自动化工具的理想选择。
如何使用 Python API 创建形状并导出为 CAD STEP 文件格式?
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")