NX Lab

Hiện/ẩn và bật/tắt block theo lựa chọn: hộp thoại động cho Toggle và Enumeration

#Python#Block UI Styler1 lượt xem

  1. Quản trị viênQuản trị· 0 điểm

    Câu hỏi ·

    Hộp thoại gọn khi chỉ hiện ô cần thiết: chọn kiểu lỗ 'ren' thì hiện ô bước ren, kiểu 'trơn' thì ẩn đi. Mọi block có thuộc tính Show và Enable để điều khiển.

    Hiện/ẩn và bật/tắt block theo lựa chọn Hiện/ẩn và bật/tắt block theo lựa chọn

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

    1. Xác định ô điều khiển. Toggle hoặc Enumeration.
    2. Trong update callback. So sánh block được truyền vào.
    3. Đặt Show/Enable. block.Show = True/False; block.Enable = True/False.
    4. Đặt trạng thái ban đầu. Trong initialize callback.
    5. Giữ nhất quán. Hàm một nơi cập nhật mọi phụ thuộc.

    Code tham khảo (Python)

    import NXOpen
    import NXOpen.BlockStyler
    
    class HopThoaiDong:
        def __init__(self, duong_dan_dlx):
            self.ui = NXOpen.UI.GetUI()
            self.hop_thoai = self.ui.CreateDialog(duong_dan_dlx)
            self.hop_thoai.AddInitializeHandler(self.khoi_tao)
            self.hop_thoai.AddUpdateHandler(self.cap_nhat)
    
        def khoi_tao(self):
            goc = self.hop_thoai.TopBlock
            self.kieu_lo = goc.FindBlock("enum_kieu_lo")
            self.buoc_ren = goc.FindBlock("double_buoc_ren")
            self.co_vat_mep = goc.FindBlock("toggle_vat_mep")
            self.vat_mep = goc.FindBlock("double_vat_mep")
            self.ap_dung_phu_thuoc()
    
        def ap_dung_phu_thuoc(self):
            la_ren = self.kieu_lo.ValueAsString == "Ren"
            self.buoc_ren.Show = la_ren                      # chỉ hiện khi chọn lỗ ren
            self.vat_mep.Enable = bool(self.co_vat_mep.Value)  # chỉ nhập được khi bật vát mép
    
        def cap_nhat(self, block):
            if block in (self.kieu_lo, self.co_vat_mep):
                self.ap_dung_phu_thuoc()
            return 0
    
        def hien_thi(self):
            try:
                return self.hop_thoai.Show()
            finally:
                self.hop_thoai.Dispose()
    

    Giải thích code

    • Show quyết định block có hiện không; Enable quyết định có nhập được không.
    • Gom mọi logic phụ thuộc vào ap_dung_phu_thuoc giúp gọi được ở cả lúc khởi tạo lẫn khi cập nhật.
    • Callback cap_nhat nhận block vừa thay đổi; so sánh bằng == hoặc in với tập block liên quan.

    Lỗi thường gặp

    • Nhãn của Enumeration ("Ren") phải khớp chính xác với chuỗi trong .dlx, kể cả dấu và hoa thường.
    • Ẩn block làm hộp thoại co lại; thiết kế bố cục sao cho nhảy kích thước không gây khó chịu.

    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.