0 0 0
Revit视图批量导出为高清图片
发布时间:2021/7/28 20:38:28 作者:牛侃BIM 浏览量:1297次
内容摘要:

Dynamo---Revit模型批量高清截图,不了解一下?

你好,这里是牛侃BIM,越来越多的朋友们走上了Dynamo应用的路,它给我们的工作效率带来了极大的提升,举个例子,我们往往在项目中会把三维视图做好并命名,完后还会截图给业主或者领导看,我们手动取截图效率较低,今天我们介绍一下如何快速批量截图,并将截图放在指定的文件夹中,而且图片的名称也会自动命名。



在Revit API中有一个 method 为Document.ExportImage(),可以将项目文件中的单个或者多个视图导出为图片格式(类似于我们直接截图),本文中我们将调用此API实现批量截图。(如果看到这里,已经不愿往下看,那咱们评论区见,源文件直接拿来用,建议Dynamo2.0以上版本我们先看下导出的图片质量如何:


第一步:

首先我们获取到所有视图,并筛选出我们需要导出的视图(我这里选择了3D视图,也就是ThreeD,大家可以自行选择,在revit API文档中查找到的viewtype如下图2:)


我们看到在本项目中获取到了我想要的23个三维视图:

代码如下:

import clrclr.AddReference("RevitServices")import RevitServicesfrom RevitServices.Persistence import DocumentManagerdoc = DocumentManager.Instance.CurrentDBDocumentclr.AddReference("RevitAPI")import Autodeskfrom Autodesk.Revit.DB import *views=[]collector = FilteredElementCollector(doc).OfClass(View)for view in collector:  if view.ViewType == ViewType.ThreeD:  views.append(view)OUT =views


之后使用自带的节点:listclean去除空值,如果上一步得到的视图中没有空值此步骤可以省略:





第二步:

我们调用最开始提到的方法,设置图片的格式、位置、大小将视图导出到指定的文件夹中。

当我们点击运行后,首先后弹出以下对话框,我们选择要将图片保存到的文件夹,这时候可以给图片一个统一的前缀名,完后点弹窗的保存键即可默默等待:


代码如下:

import clrclr.AddReference('ProtoGeometry')from Autodesk.DesignScript.Geometry import *clr.AddReference('System.Windows.Forms')from System.Windows.Forms import *clr.AddReference('RevitNodes')import Revitclr.ImportExtensions(Revit.Elements)clr.AddReference('RevitAPI')import Autodeskfrom Autodesk.Revit.DB import *clr.AddReference('RevitAPIUI')import Autodeskfrom Autodesk.Revit.UI import *clr.AddReference("RevitServices")import RevitServicesfrom RevitServices.Persistence import DocumentManagerfrom RevitServices.Transactions import TransactionManagerdoc = DocumentManager.Instance.CurrentDBDocumentuidoc=DocumentManager.Instance.CurrentUIApplication.ActiveUIDocumentuiapp=DocumentManager.Instance.CurrentUIApplicationapp = uiapp.Applicationviews=UnwrapElement(IN[0])window = SaveFileDialog()#定义弹出窗口window.Title = '视图导出 PNG'window.Filter = 'PNG files (*.PNG)|*.PNG'def CreateViewSet(views): viewSet = [] for i in views: viewSet.Add(i.Id) return viewSetif window.ShowDialog() == DialogResult.OK: #调用的方法需要传递一个ImageExportOptions类型的参数,在参数中你可以自定义需要导出的视图、图片地址、图片大小等(本行注释来源与网络) options = ImageExportOptions() ##多视图为setofviews,当前视图为.CurrentView options.ExportRange = ExportRange.SetOfViews options.SetViewsAndSheets(CreateViewSet(views)) #定义图片的保存位置 options.FilePath = window.FileName options.HLRandWFViewsFileType = ImageFileType.PNG  options.ImageResolution = ImageResolution.DPI_600 options.ZoomType = ZoomFitType.Zoom options.ShadowViewsFileType = ImageFileType.PNG doc.ExportImage(options) 


文章完……


长按二维码添加牛侃BIM官方微信,即可入群,和小伙伴们一起交流学习哦。



  • 用户评论