Quantcast
Channel: RevitNetAddinWizard & NavisworksNetAddinWizard
Viewing all articles
Browse latest Browse all 872

Revit .NET API: ViewCreation Class Used by Non-Leaning Pisa Tower

$
0
0

We have programmatically created various Revit elements using the Revit .NET Creation APIs, specifically those New or Create methods. We also created a non-leaning Pisa Tower using all those Revit .NET Creation APIs that have been demonstrated in detail separately.  

Here is how the resultant Pisa Tower looks beautifully in Revit after being rendered.
 PisaTower
The ViewCreation class along with its useful methods have been fine tuned a bit when used to create the non-leaning Pisa Tower. Here is the latest code.

     public class ViewCreation
    {
        public static IEnumerable<ViewFamilyType> FindViewTypes(RvtDocument doc, ViewType viewType)
        {
            IEnumerable<ViewFamilyType> ret = new FilteredElementCollector(doc)
                            .WherePasses(new ElementClassFilter(typeof(ViewFamilyType), false))
                            .Cast<ViewFamilyType>();

            switch (viewType)
            {
                case ViewType.AreaPlan:
                    return ret.Where(e => e.ViewFamily == ViewFamily.AreaPlan);
                case ViewType.CeilingPlan:
                    return ret.Where(e => e.ViewFamily == ViewFamily.CeilingPlan);
                case ViewType.ColumnSchedule:
                    return ret.Where(e => e.ViewFamily == ViewFamily.GraphicalColumnSchedule); //?
                case ViewType.CostReport:
                    return ret.Where(e => e.ViewFamily == ViewFamily.CostReport);
                case ViewType.Detail:
                    return ret.Where(e => e.ViewFamily == ViewFamily.Detail);
                case ViewType.DraftingView:
                    return ret.Where(e => e.ViewFamily == ViewFamily.Drafting);
                case ViewType.DrawingSheet:
                    return ret.Where(e => e.ViewFamily == ViewFamily.Sheet);
                case ViewType.Elevation:
                    return ret.Where(e => e.ViewFamily == ViewFamily.Elevation);
                case ViewType.EngineeringPlan:
                    return ret.Where(e => e.ViewFamily == ViewFamily.StructuralPlan); //?
                case ViewType.FloorPlan:
                    return ret.Where(e => e.ViewFamily == ViewFamily.FloorPlan);
                //case ViewType.Internal:
                //    return ret.Where(e => e.ViewFamily == ViewFamily.Internal); //???
                case ViewType.Legend:
                    return ret.Where(e => e.ViewFamily == ViewFamily.Legend);
                case ViewType.LoadsReport:
                    return ret.Where(e => e.ViewFamily == ViewFamily.LoadsReport);
                case ViewType.PanelSchedule:
                    return ret.Where(e => e.ViewFamily == ViewFamily.PanelSchedule);
                case ViewType.PresureLossReport:
                    return ret.Where(e => e.ViewFamily == ViewFamily.PressureLossReport);
                case ViewType.Rendering:
                    return ret.Where(e => e.ViewFamily == ViewFamily.ImageView); //?
                //case ViewType.Report:
                //    return ret.Where(e => e.ViewFamily == ViewFamily.Report); //???
                case ViewType.Schedule:
                    return ret.Where(e => e.ViewFamily == ViewFamily.Schedule);
                case ViewType.Section:
                    return ret.Where(e => e.ViewFamily == ViewFamily.Section);
                case ViewType.ThreeD:
                    return ret.Where(e => e.ViewFamily == ViewFamily.ThreeDimensional);
                case ViewType.Undefined:
                    return ret.Where(e => e.ViewFamily == ViewFamily.Invalid);  //?
                case ViewType.Walkthrough:
                    return ret.Where(e => e.ViewFamily == ViewFamily.Walkthrough);
                default:
                    return ret;
            }
        }

        public static ViewPlan NewViewPlan(string viewName, Level level, ViewType viewType)
        {
            ElementId viewTypeId = FindViewTypes(level.Document, viewType).First().Id;

            ViewPlan view = ViewPlan.Create(level.Document, viewTypeId, level.Id);
            view.ViewName = viewName;

            return view;
        }


        public static View3D NewView3D(RvtDocument doc)
        {
            ElementId viewTypeId = FindViewTypes(doc, ViewType.ThreeD).First().Id;

            View3D view = View3D.CreateIsometric(doc, viewTypeId);

            return view;
        }


        public static View3D NewView3D(RvtDocument doc, string viewName)
        {
            View3D view = NewView3D(doc);
            view.ViewName = viewName;

            return view;
        }

        public static View3D NewView3D(RvtDocument doc, XYZ viewDir)
        {
            ElementId viewTypeId = FindViewTypes(doc, ViewType.ThreeD).First().Id;

            View3D view = View3D.CreateIsometric(doc, viewTypeId);
            //view.ViewDirection = viewDir;
            //view.UpDirection = viewDir;

            return view;
        }

        public static View3D NewView3D(RvtDocument doc, string viewName, XYZ viewDir)
        {
            View3D view = NewView3D(doc, viewName);
            //view.ViewDirection = viewDir;
            //view.UpDirection = viewDir;

            return view;
        }
    }

Revit Addin Wizard (RevitAddinWizard) provides various wizards, coders and widgets to help program Revit addins. It can be downloaded from the Download link at the bottom of the blog index page.


Viewing all articles
Browse latest Browse all 872

Trending Articles