using Autodesk.Revit.Attributes; using Autodesk.Revit.DB; using Nice3point.Revit.Toolkit.External; using System; using System.Linq; namespace Szmedi.RvKits.DisplayTools { /// /// 修改颜色 /// [Transaction(TransactionMode.Manual)] public class OverrideElementsCmd : ExternalCommand { public override void Execute() { try { var elems = UiDocument.Selection.PickElementsByRectangle(new GenericFilter(), "请选择元素"); var pat = new FilteredElementCollector(Document) .OfClass(typeof(FillPatternElement)) .ToElements() .Cast() .Where(pattern => { var fill = pattern.GetFillPattern(); return fill.Target == FillPatternTarget.Drafting && fill.HostOrientation == FillPatternHostOrientation.ToView && fill.IsSolidFill; }) .FirstOrDefault(); Document.Invoke( ts => { foreach (var elem in elems) { var overrideGraphicSettings = Document.ActiveView.GetElementOverrides(elem.Id); overrideGraphicSettings.SetSurfaceTransparency(20); #if REVIT2018 overrideGraphicSettings.SetProjectionFillColor(new Color(24, 100, 24)); overrideGraphicSettings.SetProjectionFillPatternId(pat.Id); //实体填充 #elif REVIT2020 || REVIT2019 overrideGraphicSettings.SetSurfaceForegroundPatternColor(new Color(24, 100, 24)); overrideGraphicSettings.SetSurfaceForegroundPatternId(pat.Id); //实体填充 #endif Document.ActiveView.SetElementOverrides(elem.Id, overrideGraphicSettings); } //var elemIds = elems.Select(e => e.Id).ToList(); //uidoc.doc.ActiveView.HideElements(elemIds); }, "修改外观颜色" ); } catch (Autodesk.Revit.Exceptions.OperationCanceledException) { } catch (Exception) { } } } }