public static class ElementColorUtils
{
static ElementId _fillPatternElementId = null;
/// <summary>
/// 设置 元素填充颜色
/// </summary>
/// <param name="element"></param>
/// <param name="color"></param>
public static void SetElementColor(this Element element, Autodesk.Revit.DB.Color color)
{
System.Diagnostics.Debug.Assert(element != null);
var document = element.Document;
if (_fillPatternElementId == null)
_fillPatternElementId = document.FilterElement<FillPatternElement>().
First(o => o.GetFillPattern().IsSolidFill).Id;
var overrideGraphicSettings = document.ActiveView.GetElementOverrides(element.Id);
//三维视图
overrideGraphicSettings.SetProjectionFillPatternId(_fillPatternElementId);
overrideGraphicSettings.SetProjectionFillColor(color);
//平面立面
overrideGraphicSettings.SetCutFillPatternId(_fillPatternElementId);
overrideGraphicSettings.SetCutFillColor(color);
document.ActiveView.SetElementOverrides(element.Id, overrideGraphicSettings);
}
public static void ResetElementColor(this Element element)
{
System.Diagnostics.Debug.Assert(element != null);
element.Document.ActiveView.SetElementOverrides(element.Id, new OverrideGraphicSettings());
}
/// <summary>
/// 设置 元素透明度
/// </summary>
/// <param name="element"></param>
/// <param name="color"></param>
public static void SetElementTransparency(this Element element, int transparency)
{
System.Diagnostics.Debug.Assert(element != null);
System.Diagnostics.Debug.Assert(transparency >= 0 && transparency <= 100);
var document = element.Document;
var overrideGraphicSettings = document.ActiveView.GetElementOverrides(element.Id);
overrideGraphicSettings.SetSurfaceTransparency(transparency);
document.ActiveView.SetElementOverrides(element.Id, overrideGraphicSettings);
}
}
Revit二次开发 - 设置元素颜色和透明度
最新推荐文章于 2024-05-11 15:07:12 发布