NX Lab

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

  1. 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 PrintPDFBuilder Xuất bản vẽ sang PDF bằng PrintPDFBuilder

    Các bước thực hiện

    1. Thu thập sheet. part.DrawingSheets.
    2. Tạo builder. part.PlotManager.CreatePrintPdfbuilder().
    3. Đặt nguồn và tên file. SourceBuilder.SetSheets(sheets), Filename.
    4. Đặt tùy chọn. Colors = BlackOnWhite, Action = Overwrite.
    5. 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.SetSheets nhận danh sách sheet cần xuất; để trống thì mặc định không có gì được xuất.
    • Colors = BlackOnWhite cho bản in đen trắng; AsDisplayed giữ màu như trên màn hình.
    • Action.Overwrite ghi đè file cũ; dùng Append để 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.