Revit开发之设置族参数的值
程序员文章站
2022-06-11 08:07:29
...
族参数的值是关联于族类型的,在每个族类型中都储存了各自类型的参数值,使用API以实现读写族参数的值,读写方法略有不同。
(1)读取参数值
Autodesk. Revit. DB. FamilyType 类:
• double? AsDouble(FamilyParameter familyParameter)
• Elementld AsElementId(FamilyParameter familyParameter)
• int? AsInteger(FamilyParameter familyParameter)
• string AsString(FamilyParameter familyParameter)
• string AsVaiueString(FamilyParameter familyParameter)
与在工程文件里面读取参数的方式类似,族参数有四种存储类型,所以有四种对应的读取函数;而AsValueString函数可以得到参数值的可视字符串。
唯一不同的是,族参数是绑定到族类型的,需要先从族管理类中得到族类型和族参数,再来得到该参数在该类型上对应的值。
(2)设置参数值
Autodesk. Revit. DB. FamilyManager 类:
• void Set(FamilyParameter familyParameter,double value)
• void Set(FamilyParameter familyParameter, ElementId value)
• void Set(FamilyParameter familyParameter, int value)
• void Set(FamilyParameter familyParameter, string value)
和读取族参数不同,设置族参数的方法在族管理类内,而需要的输入参数只有族参数和参数的值。前面提到,一个族参数的值对应于一个族类型的,所以该函数设置的值到当前族类型的,这个功能和UI上的一致。
读写族参数的要求和工程文档中的读写参数的要求相同。
(1)读取参数值
Autodesk. Revit. DB. FamilyType 类:
• double? AsDouble(FamilyParameter familyParameter)
• Elementld AsElementId(FamilyParameter familyParameter)
• int? AsInteger(FamilyParameter familyParameter)
• string AsString(FamilyParameter familyParameter)
• string AsVaiueString(FamilyParameter familyParameter)
与在工程文件里面读取参数的方式类似,族参数有四种存储类型,所以有四种对应的读取函数;而AsValueString函数可以得到参数值的可视字符串。
唯一不同的是,族参数是绑定到族类型的,需要先从族管理类中得到族类型和族参数,再来得到该参数在该类型上对应的值。
(2)设置参数值
Autodesk. Revit. DB. FamilyManager 类:
• void Set(FamilyParameter familyParameter,double value)
• void Set(FamilyParameter familyParameter, ElementId value)
• void Set(FamilyParameter familyParameter, int value)
• void Set(FamilyParameter familyParameter, string value)
和读取族参数不同,设置族参数的方法在族管理类内,而需要的输入参数只有族参数和参数的值。前面提到,一个族参数的值对应于一个族类型的,所以该函数设置的值到当前族类型的,这个功能和UI上的一致。
读写族参数的要求和工程文档中的读写参数的要求相同。
注意:在设置族参数的值以前,必须确保当前族类型是存在的。
public void SetFamilyParameterValue(
FamilyManager familyMgr, FamilyParameter lengthPara,
FamilyParameter commentPara, FamilyParameter IntPara,
FamilyParameter materialPara, ElementId newMaterialId)
{
// 首先需要判断当前族类型是否存在,如果不存在,读写族参数都是不可行的
FamilyType currentType = familyMgr.CurrentType;
if (null == currentType)
return;
// 读写长度类型的族参数;他的储存类型为double
double length = currentType.AsDouble(lengthPara).Value;
familyMgr.Set(lengthPara, length + 1.25);
// 读写文字类型的族参数;他的储存类型为string
string comment = currentType.AsString(commentPara);
familyMgr.Set(commentPara, "新的注释");
// 读写整数类型的族参数;他的储存类型为int
int integerVale = currentType.AsInteger(IntPara).Value;
familyMgr.Set(IntPara, integerVale + 3);
// 读写材质类型的族参数;他的储存类型为ElementId
ElementId materialId = currentType.AsElementId(materialPara);
familyMgr.Set(materialPara, newMaterialId);
// 您可以读写族参数的可视化文字表示的值
string lengthText = currentType.AsValueString(lengthPara);
familyMgr.SetValueString(lengthPara, "10m");
}
=========【更多高级应用请关注公众号】========
==================================
推荐阅读