NX Lab

Sinh đường chạy dao hàng loạt: GenerateToolPath cho mọi operation chưa có path, ghi nhật ký

#Python#CAM1 lượt xem

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

    Câu hỏi ·

    Sau khi sửa mô hình hay đổi thông số, hàng chục operation cần sinh lại đường chạy dao. GenerateToolPath nhận danh sách đối tượng và tính trong một lần, nhanh hơn bấm từng cái.

    Sinh đường chạy dao hàng loạt Sinh đường chạy dao hàng loạt

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

    1. Thu thập operation cần sinh. Chưa có path hoặc ở trạng thái Regen.
    2. Đặt Undo Mark. Cho phép hoàn tác.
    3. Gọi GenerateToolPath. Truyền danh sách.
    4. Kiểm tra kết quả. Đọc lại AskPathExists.
    5. Báo cáo. Số thành công và thất bại.

    Code tham khảo (Python)

    import time
    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 can_sinh(op):
        return (not op.AskPathExists()) or op.GetStatus() == NXOpen.CAM.CAMObject.Status.Regen
    
    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 = [op for op in tat_ca_operation(setup) if can_sinh(op)]
        if not ops:
            lw.WriteLine("Mọi operation đã có đường chạy dao")
            return
        lw.WriteLine("Sẽ sinh đường chạy dao cho %d operation..." % len(ops))
        session.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Sinh toolpath")
        t0 = time.perf_counter()
        try:
            setup.GenerateToolPath(ops)
        except NXOpen.NXException as ex:
            lw.WriteLine("Lỗi khi sinh: %s" % ex.Message)
        loi = [op.Name for op in ops if not op.AskPathExists()]
        lw.WriteLine("Xong sau %.1f s: %d thành công, %d chưa có path" % (time.perf_counter() - t0, len(ops) - len(loi), len(loi)))
        for ten in loi:
            lw.WriteLine("  KHÔNG CÓ PATH: " + ten)
    
    if __name__ == "__main__":
        main()
    

    Giải thích code

    • GenerateToolPath nhận một danh sách CAMObject, nên tính cả lô trong một lần gọi.
    • Sau khi sinh, đọc lại AskPathExists để biết operation nào thực sự có path (lỗi hình học làm một số operation thất bại).
    • Hàm đo thời gian giúp ước tính khi lập lịch chạy ban đêm.

    Lỗi thường gặp

    • Sinh toàn bộ chương trình lớn có thể mất hàng giờ; đặt ParallelGenerate nếu giấy phép và máy cho phép.
    • Operation thất bại thường do hình học thay đổi; xem cảnh báo trong Information Window.

    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.