Revit二次开发—参数的读取与写入

注:本文转自公众号:BIMCoder梁老师

一、前言

在Revit二次开发中,参数是非常重要的组成部分,那么我们该如何从构件获取参数并修改该参数。

二、方法

      首先得到一个Element后,有如下几个获取参数的方法:

1. e.Parameters

2. e.GetParameters(string name)

3. e.get_Parameter(BuiltInParameter parameterId)

4. e.LookupParameter(string name)

我们面对这么多获取Parameter的方法该如何选择呢?

首先第三种方式是最保险的,根据BuiltInParameter枚举来获取。

根据名字来获取的方式次之,就像一个班级里叫小明的有好几个,但是学号却是唯一的。注意并不是所有参数都是BuiltInParameter,我们最好在获取参数之前用LookUp查看一下。

我们以一堵墙为例

双击Parameters (Lookup此处用的就是e.Parameters来获取该Element所有参数)

选择你想获取的参数,然后点击Definition,可以看到此Built in param 为WALL_BASE_OFFSET。既然这该参数为BuiltInParameter,那么:

e.get_Parameter(BuiltInParameter.WALL_BASE_OFFSET)

使用e.GetParameters(string name)或者e.LookupParameter(string name)一定要注意检查是否为null。

var ps = e.GetParameters("参数1");

因为名称叫“参数1”的参数可能没有(即为null),也可能有多个。

当该参数不是BuiltInParameter,你又不确定叫“参数1”的参数有几个时果断选择e.GetParameters("参数1");

var p = e.LookupParameter("参数1");

p也要检查是否为null.

*************************************************************************************

当我们获取到参数p,即Parameter对象时该如何获取其参数值呢?

这时候需要先判断该parameter的StorageType,即存储类型。

该属性是一个枚举类型

举例:

if(p.StorageType == StorageType.Integer)

{

    var pvalue = p.AsInteger();

}

*************************************************************************************

该如何写入参数:

  1. 判断该参数是否是ReadOnly (p.IsReadOnly)

  2. 判断该参数交互时是否可修改(p.UserModifiable)

  3. 判断该参数的StorageType

  4. 将要写入该参数的值转换为相应的数据类型,然后Set().

简单示例:pvalue假设是一个string

猜你喜欢

转载自blog.csdn.net/weixin_40626630/article/details/84076202