NX Lab

Đọc thuộc tính cơ bản của part: đơn vị, tên, đường dẫn, ngày sửa, trạng thái

#Python#Part1 lượt xem

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

    Câu hỏi ·

    Một báo cáo kiểm kê file thường bắt đầu từ vài thuộc tính cơ bản của part. Bài này gom các thuộc tính dễ đọc nhất vào một hàm trả về dict để dùng ở mọi nơi.

    Đọc thuộc tính cơ bản của part Đọc thuộc tính cơ bản của part

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

    1. Định danh. Leaf, FullPath, UniqueIdentifier.
    2. Đơn vị. PartUnits cho biết mm hay inch.
    3. Trạng thái. IsModified, IsReadOnly, IsFullyLoaded.
    4. Thống kê mô hình. Đếm số body, số feature, số expression.
    5. Ngày giờ của file. Lấy từ hệ điều hành bằng os.path.getmtime.

    Code tham khảo (Python)

    import os
    import time
    import NXOpen
    
    def thong_tin_part(part):
        duong_dan = part.FullPath
        mtime = os.path.getmtime(duong_dan) if os.path.isfile(duong_dan) else None
        return {
            "ten": part.Leaf,
            "duong_dan": duong_dan,
            "don_vi": "mm" if part.PartUnits == NXOpen.BasePart.Units.Millimeters else "inch",
            "da_sua_chua_luu": part.IsModified,
            "chi_doc": part.IsReadOnly,
            "nap_day_du": part.IsFullyLoaded,
            "so_body": sum(1 for _ in part.Bodies),
            "so_feature": sum(1 for _ in part.Features),
            "so_expression": sum(1 for _ in part.Expressions),
            "ngay_sua": time.strftime("%Y-%m-%d %H:%M", time.localtime(mtime)) if mtime else "",
        }
    
    def main():
        session = NXOpen.Session.GetSession()
        lw = session.ListingWindow
        lw.Open()
        part = session.Parts.Work
        if part is None:
            lw.WriteLine("Chưa có part")
            return
        for k, v in thong_tin_part(part).items():
            lw.WriteLine("%-18s : %s" % (k, v))
    
    if __name__ == "__main__":
        main()
    

    Giải thích code

    • part.Bodies, part.Features, part.Expressions là các collection có thể duyệt được.
    • NXOpen.BasePart.Units là enum đơn vị của part; so sánh trực tiếp với giá trị Millimeters.
    • Ngày sửa lấy từ hệ điều hành vì part trong bộ nhớ không lưu ngày giờ file.

    Lỗi thường gặp

    • File chưa từng lưu (part mới) chưa có FullPath thật; kiểm tra os.path.isfile như code trên.
    • Duyệt Features của assembly lớn có thể chậm; chỉ đếm khi thật cần.

    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.