Thư viện Python mã nguồn mở dành cho định dạng tệp CAD 3D
Thư viện CAD Python miễn phí để tạo Mô hình CAD 3D tham số. Nó tạo các định dạng CAD chất lượng cao như BƯỚC, AMF & 3MF ngoài STL truyền thống
Thư viện Python mã nguồn mở CadQuery là một thư viện Python dễ sử dụng để xây dựng các mô hình CAD 3D tham số. Thư viện này rất mạnh mẽ và bằng cách viết các tập lệnh ngắn có thể tạo ra các mô hình CAD chất lượng cao bên trong các ứng dụng Python. Cũng có thể tùy chỉnh tập lệnh và tạo nhiều đối tượng khác nhau bằng một tập lệnh. Tập lệnh CadQuery rất nhanh và có thể tạo STL, STEP, AMF và 3MF nhanh hơn các thư viện có sẵn khác.
Thư viện cung cấp các khả năng mô hình hóa nâng cao như phi lê, ép đùn đường cong, đường cong tham số và gác xép. Đây là một thư viện dựa trên tập lệnh có thể tạo một mô hình tham số mà người dùng cuối có thể dễ dàng tùy chỉnh. Nó tạo ra các mô hình 3D với các tập lệnh gần nhất có thể với cách bạn mô tả đối tượng cho con người. CadQuery được cấp phép theo các điều khoản của Giấy phép Công cộng Apache, phiên bản 2.0.
Thư viện CadQuery đó được thiết kế có chủ ý để không có GUI, để nó có thể được sử dụng bên trong các ứng dụng khoa học và kỹ thuật để tạo mô hình 3D theo chương trình. Nếu bạn cần sử dụng GUI, bạn có thể xem xét trình soạn thảo CQ GUI dựa trên Qt hoặc tiện ích mở rộng Jupyter jupyter-cadquery. Cũng có thể sử dụng thư viện cùng với các thư viện Python khác.
Bắt đầu với CadQuery
Cách dễ nhất để cài đặt bản phát hành ổn định của CadQuery là sử dụng pip. Vui lòng sử dụng lệnh sau để cài đặt trơn tru.
Cài đặt CadQuery qua pip
pip install cadquery
Bạn có thể tải xuống thư viện được chia sẻ đã biên dịch từ kho lưu trữ Github.
Làm việc với Đa giác qua Thư viện Python 3D
Một đa giác là một hình dạng hai chiều với các cạnh thẳng. Mô hình hóa đa giác là một cách tiếp cận để mô hình hóa các đối tượng bằng cách biểu diễn hoặc xấp xỉ các bề mặt của chúng bằng cách sử dụng các lưới đa giác. Thư viện Python mã nguồn mở CadQuery cho phép các nhà phát triển phần mềm tạo đa giác cho từng điểm ngăn xếp chỉ bằng một vài dòng mã Python. Nó rất có lợi trong các máy in 3d có phần sụn không sửa được cho các kích thước lỗ nhỏ.
Tạo Workplanes trên Faces qua Python 3D Library
Thư viện Python mã nguồn mở CadQuery đã cung cấp hỗ trợ đầy đủ để tạo Workplanes on Faces bên trong các ứng dụng Python. việc sử dụng các mặt phẳng làm việc theo cách này là một tính năng chính của CadQuery. Nó giải phóng người dùng khỏi việc tìm kiếm vị trí của các tính năng khác nhau trong các biến và cho phép mô hình xóa các kích thước dư thừa. Người dùng có thể chọn các mặt của khối kết quả bằng cách gọi phương thức Workplane.faces(). Hãy nhớ rằng theo mặc định, điểm gốc của một mặt phẳng làm việc mới được tính bằng cách tạo một mặt phẳng từ bề mặt đã chọn và chiếu điểm gốc trước đó lên mặt phẳng đó.
Tạo Workplanes trên khuôn mặt thông qua Python
result = cq.Workplane("front").box(2, 3, 0.5) # make a basic prism
result = result.faces(">Z").workplane().hole(0.5) # find the top-most face and make a hole
Làm việc với Gạch LEGO 3D thông qua Python
Thư viện CadQuery đã cung cấp hỗ trợ đầy đủ để tạo hoạt hình 3D đại diện cho các viên gạch Lego ở các kích thước khác nhau bằng các lệnh Python. Cũng có thể tạo lại các viên gạch bằng cách ghép nhiều hình khối và hình trụ lại với nhau. Chúng ta có thể tạo một đối tượng phức hợp để nối các hình dạng 3D này lại với nhau trong một đối tượng duy nhất (khối gạch). Ví dụ sau minh họa cách tạo viên gạch Lego(TM) hình chữ nhật thông thường có kích thước bất kỳ. Nó chỉ phức tạp vì logic liên quan đến mặt dưới của viên gạch.
Tạo Gạch LEGO 3D bằng Python
#####
# Inputs
######
lbumps = 6 # number of bumps long
wbumps = 2 # number of bumps wide
thin = True # True for thin, False for thick
#
# Lego Brick Constants-- these make a lego brick a lego :)
#
pitch = 8.0
clearance = 0.1
bumpDiam = 4.8
bumpHeight = 1.8
if thin:
height = 3.2
else:
height = 9.6
t = (pitch - (2 * clearance) - bumpDiam) / 2.0
postDiam = pitch - t # works out to 6.5
total_length = lbumps*pitch - 2.0*clearance
total_width = wbumps*pitch - 2.0*clearance
# make the base
s = cq.Workplane("XY").box(total_length, total_width, height)
# shell inwards not outwards
s = s.faces("Z").workplane(). \
rarray(pitch, pitch, lbumps, wbumps, True).circle(bumpDiam / 2.0) \
.extrude(bumpHeight)
# add posts on the bottom. posts are different diameter depending on geometry
# solid studs for 1 bump, tubes for multiple, none for 1x1
tmp = s.faces(" 1 and wbumps > 1:
tmp = tmp.rarray(pitch, pitch, lbumps - 1, wbumps - 1, center=True). \
circle(postDiam / 2.0).circle(bumpDiam / 2.0).extrude(height - t)
elif lbumps > 1:
tmp = tmp.rarray(pitch, pitch, lbumps - 1, 1, center=True). \
circle(t).extrude(height - t)
elif wbumps > 1:
tmp = tmp.rarray(pitch, pitch, 1, wbumps - 1, center=True). \
circle(t).extrude(height - t)
else:
tmp = s
# Render the solid
build_object(tmp)