public static Dictionary <string, object> GetViewportsAndViews(global::Revit.Elements.Views.Sheet sheet) { Autodesk.Revit.DB.ViewSheet viewSheet = (Autodesk.Revit.DB.ViewSheet)sheet.InternalElement; Autodesk.Revit.DB.Document doc = viewSheet.Document; //obtains the viewports from the given sheet var viewportIds = viewSheet.GetAllViewports(); List <global::Revit.Elements.Element> viewports = new List <global::Revit.Elements.Element>(); //attempt to add views to output try { viewports.AddRange(viewportIds.Select(id => doc.GetElement(id).ToDSType(true))); } catch (Exception) { //suppress } //obtains the views from the given sheet List <object> views = new List <object>(); //attempt to add views to output try { views.AddRange(viewports.Select(v => doc.GetElement(((Autodesk.Revit.DB.Viewport)v.InternalElement).ViewId).ToDSType(true))); } catch (Exception) { //suppress } //obtains the schedules from the sheet var scheduleCollector = new FilteredElementCollector(doc, viewSheet.Id).OfCategory(BuiltInCategory.OST_ScheduleGraphics) .ToElements(); List <object> schedules = new List <object>(); //attempt to add schedules to output try { schedules.AddRange(scheduleCollector.Select(s => s.ToDSType(true))); } catch (Exception) { //suppress } //returns the outputs var outInfo = new Dictionary <string, object> { { "viewports", viewports }, { "views", views }, { "schedules", schedules } }; return(outInfo); }
private bool updatePositionsInit(Autodesk.Revit.DB.ViewSheet curViewSheet) { Autodesk.Revit.DB.XYZ norXYZ = null; Autodesk.Revit.DB.ElementId deltaViewportId = null; if (curViewSheet != null) { ICollection <ElementId> curViewportsIdsCollection = curViewSheet.GetAllViewports(); foreach (ElementId curViewportId in curViewportsIdsCollection) { if (this.selViewportsIdsAndPositions.ContainsKey(curViewportId)) { Autodesk.Revit.DB.Viewport curViewport = doc.GetElement(curViewportId) as Autodesk.Revit.DB.Viewport; if (curViewport != null) { norXYZ = curViewport.GetBoxCenter(); break; } } } } List <ElementId> viewportIds = new List <ElementId>(this.selViewportsIdsAndPositions.Keys); PageAlignmentToolRequestHandler handler = new PageAlignmentToolRequestHandler(norXYZ, deltaViewportId, viewportIds); ExternalEvent exEvent = ExternalEvent.Create(handler); exEvent.Raise(); return(true); }
/// <summary> /// Renumbers the views on the sheet based on the view grid. /// </summary> /// <param name="sheet">A dynamo Sheet element</param> /// <param name="gridX">Size of the layout grid in the X direction</param> /// <param name="gridY">Size of the layout grid in the Y direction</param> /// <param name="originX">Location of the layout grid origin on the X axis</param> /// <param name="originY">Location of the layout grid origin on the Y axis</param> /// <returns name="Viewports">Revit viewport objects on the sheet.</returns> public static List <revitViewport> RenumberOnSheetByCoordinates(dynaSheet sheet, double gridX, double gridY, double originX, double originY) { string transactionName = "Renumber views on sheet"; // Initialize variables revitSheet rSheet = (revitSheet)sheet.InternalElement; revitDoc document = rSheet.Document; List <revitElemId> rViewports = (List <revitElemId>)rSheet.GetAllViewports(); List <revitViewport> viewports; // If the document is modifieable, // then a transaction is already open // and function uses the Dynamo Transaction Manager. // Else, open a new transaction. if (document.IsModifiable) { TransactionManager.Instance.EnsureInTransaction(document); viewports = View._tempRenumberViewports(rViewports, document); viewports = View._renumberViewports(viewports, gridX, gridY, originX, originY); TransactionManager.Instance.TransactionTaskDone(); } else { using (Autodesk.Revit.DB.Transaction trans = new Autodesk.Revit.DB.Transaction(document)) { trans.Start(transactionName); viewports = View._tempRenumberViewports(rViewports, document); viewports = View._renumberViewports(viewports, gridX, gridY, originX, originY); trans.Commit(); } } return(viewports); }
internal static List <revitViewport> _renumberViewsOnSheet(FamilyType familyType, string xGridName, string yGridName, revitSheet rSheet, revitDoc document) { string transactionName = "Renumber views on sheet"; // Initialize variables revitFamilySymbol rFamilySymbol = (revitFamilySymbol)familyType.InternalElement; // Get all viewport ID's on the sheet. List <revitElemId> viewportIds = (List <revitElemId>)rSheet.GetAllViewports(); List <revitViewport> viewports = null; // Get the family Instances in view revitElemId symbolId = familyType.InternalElement.Id; revitCollector collector = new revitCollector(document, rSheet.Id); revitElementFilter filterInstance = new revitDB.FamilyInstanceFilter(document, symbolId); collector.OfClass(typeof(revitDB.FamilyInstance)).WherePasses(filterInstance); revitDB.FamilyInstance originFamily = (revitDB.FamilyInstance)collector.FirstElement(); // If family instance is found in the view // Then renumber views. if (originFamily != null) { revitDB.LocationPoint location = (revitDB.LocationPoint)originFamily.Location; revitXYZ originPoint = location.Point; double gridX = rFamilySymbol.LookupParameter(xGridName).AsDouble(); double gridY = rFamilySymbol.LookupParameter(yGridName).AsDouble(); // If the document is modifieable, // then a transaction is already open // and function uses the Dynamo Transaction Manager. // Else, open a new transaction. if (document.IsModifiable) { TransactionManager.Instance.EnsureInTransaction(document); viewports = View._tempRenumberViewports(viewportIds, document); viewports = View._renumberViewports(viewports, gridX, gridY, originPoint.X, originPoint.Y); TransactionManager.Instance.TransactionTaskDone(); } else { using (Autodesk.Revit.DB.Transaction trans = new Autodesk.Revit.DB.Transaction(document)) { trans.Start(transactionName); viewports = View._tempRenumberViewports(viewportIds, document); viewports = View._renumberViewports(viewports, gridX, gridY, originPoint.X, originPoint.Y); trans.Commit(); } } } return(viewports); }
public static Dictionary <string, dynamic> ViewportLocations(Revit.Elements.Views.Sheet sheet) { Document doc = DocumentManager.Instance.CurrentDBDocument; Autodesk.Revit.DB.ViewSheet iSheet = sheet.InternalElement as Autodesk.Revit.DB.ViewSheet; var allViewports = iSheet.GetAllViewports().Select(x => doc.GetElement(x) as Viewport); return(new Dictionary <string, dynamic>() { { "viewportNames", allViewports.Select(x => (doc.GetElement(x.ViewId) as Autodesk.Revit.DB.View).ViewName) }, { "viewportLocations", ( allViewports.Select( x => x.GetBoxCenter()).Select( x => Autodesk.DesignScript.Geometry.Point.ByCoordinates(x.X, x.Y, x.Z))) } }); }
private bool updatePositions(Autodesk.Revit.DB.ViewSheet curViewSheet) { Autodesk.Revit.DB.XYZ norXYZ = null; Autodesk.Revit.DB.XYZ deltaXYZ = null; Autodesk.Revit.DB.ElementId deltaViewportId = null; if (curViewSheet != null) { ICollection <ElementId> curViewportsIdsCollection = curViewSheet.GetAllViewports(); foreach (ElementId curViewportId in curViewportsIdsCollection) { if (this.selViewportsIdsAndPositions.ContainsKey(curViewportId)) { Autodesk.Revit.DB.Viewport curViewport = doc.GetElement(curViewportId) as Autodesk.Revit.DB.Viewport; if (curViewport != null) { norXYZ = curViewport.GetBoxCenter(); Autodesk.Revit.DB.XYZ preXYZ = this.selViewportsIdsAndPositions[curViewportId]; Autodesk.Revit.DB.XYZ curXYZ = curViewport.GetBoxCenter(); if ((curXYZ.X != preXYZ.X) || (curXYZ.Y != preXYZ.Y) || (curXYZ.Z != preXYZ.Z)) { deltaViewportId = curViewportId; deltaXYZ = new XYZ((curXYZ.X - preXYZ.X), (curXYZ.Y - preXYZ.Y), (curXYZ.Z - preXYZ.Z)); break; } } } } } if ((deltaXYZ != null) && (deltaViewportId != null)) { List <ElementId> viewportIds = new List <ElementId>(this.selViewportsIdsAndPositions.Keys); PageAlignmentToolRequestHandler handler = new PageAlignmentToolRequestHandler(norXYZ, deltaViewportId, viewportIds); ExternalEvent exEvent = ExternalEvent.Create(handler); exEvent.Raise(); return(true); } return(false); }
public static Dictionary <string, object> GetViewportsAndViews(global::Revit.Elements.Views.Sheet sheet, [DefaultArgument("Rhythm.Revit.Elements.Sheet.CurrentDocument()")] Autodesk.Revit.DB.Document doc) { Autodesk.Revit.DB.ViewSheet viewSheet = (Autodesk.Revit.DB.ViewSheet)sheet.InternalElement; //obtains the viewports from the given sheet var viewportIds = viewSheet.GetAllViewports(); List <global::Revit.Elements.Element> viewports = new List <global::Revit.Elements.Element>(viewportIds.Select(id => doc.GetElement(id).ToDSType(true)).ToArray()); //obtains the views from the given sheet List <global::Revit.Elements.Element> views = new List <global::Revit.Elements.Element>(viewports.Select(v => doc.GetElement(((Autodesk.Revit.DB.Viewport)v.InternalElement).ViewId).ToDSType(true)).ToArray()); //obtains the schedules from the sheet FilteredElementCollector scheduleCollector = new FilteredElementCollector(doc, viewSheet.Id).OfCategory(BuiltInCategory.OST_ScheduleGraphics); var schedulesInternal = scheduleCollector.ToElements(); List <global::Revit.Elements.Element> schedules = new List <global::Revit.Elements.Element>(schedulesInternal.Select(s => s.ToDSType(true)).ToArray()); //returns the outputs7 var outInfo = new Dictionary <string, object> { { "viewports", viewports }, { "views", views }, { "schedules", schedules } }; return(outInfo); }