miki969696

revit 设置参数和获取参数值

设置参数  

// 获取长度参数L
Parameter paramL = selectedElement.LookupParameter("L");

if (paramL == null)
{
    message = "所选图元不包含参数L";
    trans.RollBack();
    return Result.Failed;
}

if (paramL.IsReadOnly)
{
    message = "参数L为只读,无法修改";
    trans.RollBack();
    return Result.Failed;
}

// 验证参数类型
if (paramL.Definition.ParameterType != ParameterType.Length)
{
    message = "参数L不是长度类型参数";
    trans.RollBack();
    return Result.Failed;
}

// 将毫米转换为英尺(内部单位)
double valueInFeet = UnitUtils.ConvertToInternalUnits(1008, DisplayUnitType.DUT_MILLIMETERS);

// 设置参数值
paramL.Set(valueInFeet);

获取参数--长度


ParameterSet parameters = element.Parameters;
foreach (Parameter parameter in parameters)
{
   if(parameter.Definition.Name == "长度" && parameter.StorageType == StorageType.Double)
   {
      double length = parameter.AsDouble();
      // 使用length
      break;
   }
}

builit in paremeter获取参数  -长度

Wall wall = null;
Parameter parameterLength = wall.get_Parameter(BuiltInParameter.CURVE_ELEM_LENGTH);
if (parameterLength != null && parameterLength.StorageType == StorageType.Double)
{
   double length = parameterLength.AsDouble();
   // 使用length
}
获取类别与参数的绑定
BindingMap map = RevitDoc.ParameterBindings;
DefinitionBindingMapIterator dep = map.ForwardIterator();
while (dep.MoveNext())
{
   Definition definition = dep.Key;
   // 获取参数定义的基本信息
   string definitionName = definition.Name;
   ParameterType parameterType = definition.ParameterType;
   // 几乎都可以转型为InstanceBinding,笔者没有碰到过其他情况,如有例外,请联系我们。
   InstanceBinding instanceBinding = dep.Current as InstanceBinding;
   if (instanceBinding != null)
   {
      // 获取绑定的类别列表
      CategorySet categorySet = instanceBinding.Categories;
   }
}
 
 
 
 

posted on 2025-10-31 00:56  盛书伟  阅读(2)  评论(0)    收藏  举报

导航