Revit二次开发--获取视图可见性中过滤器颜色
来源:互联网 发布:oppor11怎么设置3g网络 编辑:程序博客网 时间:2024/05/22 17:50
在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:\Users\Administrator\Desktop\FilterColor.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文件内容如下:
这里有个问题需要注意一下:
获取文档中的过滤器时上面的代码中使用了两种方案
1、使用过滤器
FilteredElementCollector filters = new FilteredElementCollector(doc);filters.OfClass(typeof(ParameterFilterElement));
2、直接获取
ICollection<ElementId> filterIds = v.GetFilters();
第一种方案,获取的是文档中所有的过滤器,不论是应用到视图中的,还是没应用到视图中的,都包含在内。
第二种方案,直接获取应用到该视图中的所有过滤器。
如果使用第一种方案,在代码段
OverrideGraphicSettings ogs2 = v.GetFilterOverrides(id);
中,可能会报“过滤器没有应用到视图中”的异常,因为第一种方案获取的过滤器中包含没应用到视图中的。
内容或有偏颇之处,还请指正,不胜感激!
3 0
- Revit二次开发--获取视图可见性中过滤器颜色
- Revit二次开发入门——通过过滤器获取元素
- Building Coder(Revit 二次开发) - 族元素可见性
- Revit二次开发入门——获取模型中门窗数量
- Revit二次开发--获取门窗数量
- Revit二次开发,VS中配置
- [Revit二次开发]在WPF显示revit的三维视图
- Revit二次开发之“显示或隐藏视图中未选中的元素”
- revit二次开发 获取水管的坐标
- revit二次开发获取墙的几何信息
- Revit二次开发之获取构件Connector
- Revit 二次开发
- Revit二次开发文章:怎样从CurveLoop中获取其中的边
- JQuery 可见性过滤器
- jQuery可见性过滤器
- Jquery可见性过滤器
- jquery可见性过滤器
- 获取一个视图中所有可见的对象
- 织女的红线
- JAVA实现RSA算法
- html实现个性的留言
- 编程之美:常见面试题思想方法整理
- 使用HDFS FS API的基本操作
- Revit二次开发--获取视图可见性中过滤器颜色
- 跟着 8 张思维导图学习 Javascript
- Webpack中使用相对路径定义别名
- 关于RAW格式数据
- Java多线程之死锁与线程间通信简单案例
- 使用GSON和泛型解析约定格式的JSON字符串
- scala val 和 var的区别
- 使用Markdown写文章
- org.apache.thrift.transport.TTransportException: No underlying server socket.