
Đánh dấu (Highlight) và bỏ đánh dấu đối tượng để trình bày kết quả kiểm tra cho người dùng
#Python#Hiển thị1 lượt xem
Quản trị viênQuản trị· 0 điểm
Câu hỏi ·
Script kiểm tra tìm ra 12 lỗ nhỏ hơn quy định, nhưng người dùng muốn thấy chúng ở đâu. Highlight đối tượng giúp họ nhận ra ngay.
Đánh dấu (Highlight) và bỏ đánh dấu đối…Các bước thực hiện
- Tìm đối tượng cần nêu. Ví dụ cạnh tròn nhỏ hơn ngưỡng.
- Highlight. obj.Highlight().
- Dừng cho người dùng xem. Hộp thoại thông báo.
- Bỏ highlight. obj.Unhighlight().
- Dọn trong finally. Luôn bỏ highlight dù lỗi.
Code tham khảo (Python)
import math import NXOpen def canh_tron_nho(body, duong_kinh_toi_thieu): ket_qua = [] for e in body.GetEdges(): if e.SolidEdgeType != NXOpen.Edge.EdgeType.Circular: continue a, b = e.GetVertices() if abs(a.X - b.X) + abs(a.Y - b.Y) + abs(a.Z - b.Z) > 1e-4: continue if e.GetLength() / math.pi < duong_kinh_toi_thieu: ket_qua.append(e) return ket_qua def main(): session = NXOpen.Session.GetSession() lw = session.ListingWindow lw.Open() part = session.Parts.Work if part is None: return nho = [] for b in part.Bodies: if b.IsSolidBody: nho.extend(canh_tron_nho(b, 3.0)) lw.WriteLine("Có %d cạnh tròn có đường kính nhỏ hơn 3 mm" % len(nho)) if not nho: return try: for e in nho: e.Highlight() if not session.IsBatch: NXOpen.UI.GetUI().NXMessageBox.Show( "Kiểm tra lỗ", NXOpen.NXMessageBox.DialogType.Warning, "Các cạnh được tô sáng có đường kính nhỏ hơn 3 mm.") finally: for e in nho: e.Unhighlight() if __name__ == "__main__": main()Giải thích code
Highlight/Unhighlightchỉ thay đổi hiển thị tạm thời, không thay đổi mô hình.- Hộp thoại thông báo giữ script dừng lại trong lúc người dùng quan sát.
finallybảo đảm bỏ tô sáng kể cả khi người dùng đóng hộp thoại bất thường.
Lỗi thường gặp
- Highlight hàng nghìn đối tượng làm màn hình chậm; giới hạn số lượng.
- Đối tượng nằm trong component cần ở trạng thái hiển thị để nhìn thấy highlight.
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.