NX Lab

Đọc và ghi file cấu hình JSON cho script NX: đường dẫn, dung sai, danh sách vật liệu

#Python#Cấu hình1 lượt xem

  1. Quản trị viênQuản trị· 0 điểm

    Câu hỏi ·

    Đừng viết cứng đường dẫn và tham số trong code. Một file JSON cạnh script cho phép người không biết lập trình sửa cấu hình, còn code giữ nguyên.

    Đọc và ghi file cấu hình JSON cho script NX Đọc và ghi file cấu hình JSON cho script NX

    Các bước thực hiện

    1. Thiết kế cấu hình. Chỉ đưa vào các giá trị người dùng cần đổi: thư mục xuất, đơn vị, danh sách vật liệu.
    2. Tìm file cạnh script. Dùng os.path.dirname(file).
    3. Đọc với giá trị mặc định. Không có file hoặc thiếu khóa thì dùng mặc định.
    4. Kiểm tra giá trị. Chuyển kiểu, giới hạn khoảng hợp lệ.
    5. Ghi lại. Có thể lưu cấu hình mặc định lần chạy đầu.

    Code tham khảo (Python)

    import json
    import os
    import NXOpen
    
    MAC_DINH = {
        "thu_muc_xuat": "D:/NXLab_xuat",
        "don_vi": "mm",
        "dung_sai": 0.05,
        "vat_lieu": ["S45C", "SUS304", "AL6061"],
    }
    
    def doc_cau_hinh(ten_file="cau_hinh.json"):
        thu_muc = os.path.dirname(os.path.abspath(__file__))
        duong_dan = os.path.join(thu_muc, ten_file)
        cfg = dict(MAC_DINH)
        if os.path.isfile(duong_dan):
            with open(duong_dan, "r", encoding="utf-8") as f:
                cfg.update(json.load(f))
        else:                                       # lần đầu: tạo file mẫu cho người dùng sửa
            with open(duong_dan, "w", encoding="utf-8") as f:
                json.dump(MAC_DINH, f, ensure_ascii=False, indent=2)
        cfg["dung_sai"] = max(0.001, float(cfg["dung_sai"]))
        return cfg
    
    def main():
        lw = NXOpen.Session.GetSession().ListingWindow
        lw.Open()
        cfg = doc_cau_hinh()
        for k, v in cfg.items():
            lw.WriteLine("%-14s = %s" % (k, v))
    
    if __name__ == "__main__":
        main()
    

    Giải thích code

    • ensure_ascii=False giữ tiếng Việt nguyên dạng trong file JSON.
    • cfg.update(...) ghi đè từng khóa, các khóa thiếu giữ mặc định.
    • max(0.001, ...) chặn giá trị dung sai vô lý do gõ nhầm.

    Lỗi thường gặp

    • __file__ có thể không tồn tại nếu journal được chạy theo cách không qua file; khi đó dùng session.ExecutingJournal.
    • File JSON lỗi cú pháp sẽ làm script dừng; bọc json.load bằng try/except và báo rõ dòng lỗi.

    Code mang tính tham khảo, viết cho NX 12 trở lên (Python journal). Tên menu và một số lớp có thể khác theo phiên bản NX; hãy chạy thử trên bản sao của chi tiết trước khi dùng cho dữ liệu thật.

    Điểm: 0

Trả lời

Đăng nhập để tham gia thảo luận.