关于Rhino打印时候纸张方向的问题

在rhino中添加多个图纸配置(包含不同纸张尺寸A3 A4 不同纸张方向 横向 纵向)
然后在打印多个图纸配置的时候 发现纸张规格和方向不能按照图纸配置中设置的纸张尺寸和方向自动调整

比如 一开始打印设置时 A3 横向 那么所有的图纸配置都只能按照A3 横向来打 不是A3横向的 要么打漏 要么打不满

请问是否有方法能让打印的纸张规格和方向按照图纸配置中的规格和方向来打印

当数量少的时候 可以手动调一下 如果数量多了 一张张调就很烦躁了
这个问题不光是选打印机时候会有 打印成 adobe pdf 也是一样的存在

当然 费点事 强行把图纸配置按照A3 横 ;A3 纵; A4横 ;A4纵分开排列 然后在 数个图面 的选项里输入页码 也不是不可以 但这样做一方面会打乱原有的图号顺序 另外总觉的不能自动适应好像有点奇怪

求指点

目前 Rhino 的批量打印是将所有的图纸配置同时按照相同的纸张规格打印在一个pdf中,跳过了每个图纸配置单独的设置(例如纸张大小等),就会出现你所描述的问题。

这里有个解决方案是将每个图纸配置分别打印成一个独立的pdf,需要用到 RhinoPython 脚本,可以参考。

具体方法如下:

  1. 输入指令 EditPythonScript 启动 Rhino Python 编辑器,或者通过菜单呼出。

    菜单

  2. 将下方的代码复制并粘贴到 Rhino Python 编辑器窗口,点击运行 :arrow_forward: 按钮,然后选择一个输出目标文件夹,稍作等待,让脚本运行完成。

    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)
    

  3. 检查打印结果是否正确。

    如果运行没有问题,你可以在 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:这个解决方案参考了下面的这个帖子,有兴趣也可以看看

2 个赞

原来如此 非常感谢

我在脚本编辑器里运行了这段代码

但是总是提示错误
image

想请教下如何解决

这里用的是RhinoPython,你用错编辑器了,我已经重新编辑了上面的帖子,其中代码也做了一点改动,可以允许用户选择导出路径,你可以参考。

非常好使 收获很大 谢谢 :grinning: