Trình tạo Puzzle Trượt tùy biến (Print-In-Place)
Tạo puzzle trượt độc đáo với thông điệp và kích thước tùy chọn bằng OpenSCAD. In print-in-place liền khung và các ô, có chỉnh gap/tolerance, chamfer giảm elephant foot, xuất STL nhanh để in mượt hơn.
Mô tả
Mình đã thử in vài phiên bản khác nhau của kiểu puzzle trượt này mà xui quá, không cái nào ra hồn… Có cái thì vừa mới giải thử là rã ra, có cái thì dính chặt các phần lại với nhau. Mình cũng thử chỉnh flow rate và scale model rồi mà vẫn không ăn thua. Vậy nên mình quyết định tự làm một bản của riêng mình, và cho nó tùy biến được bằng OpenSCAD!
Puzzle này in ra sẽ dính liền một khung (frame) và nhiều ô vuông (squares). Các ô vuông là phần chuyển động, còn khung là phần giữ và giới hạn chuyển động của các ô. Bạn có thể tùy chỉnh số lượng và kích thước các ô; khung sẽ tự canh kích thước theo. Phần chữ và font trên các ô cũng chỉnh được.
Thiết kế này có vài điểm giúp in dễ hơn. Elephant foot sẽ ít gặp hơn vì mặt đáy của các ô vuông bên trong đã được chamfer. Khe hở giữa các chi tiết có thể thay đổi tùy theo độ chính xác của máy in. Chiều cao liên quan trực tiếp tới độ “overlap” của các ô, nên kể cả puzzle hơi lỏng thì cũng không rớt ra nếu height đủ lớn.
Đừng ngại thử nghiệm: lỡ có làm hư gì hoặc gặp lỗi thì cứ tải lại file và làm lại từ đầu!
Yêu cầu trước khi bắt đầu
Làm quen nhanh với OpenSCAD
Khi mở file PuzzleGenerator.scad, bạn sẽ thấy code ở bên trái màn hình và phần preview thô ở bên phải. Model sẽ nhìn không đúng: nó sẽ bị phẳng và không có chữ.
Để xem bản hiển thị đúng của model, chỉ cần nhấn F6. Lưu ý là model sẽ mất thời gian render; trên máy của mình thường tầm 10–30 giây. Thêm nhiều ô hơn hoặc dùng font phức tạp sẽ làm thời gian tăng lên.
Nếu thấy ổn, dùng F7 để export model ra file STL. Nhớ thêm đuôi .stl vào tên file khi lưu.
Tùy chỉnh
Tất cả biến liên quan nằm ở đầu file. Bạn đổi giá trị cần thiết, lưu file (CTRL + S), render lại (F6), rồi export (F7).
Variable
Name
Example
Notes
cols
Columns
3
Số ô vuông theo trục X
rows
Rows
3
Số ô vuông theo trục Y
sqText
Text for Squares
…
Nội dung cho từng ô trong puzzle; xem chi tiết bên dưới
size
Square Size
14
Độ dài cạnh phần hiển thị của mỗi ô
height
Height
6
Chiều cao puzzle; tối thiểu 4, nhưng khuyến nghị 6
frame
Frame Width
6
Bề rộng khung; phải ít nhất bằng height
inCham
Square Chamfer
1
Kích thước chamfer áp dụng cho mỗi ô vuông bên trong
ouCham
Frame Chamfer
2
Kích thước chamfer ngoài của khung; phải nhỏ hơn một nửa height
gap
Tolerance
0.4
Khe hở giữa các phần; bắt đầu bằng kích thước nozzle rồi thử dần
textFont
Text Font
"Arial"
Font chữ; có thể thêm “:style=Bold” cho các biến thể
textSize
Text Size
6
Kích thước chữ; giảm nếu một ô có hơn 1 ký tự
textDep
Text Depth
1
Độ lõm của chữ; để số âm để chữ nổi lên
textRt
Text Shift Right
0.3
Dời chữ qua phải; số âm để dời qua trái
textUp
Text Shit Up
0.3
Dời chữ lên trên; số âm để dời xuống
textDeg
Text Rotate Degrees
45
Xoay chữ theo số độ
Font
Cẩn thận khi chọn font. Một số font có chi tiết mảnh sẽ in không đẹp. Nên chọn các font đậm (bold), dạng display, không có nét quá mỏng. Thêm “:style=Bold" vào tên font sẽ giúp rất nhiều. Ngoài ra nhớ đảm bảo textDep là bội số của layer height.
Tolerance
Trước hết, đảm bảo flow của bạn đã cân chỉnh chuẩn. E-steps cần được calibrate, và bạn phải biết nhiệt độ đúng cho loại filament đang dùng. Cố gắng giảm elephant foot nhiều nhất có thể.
Bắt đầu bằng cách đặt gap bằng kích thước nozzle. In thử một puzzle 2x2 đơn giản với ba ô và height = 6. Nếu các miếng thấy lỏng, giảm giá trị xuống 0.05. Nếu các miếng quá khít hoặc dính vào nhau, tăng giá trị lên 0.05. Nếu các ô in ra ok nhưng vẫn thấy “lắc lư,” cân nhắc tăng height. Height quyết định độ “overlap” giữa các ô và có thể làm puzzle chắc hơn.
Chữ trên các ô (Squares' Text)
sqText là một mảng (array) các chuỗi (strings) cho puzzle.
Đảm bảo mỗi chuỗi đều nằm trong dấu ngoặc kép và cách nhau bằng dấu phẩy. Nếu một chuỗi đặt là false hoặc trong mảng không đủ số chuỗi, thì các ô tương ứng sẽ không được thêm vào puzzle.
Bạn có thể dùng nhiều ký tự (vd. “10”), nhưng nhớ giảm textSize. Tùy font, bạn cũng có thể cần chỉnh textRt và textUp.
Việc xuống dòng mảng này không làm thay đổi layout của puzzle: bạn phải chỉnh đúng biến cols và rows để kích thước khớp.
Nhớ chừa một “lỗ” trong puzzle bằng cách đặt một phần tử của mảng thành false. Nếu không có lỗ, puzzle sẽ không trượt được.
Dưới đây là vài ví dụ sqText kèm số cột và số hàng. Nhìn kỹ định dạng trong mảng sqText và cách nó hiển thị trong puzzle sau khi render.




In ấn (Printing)
- Nozzle: 0.4mm
- Layer Height: 0.2mm
- Infill: 15%
Thiết lập mặc định trên PrusaSlicer chạy rất ổn sau khi bạn chỉnh tolerance như ở trên.
Các ô có thể hơi dính ngay sau khi in xong. Chỉ cần trượt/di chuyển các ô qua lại một chút là nó sẽ trơn ra.
Nếu bạn đổi filament đúng tại độ cao bằng textDep, bạn có thể làm chữ nổi bật hơn. Mình hay đặt textDep = 1mm và height = 6mm. Sau đó mình in 1mm đầu bằng một màu, 4mm giữa bằng màu khác, và 1mm cuối quay lại màu đầu. Bạn xem mẫu puzzle đen-xanh trong hình.
Đừng quên đánh giá và chia sẻ sản phẩm bạn in ra nha!
Giấy phép
Tác phẩm này được cấp phép theo
Creative Commons — Attribution — Noncommercial — Share AlikeCC-BY-NC-SA
File mô hình
Chưa có bản in nào được khoe. Hãy là người đầu tiên!
Chưa có bình luận nào. Hãy là người đầu tiên!