
Duyệt cây Program Order: nhóm chương trình và các operation theo thứ tự đệ quy
#Python#CAM2 lượt xem
Quản trị viênQuản trị· 0 điểm
Câu hỏi ·
Cây chương trình (Program Order View) là cấu trúc quan trọng nhất của CAM. Duyệt đệ quy từ nhóm gốc cho biết thứ tự gia công, tên các nhóm và operation trong từng nhóm.
Duyệt cây Program OrderCác bước thực hiện
- Lấy nhóm gốc. setup.GetRoot(CAMSetup.View.ProgramOrder).
- Lấy thành viên. group.GetMembers() trả về nhóm con và operation.
- Phân biệt. setup.IsGroup(obj) hoặc setup.IsOperation(obj).
- Đệ quy. Gọi lại với nhóm con, tăng thụt lề.
- In cây. Tên và loại.
Code tham khảo (Python)
import NXOpen import NXOpen.CAM def in_cay(setup, nhom, lw, muc=0, dem=None): dem = dem if dem is not None else {"nhom": 0, "op": 0} for obj in nhom.GetMembers(): if setup.IsGroup(obj): dem["nhom"] += 1 lw.WriteLine("%s[NHÓM] %s" % (" " * muc, obj.Name)) in_cay(setup, obj, lw, muc + 1, dem) elif setup.IsOperation(obj): dem["op"] += 1 lw.WriteLine("%s- %s" % (" " * muc, obj.Name)) return dem 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 goc = setup.GetRoot(NXOpen.CAM.CAMSetup.View.ProgramOrder) lw.WriteLine("=== Program Order: %s ===" % goc.Name) dem = in_cay(setup, goc, lw) lw.WriteLine("Tổng: %d nhóm, %d operation" % (dem["nhom"], dem["op"])) if __name__ == "__main__": main()Giải thích code
- Bốn view của CAM:
ProgramOrder,MachineMethod,Geometry,MachineTool; cùng một đối tượng có thể xuất hiện ở nhiều view. IsGroup/IsOperationlà cách phân biệt chắc chắn hơn so với kiểm tra tên lớp.- Từ điển
demtruyền qua đệ quy gom số liệu mà không cần biến toàn cục.
Lỗi thường gặp
- Cây rất lớn (hàng trăm operation) in ra dài; thêm giới hạn độ sâu hoặc lọc theo tên.
- Tên nhóm hệ thống (
NC_PROGRAM,PROGRAM) luôn có; bỏ qua nếu không 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.