
Kiểm tra kích thước hộp bao của chi tiết với yêu cầu có dung sai: báo đạt / không đạt
#Python#Kiểm tra#Dung sai1 lượt xem
Quản trị viênQuản trị· 0 điểm
Câu hỏi ·
Trước khi chuyển bản vẽ sang gia công, cần chắc chắn chi tiết nằm trong khuôn khổ cho phép. Bài này so hộp bao của mô hình với kích thước yêu cầu và dung sai, rồi in kết quả đạt hay không đạt.
Kiểm tra kích thước hộp bao của chi tiết…Các bước thực hiện
- Khai báo yêu cầu. Kích thước danh nghĩa và dung sai cho ba trục.
- Tính hộp bao. Min, max của các đỉnh cạnh.
- Sắp xếp kích thước. So sánh theo thứ tự lớn - vừa - nhỏ để không phụ thuộc hướng đặt.
- So dung sai. Chênh lệch tuyệt đối nhỏ hơn hoặc bằng dung sai.
- Báo kết quả. Từng trục và kết luận chung.
Code tham khảo (Python)
import NXOpen YEU_CAU = {"danh_nghia": (120.0, 80.0, 25.0), "dung_sai": 0.5} # mm def hop_bao(bodies): xs, ys, zs = [], [], [] for b in bodies: for e in b.GetEdges(): for p in e.GetVertices(): xs.append(p.X); ys.append(p.Y); zs.append(p.Z) return sorted([max(xs) - min(xs), max(ys) - min(ys), max(zs) - min(zs)], reverse=True) def so_sanh(kich_thuoc, danh_nghia, dung_sai): yc = sorted(danh_nghia, reverse=True) ket_qua = [] for thuc, can in zip(kich_thuoc, yc): lech = thuc - can ket_qua.append((can, thuc, lech, abs(lech) <= dung_sai)) return ket_qua def main(): session = NXOpen.Session.GetSession() lw = session.ListingWindow lw.Open() part = session.Parts.Work bodies = [b for b in part.Bodies if b.IsSolidBody] if part else [] if not bodies: lw.WriteLine("Không có body đặc") return kq = so_sanh(hop_bao(bodies), YEU_CAU["danh_nghia"], YEU_CAU["dung_sai"]) lw.WriteLine("%-10s %-10s %-10s %s" % ("Yêu cầu", "Thực tế", "Lệch", "Kết luận")) for can, thuc, lech, ok in kq: lw.WriteLine("%-10.2f %-10.2f %+-10.3f %s" % (can, thuc, lech, "ĐẠT" if ok else "KHÔNG ĐẠT")) lw.WriteLine("=> " + ("CHI TIẾT ĐẠT" if all(k[3] for k in kq) else "CHI TIẾT KHÔNG ĐẠT")) if __name__ == "__main__": main()Giải thích code
- Sắp xếp giảm dần cả kích thước thực lẫn yêu cầu giúp kết quả không phụ thuộc cách đặt chi tiết trong hệ tọa độ.
zipghép từng cặp kích thước tương ứng,abs(lech) <= dung_sailà điều kiện đạt.- Giá trị
%+-10.3fhiển thị dấu cộng/trừ để thấy ngay lệch dương hay âm.
Lỗi thường gặp
- Hộp bao theo đỉnh cạnh có thể nhỏ hơn thực tế với chi tiết có cung tròn lồi; dùng thêm Measure để chắc chắn khi cần chính xác.
- Dung sai theo từng trục khác nhau thì thay đối số
dung_saibằng danh sách ba phần tử.
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.