Thư viện Python mã nguồn mở cho mô hình hoá 3D & trao đổi dữ liệu
Thư viện Python miễn phí cho mô hình hoá 3D và xử lý trao đổi dữ liệu. Nó cho phép làm việc với các định dạng tệp 3D CAD, BIM, PLM và CAM qua API Python trực tuyến.
Thư viện PythonOCC-Core là gì?
PythonOCC-Core là một thư viện mô hình 3D và tự động hoá CAD miễn phí. Nó sử dụng Python, một ngôn ngữ lập trình được sử dụng rộng rãi, trên nền tảng nhân OpenCASCADE Technology (OCCT). Sự kết hợp này cung cấp nền tảng vững chắc để tạo, chỉnh sửa và nghiên cứu các hình dạng 3D phức tạp. Bằng cách kết hợp sự dễ dàng của Python với các công cụ mô hình mạnh mẽ của OCCT, bạn có được một công cụ đa năng và hiệu quả trong tay. Với giao diện Python trực quan và bộ chức năng phong phú, thư viện mang lại trải nghiệm liền mạch cho cả người mới bắt đầu và các nhà phát triển dày dặn kinh nghiệm trong lĩnh vực này. Nó giúp các kiến trúc sư và kỹ sư như bạn tạo mô hình tham số, sản xuất bản vẽ xây dựng và thực hiện phân tích cấu trúc. Công cụ này cải thiện quy trình thiết kế, cho phép hình ảnh hóa chính xác và làm việc nhóm hiệu quả. Nó phổ biến trong nhiều ngành như ô tô, hàng không và thiết kế sản phẩm để phát triển và tinh chỉnh các mô hình 3D phức tạp. Với thư viện này, bạn có thể đẩy nhanh việc tạo mẫu, mô phỏng và phân tích thiết kế, do đó đơn giản hoá quá trình phát triển sản phẩm.
Tính năng trực quan của PythonOCC-Core hoàn hảo cho việc tạo trò chơi và trải nghiệm thực tế ảo. Với công cụ này, bạn có thể xây dựng môi trường hấp dẫn, mô phỏng sống động và các cuộc phiêu lưu tương tác. Ngoài ra, thư viện còn cung cấp các chức năng thiết yếu như làm việc với Hình ảnh Y tế, thao tác hình học 3D, nhập và xuất dữ liệu CAD, chạy các mô phỏng nâng cao trên mô hình 3D, hiển thị nội dung 3D trên trình duyệt web, và trình chiếu hình ảnh 3D qua các GUI Python phổ biến. Thư viện cũng đóng vai trò quan trọng trong các lĩnh vực nghiên cứu khoa học như vật lý tính toán, khoa học vật liệu và kỹ thuật y sinh. Nhiều chuyên gia phần mềm và nhà phát triển trong các ngành công nghiệp khác nhau thấy PythonOCC-Core hấp dẫn vì nó kết hợp sự dễ dàng của Python và sức mạnh của OCCT. Với PythonOCC-Core, bạn có thể tăng cường sáng tạo và tối ưu hoá các quy trình CAD phức tạp. Điều này mở ra những khả năng mới cho đổi mới và năng suất trong mô hình hoá và thiết kế 3D.
Bắt đầu với PythonOCC-Core
Cách dễ nhất để cài đặt phiên bản ổn định của PythonOCC-Core là sử dụng pip. Vui lòng sử dụng lệnh sau để cài đặt một cách suôn sẻ.
Cài đặt PythonOCC-Core bằng pip
pip install pythonocc-coreCài đặt PythonOCC-Core bằng Conda
conda install -c conda-forge pythonocc-coreBạn cũng có thể cài đặt PythonOCC-Core qua Conda bằng lệnh sau.
conda install -c 1adrianb face_alignmentBạn có thể tải thư viện chia sẻ đã biên dịch từ kho Github.
Tạo & Quản lý hình học 3D bằng Python
Thư viện mã nguồn mở PythonOCC-Core đã bao gồm hỗ trợ đầy đủ cho việc tạo và quản lý mô hình 3D trong các ứng dụng Python. Hơn nữa, thư viện cung cấp một bộ công cụ phong phú để tạo và thao tác các hình dạng hình học 3D, bao gồm các điểm, đường cong, bề mặt và khối rắn. Nó cung cấp một loạt các thuật toán để xây dựng và chỉnh sửa các đối tượng phức tạp, chẳng hạn như các phép toán Boolean, làm tròn góc và tạo cạnh vát. Ví dụ dưới đây cho thấy cách các nhà phát triển phần mềm có thể tạo các hộp bao hình học cốt lõi bằng các lệnh python.
Cách tính và hiển thị hộp bao trong các ứng dụng 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)
Tự động hoá CAD bằng API Python
Thư viện mã nguồn mở PythonOCC-Core đã cung cấp các tính năng rất hữu ích để xử lý các nhiệm vụ khác nhau liên quan đến sơ đồ CAD. Thư viện hỗ trợ nhiều định dạng tệp thường được sử dụng trong CAD, bao gồm STEP, IGES, STL và BREP. Thư viện cho phép các nhà phát triển tự động hoá các nhiệm vụ CAD lặp đi lặp lại, chẳng hạn như tạo thiết kế tham số, thực hiện các biến đổi hình học và tiến hành phân tích hình học. Nó cung cấp một API cấp cao giúp đơn giản hoá việc triển khai quy trình làm việc CAD, làm cho nó trở thành lựa chọn lý tưởng để xây dựng các công cụ tự động hoá CAD.
Cách tạo hình dạng và xuất nó ra định dạng tệp CAD STEP thông qua API 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")