示例#1
0
文件: View.cs 项目: Thomas84/archilab
        /// <summary>
        ///     Get View Template applied to view.
        /// </summary>
        /// <param name="view">View to retrieve View Template from.</param>
        /// <returns name="view">View Template applied to view.</returns>
        /// <search>view, template</search>
        public static object ViewTemplate(global::Revit.Elements.Views.View view)
        {
            var doc = DocumentManager.Instance.CurrentDBDocument;
            var v   = (Autodesk.Revit.DB.View)view.InternalElement;

            var id = v.ViewTemplateId;

            return(id != Autodesk.Revit.DB.ElementId.InvalidElementId ? doc.GetElement(id).ToDSType(true) : null);
        }
示例#2
0
 public static void ToggleFilterInView(global::Revit.Elements.Views.View view, global::Revit.Elements.Element viewFilter, bool toggle)
 {
     try
     {
         Autodesk.Revit.DB.View internalView = view.InternalElement as Autodesk.Revit.DB.View;
         internalView.SetIsFilterEnabled(viewFilter.InternalElement.Id, toggle);
     }
     catch (Exception e)
     {
         throw new Exception(e.Message);
     }
 }
示例#3
0
 public static bool IsFilterEnabled(global::Revit.Elements.Views.View view, global::Revit.Elements.Element viewFilter)
 {
     try
     {
         Autodesk.Revit.DB.View internalView = view.InternalElement as Autodesk.Revit.DB.View;
         return(internalView.GetIsFilterEnabled(viewFilter.InternalElement.Id));
     }
     catch (Exception e)
     {
         throw new Exception(e.Message);
     }
 }
示例#4
0
        /// <summary>
        /// Creates a copy of View Template.
        /// </summary>
        /// <param name="viewTemplate">View Template to be duplicated.</param>
        /// <param name="name">Name of the new View Template.</param>
        /// <returns name="view">View Template</returns>
        public static global::Revit.Elements.Views.View Duplicate(global::Revit.Elements.Views.View viewTemplate, string name)
        {
            var doc = DocumentManager.Instance.CurrentDBDocument;
            var v   = (Autodesk.Revit.DB.View)viewTemplate.InternalElement;

            TransactionManager.Instance.EnsureInTransaction(doc);
            var newId   = Autodesk.Revit.DB.ElementTransformUtils.CopyElement(doc, v.Id, Autodesk.Revit.DB.XYZ.Zero);
            var newView = (Autodesk.Revit.DB.View)doc.GetElement(newId.FirstOrDefault());

            newView.Name = name;
            TransactionManager.Instance.TransactionTaskDone();

            return(newView.ToDSType(true) as global::Revit.Elements.Views.View);
        }
示例#5
0
文件: View.cs 项目: Thomas84/archilab
        /// <summary>
        /// Duplicates an existing view.
        /// </summary>
        /// <param name="view">View to duplicate.</param>
        /// <param name="name">Name to be assigned to new view.</param>
        /// <param name="options">Duplicate options. Ex: Duplicate as Dependant.</param>
        /// <returns name="view">New View.</returns>
        public static global::Revit.Elements.Views.View Duplicate(global::Revit.Elements.Views.View view, string name, string options)
        {
            var doc        = DocumentManager.Instance.CurrentDBDocument;
            var v          = (Autodesk.Revit.DB.View)view.InternalElement;
            var dupOptions = (Autodesk.Revit.DB.ViewDuplicateOption)Enum.Parse(typeof(Autodesk.Revit.DB.ViewDuplicateOption), options);

            TransactionManager.Instance.EnsureInTransaction(doc);
            var newView = doc.GetElement(v.Duplicate(dupOptions));

            newView.Name = name;
            TransactionManager.Instance.TransactionTaskDone();

            return(newView.ToDSType(true) as global::Revit.Elements.Views.View);
        }
