对于Revit拾取到的一个构件,使用Parameters得到的参数:(实例参数集合)
以下为取得参数及参数值的简单代码:
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
UIDocument uiDoc = commandData.Application.ActiveUIDocument;
Document doc = uiDoc.Document;
Element element = doc.GetElement(uiDoc.Selection.PickObject(ObjectType.Element,"Pick an object"));
StringBuilder sb = new StringBuilder();
foreach (Parameter param in element.Parameters)
{
sb.AppendLine(GetParameterInformation(param,doc));
}
TaskDialog.Show("Infor",sb.ToString());
return Result.Succeeded;
}
string GetParameterInformation(Parameter param, Document doc)
{
string defName = param.Definition.Name + ":"; ;
string defValue = string.Empty;
switch (param.StorageType)
{
case StorageType.Double:
//defValue = UnitUtils.ConvertFromInternalUnits(param.AsDouble(), param.DisplayUnitType).ToString();
defValue = param.AsValueString();
break;
case StorageType.ElementId:
ElementId id = param.AsElementId();
if (id.IntegerValue >= 0)
{
defValue = doc.GetElement(id).Name;
}else
{
defValue = id.IntegerValue.ToString();
}
break;
case StorageType.Integer:
if (param.Definition.ParameterType == ParameterType.YesNo)
{
if (param.AsInteger() == 0)
{
defValue = "false";
}
else
{
defValue = "true";
}
}else
{
defValue = param.AsInteger().ToString();
}
break;
case StorageType.String:
defValue = param.AsString();
break;
default:
defValue = param.AsValueString();
break;
}
return defName + defValue;
}