
Đóng part an toàn: Close, CloseAll và xử lý part đã sửa chưa lưu
#Python#Part2 lượt xem
Quản trị viênQuản trị· 0 điểm
Câu hỏi ·
Xử lý hàng trăm file mà không đóng part sẽ làm NX tràn bộ nhớ. Đóng đúng cách cần quyết định rõ: đóng cả cây assembly hay chỉ part này, và xử lý thế nào với part đã sửa.
Đóng part an toàn: Close, CloseAll và xử…Các bước thực hiện
- Chọn phạm vi. CloseWholeTree.TrueValue đóng cả cây, FalseValue chỉ đóng part này.
- Chọn cách xử lý sửa đổi. CloseModified.CloseModified bỏ thay đổi, UseResponses dùng bộ phản hồi.
- Tạo bộ phản hồi. session.Parts.NewPartCloseResponses() cho phép định trước câu trả lời.
- Đóng và giải phóng. Gọi part.Close(...) rồi bỏ tham chiếu.
- Đóng tất cả. session.Parts.CloseAll dùng ở cuối script.
Code tham khảo (Python)
import NXOpen def dong_part(part, luu_truoc=False): """Đóng part và các component con. Nếu luu_truoc=True thì lưu trước.""" if part is None: return if luu_truoc and part.IsModified: st = part.Save(NXOpen.BasePart.SaveComponents.TrueValue, NXOpen.BasePart.CloseAfterSave.FalseValue) st.Dispose() responses = NXOpen.Session.GetSession().Parts.NewPartCloseResponses() part.Close(NXOpen.BasePart.CloseWholeTree.TrueValue, NXOpen.BasePart.CloseModified.CloseModified, responses) def main(): session = NXOpen.Session.GetSession() lw = session.ListingWindow lw.Open() part = session.Parts.Work if part is None: lw.WriteLine("Không có part để đóng") return ten = part.Leaf dong_part(part, luu_truoc=True) lw.WriteLine("Đã đóng: " + ten) if __name__ == "__main__": main()Giải thích code
CloseModified.CloseModifiedđóng và bỏ qua thay đổi chưa lưu; vì vậy ví dụ lưu trước rồi mới đóng.NewPartCloseResponses()tạo đối tượng chứa các phản hồi cho hộp thoại hỏi khi đóng.- Sau
Closekhông dùng lại biếnpartnữa.
Lỗi thường gặp
- Đóng Display Part đang là part duy nhất khiến NX không còn part hiển thị; script tiếp theo phải tự mở lại.
- Đóng cả cây assembly ảnh hưởng tới component đang dùng chung bởi assembly khác đang mở.
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.