示例#6
0
文件: View.cs 项目: Thomas84/archilab
        /// <summary>
        /// Sets Workset visibility for a View.
        /// </summary>
        /// <param name="view">View to set the visibility on.</param>
        /// <param name="worksets">Worksets to set the visibility for.</param>
        /// <param name="visibility">Visibility setting. Ex: Hide.</param>
        /// <returns name="view">View</returns>
        public static global::Revit.Elements.Views.View SetWorksetVisibility(global::Revit.Elements.Views.View view, List <Workset> worksets, string visibility)
        {
            var doc = DocumentManager.Instance.CurrentDBDocument;
            var v   = (Autodesk.Revit.DB.View)view.InternalElement;
            var vis = (Autodesk.Revit.DB.WorksetVisibility)Enum.Parse(typeof(Autodesk.Revit.DB.WorksetVisibility), visibility);

            TransactionManager.Instance.EnsureInTransaction(doc);
            foreach (var w in worksets)
            {
                v.SetWorksetVisibility(w.InternalWorkset.Id, vis);
            }
            TransactionManager.Instance.TransactionTaskDone();

            return(view);
        }
示例#7
0
        public static List <bool> IsHiddenInView(List <global::Revit.Elements.Element> element,
                                                 global::Revit.Elements.Views.View view)
        {
            List <bool> boolList = new List <bool>();

            foreach (global::Revit.Elements.Element e in element)
            {
                Autodesk.Revit.DB.Element internalElement = (Autodesk.Revit.DB.Element)e.InternalElement;
                Autodesk.Revit.DB.View    internalView    = (Autodesk.Revit.DB.View)view.InternalElement;

                boolList.Add(internalElement.IsHidden(internalView));
            }

            return(boolList);
        }
示例#8
0
文件: View.cs 项目: Thomas84/archilab
        /// <summary>
        ///     Set View Template for a View.
        /// </summary>
        /// <param name="view">View that template will be applied to.</param>
        /// <param name="viewTemplate">View Template that will be applied to View.</param>
        /// <returns name="view"></returns>
        /// <search>set, view, template</search>
        public static global::Revit.Elements.Views.View SetViewTemplate(global::Revit.Elements.Views.View view, global::Revit.Elements.Views.View viewTemplate)
        {
            var doc = DocumentManager.Instance.CurrentDBDocument;
            var v   = (Autodesk.Revit.DB.View)view.InternalElement;
            var vt  = (Autodesk.Revit.DB.View)viewTemplate.InternalElement;

            if (v.IsValidViewTemplate(vt.Id))
            {
                TransactionManager.Instance.EnsureInTransaction(doc);
                v.ViewTemplateId = vt.Id;
                TransactionManager.Instance.TransactionTaskDone();
            }
            else
            {
                throw new Exception("Specified View Template is not valid for this View.");
            }

            return(view);
        }
示例#9
0
文件: View.cs 项目: Thomas84/archilab
        /// <summary>
        ///     Removes View Template from given view.
        /// </summary>
        /// <param name="view">View to remove View Template from.</param>
        /// <returns name="view">View that template was removed from.</returns>
        /// <search>view, template, remove, delete</search>
        public static global::Revit.Elements.Views.View RemoveViewTemplate(global::Revit.Elements.Views.View view)
        {
            var doc = DocumentManager.Instance.CurrentDBDocument;
            var v   = (Autodesk.Revit.DB.View)view.InternalElement;

            try
            {
                // set "View Template" parameter to -1 to remove template
                TransactionManager.Instance.EnsureInTransaction(doc);
                var bip = v.get_Parameter(Autodesk.Revit.DB.BuiltInParameter.VIEW_TEMPLATE_FOR_SCHEDULE);
                bip.Set(new Autodesk.Revit.DB.ElementId(-1));
                TransactionManager.Instance.TransactionTaskDone();
            }
            catch (Exception)
            {
                // ignored
            }

            return(view);
        }
