Revit二次开发,取视图列表,以及可打印的视图列表

在一些场景中,我们需要获取所有的视图列表,以便判断是否有该视图,然后进行后续的操作。

在一些场景中,我们可能仅仅只需要那些可打印视图。这些可打印视图是可以在Revit中可视化的。

<code>using Autodesk.Revit.DB;
using Autodesk.Revit.DB.Architecture;
using Autodesk.Revit.UI;
using Autodesk.Revit.UI.Selection;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;

namespace Create3DView
{
    /// 
    /// 视图应用
    /// 
    /// marc
    [Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
    [Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]
    [Autodesk.Revit.Attributes.Journaling(Autodesk.Revit.Attributes.JournalingMode.NoCommandData)]
    public class DefaultCommand : IExternalCommand
    {
        /// 
        /// 执行指令
        /// 
        /// 
        /// 
        /// 
        /// 
        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
            var document = commandData.Application.ActiveUIDocument.Document;

            List views = null;
            using (var collector = new FilteredElementCollector(document).OfClass(typeof(View)))
            {
                views = collector.Cast().ToList();
            }

            string viewsText = string.Empty;
            views.ForEach((view) =>
            {
                viewsText += view.Name + "\r\n";
            });
            TaskDialog.Show("提示", "视图列表:\r\n" + viewsText);

            string canBePrintedViewsText = string.Empty;
            var canBePrintedViews = views.Where(q => q.CanBePrinted).ToList();
            canBePrintedViews.ForEach((view) =>
            {
                canBePrintedViewsText += view.Name + "\r\n";
            });
            TaskDialog.Show("提示", "可打印的视图列表:\r\n" + canBePrintedViewsText);

            return Result.Succeeded;
        }
    }
}
/<code>

运行效果如下图:

Revit二次开发,取视图列表,以及可打印的视图列表


Revit二次开发,取视图列表,以及可打印的视图列表


源码下载地址:

https://download.csdn.net/download/mazhiyuan1981/12881373


分享到:


相關文章: