NX Lab

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

  1. 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 Order Duyệt cây Program Order

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

    1. Lấy nhóm gốc. setup.GetRoot(CAMSetup.View.ProgramOrder).
    2. Lấy thành viên. group.GetMembers() trả về nhóm con và operation.
    3. Phân biệt. setup.IsGroup(obj) hoặc setup.IsOperation(obj).
    4. Đệ quy. Gọi lại với nhóm con, tăng thụt lề.
    5. 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/IsOperation là 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 dem truyề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.