如何区分 Revit 参数存储类型,因为 Revit 将布尔值存储为整数 (1,0)



我试图调用一个参数列表(来自两个不同的系列(以协调轻微的参数命名差异,并想弄清楚它是什么类型的变量。 我尝试了下面的代码:

switch (One_Param.StorageType)
{
    case StorageType.Double: { Double_Params.Add(One_Param); break; }
    case StorageType.Integer: { Integer_Params.Add(One_Param); break; }
    case StorageType.String: { String_Params.Add(One_Param); break; }
}

这并没有给我我需要的东西,因为布尔值和线宽一样存储为整数。

正确的代码是:

switch (Bogus_Param.Definition.ParameterType)
{
    case ParameterType.Length: { Correct_Param.Set(Bogus_Param.AsDouble()); break; }
    case ParameterType.Number: { Correct_Param.Set(Bogus_Param.AsDouble()); break; }
    case ParameterType.Integer: { Correct_Param.Set(Bogus_Param.AsInteger()); break; }
    case ParameterType.Text: { Correct_Param.Set(Bogus_Param.AsString()); break; }
    case ParameterType.YesNo: { Correct_Param.Set(Bogus_Param.AsInteger()); break; }
}

没有其他几个可用的参数类型,包括卷。 这种结构允许访问"实际"存储类型,并且只要您在 .设置,这很好用。 因此,您仍然为"是否"和"整数"参数类型提供一个整数。

仅供参考(通过蜘蛛网间接建议(:方法是使用参数。Definition.ParameterType.ToString((,它将返回"Length","Text","YesNo","Volume","Integer"等。由于我只寻求"YesNo",因此很容易获得布尔参数,但这也可用于比较其他值。 此方法还(很好地(为其他一些参数类型(非 null(返回字符串"无效"。

最新更新