Print <in session> and set parameters

Hello Dynamo Friends :slight_smile:

I have a code to create a print setting with all parameters i want to set.

Now i want to print and set the parameters only in session without saving a print setting.

I use the code from @Konrad_K_Sobon, revised by @viktor_kuzev, @ Michael Park and @Alban_de_Chasteigner

I added the following parts:

get in session setting.

printSettings = FilteredElementCollector(doc).OfClass(PrintSetting)
for ps in printSettings:
	if ps.Name == "<in session>":
		printSetting = ps

and setting the orientation:

	# apply print setting
	try:
		printSetup = printManager.PrintSetup
		printSetup.CurrentPrintSetting = printSetting
		printManager.Apply()
		# set orientation
		printManager.PrintSetup.CurrentPrintSetting.PrintParameters.PageOrientation = printManager.PrintSetup.CurrentPrintSetting.PrintParameters.PageOrientation.Landscape
		printManager.Apply()

But it does not work, my PageOrientation setting has no effect.
So how can i make changes to the printsetting before printing?
Happy about any advice! :slight_smile:

Full Code:

#Copyright(c) 2015, Konrad K Sobon
# @arch_laboratory, http://archi-lab.net
# Revised by viktor_kuzev
# Revised by Michael Park
# Revised by Alban de Chasteigner

import clr
# Import DocumentManager and TransactionManager
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument

# Import RevitAPI
clr.AddReference("RevitAPI")
import Autodesk
from Autodesk.Revit.DB import *

import System
import sys
sys.path.append(r"C:\Program Files (x86)\IronPython 2.7\Lib")
import os

filePath = ["C:\\Print\\Test.pdf"]
sheets = IN[0]

printSettings = FilteredElementCollector(doc).OfClass(PrintSetting)
for ps in printSettings:
	if ps.Name == "<in session>":
		printSetting = ps

printSettings = [printSetting]
printerName = "Microsoft Print to PDF"
pRange = System.Enum.Parse(Autodesk.Revit.DB.PrintRange, "Select")
combined = True
runIt = True

if isinstance(filePath, list):
	s_length = len(sheets)
	fp_length = len(filePath)
	if len(sheets) == len(filePath):
		pass
	else:
		filePath = filePath * (s_length / fp_length)
		if len(filePath) == len(sheets):
			pass
		else:
			OUT = "Filepaths and Sheets weren't the same length"
			exit()

elif isinstance(filePath, str):
	filePath = [filePath] * len(sheets)

if isinstance(sheets, list):
	viewSheets = []
	for i in sheets:
		viewSheets.append(UnwrapElement(i))
else:
	viewSheets = UnwrapElement(sheets)

if isinstance(printSettings, list):
	printSetting = []
	for i in printSettings:
		printSetting.append(UnwrapElement(i))
else:
	printSetting = UnwrapElement(printSettings)

TransactionManager.Instance.EnsureInTransaction(doc)
printManager = doc.PrintManager		
printSetup = printManager.PrintSetup
printManager.SelectNewPrintDriver(printerName)
if isinstance(printSettings, list):
	printSetup.CurrentPrintSetting = printSetting[0]
else:
	printSetup.CurrentPrintSetting = printSetting
printManager.Apply()
TransactionManager.Instance.TransactionTaskDone()

def PrintView(doc, sheet, pRange, printerName, combined, filePath, printSetting):
	# create view set
	viewSet = ViewSet()
	viewSet.Insert(sheet)
	# determine print range
	printManager = doc.PrintManager
	printManager.PrintRange = pRange
	printManager.Apply()
	# make new view set current
	viewSheetSetting = printManager.ViewSheetSetting
	viewSheetSetting.CurrentViewSheetSet.Views = viewSet
	# set printer
	printManager.SelectNewPrintDriver(printerName)
	printManager.Apply()

	# set combined and print to file
	if printManager.IsVirtual:
		printManager.CombinedFile = combined
		printManager.Apply()
		printManager.PrintToFile = True
		printManager.Apply()
	else:
		printManager.CombinedFile = combined
		printManager.Apply()
		printManager.PrintToFile = False
		printManager.Apply()
	# set file path
	printManager.PrintToFileName = filePath
	# delete file. will prevent prompt for override existing
	if os.path.exists(filePath):
		os.remove(filePath)
	printManager.Apply()
	# apply print setting
	try:
		printSetup = printManager.PrintSetup
		printSetup.CurrentPrintSetting = printSetting
		printManager.Apply()
		# set orientation
		printManager.PrintSetup.CurrentPrintSetting.PrintParameters.PageOrientation = printManager.PrintSetup.CurrentPrintSetting.PrintParameters.PageOrientation.Landscape
		printManager.Apply()
		
	except:
		pass
	# save settings and submit print
	TransactionManager.Instance.EnsureInTransaction(doc)
	viewSheetSetting.SaveAs("tempSetName")
	printManager.Apply()
	printManager.SubmitPrint()
	viewSheetSetting.Delete()
	TransactionManager.Instance.TransactionTaskDone()
	return True

