NX Lab

Đọc thông tin người dùng và môi trường làm việc: tên Windows, máy tính, thời gian, phiên bản NX

#Python#Môi trường1 lượt xem

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

    Câu hỏi ·

    Báo cáo và log cần ghi người chạy, máy nào, lúc nào, bản NX nào để truy vết. Thư viện chuẩn của Python đủ để lấy hầu hết thông tin này mà không cần NX Open.

    Đọc thông tin người dùng và môi trường làm… Đọc thông tin người dùng và môi trường làm…

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

    1. Tên người dùng. getpass.getuser().
    2. Tên máy. platform.node() hoặc socket.gethostname().
    3. Thời gian. time.strftime.
    4. Phiên bản NX. Từ biến môi trường UGII_BASE_DIR và tên thư mục cài đặt.
    5. Gom vào dict. Dùng làm tiêu đề mọi báo cáo.

    Code tham khảo (Python)

    import getpass
    import os
    import platform
    import time
    import NXOpen
    
    def thong_tin_moi_truong():
        session = NXOpen.Session.GetSession()
        goc_nx = session.GetEnvironmentVariableValue("UGII_BASE_DIR")
        return {
            "nguoi_dung": getpass.getuser(),
            "may_tinh": platform.node(),
            "he_dieu_hanh": platform.platform(),
            "python": platform.python_version(),
            "thu_muc_nx": goc_nx,
            "ten_thu_muc_nx": os.path.basename(goc_nx.rstrip("/\\")) if goc_nx else "",
            "ung_dung": session.ApplicationName,
            "che_do_nen": session.IsBatch,
            "thoi_gian": time.strftime("%Y-%m-%d %H:%M:%S"),
        }
    
    def tieu_de_bao_cao(tt):
        return "Báo cáo tạo bởi %s trên %s lúc %s (NX: %s, Python %s)" % (
            tt["nguoi_dung"], tt["may_tinh"], tt["thoi_gian"], tt["ten_thu_muc_nx"], tt["python"])
    
    def main():
        lw = NXOpen.Session.GetSession().ListingWindow
        lw.Open()
        tt = thong_tin_moi_truong()
        for k, v in tt.items():
            lw.WriteLine("%-16s : %s" % (k, v))
        lw.WriteLine("")
        lw.WriteLine(tieu_de_bao_cao(tt))
    
    if __name__ == "__main__":
        main()
    

    Giải thích code

    • platform.python_version() cho biết phiên bản Python gắn trong NX, quan trọng khi dùng cú pháp mới.
    • Tên thư mục cài đặt NX thường chứa số phiên bản, đủ để suy ra bản NX.
    • Hàm tieu_de_bao_cao gom thông tin thành một dòng để dán vào đầu mọi báo cáo.

    Lỗi thường gặp

    • Một số thư viện chuẩn của Python bị thiếu trong bản Python gắn của NX; import trong try để xử lý.
    • Không ghi thông tin cá nhân quá mức vào báo cáo gửi ra ngoài công ty.

    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.