
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
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…Các bước thực hiện
- 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.
- Gọi Parts.Open. Python trả về tuple (part, load_status).
- Đọc trạng thái. load_status.NumberUnloadedParts cho biết số part con không nạp được.
- Giải phóng. Gọi load_status.Dispose() khi xong.
- Đặ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
OpenDisplaymở và hiển thị part;Openchỉ nạp vào bộ nhớ (hữu ích khi chỉ cần đọc).NumberUnloadedParts,GetPartName,GetStatusDescriptionlà các thành viên củaPartLoadStatus.- Kiểm tra
os.path.isfiletrướ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.