try:
	viewSets = FilteredElementCollector(doc).OfClass(ViewSheetSet)
	for i in viewSets:
		if i.Name == "tempSetName":
			TransactionManager.Instance.EnsureInTransaction(doc)
			doc.Delete(i.Id)
			TransactionManager.Instance.ForceCloseTransaction()
		else:
			continue

	errorReport = None
	message = "Success"
	if runIt:
		if isinstance(viewSheets, list) and isinstance(printSetting, list):
			for i, j, fp in zip(viewSheets, printSetting, filePath):
				PrintView(doc, i, pRange, printerName, combined, fp, j)
		elif isinstance(viewSheets, list) and not isinstance(printSetting, list):
			for i, fp in zip(viewSheets, filePath):
				PrintView(doc, i, pRange, printerName, combined, fp, printSetting)
		elif not isinstance(viewSheets, list) and not isinstance(printSetting, list):
			PrintView(doc, viewSheets, pRange, printerName, combined, filePath[0], printSetting)
	else:
		message = "Set RunIt to True"
except:
	# if error accurs anywhere in the process catch it
	import traceback
	errorReport = traceback.format_exc()

# Assign your output to the OUT variable
if errorReport is None:
	OUT = message
else:
	OUT = errorReport

edit:
I still could create and delete a tempPrintSetting if i find no other method, just wondering why my method doesn´t work.

1 Like

It works now by creating and deleting print settings.

#Copyright(c) 2015, Konrad K Sobon
# @arch_laboratory, http://archi-lab.net
# Revised by viktor_kuzev
# Revised by Michael Park
# Revised by Alban de Chasteigner

import clr
# Import DocumentManager and TransactionManager
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument

# Import RevitAPI
clr.AddReference("RevitAPI")
import Autodesk
from Autodesk.Revit.DB import *

import System
import sys
sys.path.append(r"C:\Program Files (x86)\IronPython 2.7\Lib")
import os

