NX Lab

Mở một file .prt từ đường dẫn và đọc trạng thái nạp bằng Parts.Open

#Python#Part3 lượt xem

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

    Câu hỏi ·

    Mở file là việc đầu tiên của mọi script xử lý hàng loạt. Điểm khó là hàm Open trả về hai giá trị (part và trạng thái nạp) và bạn cần kiểm tra trạng thái để biết file có đủ dữ liệu không.

    Mở một file .prt từ đường dẫn và đọc trạng… Mở một file .prt từ đường dẫn và đọc trạng…

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

    1. Chuẩn bị đường dẫn. Dùng dấu gạch chéo xuôi hoặc chuỗi raw để tránh lỗi ký tự thoát.
    2. Gọi Parts.Open. Python trả về tuple (part, load_status).
    3. Đọc trạng thái. load_status.NumberUnloadedParts cho biết số part con không nạp được.
    4. Giải phóng. Gọi load_status.Dispose() khi xong.
    5. Đặt Work Part. Open không tự đổi chế độ hiển thị; dùng OpenDisplay nếu muốn hiển thị.

    Code tham khảo (Python)

    import os
    import NXOpen
    
    def mo_part(duong_dan):
        session = NXOpen.Session.GetSession()
        lw = session.ListingWindow
        if not os.path.isfile(duong_dan):
            lw.WriteLine("Không thấy file: " + duong_dan)
            return None
        # Python trả về tuple (part, status) vì tham số thứ hai là tham số ra
        part, status = session.Parts.OpenDisplay(duong_dan)
        try:
            if status.NumberUnloadedParts > 0:
                lw.WriteLine("Cảnh báo: %d part con không nạp được" % status.NumberUnloadedParts)
                for i in range(status.NumberUnloadedParts):
                    lw.WriteLine("  - %s : %s" % (status.GetPartName(i), status.GetStatusDescription(i)))
        finally:
            status.Dispose()
        return part
    
    def main():
        session = NXOpen.Session.GetSession()
        lw = session.ListingWindow
        lw.Open()
        part = mo_part("D:/Du_an/ban_ve/gia_do.prt")
        if part is not None:
            lw.WriteLine("Đã mở: " + part.Leaf + " (" + str(part.PartUnits) + ")")
    
    if __name__ == "__main__":
        main()
    

    Giải thích code

    • OpenDisplay mở và hiển thị part; Open chỉ nạp vào bộ nhớ (hữu ích khi chỉ cần đọc).
    • NumberUnloadedParts, GetPartName, GetStatusDescription là các thành viên của PartLoadStatus.
    • Kiểm tra os.path.isfile trước để thông báo lỗi dễ hiểu hơn lỗi của NX.

    Lỗi thường gặp

    • Mở cùng một part hai lần: NX báo part đã được nạp; dùng session.Parts.FindObject(name) để kiểm tra trước.
    • Assembly thiếu component sẽ vẫn mở được nhưng với trạng thái cảnh báo; đừng bỏ qua status.

    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.