NX Lab

Ghi thuộc tính vào operation CAM: người duyệt, ngày duyệt và ghi chú cho người vận hành

#Python#CAM#Attribute1 lượt xem

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

    Câu hỏi ·

    Thông tin quy trình (ai duyệt, duyệt ngày nào, ghi chú gá đặt) nên gắn vào chính chương trình. Mọi đối tượng CAM đều là NXObject nên dùng được hàm thuộc tính đã học.

    Ghi thuộc tính vào operation CAM Ghi thuộc tính vào operation CAM

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

    1. Chọn đối tượng. Nhóm chương trình hoặc operation.
    2. Ghi thuộc tính. SetUserAttribute(tiêu đề, -1, giá trị, Now).
    3. Ghi người và ngày. getpass và time.
    4. Đọc lại. GetUserAttributeAsString.
    5. Báo cáo. Danh sách chương trình đã/chưa duyệt.

    Code tham khảo (Python)

    import getpass
    import time
    import NXOpen
    import NXOpen.CAM
    
    NGAY = NXOpen.Update.Option.Now
    KIEU = NXOpen.NXObject.AttributeType
    
    def duyet_chuong_trinh(nhom, ghi_chu=""):
        nhom.SetUserAttribute("DA_DUYET", -1, "CO", NGAY)
        nhom.SetUserAttribute("NGUOI_DUYET", -1, getpass.getuser(), NGAY)
        nhom.SetUserAttribute("NGAY_DUYET", -1, time.strftime("%Y-%m-%d %H:%M"), NGAY)
        if ghi_chu:
            nhom.SetUserAttribute("GHI_CHU_GA_DAT", -1, ghi_chu, NGAY)
    
    def da_duyet(nhom):
        return (nhom.HasUserAttribute("DA_DUYET", KIEU.String, -1) and
                nhom.GetUserAttributeAsString("DA_DUYET", KIEU.String, -1) == "CO")
    
    def cac_nhom_chuong_trinh(setup):
        goc = setup.GetRoot(NXOpen.CAM.CAMSetup.View.ProgramOrder)
        return [o for o in goc.GetMembers() if setup.IsGroup(o)]
    
    def main():
        session = NXOpen.Session.GetSession()
        lw = session.ListingWindow
        lw.Open()
        part = session.Parts.Work
        setup = part.CAMSetup if part else None
        if setup is None:
            return
        session.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Duyet chuong trinh")
        for nhom in cac_nhom_chuong_trinh(setup):
            if not da_duyet(nhom):
                duyet_chuong_trinh(nhom, "Gá êtô, chạm dao tại mặt trên phôi, bù dao H1")
        for nhom in cac_nhom_chuong_trinh(setup):
            lw.WriteLine("%-24s duyệt: %s" % (nhom.Name[:24], "CÓ" if da_duyet(nhom) else "chưa"))
    
    if __name__ == "__main__":
        main()
    

    Giải thích code

    • Thuộc tính trên nhóm chương trình đi cùng file .prt, nên người vận hành mở file là thấy.
    • Ghi người và thời gian duyệt tạo dấu vết kiểm toán cơ bản.
    • Ví dụ gán duyệt tự động cho mọi nhóm chỉ để minh họa; quy trình thật phải có bước duyệt thủ công.

    Lỗi thường gặp

    • Duyệt tự động mà không kiểm tra là phản mục đích của việc duyệt; chỉ dùng hàm này sau khi người có thẩm quyền xác nhận.
    • Thuộc tính không thay thế chữ ký điện tử hay quy trình PDM chính thức.

    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.