
Tạo Expression mới có đơn vị: số, chuỗi, logic và công thức tham chiếu expression khác
#Python#Expression1 lượt xem
Quản trị viênQuản trị· 0 điểm
Câu hỏi ·
Mô hình tham số tốt dùng expression đặt tên rõ ràng thay vì số cố định trong feature. Script có thể tạo sẵn bộ expression chuẩn cho mọi chi tiết mới.
Tạo Expression mới có đơn vịCác bước thực hiện
- Chuẩn bị đơn vị. part.UnitCollection.FindObject("MilliMeter") hoặc "Degrees".
- Tạo số có đơn vị. part.Expressions.CreateWithUnits("tên = giá trị", unit).
- Tạo chuỗi và logic. CreateExpression("String", ...) và "Boolean".
- Tạo công thức. Tham chiếu expression khác: "dien_tich = dai * rong".
- Kiểm tra. Đọc lại Value và RightHandSide.
Code tham khảo (Python)
import NXOpen def tao_bo_expression(part): mm = part.UnitCollection.FindObject("MilliMeter") do = part.UnitCollection.FindObject("Degrees") kq = {} kq["dai"] = part.Expressions.CreateWithUnits("dai = 120", mm) kq["rong"] = part.Expressions.CreateWithUnits("rong = 80", mm) kq["goc_vat"] = part.Expressions.CreateWithUnits("goc_vat = 45", do) kq["dien_tich"] = part.Expressions.CreateWithUnits("dien_tich = dai * rong", part.UnitCollection.FindObject("SquareMilliMeter")) kq["vat_lieu"] = part.Expressions.CreateExpression("String", "vat_lieu = \"S45C\"") kq["co_ren"] = part.Expressions.CreateExpression("Boolean", "co_ren = true") return kq def main(): session = NXOpen.Session.GetSession() lw = session.ListingWindow lw.Open() part = session.Parts.Work if part is None: return session.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Tao expression") try: kq = tao_bo_expression(part) except NXOpen.NXException as ex: lw.WriteLine("Không tạo được (có thể tên đã tồn tại): " + ex.Message) return for ten, e in kq.items(): lw.WriteLine("%-10s [%s] = %s" % (ten, e.Type, e.RightHandSide)) if __name__ == "__main__": main()Giải thích code
CreateWithUnitstạo expression số có đơn vị; tên đơn vị phải khớp tên trongUnitCollection.CreateExpression(kiểu, chuỗi)dùng cho kiểuString,Boolean,Integer,Number.- Công thức tham chiếu được expression khác, nên
dien_tichtự cập nhật khi đổidaihoặcrong.
Lỗi thường gặp
- Tên expression trùng tên đã có gây NXException; kiểm tra bằng
FindObjecttrước. - Tên đơn vị ở bản NX tiếng Việt vẫn là tên tiếng Anh nội bộ; đừng dịch.
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.