下載app免費領取會員
我在改變構件的顏色時發現當我修改一個構件時,同一種材料的構件的顏色都被改變了,于是查找問題,答案如下:
(1)通過材料屬性更改構件顏色
通過材料屬性更改構件顏色主要關注點是材料的”材質“,而不是構件,所以不同構件只要材質相同,在修改它顏色時,文檔中所有相同材質構件都會被修改。通過材質修改顏色是修改下圖中著色中的顏色,修改后的顏色屬性值可以通過Lookup查到。

代碼:
Element ele = doc.GetElement(sel.PickObject(ObjectType.Element, "選擇元素"));
Transaction ts = new Transaction(doc, "12");
ts.Start();
Color color = new Color(250,200,100);
Material material = doc.GetElement(ele.GetMaterialIds(false).First()) as Material;
material.Color = color;
ts.Commit();
(2)直接改變構件的顏色
直接改變構件的顏色是通過OverrideGraphicSettings類來設置覆蓋視圖中元素的顯示。不會修改構件材質,其修改的顏色通過Lookup查找不到,可以通過OverrideGraphicSettings.ProjectionFillColor屬性來獲取修改的顏色值。
代碼:
//1.修改構件顏色
Element ele = doc.GetElement(sel.PickObject(ObjectType.Element, "選擇元素"));
FilteredElementCollector fillPatternElementFilter = new FilteredElementCollector(doc);
fillPatternElementFilter.OfClass(typeof(FillPatternElement));
//獲取實體填充
Element ele = doc.GetElement(sel.PickObject(ObjectType.Element, "選擇元素"));
Transaction ts = new Transaction(doc, "12");
ts.Start();
FillPatternElement fillPatternElement = fillPatternElementFilter.First(f =>
(f as FillPatternElement).GetFillPattern().IsSolidFill) as FillPatternElement;
OverrideGraphicSettings overrideGraphicSettings = new OverrideGraphicSettings();
overrideGraphicSettings = doc.ActiveView.GetElementOverrides(ele.Id); overrideGraphicSettings.SetSurfaceForegroundPatternId(fillPatternElement.Id); overrideGraphicSettings.SetSurfaceForegroundPatternColor(new Autodesk.Revit.DB.Color(250, 50, 10)); uidoc.ActiveView.SetElementOverrides(ele.Id, overrideGraphicSettings);
string red = overrideGraphicSettings.ProjectionFillColor.Red.ToString();
string blue = overrideGraphicSettings.ProjectionFillColor.Blue.ToString();
string green = overrideGraphicSettings.ProjectionFillColor.Green.ToString();
TaskDialog.Show("1", red + "," + blue + "," + green);
ts.Commit();
本文版權歸腿腿教學網及原創作者所有,未經授權,謝絕轉載。
上一篇:Revit技巧 | revit填充顏色在哪里?你必須要知道的Revit填充技巧
下一篇:Revit技巧 | revit怎么用顏色?Revit中各種顏色設置對機電管線在不同視覺樣式及軟件中顯示的影響
推薦專題