def CreatePrintSetting():
	for size in printManager.PaperSizes:
		if size.Name == "A4":
			A4 = size
	printManager.PrintSetup.CurrentPrintSetting.PrintParameters.PaperSize = A4
	printManager.PrintSetup.CurrentPrintSetting.PrintParameters.ZoomType = printManager.PrintSetup.CurrentPrintSetting.PrintParameters.ZoomType.Zoom
	printManager.PrintSetup.CurrentPrintSetting.PrintParameters.Zoom = 100
	#printManager.PrintSetup.CurrentPrintSetting.PrintParameters.ZoomType = printManager.PrintSetup.CurrentPrintSetting.PrintParameters.ZoomType.FitToPage
	printManager.PrintSetup.CurrentPrintSetting.PrintParameters.HiddenLineViews = printManager.PrintSetup.CurrentPrintSetting.PrintParameters.HiddenLineViews.VectorProcessing
	#printManager.PrintSetup.CurrentPrintSetting.PrintParameters.HiddenLineViews = printManager.PrintSetup.CurrentPrintSetting.PrintParameters.HiddenLineViews.RasterProcessing
	printManager.PrintSetup.CurrentPrintSetting.PrintParameters.PageOrientation = printManager.PrintSetup.CurrentPrintSetting.PrintParameters.PageOrientation.Landscape
	#printManager.PrintSetup.CurrentPrintSetting.PrintParameters.PageOrientation = printManager.PrintSetup.CurrentPrintSetting.PrintParameters.PageOrientation.Portrait
	printManager.PrintSetup.CurrentPrintSetting.PrintParameters.ViewLinksinBlue = True
	printManager.PrintSetup.CurrentPrintSetting.PrintParameters.HideReforWorkPlanes = True
	printManager.PrintSetup.CurrentPrintSetting.PrintParameters.HideUnreferencedViewTags = True
	printManager.PrintSetup.CurrentPrintSetting.PrintParameters.MaskCoincidentLines = True
	printManager.PrintSetup.CurrentPrintSetting.PrintParameters.HideScopeBoxes = True
	printManager.PrintSetup.CurrentPrintSetting.PrintParameters.HideCropBoundaries = True
	printManager.PrintSetup.CurrentPrintSetting.PrintParameters.ReplaceHalftoneWithThinLines = True
	
	printManager.PrintSetup.CurrentPrintSetting.PrintParameters.ColorDepth = printManager.PrintSetup.CurrentPrintSetting.PrintParameters.ColorDepth.Color
	#printManager.PrintSetup.CurrentPrintSetting.PrintParameters.ColorDepth = printManager.PrintSetup.CurrentPrintSetting.PrintParameters.ColorDepth.GrayScale
	#printManager.PrintSetup.CurrentPrintSetting.PrintParameters.ColorDepth = printManager.PrintSetup.CurrentPrintSetting.PrintParameters.ColorDepth.BlackLine
	
	printManager.PrintSetup.CurrentPrintSetting.PrintParameters.RasterQuality = printManager.PrintSetup.CurrentPrintSetting.PrintParameters.RasterQuality.High
	#printManager.PrintSetup.CurrentPrintSetting.PrintParameters.RasterQuality = printManager.PrintSetup.CurrentPrintSetting.PrintParameters.RasterQuality.Low
	#printManager.PrintSetup.CurrentPrintSetting.PrintParameters.RasterQuality = printManager.PrintSetup.CurrentPrintSetting.PrintParameters.RasterQuality.Medium
	#printManager.PrintSetup.CurrentPrintSetting.PrintParameters.RasterQuality = printManager.PrintSetup.CurrentPrintSetting.PrintParameters.RasterQuality.Presentation
	
	printManager.PrintSetup.CurrentPrintSetting.PrintParameters.PaperPlacement = printManager.PrintSetup.CurrentPrintSetting.PrintParameters.PaperPlacement.Center
	#printManager.PrintSetup.CurrentPrintSetting.PrintParameters.PaperPlacement = printManager.PrintSetup.CurrentPrintSetting.PrintParameters.PaperPlacement.LowerLeft
	#printManager.PrintSetup.CurrentPrintSetting.PrintParameters.MarginType = printManager.PrintSetup.CurrentPrintSetting.PrintParameters.MarginType.NoMargin
	#printManager.PrintSetup.CurrentPrintSetting.PrintParameters.MarginType = printManager.PrintSetup.CurrentPrintSetting.PrintParameters.MarginType.PrinterLimit
	#printManager.PrintSetup.CurrentPrintSetting.PrintParameters.MarginType = printManager.PrintSetup.CurrentPrintSetting.PrintParameters.MarginType.UserDefined
	
	printManager.PrintSetup.SaveAs("tempPrintSetting")
	printManager.Apply()
	
def PrintView(doc, sheet, pRange, printerName, combined, filePath, printSetting):
	# create view set
	viewSet = ViewSet()
	viewSet.Insert(sheet)
	# determine print range
	printManager = doc.PrintManager
	printManager.PrintRange = pRange
	printManager.Apply()
	# make new view set current
	viewSheetSetting = printManager.ViewSheetSetting
	viewSheetSetting.CurrentViewSheetSet.Views = viewSet
	# set printer
	printManager.SelectNewPrintDriver(printerName)
	printManager.Apply()

	# set combined and print to file
	if printManager.IsVirtual:
		printManager.CombinedFile = combined
		printManager.Apply()
		printManager.PrintToFile = True
		printManager.Apply()
	else:
		printManager.CombinedFile = combined
		printManager.Apply()
		printManager.PrintToFile = False
		printManager.Apply()
	# set file path
	printManager.PrintToFileName = filePath
	# delete file. will prevent prompt for override existing
	if os.path.exists(filePath):
		os.remove(filePath)
	printManager.Apply()
	# apply print setting
	try:
		printSetup = printManager.PrintSetup
		printSetup.CurrentPrintSetting = printSetting
		printManager.Apply()
		# set orientation
		printManager.PrintSetup.CurrentPrintSetting.PrintParameters.PageOrientation = printManager.PrintSetup.CurrentPrintSetting.PrintParameters.PageOrientation.Landscape
		printManager.Apply()
		
	except:
		pass
	# save settings and submit print
	viewSheetSetting.SaveAs("tempSetName")
	printManager.Apply()
	printManager.SubmitPrint()
	viewSheetSetting.Delete()
	TransactionManager.Instance.TransactionTaskDone()
	return True

