Ngăn kéo lưu trữ điện trở 10mm x 15mm x 70mm

Bộ ngăn kéo lưu trữ điện trở siêu nhỏ gọn, in phẳng (flat print) để tiết kiệm diện tích. Thiết kế 12 cột cho series E12, ngăn sâu tối thiểu 65mm để bỏ vừa điện trở nguyên cây và linh kiện tương tự.

👁️
19
Lượt Xem
❤️
1
Lượt Thích
📥
6
Lượt Tải
Cập Nhật Jan 09, 2026
Chi tiết
Tải xuống
Bình Luận
Khoe bản in
Remix

Mô tả

Nội dung được dịch bằng AI

Mình tự thiết kế cái hộp này vì tìm hoài không ra đúng cái mình cần:

  • Cần có 12 cột cho series E12

  • Ngăn kéo phải nhỏ gọn nhất có thể, mình không muốn chiếm nhiều diện tích.

  • Điện trở phải để vừa nguyên cây, độ sâu tối thiểu 65mm.

In và lắp thì hơi “căng” vì mỗi ngăn kéo có 3 phần, nên yêu cầu bắt buộc là flat print. Nhưng thành phẩm thì rất đã, mình biết chính xác điện trở mình cần nằm ở đâu.

Vô thư mục plate layout để xem các tuỳ chọn in dual colour đã setup sẵn cho Bambu Studio và Orca Slicer.

Mình ghét làm đi làm lại nên mấy cái tile được tạo bằng python script trong Fusion 360 từ danh sách giá trị trong file CSV. Nó tạo đủ 97 mặt trước ngăn kéo với các giá trị điện trở khác nhau chỉ trong 2 phút. Việc chọn màu khi đã lên build plate thì vẫn làm tay, hơi cực chút nhưng làm được. Xem các tree sets đã generate trong thư mục plate layouts.

Python script nằm trong thư mục scripts. Nếu bạn cần mình hướng dẫn cách setup thì mình sẽ viết lại thành wiki, cứ liên hệ nha.

import adsk.core, adsk.fusion, adsk.cam, traceback
import csv, os

# --- CONFIG ---
CSV_PATH = r"C:\Users\Jattie\Documents\E12_series.csv"
TEXT_PARAMETER = "resistor_value_name"
EXPORT_FOLDER = r"C:\Users\Jattie\Documents\print"
USE_PARAMETER = True
EXPORT_FORMAT = "step"      # "step" or "3mf"
SKETCH_NAME = "TextSketch"
TEXT_NAME = "MainText"
# --- END CONFIG ---

def run(context):
    ui = None
    try:
        app = adsk.core.Application.get()
        ui = app.userInterface
        design = app.activeProduct

        if not os.path.exists(EXPORT_FOLDER):
            os.makedirs(EXPORT_FOLDER)

        with open(CSV_PATH, newline='', encoding='utf-8-sig') as csvfile:
            reader = csv.DictReader(csvfile)
            rows = list(reader)

        for row in rows:
            normalized = {k.strip().lower().lstrip('\ufeff'): v for k, v in row.items()}
            value = normalized["label"]

            safe_value = value.strip().replace("'", "").replace('\n', '').replace('\r', '')

            if USE_PARAMETER:
                param = design.userParameters.itemByName(TEXT_PARAMETER)
                if not param:
                    raise RuntimeError(f"Parameter '{TEXT_PARAMETER}' not found.")
                param.expression = "'" + safe_value + "'"
            else:
                sketch = design.rootComponent.sketches.itemByName(SKETCH_NAME)
                text_obj = sketch.sketchTexts.itemByName(TEXT_NAME)
                text_obj.text = safe_value

            adsk.doEvents()
            design.computeAll()

            exportMgr = design.exportManager
            filename_step = os.path.join(EXPORT_FOLDER, f"{safe_value}.step")
            filename_3mf = os.path.join(EXPORT_FOLDER, f"{safe_value}.3mf")

            if EXPORT_FORMAT.lower() == "step":
                options = exportMgr.createSTEPExportOptions(filename_step)
            elif EXPORT_FORMAT.lower() == "3mf":
                # 3MF needs the entity (root component) + filename
                root_comp = design.rootComponent
                options = exportMgr.createC3MFExportOptions(root_comp, filename_3mf)
            else:
                raise RuntimeError("EXPORT_FORMAT must be 'step' or '3mf'.")

            exportMgr.execute(options)

        ui.messageBox("Batch export complete.")

    except:
        if ui:
            ui.messageBox("Failed:\n{}".format(traceback.format_exc()))

File CSV là:

label
1R
1R2
1R5
1R8
2R2
2R7
3R3
3R9
4R7
5R6
6R8
8R2
10R
12R
15R
18R
22R
27R
33R
39R
47R
56R
68R
82R
100R
120R
150R
180R
220R
270R
330R
390R
470R
560R
680R
820R
1K
1K2
1K5
1K8
2K2
2K7
3K3
3K9
4K7
5K6
6K8
8K2
10K
12K
15K
18K
22K
27K
33K
39K
47K
56K
68K
82K
100K
120K
150K
180K
220K
270K
330K
390K
470K
560K
680K
820K
1M
1M2
1M5
1M8
2M2
2M7
3M3
3M9
4M7
5M6
6M8
8M2
10M
12M
15M
18M
22M
27M
33M
39M
47M
56M
68M
82M

Giấy phép

Tác phẩm này được cấp phép theo

GNU General Public License v3.0

GPL 3.0

Yêu cầu ghi công
Remix & phái sinh Được phép
Sử dụng thương mại Được phép

File mô hình

TẤT CẢ FILE MÔ HÌNH (104 Tập tin)
Đang tải files, vui lòng chờ...
Vui lòng đăng nhập để bình luận.

Chưa có bình luận nào. Hãy là người đầu tiên!

Vui lòng đăng nhập để khoe bản in của bạn.

Chưa có bản in nào được khoe. Hãy là người đầu tiên!

Remix (0)