
Đặt tên operation theo quy tắc chung: OP10_ROUGH_D12, OP20_FINISH_D6 từ loại và dao
#Python#CAM#Quy ước1 lượt xem
Quản trị viênQuản trị· 0 điểm
Câu hỏi ·
Tên operation lộn xộn (CAVITY_MILL_1, ZLEVEL_PROFILE_3) khiến người vận hành khó đọc chương trình. Script đổi tên theo quy tắc: số thứ tự công đoạn, loại gia công, đường kính dao.
Đặt tên operation theo quy tắc chungCác bước thực hiện
- Thu thập operation theo thứ tự. Theo cây Program Order.
- Xác định loại gia công. Dựa vào tên template hoặc loại operation.
- Đọc dao của operation. Lấy đường kính từ MillToolBuilder.
- Dựng tên mới. OP{số}_{loại}_D{đường kính}.
- Đổi tên. operation.SetName(tên_mới).
Code tham khảo (Python)
import re import NXOpen import NXOpen.CAM LOAI_THEO_TU_KHOA = [ ("CAVITY", "ROUGH"), ("ROUGH", "ROUGH"), ("ZLEVEL", "SEMI"), ("FINISH", "FINISH"), ("FACE", "FACE"), ("DRILL", "DRILL"), ("PLANAR", "PLANAR"), ] def doan_loai(ten_cu): hoa = ten_cu.upper() for tu_khoa, loai in LOAI_THEO_TU_KHOA: if tu_khoa in hoa: return loai return "OP" def ten_moi(stt, ten_cu, duong_kinh=None): loai = doan_loai(ten_cu) phan_dao = "_D%g" % duong_kinh if duong_kinh else "" return "OP%02d_%s%s" % (stt * 10, loai, phan_dao) def tat_ca_operation(setup): kq, ngan_xep = [], [setup.GetRoot(NXOpen.CAM.CAMSetup.View.ProgramOrder)] while ngan_xep: nhom = ngan_xep.pop() con = [o for o in nhom.GetMembers()] for obj in reversed(con): if setup.IsGroup(obj): ngan_xep.append(obj) elif setup.IsOperation(obj): kq.append(obj) return kq 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: return ops = tat_ca_operation(setup) session.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Doi ten operation") for i, op in enumerate(ops, 1): moi = ten_moi(i, op.Name) lw.WriteLine("%-30s -> %s" % (op.Name, moi)) op.SetName(moi) if __name__ == "__main__": main()Giải thích code
- Hàm
doan_loaiánh xạ từ khóa trong tên cũ thành loại gia công chuẩn; mở rộng bảng theo template của bạn. stt * 10tạo số công đoạn OP10, OP20, OP30... để chừa chỗ chèn công đoạn mới.- Phần đường kính dao để trống trong ví dụ; kết hợp với hàm đọc dao ở bài 164 để thêm
_D12.
Lỗi thường gặp
- Tên operation phải duy nhất trong part; quy tắc có số thứ tự đảm bảo điều này.
- Đổi tên sau khi đã hậu xử lý làm file NC không còn khớp tên; đặt tên trước khi xuất.
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.