filePath = ["C:\\Print\\Test.pdf"]
sheets = IN[0]

TransactionManager.Instance.EnsureInTransaction(doc)

printManager = doc.PrintManager		
printSetup = printManager.PrintSetup
printerName = "Microsoft Print to PDF"
printManager.SelectNewPrintDriver(printerName)


CreatePrintSetting = CreatePrintSetting()

printSettings = FilteredElementCollector(doc).OfClass(PrintSetting)
for ps in printSettings:
#	if ps.Name == "<in session>":
	if ps.Name == "tempPrintSetting":
		printSetting = ps

printSettings = [printSetting]
pRange = System.Enum.Parse(Autodesk.Revit.DB.PrintRange, "Select")
combined = True
runIt = True

if isinstance(filePath, list):
	s_length = len(sheets)
	fp_length = len(filePath)
	if len(sheets) == len(filePath):
		pass
	else:
		filePath = filePath * (s_length / fp_length)
		if len(filePath) == len(sheets):
			pass
		else:
			OUT = "Filepaths and Sheets weren't the same length"
			exit()

elif isinstance(filePath, str):
	filePath = [filePath] * len(sheets)

if isinstance(sheets, list):
	viewSheets = []
	for i in sheets:
		viewSheets.append(UnwrapElement(i))
else:
	viewSheets = UnwrapElement(sheets)

if isinstance(printSettings, list):
	printSetting = []
	for i in printSettings:
		printSetting.append(UnwrapElement(i))
else:
	printSetting = UnwrapElement(printSettings)

TransactionManager.Instance.EnsureInTransaction(doc)

if isinstance(printSettings, list):
	printSetup.CurrentPrintSetting = printSetting[0]
else:
	printSetup.CurrentPrintSetting = printSetting
printManager.Apply()
TransactionManager.Instance.TransactionTaskDone()

try:
	viewSets = FilteredElementCollector(doc).OfClass(ViewSheetSet)
	for i in viewSets:
		if i.Name == "tempSetName":
			TransactionManager.Instance.EnsureInTransaction(doc)
			doc.Delete(i.Id)
			TransactionManager.Instance.ForceCloseTransaction()
		else:
			continue

	errorReport = None
	message = "Success"
	if runIt:
		if isinstance(viewSheets, list) and isinstance(printSetting, list):
			for i, j, fp in zip(viewSheets, printSetting, filePath):
				PrintView(doc, i, pRange, printerName, combined, fp, j)
		elif isinstance(viewSheets, list) and not isinstance(printSetting, list):
			for i, fp in zip(viewSheets, filePath):
				PrintView(doc, i, pRange, printerName, combined, fp, printSetting)
		elif not isinstance(viewSheets, list) and not isinstance(printSetting, list):
			PrintView(doc, viewSheets, pRange, printerName, combined, filePath[0], printSetting)
	else:
		message = "Set RunIt to True"
except:
	# if error accurs anywhere in the process catch it
	import traceback
	errorReport = traceback.format_exc()
for i in printSetting:
	doc.Delete(i.Id)

# Assign your output to the OUT variable
if errorReport is None:
	OUT = message
else:
	OUT = errorReport
1 Like

Nice work!

This would have come in handy for my PDF graph and my firm’s 60 different paper sizes…
Thank the lor’s of Revit for creating the PDF Export function…

I added some code.

Get PaperSizes for every sheet (from title block name):

PaperSizeStrings = []
PaperSizeElements=[]

for i in sheets:
	sheet = UnwrapElement(i) #the internalelement equivalent
	firstTTBL = FilteredElementCollector(doc,sheet.Id).OfCategory(BuiltInCategory.OST_TitleBlocks).FirstElement()
	for x in ["A0","A1","A2","A3","A4"]:
		if x in firstTTBL.Name:
			size = x
			PaperSizeStrings.append(x)
	
for i in PaperSizeStrings:
	for x in printManager.PaperSizes:
		if i == x.Name:
			PaperSize = x
	PaperSizeElements.append(PaperSize)

And create a printsetting for every sheet:

