
Lưu, Lưu thành (SaveAs) và lưu toàn bộ assembly bằng NX Open
#Python#Part2 lượt xem
Quản trị viênQuản trị· 0 điểm
Câu hỏi ·
Lưu file nghe đơn giản nhưng có nhiều biến thể: lưu tại chỗ, lưu sang tên, lưu cả component con. Bài này gói chúng thành các hàm an toàn có kiểm tra trạng thái.
Lưu, Lưu thành (SaveAs) và lưu toàn bộ…Các bước thực hiện
- Lưu tại chỗ. part.Save(SaveComponents.TrueValue, CloseAfterSave.FalseValue).
- Lưu thành. part.SaveAs(duong_dan_moi) tạo file mới và Work Part trỏ sang file đó.
- Lưu mọi part đã sửa. session.Parts.SaveAll() trả về cờ anyPartsModified và trạng thái.
- Đọc kết quả. PartSaveStatus.NumberUnsavedParts cho biết còn part nào chưa lưu.
- Xử lý lỗi. Bắt NXException, in tên file gây lỗi.
Code tham khảo (Python)
import os import NXOpen def luu(part): """Lưu part và các component đã sửa. Trả về số part chưa lưu được.""" status = part.Save(NXOpen.BasePart.SaveComponents.TrueValue, NXOpen.BasePart.CloseAfterSave.FalseValue) try: return status.NumberUnsavedParts finally: status.Dispose() def luu_thanh(part, thu_muc, ten_moi): os.makedirs(thu_muc, exist_ok=True) dich = thu_muc.rstrip("/") + "/" + ten_moi + ".prt" status = part.SaveAs(dich) status.Dispose() return dich def main(): session = NXOpen.Session.GetSession() lw = session.ListingWindow lw.Open() part = session.Parts.Work if part is None: lw.WriteLine("Chưa có part") return try: chua_luu = luu(part) lw.WriteLine("Lưu xong, số part chưa lưu được: %d" % chua_luu) file_moi = luu_thanh(part, "D:/Du_an/ban_sao", part.Leaf + "_v2") lw.WriteLine("Đã lưu thành: " + file_moi) except NXOpen.NXException as ex: lw.WriteLine("Lỗi khi lưu: " + ex.Message) if __name__ == "__main__": main()Giải thích code
SaveComponents.TrueValuelưu luôn các component con đã sửa; dùngFalseValuenếu chỉ muốn lưu part này.SaveAslàm part hiện tại đổi tên; muốn giữ nguyên file gốc hãySaveAstrước khi chỉnh sửa.PartSaveStatuscũng phảiDispose().
Lỗi thường gặp
- SaveAs sang thư mục không tồn tại hoặc không có quyền ghi gây NXException; tạo thư mục trước.
- Trong Teamcenter dùng quy trình lưu riêng (Save in Teamcenter), không dùng SaveAs ra đường dẫn đĩa.
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.