欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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上的一致。

读写族参数的要求和工程文档中的读写参数的要求相同。

注意:在设置族参数的值以前,必须确保当前族类型是存在的。

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

=========【更多高级应用请关注公众号】========

Revit开发之设置族参数的值

==================================




相关标签: RevitAPI