NX Lab

Chia script thành nhiều module: đặt sys.path và import file Python của riêng bạn

#Python#Cấu trúc2 lượt xem

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

    Câu hỏi ·

    Khi script dài trên 300 dòng, nên tách thành module: một file tiện ích dùng chung, một file chính. NX chạy journal từ vị trí bất kỳ nên bạn phải tự thêm thư mục vào đường dẫn tìm module.

    Chia script thành nhiều module Chia script thành nhiều module

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

    1. Tạo thư mục thư viện. Ví dụ D:/NXLab/lib có file nxlab_utils.py.
    2. Thêm vào sys.path. Chèn thư mục chứa module vào đầu sys.path.
    3. Import. import nxlab_utils rồi gọi hàm.
    4. Tải lại khi sửa. importlib.reload để NX nhận mã mới mà không cần khởi động lại.
    5. Lấy thư mục theo vị trí script. Dùng file hoặc ExecutingJournal.

    Code tham khảo (Python)

    # ---- nxlab_utils.py  (đặt trong thư mục lib) ----
    import NXOpen
    
    def ten_part(part):
        return part.Leaf if part is not None else "(không có)"
    
    def mo_cua_so_ket_qua():
        lw = NXOpen.Session.GetSession().ListingWindow
        lw.Open()
        return lw
    
    # ---- chay_chinh.py  (script chính) ----
    import os
    import sys
    import importlib
    import NXOpen
    
    THU_MUC_LIB = "D:/NXLab/lib"
    if THU_MUC_LIB not in sys.path:
        sys.path.insert(0, THU_MUC_LIB)
    
    import nxlab_utils
    importlib.reload(nxlab_utils)      # nhận mã mới ngay khi bạn sửa module
    
    def main():
        lw = nxlab_utils.mo_cua_so_ket_qua()
        part = NXOpen.Session.GetSession().Parts.Work
        lw.WriteLine("Work Part: " + nxlab_utils.ten_part(part))
    
    if __name__ == "__main__":
        main()
    

    Giải thích code

    • Hai file được trình bày trong cùng khối để dễ đọc; khi dùng thật hãy tách thành hai file riêng.
    • importlib.reload quan trọng vì NX giữ module trong bộ nhớ giữa các lần chạy.
    • Đường dẫn thư viện nên là đường dẫn mạng chung để cả nhóm dùng một bản.

    Lỗi thường gặp

    • Đặt tên module trùng thư viện chuẩn (ví dụ random.py) làm hỏng chương trình khác.
    • Quên reload thì sửa file mà kết quả vẫn như cũ, rất dễ gây hiểu nhầm.

    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.