def _print_combined_sheets_in_order(self): # todo: Revit does not follow the order of sheets as set by ViewSet print_mgr = doc.PrintManager print_mgr.PrintRange = PrintRange.Select viewsheet_settings = print_mgr.ViewSheetSetting sheet_set = ViewSet() for sheet in self.sheets_lb.ItemsSource: sheet_set.Insert(sheet.revit_sheet) # Collect existing sheet sets cl = FilteredElementCollector(doc) viewsheetsets = cl.OfClass(clr.GetClrType( ViewSheetSet)).WhereElementIsNotElementType().ToElements() all_viewsheetsets = {vss.Name: vss for vss in viewsheetsets} sheetsetname = 'OrderedPrintSet' with Transaction(doc, 'Update Ordered Print Set') as t: t.Start() # Delete existing matching sheet set if sheetsetname in all_viewsheetsets: viewsheet_settings.CurrentViewSheetSet = all_viewsheetsets[ sheetsetname] viewsheet_settings.Delete() viewsheet_settings.CurrentViewSheetSet.Views = sheet_set viewsheet_settings.SaveAs(sheetsetname) t.Commit() print_mgr.PrintToFile = True print_mgr.CombinedFile = True print_mgr.PrintToFileName = op.join(r'C:', 'Ordered Sheet Set.pdf') print_mgr.SubmitPrint()
def createsheetset(self, sender, args): self.my_window.Close() # get selected revision srindex = self.my_listView_revisionList.SelectedIndex if srindex >= 0: sr = doc.GetElement(ElementId(self.revs[srindex])) else: return # get printed printmanager printmanager = doc.PrintManager printmanager.PrintRange = PrintRange.Select viewsheetsetting = printmanager.ViewSheetSetting # collect data sheetsnotsorted = FilteredElementCollector(doc).OfCategory( BuiltInCategory.OST_Sheets).WhereElementIsNotElementType( ).ToElements() sheets = sorted(sheetsnotsorted, key=lambda x: x.SheetNumber) viewsheetsets = FilteredElementCollector(doc).OfClass( clr.GetClrType( ViewSheetSet)).WhereElementIsNotElementType().ToElements() allviewsheetsets = {vss.Name: vss for vss in viewsheetsets} sheetsetname = 'Rev {0} - {1}'.format(sr.RevisionNumber, sr.Description) with Transaction(doc, 'Create Revision Sheet Set') as t: t.Start() if sheetsetname in allviewsheetsets.keys(): viewsheetsetting.CurrentViewSheetSet = allviewsheetsets[ sheetsetname] viewsheetsetting.Delete() # find revised sheets myviewset = ViewSet() for s in sheets: revs = s.GetAllRevisionIds() revids = [x.IntegerValue for x in revs] if sr.Id.IntegerValue in revids: myviewset.Insert(s) # create new sheet set viewsheetsetting.CurrentViewSheetSet.Views = myviewset viewsheetsetting.SaveAs(sheetsetname) t.Commit()
sheetPrint.append(sheetId) print(sheet.SheetNumber) print(len(sheetPrint)) def divide_chunks(l, n): # looping till length l for i in range(0, len(l), n): yield l[i:i + n] #chunks = list(divide_chunks(sheetPrint, 200)) #count = 1 t = Transaction(doc, 'Create split lists') t.Start() sheetSet = ViewSet() for s in sheetPrint: #a = 0 #for c in chunk: sheetSet.Insert(doc.GetElement(s)) #b = doc.GetElement(s) #t = b.ViewType #r = str(b.ViewType) #n = b.Name #a += 1 #print(r + "," + n + "," + str(s)) print(sheetSet.Size.ToString()) #print(a) # Transaction Start printManager = doc.PrintManager
from Autodesk.Revit.DB import Transaction, FilteredElementCollector, PrintRange, View, ViewSet, ViewSheetSet from Autodesk.Revit.UI import TaskDialog uidoc = __revit__.ActiveUIDocument doc = __revit__.ActiveUIDocument.Document sheetsetname = 'ViewPrintSet' # Get printmanager / viewsheetsetting printmanager = doc.PrintManager printmanager.PrintRange = PrintRange.Select viewsheetsetting = printmanager.ViewSheetSetting # Collect selected views myviewset = ViewSet() for elId in uidoc.Selection.GetElementIds(): el = doc.GetElement(elId) if isinstance(el, View): myviewset.Insert(el) if myviewset.IsEmpty: TaskDialog.Show('pyRevit', 'At least one view must be selected.') else: # Collect existing sheet sets cl = FilteredElementCollector(doc) viewsheetsets = cl.OfClass(clr.GetClrType(ViewSheetSet)).WhereElementIsNotElementType().ToElements() allviewsheetsets = {vss.Name: vss for vss in viewsheetsets} with Transaction(doc, 'Created Print Set') as t: t.Start()
multi_file=True, unc_paths=False) destinationFolder = forms.pick_folder() # open File and export for f in collectorFiles: currentDoc = FileUtilities.OpenFileCloseWorksets(f, application, False) # Unload Links revitLinkType = FilteredElementCollector(doc).OfClass( RevitLinkType).ToElements() for r in revitLinkType: try: r.Unload(None) except: pass saveOp = SaveAsOptions() workOp = WorksharingSaveAsOptions() workOp.SaveAsCentral = True saveOp.SetWorksharingOptions(workOp) title = currentDoc.Title currentDoc.SaveAs(destinationFolder + '\\' + title, saveOp) currentDoc.Close(False) # Open again currentDoc2 = FileUtilities.OpenFile(destinationFolder + '\\' + title, application, False) view = FileUtilities.GetViewByName(currentDoc2, "FBX Export") set = ViewSet() set.Insert(view) FileUtilities.ExportFBX(currentDoc2, set, destinationFolder) currentDoc2.Close(False)