
Đổi đơn vị chiều dài, diện tích, khối lượng bằng UnitCollection.Convert
#Python#Đơn vị1 lượt xem
Quản trị viênQuản trị· 0 điểm
Câu hỏi ·
Dữ liệu từ nhà cung cấp có thể tính bằng inch trong khi part dùng mm. NX có sẵn hàm chuyển đổi đơn vị chính xác, đỡ phải viết hệ số tay.
Đổi đơn vị chiều dài, diện tích, khối…Các bước thực hiện
- Lấy đơn vị nguồn và đích. FindObject("Inch") và FindObject("MilliMeter").
- Chuyển giá trị. Convert(nguồn, đích, giá_trị).
- Chuyển hàng loạt. List comprehension.
- Kiểm tra đơn vị của part. PartUnits.
- In bảng đối chiếu. Giá trị trước và sau.
Code tham khảo (Python)
import NXOpen def chuyen(part, gia_tri, tu, den): uc = part.UnitCollection return uc.Convert(uc.FindObject(tu), uc.FindObject(den), gia_tri) def main(): session = NXOpen.Session.GetSession() lw = session.ListingWindow lw.Open() part = session.Parts.Work if part is None: return lw.WriteLine("Đơn vị part: " + str(part.PartUnits)) cac_gia_tri_inch = [0.25, 0.5, 1.0, 2.75, 12.0] lw.WriteLine("%-10s %-12s" % ("inch", "mm")) for v in cac_gia_tri_inch: lw.WriteLine("%-10.3f %-12.4f" % (v, chuyen(part, v, "Inch", "MilliMeter"))) # Các đơn vị khác lw.WriteLine("1 ft = %.2f mm" % chuyen(part, 1.0, "Foot", "MilliMeter")) lw.WriteLine("1 lb = %.4f kg" % chuyen(part, 1.0, "PoundMass", "Kilogram")) lw.WriteLine("90 độ = %.5f rad" % chuyen(part, 90.0, "Degrees", "Radians")) if __name__ == "__main__": main()Giải thích code
- Tên đơn vị nội bộ của NX là chuỗi tiếng Anh như
Inch,MilliMeter,PoundMass. Convertđảm bảo hệ số chính xác như NX dùng, không lệch do làm tròn thủ công.GetMeasures()vàGetMeasureTypes()liệt kê tên các đơn vị có sẵn để tra cứu.
Lỗi thường gặp
- Đơn vị không tồn tại làm
FindObjectném NXException; hãy kiểm tra tên bằngGetMeasureTypes. - Đừng trộn đơn vị khi tạo hình học: tọa độ luôn theo đơn vị của part, kể cả khi số liệu nhập vào là inch.
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.