在Revit的材料屬性里,有一個是渲染屬性。讀取軟然屬性看起來不是那么直接。
下面的代碼演示如何獲取渲染屬性中的具體屬性。但是Revit還是尚未完全開放出所有屬性可供訪問好用軟用渲染軟件好用軟用渲染軟件,比如獲取材料的表現文件名稱。
基本的思路是從., 返回Asset對象。然后從Asset的item屬性獲取其中的屬性。
請看下面詳細VSTA代碼演示:
public void MaterialAppearanceProperties()
{
//
Document doc = this.ActiveUIDocument.Document;
FilteredElementCollector collector = new FilteredElementCollector(doc);
collector.OfClass(typeof(Material));
foreach(Element elem in collector)
{
if(elem.Name == "Wood - Flooring")
//if(elem.Name == "Concrete - Cast-in-Place Concrete")
{
Material mat = elem as Material;
Asset set = mat.RenderAppearance;
string props = null;
props = "Size = " + set.Size.ToString() + "\r\n";
props += "Title = " + set.Title + "\r\n";
props += "Lirary name = " + set.LibraryName + "\r\n";
props += "Asettype" + set.AssetType.ToString();
for(int i = 0; i < set.Size; i++)
{
AssetProperty property = set[i];
if(property is AssetPropertyString)
{
AssetPropertyString val = property as AssetPropertyString;
props += val.Name + "= " + val.Value.ToString() +"\r\n";
}
else if(property is AssetPropertyInteger)
{
AssetPropertyInteger val = property as AssetPropertyInteger;
props += val.Name + "= " + val.Value.ToString() +"\r\n";
}
else if(property is AssetPropertyEnum)
{
AssetPropertyEnum val = property as AssetPropertyEnum;
props += val.Name + "= " + val.Value.ToString() +"\r\n";
}
else if(property is AssetPropertyDouble)
{
AssetPropertyDouble val = property as AssetPropertyDouble;
props += val.Name + "= " + val.Value.ToString() +"\r\n";
}
else if(property is AssetPropertyBoolean)
{
AssetPropertyBoolean val = property as AssetPropertyBoolean;
props += val.Name + "= " + val.Value.ToString() +"\r\n";
}
else if(property is AssetPropertyReference)
{
AssetPropertyReference val = property as AssetPropertyReference;
AssetProperty value = val.Value;
if(value is AssetPropertyString)
{
AssetPropertyString valueString = value as AssetPropertyString;
props += val.Name + "= " + valueString.Value.ToString() +" Reference \r\n";
}
}
else
{
props += property.Name + property.ToString() +"Other Type " + "\r\n";
}
}
TaskDialog.Show("asdf",props);
}
}
}