NX Lab

Đổ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

  1. 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… Đổi đơn vị chiều dài, diện tích, khối…

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

    1. Lấy đơn vị nguồn và đích. FindObject("Inch") và FindObject("MilliMeter").
    2. Chuyển giá trị. Convert(nguồn, đích, giá_trị).
    3. Chuyển hàng loạt. List comprehension.
    4. Kiểm tra đơn vị của part. PartUnits.
    5. 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 FindObject ném NXException; hãy kiểm tra tên bằng GetMeasureTypes.
    • Đừ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.