Revit c# API覆盖图形在视图表面模式

本文关键字:视图 表面 模式 图形 覆盖图 API 覆盖 Revit | 更新日期: 2023-09-27 18:12:49

我试图将选项分配给Revit OverrideGraphicsSettings:

OverrideGraphicSettings org = new OverrideGraphicSettings();
org.SetHalftone(true);
org.SetProjectionLineColor(Use_Color); org.SetProjectionFillColor(Use_Color);
org.SetProjectionFillPatternId(****);
doc.ActiveView.SetElementOverrides(ElementId Elem_Id, org);

除了以下两个问题之外,这可以正常工作:

  1. 如果我已经从"按材质"中覆盖了表面图案到实体填充,上面的代码将禁用这个覆盖,返回到"按材质"。
  2. SetProjectionFillPatternId的行是禁用的,因为它不清楚如何获得一个有效的FillPatternId为实体填充。

我在寻找答案的尝试包括收集所有定义的材料,并通过它们循环找到分配的表面图案,但我找不到适当的FillPatternId。有人处理过这个问题吗?

Revit c# API覆盖图形在视图表面模式

我可能晚了8年。但对于那些稍后读到这篇文章的人来说,这是一个解决方案。

//CHANGE COLOR
string fillPatternName = "Wood 1"
Color color = new Color((byte)0, (byte)0, (byte)255);
OverrideGraphicSettings ogs = new OverrideGraphicSettings();
FillPatternElement fillPatternElement = FillPatternElement.GetFillPatternElementByName(doc, FillPatternTarget.Drafting, fillPatternName);
ogs.SetProjectionFillPatternId(fillPatternElement.Id);
ogs.SetProjectionFillColor(color);
uidoc.ActiveView.SetElementOverrides(ds.Id, ogs);