示例#10
0
文件: View.cs 项目: Thomas84/archilab
        /// <summary>
        ///     Remove view filter from view.
        /// </summary>
        /// <param name="view">View to remove view filter from.</param>
        /// <param name="viewFilter">View filter to be removed.</param>
        /// <returns name="view">View that filter was removed from.</returns>
        /// <search>view, filter, remove, delete</search>
        public static global::Revit.Elements.Views.View RemoveFilter(global::Revit.Elements.Views.View view, List <global::Revit.Elements.Element> viewFilter)
        {
            var doc = DocumentManager.Instance.CurrentDBDocument;
            var v   = (Autodesk.Revit.DB.View)view.InternalElement;

            // get all filters for a view
            var ids = v.GetFilters();

            TransactionManager.Instance.EnsureInTransaction(doc);
            foreach (var element in viewFilter)
            {
                var pfe = (Autodesk.Revit.DB.ParameterFilterElement)element.InternalElement;
                if (ids.Contains(pfe.Id))
                {
                    v.RemoveFilter(pfe.Id);
                }
            }
            TransactionManager.Instance.TransactionTaskDone();

            return(view);
        }
示例#11
0
        public static global::Revit.Elements.Element ByMultipleLoops(global::Revit.Elements.FilledRegionType filledRegionType, global::Revit.Elements.Views.View view, List <List <Curve> > curvesToUse)
        {
            //the current document
            Document doc = DocumentManager.Instance.CurrentDBDocument;

            //boundary loop to append nested loops to
            List <CurveLoop> boundariesLoop = new List <CurveLoop>();

            //iterate through the loops and create curve loops
            foreach (var curveList in curvesToUse)
            {
                SortCurves(curveList);
                List <Autodesk.Revit.DB.Curve> curves = new List <Autodesk.Revit.DB.Curve>();
                foreach (var curve in curveList)
                {
                    curves.Add(curve.ToRevitType(true));
                }
                boundariesLoop.Add(CurveLoop.Create(curves));
            }

            //build the filled region
            TransactionManager.Instance.EnsureInTransaction(doc);
            var filledRegion = FilledRegion.Create(doc, filledRegionType.InternalElement.Id, view.InternalElement.Id, boundariesLoop);

            TransactionManager.Instance.TransactionTaskDone();

            //return the newly created revit element
            return(filledRegion.ToDSType(true));
        }
示例#12
0
        public static Dictionary <string, object> GetLeaderEnds(global::Revit.Elements.Element grid, global::Revit.Elements.Views.View view)
        {
            //convert to internal representation
            Autodesk.Revit.DB.DatumPlane internalGrid = (Autodesk.Revit.DB.DatumPlane)grid.InternalElement;
            //get the leader ends.
            Autodesk.Revit.DB.Leader leaderEnd0 = internalGrid.GetLeader(Autodesk.Revit.DB.DatumEnds.End0, (Autodesk.Revit.DB.View)view.InternalElement);
            Autodesk.Revit.DB.Leader leaderEnd1 = internalGrid.GetLeader(Autodesk.Revit.DB.DatumEnds.End1, (Autodesk.Revit.DB.View)view.InternalElement);

            //returns the outputs
            var outInfo = new Dictionary <string, object>
            {
                { "leaderEnd0", leaderEnd0 },
                { "leaderEnd1", leaderEnd1 }
            };

            return(outInfo);
        }
        /// <summary>
        /// This node will get the underlying curve of the reference plane in a given view.
        /// </summary>
        /// <param name="referencePlane">The reference plane to get curves from.</param>
        /// <param name="view">The view to obtain the curves in.</param>
        /// <returns name="curve">The room that is tagged.</returns>
        /// <search>
        /// referenceplane,referenceplane.getcurvesinview
        /// </search>
        public static List <Curve> GetCurvesInView(List <global::Revit.Elements.Element> referencePlane, global::Revit.Elements.Views.View view)
        {
            List <Curve> curveList = new List <Curve>();

            Autodesk.Revit.DB.View internalView = (Autodesk.Revit.DB.View)view.InternalElement;
            foreach (var refPlane in referencePlane)
            {
                Autodesk.Revit.DB.DatumPlane    internalReferencePlane = (Autodesk.Revit.DB.DatumPlane)refPlane.InternalElement;
                IList <Autodesk.Revit.DB.Curve> internalCurves         =
                    internalReferencePlane.GetCurvesInView(DatumExtentType.ViewSpecific, internalView);
                foreach (var curve in internalCurves)
                {
                    curveList.Add(curve.ToProtoType(true));
                }
            }
            return(curveList);
        }