I have a use case that requires saving a list of project views as images to a project rather than exporting them. Saved images are ultimately placed on sheets to show how the project varies with variation in design parameters.
The Revit UI functionality that allows for saving a project view to the project is labeled: “Save to Project as Image…”. Right clicking a view exposes the function as an option available to the user. The images themselves are saved as Family/Type “Rendering/Rendering” in the Revit environment. Please click here for API documentation on the SaveToProjectAsImage method.
Of note, Revit documentation on Rendering an Image (Save the Rendered Image to a File) seems to suggest that internally saved images are compressed jpg files while exported images offer a high quality option. Aside from workflow efficiency it looks like there may be a project file size benefit to saving images internally.
I did manage to follow the method used here by Konrad Sobon to save a single view as an image to a project using the SaveToProjectAsImage method. Hacked Python code is below:
# Copyright(c) 2018, Konrad K Sobon # @arch_laboratory, http://archi-lab.net import clr clr.AddReference("RevitNodes") import Revit clr.AddReference("RevitServices") import RevitServices from RevitServices.Persistence import DocumentManager from RevitServices.Transactions import TransactionManager doc = DocumentManager.Instance.CurrentDBDocument clr.AddReference("RevitAPI") from Autodesk.Revit.DB import * import sys pyt_path = r'C:\Program Files (x86)\IronPython 2.7\Lib' sys.path.append(pyt_path) # The inputs to this node will be stored as a list in the IN variables. dataEnteringNode = IN try: errorReport = None TransactionManager.Instance.EnsureInTransaction(doc) options = ImageExportOptions() options.ViewName = "Image_" + doc.ActiveView.Name options.ExportRange = ExportRange.CurrentView #API seems to prohibit saving list of views to project as images options.ImageResolution = ImageResolution.DPI_150 options.ZoomType = ZoomFitType.Zoom options.Zoom = 100 result = doc.SaveToProjectAsImage(options) #TransactionManager.Instance.TransactionTaskDone() except: # if error occurs anywhere in the process catch it import traceback errorReport = traceback.format_exc() # Assign your output to the OUT variable if None == errorReport: OUT = result else: OUT = errorReport
Is there a way to implement the SaveToProjectAsImage method so that a list of views are saved to the project as images?
Thank you for any guidance you may be able to offer.