目前 Rhino 的批量打印是将所有的图纸配置同时按照相同的纸张规格打印在一个pdf中,跳过了每个图纸配置单独的设置(例如纸张大小等),就会出现你所描述的问题。
这里有个解决方案是将每个图纸配置分别打印成一个独立的pdf,需要用到 RhinoPython 脚本,可以参考。
具体方法如下:
-
输入指令 EditPythonScript 启动 Rhino Python 编辑器,或者通过菜单呼出。
-
将下方的代码复制并粘贴到 Rhino Python 编辑器窗口,点击运行
按钮,然后选择一个输出目标文件夹,稍作等待,让脚本运行完成。
import Rhino import scriptcontext as sc from scriptcontext import doc import System.Drawing import rhinoscriptsyntax as rs FolderPath = rs.BrowseForFolder() def createSinglePDF(view): pdf = Rhino.FileIO.FilePdf.Create() dpi = 300 inch = 25.4 width = (view.PageWidth)/inch height = (view.PageHeight)/inch size = System.Drawing.Size(width*dpi,height*dpi) settings = Rhino.Display.ViewCaptureSettings(view, size, dpi) pdf.AddPage(settings) filename = FolderPath + '\\' + view.PageName + '.pdf' pdf.Write(filename) for i in sc.doc.Views: if type(i) is Rhino.Display.RhinoPageView: createSinglePDF(i)
-
检查打印结果是否正确。
如果运行没有问题,你可以在 Rhino 中自定义一个按钮,把下面的代码贴进去,这样使用起来更加方便。
NoEcho -_RunPythonScript ( import Rhino import scriptcontext as sc from scriptcontext import doc import System.Drawing import rhinoscriptsyntax as rs FolderPath = rs.BrowseForFolder() def createSinglePDF(view): pdf = Rhino.FileIO.FilePdf.Create() dpi = 300 inch = 25.4 width = (view.PageWidth)/inch height = (view.PageHeight)/inch size = System.Drawing.Size(width*dpi,height*dpi) settings = Rhino.Display.ViewCaptureSettings(view, size, dpi) pdf.AddPage(settings) filename = FolderPath + '\\' + view.PageName + '.pdf' pdf.Write(filename) for i in sc.doc.Views: if type(i) is Rhino.Display.RhinoPageView: createSinglePDF(i) )
PS:这个解决方案参考了下面的这个帖子,有兴趣也可以看看
https://discourse.mcneel.com/t/print-layouts-to-pdfs-one-layout-to-one-pdf/39744/21?u=ansen.a