UIDocument uidoc = commandData.Application.ActiveUIDocument;
Document doc = uidoc.Document;
//获取选择的元素,讲元素转成列表形式
var elemList = uidoc.Selection.GetElementIds().ToList();
//取得列表第一个元素
Element elem = doc.GetElement(elemList[0]);
//获取元素的类型
ElementType type = doc.GetElement(elem.GetTypeId()) as ElementType;
string str = "元素族名称:" + type.FamilyName + "/n" + "元素类型:" + type.Name;
//参数获取
// 方法一:利用LookupParameter,参数为参数名称,如果选择元素找不到参数就会报错;
Parameter p = elem.LookupParameter("面积");
string ps = p.AsValueString(); //此方法会输出公制单位
// 方法二:利用get_Parameter,参数为定义参数,如果选择元素找不到参数就会报错;
Parameter p1 = elem.get_Parameter(BuiltInParameter.HOST_AREA_COMPUTED);
string p1s = p1.AsValueString();
// 方法三:首先找出所有参数,再查找。
ParameterSet pp = elem.Parameters;
Parameter p2 = null;
foreach (Parameter p3 in pp)
{
if (p3.Definition.ParameterType==ParameterType.Area)
{
p2 = p3;
}
}
string p2s = p2.AsValueString();
TaskDialog.Show("1",ps );
Document doc = uidoc.Document;
//获取选择的元素,讲元素转成列表形式
var elemList = uidoc.Selection.GetElementIds().ToList();
//取得列表第一个元素
Element elem = doc.GetElement(elemList[0]);
//获取元素的类型
ElementType type = doc.GetElement(elem.GetTypeId()) as ElementType;
string str = "元素族名称:" + type.FamilyName + "/n" + "元素类型:" + type.Name;
//参数获取
// 方法一:利用LookupParameter,参数为参数名称,如果选择元素找不到参数就会报错;
Parameter p = elem.LookupParameter("面积");
string ps = p.AsValueString(); //此方法会输出公制单位
//string ps = p.AsDouble().ToString(); 此方法会输出英制单位。
下表是提取的4平米楼板的参数。所以在查询参数前宜先查下此参数的一些相关参数。如果提取注释参数需要用asString。一般根据storagetype来决定用哪一种storagetype的枚举值。
// 方法二:利用get_Parameter,参数为定义参数,如果选择元素找不到参数就会报错;
Parameter p1 = elem.get_Parameter(BuiltInParameter.HOST_AREA_COMPUTED);
string p1s = p1.AsValueString();
// 方法三:首先找出所有参数,再查找。
ParameterSet pp = elem.Parameters;
Parameter p2 = null;
foreach (Parameter p3 in pp)
{
if (p3.Definition.ParameterType==ParameterType.Area)
{
p2 = p3;
}
}
string p2s = p2.AsValueString();
TaskDialog.Show("1",ps );