BIM建筑网
更专业的BIM技术学习网站!


Revit二次开发--获取视图可见性中过滤器颜色

免费的Ai上线啦!
BIM建筑网自主研发,你想要Ai功能都在这里!
Ai·提升效率 技术答疑

在Revit【视图】→【可见性/图形】中,我们可以通过设置过滤器来设置一类构件的颜色,如下图所示:
Revit二次开发--获取视图可见性中过滤器颜色
如果我们想通过代码来取得或设置这些过滤器的颜色,该怎么做呢?
Revit API中提供了一个GetFilterOverrides()方法,该方法需要传递一个ElementId,返回OverrideGraphicSettings类型的值,通过该值我们可以获取或设置过滤器的颜色等。

using Autodesk.Revit.UI;
using Autodesk.Revit.DB;
using Autodesk.Revit.Attributes;
using System.Collections.Generic;
using System.IO;

namespace SettingFillPatternByCate
{
 [Transaction(TransactionMode.Manual)]
 class Command : IExternalCommand
 {
 public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
 {
 Document doc = commandData.Application.ActiveUIDocument.Document;
 View v = doc.ActiveView;
 StreamWriter sw = new StreamWriter(@"C:UsersAdministratorDesktopFilterColor.txt", false);
 string names = null;
 FilteredElementCollector filters = new FilteredElementCollector(doc);
 filters.OfClass(typeof(ParameterFilterElement));

 ICollection<ElementId> filterIds = v.GetFilters();
 Color c = new Color(255, 255, 255);
 foreach (ElementId id in filterIds)
 {
 Element filter = doc.GetElement(id);
 OverrideGraphicSettings ogs2 = v.GetFilterOverrides(id);
 c = ogs2.ProjectionFillColor;
 if (c.IsValid)
 {
 names += filter.Name + " " + id.ToString() + "(" + c.Red + "," + c.Green + "," + c.Blue + ")" + "n";
 }
 }
 sw.Write(names);
 sw.Close();

 return Result.Succeeded;
 }
 }
}

输出的颜色信息FilterColor.txt文件内容如下:
Revit二次开发--获取视图可见性中过滤器颜色

这里有个问题需要注意一下:
获取文档中的过滤器时上面的代码中使用了两种方案
1、使用过滤器

FilteredElementCollector filters = new FilteredElementCollector(doc);
filters.OfClass(typeof(ParameterFilterElement));

2、直接获取

ICollection<ElementId> filterIds = v.GetFilters();

第一种方案,获取的是文档中所有的过滤器,不论是应用到视图中的,还是没应用到视图中的,都包含在内。
第二种方案,直接获取应用到该视图中的所有过滤器。
如果使用第一种方案,在代码段

OverrideGraphicSettings ogs2 = v.GetFilterOverrides(id);

中,可能会报“过滤器没有应用到视图中”的异常,因为第一种方案获取的过滤器中包含没应用到视图中的。

内容或有偏颇之处,还请指正,不胜感激!

微信公众号:xuebim
关注建筑行业BIM发展、研究建筑新技术,汇集建筑前沿信息!
← 微信扫一扫,关注我们+
赞(0) 打赏
BIM建筑网 » Revit二次开发--获取视图可见性中过滤器颜色

评论 抢沙发

评论前必须登录!

 

BIM建筑网,更专业的BIM技术学习网站!

关注建筑新动态,分享建筑新技术

联系我们关于BIM建筑网

觉得文章有用就打赏一下小编吧

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏

扫码登录

微信「关注」,快捷登录
扫码关注后会自动登录
注册登录代表您已同意《用户许可协议》
账号登录 | 其他登录

|登录

找回密码

|账号登录注册