SVG2PLATE.scad: Làm plate nhiều màu bằng phần mềm mã nguồn mở (SVG→STL + openSCAD)
Hướng dẫn dùng script SVG2PLATE.scad cùng Inkscape/Illustrator và openSCAD để chuyển SVG sang STL chuẩn, tạo plate/wall art nhiều màu. Tránh lỗi từ converter online và slicer, kèm tips setup layer, độ dày và nam châm.
Mô tả
Tạo mấy tấm art panel xịn sò bằng script openSCAD (cực đơn giản) này và trình chỉnh SVG bạn thích. Dùng mấy web chuyển SVG → STL online thường không chính xác, hay ra lỗi geometry và còn làm lộ file của bạn. Còn convert bằng slicer thì lại rất bug.
- Tải và cài bản mới nhất của Inkscape (bạn cũng có thể dùng Adobe Illustrator)
- Tải và cài bản mới nhất của openSCAD (mình dùng latest dev snapshot)
- Tải file SVG2PLATE.scad của mình (và mozworldBLACK.svg trong “other files” nếu bạn muốn dùng ví dụ mặc định)
- Tải Strings.scad (có kèm trong bộ file) và để chung thư mục với SVG2PLATE.scad. File này chỉ dùng để chuyển COLOR về chữ thường (lowercase) cho dễ dùng hơn khi chọn “PLATE”. Cảm ơn 16807user trên Thingiverse đã chia sẻ.
- Thiết kế một SVG bằng Inkscape hoặc Illustrator, rồi lưu mỗi màu thành một file SVG riêng. Đặt tên theo quy ước “designCOLOR.svg, designPLATE.svg”, ví dụ “mozworldBLACK.svg, mozworldPLATE.svg” cho dễ. File PLATE.svg là hình tổng (total shape) của thiết kế. PATH mặc định là cùng thư mục với SVG2PLATE.scad.
- Mở SVG2PLATE.scad và nhập các tham số trong ô customizer bên phải (bỏ chọn “Automatic Preview” phía trên Parameters):
- PATH = đường dẫn tới thư mục chứa các SVG, mặc định là thư mục đang có SVG2PLATE.scad (ví dụ: "D:\Desktop\SVG\")
- FILE = tên file không bao gồm phần COLOR (ví dụ “mozworld” từ mozworldBLACK.svg)
- EXTENSION = .svg hoặc .dxf (.dxf chưa test)
- canvassizex = kích thước canvas theo trục x trong SVG editor
- nên set canvas bằng đúng kích thước build plate để làm cho dễ
- canvassizey = kích thước canvas theo trục y trong SVG editor
- layerheight = layer height cho phần chi tiết.
- platethickness = độ dày extrude cho PLATE.svg
- 4mm chạy ổn với nam châm 3mm (2.8mm), mình cũng hay dùng 3.2mm cho mấy plate nhỏ với nam châm 2mm
- ảnh hưởng tới vị trí z của phần detail, nên nhớ set đúng cho các COLOR.svg
- có vẻ plate dày quá thì vào slicer bị không khớp (không line up)
- detaillayers = số layer để extrude COLOR.svg
- 2 layer là ổn, bạn có thể tăng thêm cho màu trắng hoặc màu hơi trong (translucent)
- tăng số này nếu layerheight của bạn nhỏ hơn 0.2mm
- detailoffset = số layer để offset COLOR.svg khỏi phần base
- hữu ích để xếp/layer màu trong slicer.
- svgscale = scale nhanh SVG nhỏ theo trục x và y (trục z chỉ scale theo platethickness và detailthickness)
- bypassname = nếu bật thì luôn extrude tới platethickness. mặc định = tắt
- Bật cái này để biến script thành một công cụ convert SVG → STL đơn giản
- usecolor = dùng màu để tạo preview (sẽ warning nếu màu không có trong index và khi render sẽ luôn hiện màu vàng)
- COLOR = tên COLOR trong file “designCOLOR.svg” (ví dụ "BLACK" từ "mozworldBLACK.svg")
- Bạn sẽ quay lại ô này nhiều lần và tab qua x, y.
- nó sẽ tự thêm EXTENSION ở cuối cho tiện, nên bạn cứ để trống phần đuôi
- nếu giá trị này là “PLATE” (không phân biệt hoa/thường) thì nó sẽ extrude SVG theo "platethickness."
- x = tọa độ x của COLOR.svg
- tính tương đối theo góc trên bên trái của canvas
- mặc định anchor vào center của SVG
- một nửa “canvassize” là tâm.
- y = tọa độ y của COLOR.svg
- svganchor = điểm neo (anchor point) của SVG
- BỊ LỖI, tạm thời cứ dùng center
- Inkscape mặc định là top left
- Illustrator mặc định là center
- (topleft mới test sơ sơ)
- mirrorsvg = mirror SVG (cho chi tiết ở first layer)
- $fa = độ phân giải góc phân mảnh (fragment angle resolution)
- tăng cái này để giảm file size và thời gian slice, đổi lại giảm độ mịn
- set từ 3 trở lên mới thấy tác dụng
- mình nghĩ cái này chỉ ảnh hưởng đường cong
- Render STL, chuyển SVG → STL (F6)
- Lưu STL theo dạng designCOLOR.stl, còn PLATE thì lưu là designPLATE.stl
- Mở PLATE.stl trong Bambu Studio, Orca Slicer, hoặc Prusa Slicer. (mình không chắc làm phần còn lại trong Prusa Slicer kiểu gì)
- Thêm tất cả file COLOR.stl làm modifier trên PLATE.stl
- Set màu cho đúng
- Thêm modifiers để nhét nam châm, tạo lỗ treo, v.v. rồi canh vị trí. (có kèm picturemountingholenegative.stl)
- Slice và in thôi! nhớ thêm pause để nhét nam châm.
- Chia sẻ thiết kế của bạn lên Printables.com!
- Remix model này để mình biết script của mình có người dùng!
- ???
- Profit!
Mẹo:
- Bạn có thể để trống PATH và FILE, rồi chỉ set trường COLOR thành đường dẫn đầy đủ tới SVG (đuôi ".svg" sẽ được tự thêm)
- Bạn có thể import PLATE.svg vào Fusion 360 để làm PLATE.stl có fillet, chamfer, v.v. Nhớ offset PLATE.svg theo đúng lượng bạn định chamfer
- Khi export, canh design ở giữa canvas để PLATE nằm ngay giữa luôn
- Convert toàn bộ text thành shape (ctrl+shift+o trong Illustrator, ctrl+alt+c trong Inkscape)
- Expand stroke thành shape (Object > Expand… trong Illustrator, mình nghĩ Inkscape tự làm khi export?)
- Trong Illustrator, bỏ chọn “Responsive” ở export settings > format options
- Làm quen với “Export for Screens” trong Illustrator
- Simplify shape và xoá mấy đường/điểm lạc để giảm thời gian render và dung lượng file.
- Merge hoặc Union thiết kế khi làm xong để bỏ phần chồng lấp; nhớ lưu bản gốc để sửa cho dễ.
- Tìm tutorial về cách dùng SVG editor của bạn
- đặc biệt là image tracing và path operations
- Mình cũng dùng script này để chỉnh first layers của mấy model organic hơn, không chỉ plate.
Hướng dẫn cho Inkscape:
Lưu ý: Mình không rành Inkscape lắm.
- File > Document Properties > đổi Width và Height theo kích thước build plate
- Làm thiết kế của bạn, xong rồi group những phần cùng màu lại
- Chọn 1 object của một màu nào đó
- Edit > select same > fill color
- ctrl + g để group
- Export từng group thành designCOLOR.svg (ctrl + shift + e)
- Tạo một overall shape cho thiết kế và export thành designPLATE.svg
- Mình copy toàn bộ object, kéo nó ra khỏi canvas
- trừ nó khỏi một hình vuông bằng Division (Path > Division)
- xoá bản copy của design (kéo outline né qua cho dễ nhìn)
- tạo thêm một hình vuông khác để lấp vừa cái lỗ đã tạo
- làm Division lần nữa nhưng lần này giữ lại shape được tạo bởi outline
- Chắc chắn có cách dễ hơn. Nếu tô bản copy cùng màu rồi merge thường sẽ tạo thêm geometry, làm file nặng và khó slice hơn
- tô PLATE một màu lạ lạ để dễ tách khỏi design
- Chuyển qua lại giữa openSCAD và Inkscape để xem tọa độ x, y
- Click 2 lần để hiện rotation và anchors rồi chọn anchor giữa (mình không biết có cách set mặc định anchor này không; thử request feature này với devs)
- vị trí x và y nằm ở phía trên trong Inkscape
Hướng dẫn cho Illustrator:
- Ở màn hình tạo document mới, set canvas size theo build plate và lưu thành preset mới.
- Làm thiết kế của bạn, xong rồi group những phần cùng màu lại
- Chọn 1 object của một màu nào đó
- Select > same > fill color
- ctrl + g để group
- Mở cửa sổ asset export: Window > asset export
- Chọn từng group rồi bấm “generate asset from selection” (ô nhỏ có dấu +)
- bạn cũng có thể group tất cả màu lại, select all, rồi bấm “generate multiple assets from selection” nhưng đôi khi nó tạo ra thêm một đống asset nếu bạn có nhiều path rác hoặc shape chưa group.
- Đặt tên mỗi asset thành designCOLOR trong panel asset export
- Tạo một overall shape cho thiết kế và thêm vào panel export với tên designPLATE
- Mình copy toàn bộ object, kéo nó ra khỏi canvas
- trừ nó khỏi một hình vuông bằng Divide (Pathfinder > divide)
- xoá bản copy của design (kéo outline né qua)
- tạo thêm một hình vuông khác để lấp vừa cái lỗ đã tạo
- làm Divide lần nữa nhưng lần này giữ lại shape được tạo bởi outline
- Chắc chắn có cách dễ hơn. Nếu tô bản copy cùng màu rồi merge thường sẽ tạo thêm geometry, làm file nặng và khó slice hơn
- tô PLATE một màu lạ lạ để dễ tách khỏi design
- Chọn tất cả assets trong asset panel và bấm export, nhớ chọn svg
- Chuyển qua lại giữa openSCAD và Illustrator để xem tọa độ x, y
- Anchor points mặc định là center
- vị trí x và y nằm trong properties window của Illustrator.
- nhớ đảm bảo anchor point (reference point) đang để center
Todo:
- Sửa anchor position (mình bí quá chưa figure ra, chắc phải nhập chiều cao của SVG)
- Làm video tutorial
- Chỉnh script để dùng first layer height
- Chỉnh script cho top layer details
- Phát triển quy trình và làm hướng dẫn mass convert bằng file .json và python
- Viết openSCAD script để làm plate nhiều tầng (multi level) bằng cách đổi màu theo layer heights, import nhiều SVG cùng lúc
Giấy phép
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!