コード例 #1
0
        /// <summary>
        /// This node will place the given view on the given sheet, if possible. For floor plan views: They cannot be on any other sheets. Now supports schedules!
        /// </summary>
        /// <param name="sheet">The sheet to place views on.</param>
        /// <param name="view">The view to place.</param>
        /// <param name="location">The location of the view.</param>
        /// <returns name="Result">The result</returns>
        /// <search>
        /// viewport, addview,rhythm
        /// </search>
        public static global::Revit.Elements.Element Create(global::Revit.Elements.Views.Sheet sheet, global::Revit.Elements.Element view, Autodesk.DesignScript.Geometry.Point location)
        {
            Autodesk.Revit.DB.Document doc = DocumentManager.Instance.CurrentDBDocument;
            //obtain the element id from the sheet
            ElementId sheetId = new ElementId(sheet.Id);

            global::Revit.Elements.Element result = null;

            if (view.InternalElement.ToString() == "Autodesk.Revit.DB.ViewSchedule")
            {
                //obtain the element id from the view
                ElementId viewId = new ElementId(view.Id);
                //chane the dynamo point to a revit point
                var revitPoint = location.ToRevitType(true);
                //start the transaction to place views
                TransactionManager.Instance.EnsureInTransaction(doc);
                result = Autodesk.Revit.DB.ScheduleSheetInstance.Create(doc, sheetId, viewId, revitPoint).ToDSType(true);
                TransactionManager.Instance.TransactionTaskDone();
            }
            else
            {
                //obtain the element id from the view
                ElementId viewId = new ElementId(view.Id);
                //chane the dynamo point to a revit point
                var revitPoint = location.ToRevitType(true);
                //start the transaction to place views
                TransactionManager.Instance.EnsureInTransaction(doc);
                result = Autodesk.Revit.DB.Viewport.Create(doc, sheetId, viewId, revitPoint).ToDSType(true);
                TransactionManager.Instance.TransactionTaskDone();
            }

            return(result);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        /// <summary>
        /// Revisions on Sheet.
        /// </summary>
        /// <param name="sheet">View Sheet.</param>
        /// <returns name="Element">Revisions on Sheet.</returns>
        public static List <Element> Revisions(global::Revit.Elements.Views.Sheet sheet)
        {
            var vs     = sheet.InternalElement as Autodesk.Revit.DB.ViewSheet;
            var revIds = vs?.GetAllRevisionIds();

            if (revIds != null && revIds.Count > 0)
            {
                var doc = DocumentManager.Instance.CurrentDBDocument;
                return(revIds.Select(x => doc.GetElement(x).ToDSType(true)).ToList());
            }
            return(Enumerable.Empty <Element>().ToList());
        }
コード例 #4
0
        /// <summary>
        /// This node will grab the titleblock from the given sheet.
        /// </summary>
        /// <param name="viewSheet">The sheet to get titleblock from.</param>
        /// <returns name="titleblock">The sheet's titleblock.</returns>
        /// <search>
        /// sheet, sheets, titleblock
        /// </search>
        public static List <global::Revit.Elements.Element> Titleblock(global::Revit.Elements.Views.Sheet viewSheet)
        {
            var viewId = viewSheet.InternalElement.Id;

            Autodesk.Revit.DB.Document doc      = DocumentManager.Instance.CurrentDBDocument;
            FilteredElementCollector   elements = new FilteredElementCollector(doc, viewId).OfCategory(BuiltInCategory.OST_TitleBlocks);
            //grabs the elements from the collection
            var elementCollection = elements.ToElements();
            //generates a list to convert to a usable type in Dynamo
            List <global::Revit.Elements.Element> ttblList = new List <global::Revit.Elements.Element>(elementCollection.Select(e => e.ToDSType(true)).ToArray());

            return(ttblList);
        }
コード例 #5
0
        public static object Create(global::Revit.Elements.Views.Sheet sheet, global::Revit.Elements.Element view, Autodesk.DesignScript.Geometry.Point location)
        {
            Autodesk.Revit.DB.Document doc = DocumentManager.Instance.CurrentDBDocument;
            //obtain the element id from the sheet
            ElementId sheetId = new ElementId(sheet.Id);

            Autodesk.Revit.DB.Element result = null;
            //change the dynamo point to a revit point
            var revitPoint = location.ToRevitType(true);
            //obtain the element id from the view
            ElementId viewId = new ElementId(view.Id);



            try
            {
                //start the transaction to place views
                TransactionManager.Instance.EnsureInTransaction(doc);
                if (view.InternalElement.ToString() == "Autodesk.Revit.DB.ViewSchedule")
                {
                    result = Autodesk.Revit.DB.ScheduleSheetInstance.Create(doc, sheetId, viewId, revitPoint);
                }
                else
                {
                    result = Autodesk.Revit.DB.Viewport.Create(doc, sheetId, viewId, revitPoint);
                }

                TransactionManager.Instance.TransactionTaskDone();

                return(result.ToDSType(true));
            }
            catch (Exception e)
            {
                if (!Autodesk.Revit.DB.Viewport.CanAddViewToSheet(doc, sheetId, viewId))
                {
                    return("Error: View " + view.Id + " cannot be added to the sheet because it is already on another sheet.");
                }
                if (result == null)
                {
                    return("Error: View " + view.Id + " cannot be added to the sheet because it is empty.");
                }

                return("Error: View " + view.Id + e.Message);
            }
        }
コード例 #6
0
        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);
        }