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;
}
}