Здравствуйте.
Дано следующее: Revit 2019, есть инструмент, который строит вентиляционные шахты (Duct).
Есть задача: нужно, чтобы у вентиляционных шахт одна из сторон была определенного цвета (условного синего).
Попытка решения: после построения пусть в команде будет изменен цвет стороны (пока не придумал как их различать, поэтому первой попавшейся -- в цикле break).
Проблема: у Face нет доступного Id, решил через Reference зайти, но там хранится Duct Id, поэтому красится вся вентиляционная шахта, а не одна только сторона (правда, сама-то грань не красится почему-то, только ребра).
Вопрос: кто-нибудь из тех, кто сталкивался с подобной задачей, подскажите, как с этим удалось справиться? Может в принципе подход не с той стороны выбрал? Код свой ниже привёл.
var duct = document.GetElement(ductId);
var geometryElement = duct.get_Geometry(new Options { ComputeReferences = true });
foreach (var geometryObject in geometryElement)
{
if (!(geometryObject is Solid solid))
continue;
foreach (Face face in solid.Faces)
{
using (var transaction = new Transaction(document, "Подсветка"))
{
transaction.Start();
var color = new Color(0, 0, 255);
var overrideSettings = new OverrideGraphicSettings();
overrideSettings.SetProjectionLineColor(color);
overrideSettings.SetSurfaceBackgroundPatternColor(color);
overrideSettings.SetProjectionFillColor(color);
overrideSettings.SetSurfaceForegroundPatternColor(color);
overrideSettings.SetCutForegroundPatternColor(color);
overrideSettings.SetCutFillColor(color);
overrideSettings.SetCutBackgroundPatternColor(color);
document.ActiveView.SetElementOverrides(face.Reference.ElementId, overrideSettings);
document.Regenerate();
transaction.Commit();
}
commandData.Application.ActiveUIDocument.RefreshActiveView();
break;
}
}