Revit 2019之后版本SetProjectionFillColor实体填充颜色设置问题
Revit 2020+ 元素实体填充颜色设置失效解决方案
问题根源
Revit 2020及后续版本对视图图形覆盖API进行了调整,旧版OverrideGraphicSettings类的填充逻辑被拆分优化,直接沿用旧代码无法正确触发实体填充效果。
修复后代码实现
改用GraphicSettings类配合对应重载方法,同时必须显式开启填充可见性:
// 获取实体填充图案 FillPatternElement solidFill = FillPatternElement.GetFillPatternElementByName(doc, FillPatternTarget.Drafting, "Solid"); if (solidFill == null) { throw new InvalidOperationException("无法获取实体填充图案"); } // 初始化新版图形设置实例 GraphicSettings gs = new GraphicSettings(); // 设置填充颜色 gs.SetProjectionFillColor(new Color(255, 0, 0)); // 绑定实体填充图案 gs.SetProjectionFillPatternId(solidFill.Id); // 关键:显式开启填充可见性(新版本默认隐藏) gs.SetProjectionFillVisibility(true); using (Transaction transaction = new Transaction(doc, "Colorize Elements")) { transaction.Start(); foreach (ElementId id in allNeddedElement) { // 使用支持GraphicSettings的重载方法设置覆盖 doc.ActiveView.SetElementOverrides(id, gs); } transaction.Commit(); }
核心注意事项
- API版本适配:Revit 2020起官方推荐使用
GraphicSettings替代旧版OverrideGraphicSettings,后者部分功能已标记为过时。 - 填充可见性开关:新版本中填充默认处于隐藏状态,仅设置颜色和图案不会生效,必须调用
SetProjectionFillVisibility(true)。 - 填充图案类型:获取填充图案时需注意
FillPatternTarget参数, drafting类型适用于多数二维视图元素,三维元素可尝试使用Model类型。
内容的提问来源于stack exchange,提问作者Bender__SS
相关产品推荐
相关产品推荐

