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