def CreatePrintSetting():

	outlist = []
	for size, string in zip(PaperSizeElements,PaperSizeStrings):
	
		tempPrintSettingName = "tempPrintSetting_" + string
		PrintParameters = printManager.PrintSetup.CurrentPrintSetting.PrintParameters

also cleaned up the setting parameters a little bit.
Full:

#Copyright(c) 2015, Konrad K Sobon
# @arch_laboratory, http://archi-lab.net
# Revised by viktor_kuzev
# Revised by Michael Park
# Revised by Alban de Chasteigner

import clr
# Import DocumentManager and TransactionManager
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument

# Import RevitAPI
clr.AddReference("RevitAPI")
import Autodesk
from Autodesk.Revit.DB import *

import System
import sys
sys.path.append(r"C:\Program Files (x86)\IronPython 2.7\Lib")
import os

def CreatePrintSetting():

	outlist = []
	for size, string in zip(PaperSizeElements,PaperSizeStrings):
	
		tempPrintSettingName = "tempPrintSetting_" + string
		PrintParameters = printManager.PrintSetup.CurrentPrintSetting.PrintParameters
	
		PrintParameters.PaperSize = size
		PrintParameters.ZoomType = PrintParameters.ZoomType.Zoom
		printManager.PrintSetup.CurrentPrintSetting.PrintParameters.Zoom = 100
		#PrintParameters.ZoomType = PrintParameters.ZoomType.FitToPage
		PrintParameters.HiddenLineViews = PrintParameters.HiddenLineViews.VectorProcessing
		#PrintParameters.HiddenLineViews = PrintParameters.HiddenLineViews.RasterProcessing
		PrintParameters.PageOrientation = PrintParameters.PageOrientation.Landscape
		#PrintParameters.PageOrientation = PrintParameters.PageOrientation.Portrait
		PrintParameters.ViewLinksinBlue = True
		PrintParameters.HideReforWorkPlanes = True
		PrintParameters.HideUnreferencedViewTags = True
		PrintParameters.MaskCoincidentLines = True
		PrintParameters.HideScopeBoxes = True
		PrintParameters.HideCropBoundaries = True
		PrintParameters.ReplaceHalftoneWithThinLines = True
		
		PrintParameters.ColorDepth = PrintParameters.ColorDepth.Color
		#PrintParameters.ColorDepth = PrintParameters.ColorDepth.GrayScale
		#PrintParameters.ColorDepth = PrintParameters.ColorDepth.BlackLine
		
		PrintParameters.RasterQuality = PrintParameters.RasterQuality.High
		#PrintParameters.RasterQuality = PrintParameters.RasterQuality.Low
		#PrintParameters.RasterQuality = PrintParameters.RasterQuality.Medium
		#PrintParameters.RasterQuality = PrintParameters.RasterQuality.Presentation
		
		PrintParameters.PaperPlacement = PrintParameters.PaperPlacement.Center
		#PrintParameters.PaperPlacement = PrintParameters.PaperPlacement.LowerLeft
		#PrintParameters.MarginType = PrintParameters.MarginType.NoMargin
		#PrintParameters.MarginType = PrintParameters.MarginType.PrinterLimit
		#PrintParameters.MarginType = PrintParameters.MarginType.UserDefined
	
		printManager.PrintSetup.SaveAs(tempPrintSettingName)
		printManager.Apply()
		outlist.append(tempPrintSettingName)
	return outlist
	
def PrintView(doc, sheet, pRange, printerName, combined, filePath, printSetting):
	# create view set
	viewSet = ViewSet()
	viewSet.Insert(sheet)
	# determine print range
	printManager = doc.PrintManager
	printManager.PrintRange = pRange
	printManager.Apply()
	# make new view set current
	viewSheetSetting = printManager.ViewSheetSetting
	viewSheetSetting.CurrentViewSheetSet.Views = viewSet
	# set printer
	printManager.SelectNewPrintDriver(printerName)
	printManager.Apply()

	# set combined and print to file
	if printManager.IsVirtual:
		printManager.CombinedFile = combined
		printManager.Apply()
		printManager.PrintToFile = True
		printManager.Apply()
	else:
		printManager.CombinedFile = combined
		printManager.Apply()
		printManager.PrintToFile = False
		printManager.Apply()
	# set file path
	printManager.PrintToFileName = filePath
	# delete file. will prevent prompt for override existing
	if os.path.exists(filePath):
		os.remove(filePath)
	printManager.Apply()
	# apply print setting
	try:
		printSetup = printManager.PrintSetup
		printSetup.CurrentPrintSetting = printSetting
		printManager.Apply()
		# set orientation
		printManager.PrintSetup.CurrentPrintSetting.PrintParameters.PageOrientation = printManager.PrintSetup.CurrentPrintSetting.PrintParameters.PageOrientation.Landscape
		printManager.Apply()
		
	except:
		pass
	# save settings and submit print
	viewSheetSetting.SaveAs("tempSetName")
	printManager.Apply()
	printManager.SubmitPrint()
	viewSheetSetting.Delete()
	TransactionManager.Instance.TransactionTaskDone()
	return True

