
Duyệt các view trên sheet: tên, tỉ lệ, loại view và đánh dấu view lỗi thời cần cập nhật
#Python#Drafting1 lượt xem
Quản trị viênQuản trị· 0 điểm
Câu hỏi ·
Trước khi xuất PDF phải bảo đảm view mới nhất. Bài này duyệt mọi view trên mỗi sheet, in thông tin và liệt kê view lỗi thời.
Duyệt các view trên sheetCác bước thực hiện
- Duyệt từng sheet. part.DrawingSheets.
- Duyệt view. sheet.GetDraftingViews().
- Đọc thuộc tính. Name, loại lớp .NET, IsOutOfDate.
- Gom view lỗi thời. Danh sách để báo cáo.
- Gợi ý cập nhật. Hướng dẫn chạy Update Views.
Code tham khảo (Python)
import NXOpen def duyet_view(part): for sheet in part.DrawingSheets: for v in sheet.GetDraftingViews(): yield sheet, v def main(): session = NXOpen.Session.GetSession() lw = session.ListingWindow lw.Open() part = session.Parts.Work if part is None: return loi_thoi = [] dem = 0 for sheet, v in duyet_view(part): dem += 1 loai = v.GetType().Name lw.WriteLine("%-14s %-20s %-18s %s" % (sheet.Name[:14], v.Name[:20], loai, "LỖI THỜI" if v.IsOutOfDate else "mới")) if v.IsOutOfDate: loi_thoi.append("%s/%s" % (sheet.Name, v.Name)) lw.WriteLine("Tổng %d view, %d view lỗi thời" % (dem, len(loi_thoi))) if loi_thoi: lw.WriteLine("Cần cập nhật: " + ", ".join(loi_thoi)) lw.WriteLine("Gợi ý: tab Home > Update Views, hoặc dùng UpdateViewsBuilder trong code.") if __name__ == "__main__": main()Giải thích code
v.GetType().Nametrả về tên lớp thật (BaseView,ProjectedView,SectionView...), tiện thống kê.- Generator
duyet_viewẩn chi tiết hai vòng lặp, cho code gọn. IsOutOfDateđúng khi mô hình đã đổi nhưng view chưa cập nhật.
Lỗi thường gặp
- View của sheet khác sheet đang kích hoạt vẫn đọc được thuộc tính, nhưng một số thao tác chỉnh yêu cầu kích hoạt sheet trước.
- Chi tiết lớn cập nhật view mất vài phút; đừng gọi cập nhật tự động trong vòng lặp nhiều file mà không 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.