
Liệt kê operation với trạng thái: đã sinh đường chạy dao chưa, cần tạo lại hay hậu xử lý lại
#Python#CAM1 lượt xem
Quản trị viênQuản trị· 0 điểm
Câu hỏi ·
Trước khi hậu xử lý cần biết operation nào chưa có đường chạy dao, operation nào đã sửa và cần sinh lại. Bài này in bảng trạng thái cho toàn bộ operation của setup.
Liệt kê operation với trạng tháiCác bước thực hiện
- Thu thập operation. Duyệt Program Order và lọc operation.
- Kiểm tra đường chạy dao. operation.AskPathExists() (hoặc GetPath()).
- Đọc trạng thái. operation.GetStatus() trả về Complete, Repost, Regen, Approved.
- Gom nhóm trạng thái. Đếm từng loại.
- Đề xuất hành động. Regen -> sinh lại; Repost -> hậu xử lý lại.
Code tham khảo (Python)
import NXOpen import NXOpen.CAM def tat_ca_operation(setup): ket_qua = [] ngan_xep = [setup.GetRoot(NXOpen.CAM.CAMSetup.View.ProgramOrder)] while ngan_xep: nhom = ngan_xep.pop() for obj in nhom.GetMembers(): if setup.IsGroup(obj): ngan_xep.append(obj) elif setup.IsOperation(obj): ket_qua.append(obj) return ket_qua def mo_ta_trang_thai(op): st = op.GetStatus() return str(st).split(".")[-1] 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: lw.WriteLine("Part chưa có CAM Setup") return ops = tat_ca_operation(setup) lw.WriteLine("%-32s %-8s %-10s" % ("Operation", "Có path", "Trạng thái")) can_sinh = [] for op in ops: co_path = op.AskPathExists() lw.WriteLine("%-32s %-8s %-10s" % (op.Name[:32], "có" if co_path else "KHÔNG", mo_ta_trang_thai(op))) if not co_path: can_sinh.append(op.Name) lw.WriteLine("Cần sinh đường chạy dao: %d / %d operation" % (len(can_sinh), len(ops))) if __name__ == "__main__": main()Giải thích code
AskPathExistslà kiểm tra nhanh có đường chạy dao hay chưa.GetStatuscho biết operation đã hoàn thành hay cần làm lại (Regen/Repost).- Dùng ngăn xếp thay vì đệ quy để duyệt cây, tránh giới hạn độ sâu đệ quy.
Lỗi thường gặp
- Một số trạng thái chỉ cập nhật sau khi NX tính lại; gọi
GenerateToolPathrồi đọc lại. - Operation bị khóa hoặc thuộc nhóm tham chiếu có thể xuất hiện hai lần ở hai view; chuẩn hóa theo tên nếu cần.
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.