
Đọc và ghi giá trị các block thông dụng: Integer, Double, String, Toggle, Enumeration
#Python#Block UI Styler1 lượt xem
Quản trị viênQuản trị· 0 điểm
Câu hỏi ·
Mỗi loại block có kiểu dữ liệu giá trị khác nhau. Bài này gom các thuộc tính đọc/ghi thường dùng và viết hàm chung lấy toàn bộ giá trị hộp thoại thành một dict.
Đọc và ghi giá trị các block thông dụngCác bước thực hiện
- Integer và Double. Thuộc tính Value; Double còn có MinimumValue, MaximumValue.
- String. Thuộc tính Value kiểu chuỗi.
- Toggle. Thuộc tính Value kiểu bool.
- Enumeration. ValueAsString hoặc Value (chỉ số).
- Gom vào dict. Hàm chung dựa trên Object Name.
Code tham khảo (Python)
import NXOpen import NXOpen.BlockStyler def doc_gia_tri(hop_thoai, cac_block): """cac_block: danh sách (Object Name, kiểu) với kiểu thuộc: 'int', 'double', 'string', 'toggle', 'enum'.""" kq = {} goc = hop_thoai.TopBlock for ten, kieu in cac_block: b = goc.FindBlock(ten) if kieu in ("int", "double", "string", "toggle"): kq[ten] = b.Value elif kieu == "enum": kq[ten] = b.ValueAsString else: raise ValueError("Kiểu block không hỗ trợ: " + kieu) return kq def ghi_gia_tri(hop_thoai, mac_dinh): goc = hop_thoai.TopBlock for ten, gia_tri in mac_dinh.items(): b = goc.FindBlock(ten) if isinstance(gia_tri, bool): b.Value = gia_tri elif isinstance(gia_tri, (int, float, str)): b.Value = gia_tri else: raise ValueError("Không biết cách ghi giá trị cho " + ten) MAC_DINH = {"integer0": 4, "double0": 12.5, "string0": "Chi tiet moi", "toggle0": True} BLOCK = [("integer0", "int"), ("double0", "double"), ("string0", "string"), ("toggle0", "toggle")] def vi_du_su_dung(hop_thoai): ghi_gia_tri(hop_thoai, MAC_DINH) return doc_gia_tri(hop_thoai, BLOCK)Giải thích code
- Đây là các hàm tiện ích để chép vào lớp hộp thoại ở bài trước, thay cho việc gọi từng block.
isinstance(gia_tri, bool)phải kiểm tra trước vìboollà lớp con củainttrong Python.ValueAsStringcủa Enumeration trả về nhãn đang chọn; hữu ích hơn chỉ số khi lưu cấu hình.
Lỗi thường gặp
- Tên block phân biệt hoa thường và phải khớp Object Name trong file .dlx.
- Ghi giá trị ngoài khoảng
MinimumValue/MaximumValuecủa DoubleBlock bị NX từ chối hoặc cắt về giới hạ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.