我在Rhino里建了3个图纸,用的是Adobe PDF 打印机.
打印所有的图纸时, 系统默认将所有图纸打印到1个PDF里,文件名为当前rhino文件名称.
但是我想要的每个图纸都存为1个单独的PDF文件(文件名为图纸名称).
请问有没有方法可以做到? 谢谢帮助!
我在Rhino里建了3个图纸,用的是Adobe PDF 打印机.
打印所有的图纸时, 系统默认将所有图纸打印到1个PDF里,文件名为当前rhino文件名称.
但是我想要的每个图纸都存为1个单独的PDF文件(文件名为图纸名称).
请问有没有方法可以做到? 谢谢帮助!
Hi,
Rhino 沒有這樣的列印功能,我把它加到 Wish list。
https://mcneel.myjetbrains.com/youtrack/issue/RH-37166
Wish 的實現緩不濟急,未來會不會真的加入 Rhino 也無以預知。目前請使用 PDFsam Basic 來處理,它提供許多 PDF 分割、合併功能,包括將一個 PDF 以頁面為單位分割為數個 PDF。
谢谢kelvin. PDF Split 和 Merge在adobe Acrobat里一样是可以实现的,问题就在文件命名上.
我们在rhino里建的每个Layout都有它独特的意义,他们的命名不一定是有规律的.
例如 Layout_1命名为平面图, Layout_2 命名为剖面图. 客户找我要剖面图的时候,我必须要从这个整合的PDF里把页面2提取出来,然后命名为剖面图. 或者我不在公司的时候,我的同事找不到剖面图的PDF在哪里.
但是非常感谢你把它加到wish单里,希望rhino6可以有.
目前我提议公司换掉AutoCad改用rhino,但是我必须要解决掉很多很基础的问题才有进一步的可能性.
@Jorin,Rhinoscript 做的到這個功能嗎?
不管是 Rhino 的其他 SDK 还是 RhinoScript 中都没有现成能够直接输出 PDF 的 API 和相关函数。自己写脚本或者插件去输出 PDF 并不是不能实现,只是非常有难度。
Adobe PDF 虚拟打印机是安装于 Rhino 之外的系统服务软件,而输出 PDF 的文件名称是由该软件读取当前文档的名称来决定的,Rhino 只是把它当作一个普通的打印机来使用,所以在 Rhino 中是无法定义该软件输出文件名的。
除非是 Rhino 自身拥有输出 PDF 文件的功能和插件,否则很难实现题主所说的功能。不知道 @Jessesn 了解不了解有没有这方面的插件?
@Jorin
Steve 說 Python script 現在有這樣的功能了。
https://mcneel.myjetbrains.com/youtrack/issue/RH-37166
而且,RhinoWIP 的 File > Save 儲存 PDF 已經不需要第三方廠商的 PDF Printer Driver 了。
请问这个Python script有已经写好的脚本可以使用吗?我不会写…
还有这个脚本是只可以在Rhino 6 上使用吗?我们公司目前都还在使用Rhino 5 Sr13.
對,目前的 RhinoWIP 與未來的 Rhino 6 才能使用。
我們的工程師 Steve 說他想寫一個此功能的 Python script。
這裡有程式碼範例,或許 @Jorin 看了就知道怎麼寫了。
Rhino 5看来已经是不可能有办法解决这个问题了,Rhino 6 什么时候能出来还是个未知数。
但是最少看到问题在Rhino 6 上已经被解决了。非常感谢!!!
我刚反应过来我是不是理解错了。您的意思是Rhino WIP V5 SR13 已经可以用Python Script来解决这个打印问了对吗?只是Script还得研究一下怎么写。
不是,我指的 RhinoWIP 是目前開發中的 Rhino 6,Rhino 5 SR13 不行,RhinoWIP 可以從這裡下載,需要填入 Rhino 5 的授權碼。將來 Rhino 6 正式版與目前的 RhinoWIP 差異可能沒有很大。
目前或下一個釋出的 RhinoWIP 的 RhinoPython 有提供這個功能需要的函數,但還要寫一個 Python Script 去呼叫才能實際使用,我們的工程師 Steve 說他有想要寫一個。
谢谢Kelvin,明白了。明天去公司问问IT部门的人可不可以告诉我授权码,然后测试测试Rhino 6。公司里用的Zoo。
不客氣,如果你們公司使用的 Zoo 無法輸入 RhinoWIP 的 RH6B 開頭的授權碼,請下載安裝 Zoo 6.0,原來在 Zoo 裡的授權碼不授影響。
好的,谢谢您,回复的太详细了。
确实看了就知道怎么写了,按照楼主的要求,写了一个小脚本,运行这个脚本的前提是要在 C 盘根目录下先手动创建 pdf_output 文件夹,然后在 Rhino 6 WIP 中执行下列脚本,就可以将每一个图纸输出为单独的 PDF 文件了,文件名是图纸的名称:
import Rhino
import scriptcontext as sc
import System.Drawing
import rhinoscriptsyntax as rs
def createSinglePDF(view):
pdf = Rhino.FileIO.FilePdf.Create()
dpi = 300
size = System.Drawing.Size(8.5*dpi,11*dpi)
settings = Rhino.Display.ViewCaptureSettings(view, size, dpi)
pdf.AddPage(settings)
filename = 'c:/pdf_output/'+view.PageName+'.pdf'
pdf.Write(filename)
for i in sc.doc.Views:
if type(i) is Rhino.Display.RhinoPageView:
createSinglePDF(i)
非常非常感谢Jorin, 已入GH大坑,现在我又好想继续跳入编程深坑啊。
看起来像是 IronPython 出问题了,请问你可以执行其他的 Python 脚本吗?
比如你先执行下面的语句试试:
import rhinoscriptsyntax as rs
print (rs)