NX Lab

Ghi thuộc tính dạng chuỗi cho part bằng SetUserAttribute: mã vật tư, vật liệu, người thiết kế

#Python#Attribute1 lượt xem

  1. Quản trị viênQuản trị· 0 điểm

    Câu hỏi ·

    Thuộc tính (attribute) là nơi lưu metadata của chi tiết: mã vật tư, vật liệu, người thiết kế. Từ code, SetUserAttribute ghi thuộc tính lên bất kỳ đối tượng NX nào, và lên chính part là trường hợp phổ biến nhất.

    Ghi thuộc tính dạng chuỗi cho part bằng… Ghi thuộc tính dạng chuỗi cho part bằng…

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

    1. Chọn đối tượng. Thường là part: session.Parts.Work.
    2. Chọn tiêu đề. Tên thuộc tính (title), quy ước chữ hoa không dấu.
    3. Gọi SetUserAttribute. Tiêu đề, chỉ số mảng (-1 nếu không phải mảng), giá trị, tùy chọn cập nhật.
    4. Chọn Update.Option. Now để áp dụng ngay.
    5. Đọc lại. GetUserAttributeAsString để kiểm tra.

    Code tham khảo (Python)

    import NXOpen
    
    KHONG_MANG = -1
    NGAY = NXOpen.Update.Option.Now
    
    def ghi_chuoi(doi_tuong, tieu_de, gia_tri):
        doi_tuong.SetUserAttribute(tieu_de, KHONG_MANG, str(gia_tri), NGAY)
    
    def doc_chuoi(doi_tuong, tieu_de):
        if not doi_tuong.HasUserAttribute(tieu_de, NXOpen.NXObject.AttributeType.String, KHONG_MANG):
            return None
        return doi_tuong.GetUserAttributeAsString(tieu_de, NXOpen.NXObject.AttributeType.String, KHONG_MANG)
    
    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, "Ghi thuoc tinh")
        ghi_chuoi(part, "MA_VAT_TU", "VT-000123")
        ghi_chuoi(part, "VAT_LIEU", "S45C")
        ghi_chuoi(part, "NGUOI_THIET_KE", "Nguyen Van A")
        for tieu_de in ("MA_VAT_TU", "VAT_LIEU", "NGUOI_THIET_KE", "KHONG_CO"):
            lw.WriteLine("%-16s = %s" % (tieu_de, doc_chuoi(part, tieu_de)))
    
    if __name__ == "__main__":
        main()
    

    Giải thích code

    • Chỉ số -1 cho thuộc tính đơn; số 0, 1, 2... dùng cho thuộc tính dạng mảng (bài sau).
    • HasUserAttribute cho biết thuộc tính có tồn tại và đúng kiểu, tránh lỗi khi đọc thuộc tính chưa có.
    • Update.Option.Now cập nhật tức thì; Later hoãn để gộp nhiều thay đổi.

    Lỗi thường gặp

    • Thuộc tính cùng tên nhưng khác kiểu (chuỗi và số) là hai thuộc tính khác nhau; giữ nhất quán một kiểu cho mỗi tiêu đề.
    • Ghi thuộc tính làm part được đánh dấu đã sửa; nhớ lưu sau khi xong.

    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.