
Khung script chuẩn dùng cho mọi dự án NX Open: kiểm tra, log, undo, báo cáo
#Python#Mẫu1 lượt xem
Quản trị viênQuản trị· 0 điểm
Câu hỏi ·
Sau 19 bài lẻ, đây là bản tổng hợp: một khung script có đủ kiểm tra part, log, undo mark, bắt lỗi và tổng kết. Bạn copy khung này làm điểm xuất phát cho các bài sau.
Khung script chuẩn dùng cho mọi dự án NX…Các bước thực hiện
- Khởi tạo. Lấy Session, mở Listing Window, đọc Work Part.
- Kiểm tra. Dừng sớm nếu thiếu part hoặc part chỉ đọc.
- Đặt Undo Mark. Một mốc cho cả script.
- Thực thi. Gọi hàm công việc trong try/except.
- Tổng kết. In thời gian chạy, số thao tác thành công và lỗi.
Code tham khảo (Python)
import time import NXOpen TEN_SCRIPT = "Khung script NX Open" def cong_viec(part, lw): """Viết phần việc chính tại đây; trả về số đối tượng đã xử lý.""" n = 0 for b in part.Bodies: lw.WriteLine(" Body: %s (solid=%s)" % (b.JournalIdentifier, b.IsSolidBody)) n += 1 return n def main(): session = NXOpen.Session.GetSession() lw = session.ListingWindow lw.Open() t0 = time.perf_counter() lw.WriteLine("=== %s ===" % TEN_SCRIPT) part = session.Parts.Work if part is None: lw.WriteLine("DỪNG: chưa có Work Part") return if part.IsReadOnly: lw.WriteLine("DỪNG: part chỉ đọc") return mark = session.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, TEN_SCRIPT) try: n = cong_viec(part, lw) lw.WriteLine("Hoàn tất: %d đối tượng" % n) except NXOpen.NXException as ex: lw.WriteLine("LỖI NX %d: %s -> hoàn tác" % (ex.ErrorCode, ex.Message)) session.UndoToMark(mark, TEN_SCRIPT) except Exception as ex: lw.WriteLine("LỖI Python: %s -> hoàn tác" % ex) session.UndoToMark(mark, TEN_SCRIPT) finally: lw.WriteLine("Thời gian: %.2f s" % (time.perf_counter() - t0)) if __name__ == "__main__": main()Giải thích code
- Hàm
cong_vieclà nơi duy nhất bạn cần sửa; mọi thứ xung quanh đã có sẵn. - Hoàn tác khi lỗi đảm bảo mô hình không rơi vào trạng thái dở dang.
b.IsSolidBodyphân biệt solid với sheet body.
Lỗi thường gặp
- Một số thao tác ghi file không hoàn tác được bằng Undo; để chúng ở cuối, sau khi các bước mô hình đã thành công.
- Khi chuyển sang chạy hàng loạt, tách
mainthànhxu_ly_mot_partđể dễ gọi lặp.
Mở rộng
Từ bài 21 trở đi, các bài sẽ dùng khung này và chỉ trình bày phần
cong_viec.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.