Revit 如何健壮地参数赋值SetParameter

19 篇文章 0 订阅
16 篇文章 0 订阅

Revit 如何健壮地参数赋值SetParameter

参数赋值

其实一直都是直接set方式赋值,今天从Revit SDK sample中的Reinforcement的ParameterUtil.cs文件中获取了样例中赋值参数的方式,觉得很多细节都没有考虑到,为了代码的健壮性,总结如下:

获取参数方式

// 1 lookup一个名称,返回一个参数,如果没有找到就返回null,如果是多个满足条件,只返回第一找到的
public Parameter LookupParameter(
	string name
)

// 2 返回所有满足条件的参数
public IList<Parameter> GetParameters(
	string name
)

// 3 通过guid查找
get_Parameter(Guid) 

// 4 通过BuiltInParameter参数查找
get_Parameter(BuiltInParameter)

// 5 取出ParameterSet,自己通过名称遍历查找
ParameterSet parameters = element.Parameters;
Parameter findParameter = FindParameter(parameters, parameterName);
public static Parameter FindParameter(ParameterSet parameters, string name)
{
   Parameter findParameter = null;

    foreach (Parameter parameter in parameters)
    {
       if (parameter.Definition.Name == name)
       {
          findParameter = parameter;
       }
    }
    return findParameter;
 }

参数赋值考虑点

大概判断流程:

  1. 是否null
  2. 是否IsReadOnly
  3. 存储类型StorageType
  4. set赋值
  public static bool SetParameter(Element element, string parameterName, ref Autodesk.Revit.DB.ElementId value)
      {
         ParameterSet parameters = element.Parameters;
         Parameter findParameter = FindParameter(parameters, parameterName);
		// 是否为空
         if (null == findParameter)
         {
            return false;
         }
		// 是否只读
         if (!findParameter.IsReadOnly)
         {
            StorageType parameterType = findParameter.StorageType;
            // 存储类型:
            if (StorageType.ElementId != parameterType)
            {
               throw new Exception("The types of value and parameter are different!");
            }
            // 最后才是赋值
            findParameter.Set(value);
            return true;
         }

         return false;
      }

存储类型:

 public enum StorageType
  {
       None = 0,
       Integer = 1,
       Double = 2,
       String = 3,
       ElementId = 4
   }

BIM树洞

做一个静谧的树洞君

用建筑的语言描述IT事物;

用IT的思维解决建筑问题;

共建BIM桥梁,聚合团队。

本学习分享资料不得用于商业用途,仅做学习交流!!如有侵权立即删除!!


  • 微信公众号: BIM树洞
    在这里插入图片描述

  • 知乎专栏:BIM树洞

  • 气氛组博客:http://www.31bim.com

  • BIM应用及咨询,CAD,Revit, OpenGL,图形开发交流,加Q群1083064224

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值