Revit二次开发之“遍历材质判断材质类别的新方法”BuiltInParameter.PHY_MATERIAL_PARAM_CLASS

老版本API的方法:
if (material is MaterialSteel)
新版本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;
    }
}
from:http://revit.5d6d.com/thread-1253-1-1.html
posted @ 2011-09-19 08:11  大气象  阅读(1598)  评论(0编辑  收藏  举报
http://www.tianqiweiqi.com