NX Lab

Hậu xử lý (Postprocess) ra file NC: chọn post, đơn vị, thư mục và đặt tên theo chương trình

#Python#CAM#Post1 lượt xem

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

    Câu hỏi ·

    Hậu xử lý là bước cuối: chuyển đường chạy dao thành mã máy. Script chọn post, đơn vị xuất và đặt tên file theo quy ước, thay vì nhập tay cho từng chương trình.

    Hậu xử lý (Postprocess) ra file NC Hậu xử lý (Postprocess) ra file NC

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

    1. Chọn nhóm chương trình. Lấy nhóm trong Program Order.
    2. Chọn post. Tên post như trong hộp thoại Postprocess.
    3. Đặt đơn vị đầu ra. OutputUnits.Metric hoặc Inch hoặc PostDefined.
    4. Gọi Postprocess. Danh sách đối tượng, tên post, đường dẫn, đơn vị.
    5. Kiểm tra file. Tồn tại và có kích thước.

    Code tham khảo (Python)

    import os
    import NXOpen
    import NXOpen.CAM
    
    def tim_nhom(setup, ten):
        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):
                    if obj.Name == ten:
                        return obj
                    ngan_xep.append(obj)
        return None
    
    def hau_xu_ly(setup, nhom, ten_post, duong_dan):
        os.makedirs(os.path.dirname(duong_dan), exist_ok=True)
        setup.Postprocess([nhom], ten_post, duong_dan, NXOpen.CAM.CAMSetup.OutputUnits.Metric)
        if not os.path.isfile(duong_dan) or os.path.getsize(duong_dan) == 0:
            raise RuntimeError("Hậu xử lý xong nhưng không thấy file: " + duong_dan)
        return os.path.getsize(duong_dan)
    
    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
        nhom = tim_nhom(setup, "PROGRAM")        # thay bằng tên nhóm chương trình thật
        if nhom is None:
            lw.WriteLine("Không thấy nhóm chương trình")
            return
        ra = "D:/NXLab_xuat/nc/%s_OP10.nc" % part.Leaf
        try:
            kich = hau_xu_ly(setup, nhom, "MILL_3_AXIS", ra)      # tên post theo máy của bạn
            lw.WriteLine("Đã xuất NC (%d byte): %s" % (kich, ra))
        except Exception as ex:
            lw.WriteLine("Lỗi hậu xử lý: %s" % ex)
    
    if __name__ == "__main__":
        main()
    

    Giải thích code

    • Tên post (MILL_3_AXIS) phải khớp tên post có trong thư viện của site; đây là giá trị thường sai nhất.
    • Kiểm tra file đầu ra giúp phát hiện trường hợp post chạy xong nhưng không ghi gì.
    • PostprocessWithSetting cho thêm tùy chọn cảnh báo và công cụ xem lại nếu cần.

    Lỗi thường gặp

    • Hậu xử lý operation chưa có path cho file rỗng hoặc lỗi; chạy bước sinh path trước.
    • Đừng chạy NC chưa được người có trách nhiệm duyệt và mô phỏng lên máy thật; script chỉ sinh file, không thay việc kiểm tra an toà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.