
Xuất bản vẽ sang PDF bằng PrintPDFBuilder: chọn sheet, màu đen trắng, ghi đè hay thêm
#Python#PDF#Xuất file1 lượt xem
Quản trị viênQuản trị· 0 điểm
Câu hỏi ·
Xuất PDF là việc người thiết kế làm hàng ngày. Script cho phép xuất mọi sheet vào một file PDF, đen trắng, đúng tên theo quy ước công ty.
Xuất bản vẽ sang PDF bằng PrintPDFBuilderCác bước thực hiện
- Thu thập sheet. part.DrawingSheets.
- Tạo builder. part.PlotManager.CreatePrintPdfbuilder().
- Đặt nguồn và tên file. SourceBuilder.SetSheets(sheets), Filename.
- Đặt tùy chọn. Colors = BlackOnWhite, Action = Overwrite.
- Commit và hủy. Commit() rồi Destroy().
Code tham khảo (Python)
import os import NXOpen def xuat_pdf(part, duong_dan, sheets=None): sheets = list(sheets) if sheets else list(part.DrawingSheets) if not sheets: raise RuntimeError("Part %s không có sheet bản vẽ" % part.Leaf) os.makedirs(os.path.dirname(duong_dan), exist_ok=True) b = part.PlotManager.CreatePrintPdfbuilder() try: b.SourceBuilder.SetSheets(sheets) b.Filename = duong_dan b.Colors = NXOpen.PrintPDFBuilder.Color.BlackOnWhite b.Size = NXOpen.PrintPDFBuilder.SizeOption.ScaleFactor b.Scale = 1.0 b.Action = NXOpen.PrintPDFBuilder.ActionOption.Overwrite b.Commit() finally: b.Destroy() return len(sheets) def main(): session = NXOpen.Session.GetSession() lw = session.ListingWindow lw.Open() part = session.Parts.Work if part is None: return duong_dan = "D:/NXLab_xuat/%s.pdf" % part.Leaf try: n = xuat_pdf(part, duong_dan) lw.WriteLine("Đã xuất %d sheet -> %s" % (n, duong_dan)) except Exception as ex: lw.WriteLine("Lỗi xuất PDF: %s" % ex) if __name__ == "__main__": main()Giải thích code
SourceBuilder.SetSheetsnhận danh sách sheet cần xuất; để trống thì mặc định không có gì được xuất.Colors = BlackOnWhitecho bản in đen trắng;AsDisplayedgiữ màu như trên màn hình.Action.Overwriteghi đè file cũ; dùngAppendđể thêm sheet vào file hiện có.
Lỗi thường gặp
- File PDF đang mở bằng trình đọc sẽ làm ghi đè thất bại; đóng file hoặc đổi tên xuất.
- Nên cập nhật view trước khi xuất để PDF không chứa hình lỗi thời.
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.