
Liệt kê Expression (biểu thức tham số) của part ra bảng: tên, giá trị, công thức
#Python#Expression1 lượt xem
Quản trị viênQuản trị· 0 điểm
Câu hỏi ·
Expression là trái tim của mô hình tham số. Liệt kê chúng ra bảng giúp kiểm tra, so sánh giữa các phiên bản và là bước đầu để sửa hàng loạt.
Liệt kê Expression (biểu thức tham số) của…Các bước thực hiện
- Lấy tập expression. part.Expressions là collection duyệt được.
- Đọc từng thuộc tính. Name, Value, RightHandSide, Units.
- Phân loại. Lọc theo loại Number, String, Point hoặc theo tiền tố tên.
- Ẩn expression hệ thống. Bỏ qua các tên p123 do NX tự sinh.
- Xuất bảng. In căn lề hoặc ghi CSV.
Code tham khảo (Python)
import re import NXOpen def danh_sach_expression(part, bo_qua_he_thong=True): ket_qua = [] for e in part.Expressions: if bo_qua_he_thong and re.match(r"^p\d+$", e.Name): continue ket_qua.append({ "ten": e.Name, "gia_tri": e.Value if e.Type == "Number" else "", "cong_thuc": e.RightHandSide, "kieu": e.Type, "don_vi": e.Units.Name if e.Units is not None else "", }) return sorted(ket_qua, key=lambda x: x["ten"].lower()) def main(): session = NXOpen.Session.GetSession() lw = session.ListingWindow lw.Open() part = session.Parts.Work if part is None: lw.WriteLine("Chưa có part") return lw.WriteLine("%-22s %-12s %-6s %s" % ("Tên", "Giá trị", "Đơn vị", "Công thức")) for d in danh_sach_expression(part): lw.WriteLine("%-22s %-12s %-6s %s" % (d["ten"], d["gia_tri"], d["don_vi"], d["cong_thuc"])) if __name__ == "__main__": main()Giải thích code
e.RightHandSidelà chuỗi công thức như người dùng nhập (ví dụwidth*2).e.Valuechỉ có nghĩa với expression dạng số (e.Type == "Number").- Lọc bằng regex
^p\d+(chữ p theo sau là chữ số) bỏ các biến nội bộ của feature (p0, p1, p2...).
Lỗi thường gặp
- Expression có thể không có đơn vị (
UnitslàNone), luôn kiểm tra trước khi đọc.Name. - Tên expression phân biệt chữ hoa/thường khi tìm bằng
FindObject; chuẩn hóa tên khi so sánh.
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.