filePath = ["C:\\Print\\Test.pdf"]
sheets = IN[0]

TransactionManager.Instance.EnsureInTransaction(doc)

printManager = doc.PrintManager		
printSetup = printManager.PrintSetup
printerName = "Microsoft Print to PDF"
printManager.SelectNewPrintDriver(printerName)

PaperSizeStrings = []
PaperSizeElements=[]

for i in sheets:
	sheet = UnwrapElement(i) #the internalelement equivalent
	firstTTBL = FilteredElementCollector(doc,sheet.Id).OfCategory(BuiltInCategory.OST_TitleBlocks).FirstElement()
	for x in ["A0","A1","A2","A3","A4"]:
		if x in firstTTBL.Name:
			size = x
			PaperSizeStrings.append(x)
	
for i in PaperSizeStrings:
	for x in printManager.PaperSizes:
		if i == x.Name:
			PaperSize = x
	PaperSizeElements.append(PaperSize)

CreatePrintSettings = CreatePrintSetting()

printSettings = []

allPrintSettings = FilteredElementCollector(doc).OfClass(PrintSetting)
for cps in CreatePrintSettings:
	for aps in allPrintSettings:
		if aps.Name == cps:
			printSetting = aps
	printSettings.append(printSetting)

pRange = System.Enum.Parse(Autodesk.Revit.DB.PrintRange, "Select")
combined = True
runIt = True

if isinstance(filePath, list):
	s_length = len(sheets)
	fp_length = len(filePath)
	if len(sheets) == len(filePath):
		pass
	else:
		filePath = filePath * (s_length / fp_length)
		if len(filePath) == len(sheets):
			pass
		else:
			OUT = "Filepaths and Sheets weren't the same length"
			exit()

elif isinstance(filePath, str):
	filePath = [filePath] * len(sheets)

if isinstance(sheets, list):
	viewSheets = []
	for i in sheets:
		viewSheets.append(UnwrapElement(i))
else:
	viewSheets = UnwrapElement(sheets)

if isinstance(printSettings, list):
	printSetting = []
	for i in printSettings:
		printSetting.append(UnwrapElement(i))
else:
	printSetting = UnwrapElement(printSettings)

TransactionManager.Instance.EnsureInTransaction(doc)

if isinstance(printSettings, list):
	printSetup.CurrentPrintSetting = printSetting[0]
else:
	printSetup.CurrentPrintSetting = printSetting
printManager.Apply()
TransactionManager.Instance.TransactionTaskDone()

try:
	viewSets = FilteredElementCollector(doc).OfClass(ViewSheetSet)
	for i in viewSets:
		if i.Name == "tempSetName":
			TransactionManager.Instance.EnsureInTransaction(doc)
			doc.Delete(i.Id)
			TransactionManager.Instance.ForceCloseTransaction()
		else:
			continue

	errorReport = None
	message = "Success"
	if runIt:
		if isinstance(viewSheets, list) and isinstance(printSetting, list):
			for i, j, fp in zip(viewSheets, printSetting, filePath):
				PrintView(doc, i, pRange, printerName, combined, fp, j)
		elif isinstance(viewSheets, list) and not isinstance(printSetting, list):
			for i, fp in zip(viewSheets, filePath):
				PrintView(doc, i, pRange, printerName, combined, fp, printSetting)
		elif not isinstance(viewSheets, list) and not isinstance(printSetting, list):
			PrintView(doc, viewSheets, pRange, printerName, combined, filePath[0], printSetting)
	else:
		message = "Set RunIt to True"
except:
	# if error accurs anywhere in the process catch it
	import traceback
	errorReport = traceback.format_exc()
for i in printSetting:
	doc.Delete(i.Id)

# Assign your output to the OUT variable
if errorReport is None:
	OUT = message
else:
	OUT = errorReport
1 Like