Revit二次开发之“遍历材质判断材质类别的新方法”BuiltInParameter.PHY_MATERIAL_PARAM_CLASS
老版本API的方法:
from:http://revit.5d6d.com/thread-1253-1-1.html
if (material is MaterialSteel)
新版本API的方法:
新版本API的方法:
Parameter curPara = material.get_Parameter(BuiltInParameter.PHY_MATERIAL_PARAM_CLASS);
if (curPara.AsInteger()==(int)StructuralMaterialType.Steel)
全部代码如下:
全部代码如下:
[Transaction(TransactionMode.Manual)]
[Regeneration(RegenerationOption.Manual)]
public class cmdMaterial : IExternalCommand
{
public Result Execute(ExternalCommandData cmdData, ref string msg, ElementSet elements)
{
UIDocument uiDoc = cmdData.Application.ActiveUIDocument;
FilteredElementCollector collector = new FilteredElementCollector(uiDoc.Document);
collector.OfClass(typeof(Material));
FilteredElementIterator materialItr = collector.GetElementIterator();
materialItr.Reset();
int i = 0;
#region 新方法
while (materialItr.MoveNext())
{
Material material = materialItr.Current as Material;
Parameter curPara = material.get_Parameter(BuiltInParameter.PHY_MATERIAL_PARAM_CLASS);
switch (curPara.AsInteger())
{
case (int)StructuralMaterialType.Steel:
TaskDialog.Show("新方法", material.Name);
break;
}
}
#endregion
#region 过时的方法
materialItr.Reset();
while (materialItr.MoveNext())
{
i = i + 1;
Material material = materialItr.Current as Material;
if (material is MaterialSteel)//steel金属
{
MaterialSteel steelMa = material as MaterialSteel;
TaskDialog.Show("steel", steelMa.Name);
}
}
#endregion
TaskDialog.Show("count", i + "");
return Result.Succeeded;
}
}
[Regeneration(RegenerationOption.Manual)]
public class cmdMaterial : IExternalCommand
{
public Result Execute(ExternalCommandData cmdData, ref string msg, ElementSet elements)
{
UIDocument uiDoc = cmdData.Application.ActiveUIDocument;
FilteredElementCollector collector = new FilteredElementCollector(uiDoc.Document);
collector.OfClass(typeof(Material));
FilteredElementIterator materialItr = collector.GetElementIterator();
materialItr.Reset();
int i = 0;
#region 新方法
while (materialItr.MoveNext())
{
Material material = materialItr.Current as Material;
Parameter curPara = material.get_Parameter(BuiltInParameter.PHY_MATERIAL_PARAM_CLASS);
switch (curPara.AsInteger())
{
case (int)StructuralMaterialType.Steel:
TaskDialog.Show("新方法", material.Name);
break;
}
}
#endregion
#region 过时的方法
materialItr.Reset();
while (materialItr.MoveNext())
{
i = i + 1;
Material material = materialItr.Current as Material;
if (material is MaterialSteel)//steel金属
{
MaterialSteel steelMa = material as MaterialSteel;
TaskDialog.Show("steel", steelMa.Name);
}
}
#endregion
TaskDialog.Show("count", i + "");
return Result.Succeeded;
}
}
我这个博客废弃不用了,今天想寻找外链的时候,突然想到这个博客权重很高。
有需要免费外链的,留言即可,我准备把这个博客变成免费的友情链接站点。