NX Lab

Đá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

  1. 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… Đánh dấu (Highlight) và bỏ đánh dấu đối…

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

    1. Tìm đối tượng cần nêu. Ví dụ cạnh tròn nhỏ hơn ngưỡng.
    2. Highlight. obj.Highlight().
    3. Dừng cho người dùng xem. Hộp thoại thông báo.
    4. Bỏ highlight. obj.Unhighlight().
    5. 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/Unhighlight chỉ 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.
    • finally bả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.