You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过C#获取Revit元素的所有参数及值 现有代码故障如何修复

Revit C# 获取元素所有参数及对应值代码修复方案

原有代码问题分析

  • 仅筛选参数名与元素名称一致的参数,完全过滤了其他参数,无法拿到全部参数结果
  • element.GetParameters(element.Name)调用后未使用返回结果,属于无效冗余代码
  • 入参IList<ElementId> elementIds未被使用,若需批量获取多元素参数,现有逻辑仅支持单个Reference对应元素的处理

修复后代码

场景1:仅获取单个元素的所有参数

/// <summary>
/// 获取单个元素的所有参数集合
/// </summary>
/// <param name="reference">选中元素的引用</param>
/// <param name="doc">当前Revit文档</param>
/// <returns>元素所有参数列表</returns>
public IList<Parameter> GetAllParametersOfSingleElement(Reference reference, Document doc)
{
    // 若原有SelectElement方法已做空值校验、异常处理等逻辑,可以替换下方代码
    Element element = doc.GetElement(reference);
    if(element == null) return new List<Parameter>();
    
    IList<Parameter> allParams = new List<Parameter>();
    foreach (Parameter p in element.Parameters)
    {
        allParams.Add(p);
    }
    // 也可以用LINQ简化实现:return element.Parameters.Cast<Parameter>().ToList();
    return allParams;
}

场景2:批量获取传入ID集合的所有元素参数

/// <summary>
/// 批量获取多个元素的所有参数集合
/// </summary>
/// <param name="doc">当前Revit文档</param>
/// <param name="elementIds">待获取参数的元素ID集合</param>
/// <returns>所有元素的参数列表,可自行增加元素标识区分参数所属元素</returns>
public IList<Parameter> GetAllParametersOfMultipleElements(Document doc, IList<ElementId> elementIds)
{
    IList<Parameter> allParams = new List<Parameter>();
    foreach (ElementId id in elementIds)
    {
        Element element = doc.GetElement(id);
        if(element == null) continue;
        foreach (Parameter p in element.Parameters)
        {
            allParams.Add(p);
        }
    }
    return allParams;
}

获取参数对应值的方法

拿到Parameter对象后,可根据需求选择对应方法取值:

  • 直接获取用户界面显示的参数值:调用p.AsValueString()
  • 根据参数存储类型精准取值:
    • 存储类型为字符串:p.AsString()
    • 存储类型为数值:p.AsDouble(),返回值为Revit内部单位值,如需转成项目单位可配合UnitUtils.ConvertFromInternalUnits()方法转换
    • 存储类型为元素ID:p.AsElementId()
    • 存储类型为整数/布尔值:p.AsInteger(),布尔值场景下1对应True,0对应False

内容的提问来源于stack exchange,提问作者user16687043

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 09:42:03