Exemplo n.º 1
0
        /***************************************************/
        /****               Public Methods              ****/
        /***************************************************/

        public static oM.Adapters.Revit.Elements.Viewport ViewportFromRevit(this Viewport revitViewPort, RevitSettings settings = null, Dictionary <string, List <IBHoMObject> > refObjects = null)
        {
            settings = settings.DefaultIfNull();

            oM.Adapters.Revit.Elements.Viewport viewPort = refObjects.GetValue <oM.Adapters.Revit.Elements.Viewport>(revitViewPort.Id.IntegerValue);
            if (viewPort != null)
            {
                return(viewPort);
            }

            oM.Geometry.Point location    = revitViewPort.GetBoxCenter().PointFromRevit();
            string            viewName    = revitViewPort.get_Parameter(BuiltInParameter.VIEW_NAME).AsString();
            string            sheetNumber = revitViewPort.get_Parameter(BuiltInParameter.VIEWPORT_SHEET_NUMBER).AsString();

            viewPort = BH.Engine.Adapters.Revit.Create.Viewport(sheetNumber, viewName, location);

            ElementType elementType = revitViewPort.Document.GetElement(revitViewPort.GetTypeId()) as ElementType;

            if (elementType != null)
            {
                viewPort.InstanceProperties = elementType.InstancePropertiesFromRevit(settings, refObjects);
            }

            viewPort.Name = revitViewPort.Name;

            //Set identifiers, parameters & custom data
            viewPort.SetIdentifiers(revitViewPort);
            viewPort.CopyParameters(revitViewPort, settings.ParameterSettings);
            viewPort.SetProperties(revitViewPort, settings.ParameterSettings);

            refObjects.AddOrReplace(revitViewPort.Id, viewPort);
            return(viewPort);
        }
Exemplo n.º 2
0
        /***************************************************/
        /****               Public Methods              ****/
        /***************************************************/

        public static Viewport ToRevitViewport(this oM.Adapters.Revit.Elements.Viewport viewport, Document document, RevitSettings settings = null, Dictionary <Guid, List <int> > refObjects = null)
        {
            if (viewport == null || viewport.Location == null)
            {
                return(null);
            }

            Viewport revitViewPort = refObjects.GetValue <Viewport>(document, viewport.BHoM_Guid);

            if (revitViewPort != null)
            {
                return(revitViewPort);
            }

            settings = settings.DefaultIfNull();

            if (string.IsNullOrEmpty(viewport.ViewName))
            {
                return(null);
            }

            if (string.IsNullOrEmpty(viewport.SheetNumber))
            {
                return(null);
            }

            List <View> viewList = new FilteredElementCollector(document).OfClass(typeof(View)).Cast <View>().ToList();

#if (REVIT2020 || REVIT2021)
            View view = viewList.FirstOrDefault(x => !x.IsTemplate && x.Name == viewport.ViewName);
#else
            View view = viewList.FirstOrDefault(x => !x.IsTemplate && x.ViewName == viewport.ViewName);
#endif

            if (view == null)
            {
                return(null);
            }

            List <ViewSheet> viewSheetList = new FilteredElementCollector(document).OfClass(typeof(ViewSheet)).Cast <ViewSheet>().ToList();
            ViewSheet        viewSheet     = viewSheetList.FirstOrDefault(x => !x.IsTemplate && !x.IsPlaceholder && x.SheetNumber == viewport.SheetNumber);
            if (viewSheet == null)
            {
                return(null);
            }

            revitViewPort = Viewport.Create(document, viewSheet.Id, view.Id, viewport.Location.ToRevit());

            // Copy parameters from BHoM object to Revit element
            revitViewPort.CopyParameters(viewport, settings);

            refObjects.AddOrReplace(viewport, revitViewPort);
            return(revitViewPort);
        }
Exemplo n.º 3
0
        /***************************************************/

        public static Element ToRevit(this oM.Adapters.Revit.Elements.Viewport viewport, Document document, RevitSettings settings = null, Dictionary <Guid, List <int> > refObjects = null)
        {
            return(viewport.ToRevitViewport(document, settings, refObjects));
        }