关注公众号及时获取文章更新

注:本文转自公众号: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

Revit二次开发—参数的读取与写入相关推荐

  1. revit二次开发——基于teigha读取CAD几何与文字(提供源码、引用包与异常解决)

    一.基于Teigha的开源dll,详细说明见以下博客: Revit二次开发--读取cad中的文字信息_niuge No.1的博客-CSDN博客 二.使用注意事项: 1.下载64位Teigha完整包: ...

  2. revit 二次开发 模型线读取

    目前只能读取模型线长度,闭合的区域读不到面积 UIApplication uiapp = commandData.Application;UIDocument uidoc = uiapp.Active ...

  3. revit 二次开发 填充区域读取

    读取填充区域的面积和周长 UIApplication uiapp = commandData.Application;UIDocument uidoc = uiapp.ActiveUIDocument ...

  4. Revit二次开发 如何获得链接CAD中所有的多段线PolyLine?

    项目场景: 最近做的这个项目,涉及到提取链接CAD中的所有多段线,并根据这些多段线的几何信息做一些分析,但是产生了一些意想不到的问题. 问题描述 通过网上流传的提取手段,并不能完全提取CAD中的所有多 ...

  5. Revit二次开发之使用外部程序集DT_Mgd读取CAD图遇到的问题

    Revit二次开发学习笔记(一) 最近学习在revit中读取链接的CAD图纸信息(包括文字.图层.各种线型),由于小白也是初学者,遇到了一些问题,如图所示: 通过大量查阅参考资料发现,问题是:在类库项 ...

  6. Revit二次开发_1.过滤器笔记篇

    Revit二次开发_1.过滤器笔记篇 前言 对象分类 过滤方法 前言 最近在用过滤器功能,先按照教程做了筛选墙,再自己做了筛选常规模型的功能,发现有点不一样,问题在于筛选这些Elements的时候没弄 ...

  7. Revit二次开发之绘制钢筋

    第一次在博客园上写东西,也不知道该写些什么,我想就写点最近项目到遇到的问题吧. 最近在做一个小项目,具体需求大概是在一个revit模型中的对应的楼板位置绘制钢筋. 由于刚接触Revit二次开发,之前也 ...

  8. Revit二次开发从入门到精通学习之路, (含Revit二次开发教程下载)

    Revit二次开发从入门到精通学习之路 Autodesk Joe Ye叶雄进 2. 18 2014    yexiongjin@hotmail.com Revit在国内的应用越来越广泛, Revit ...

  9. Revit二次开发案例一(第1讲)

    这期起,将为大家带来二次开发的小案例讲解,通过借助Revit建模与二次开发,帮助大家快速提高开发水平,快快参加吧!!! 族实例是通过族类型创建的,而创建族实例是Revit二次开发尤其重要的,因此小伙伴 ...

最新文章

  1. Linux的僵尸进程及其解决方法(转)
  2. (花里胡哨)New Game!(牛客国庆集训派对Day1)
  3. 你必须知道的 SmartSql
  4. aws linux 安装图形,linux – 用于安装AWS CLI工具的Bash脚本
  5. (十二) 简单使用 Dockerfile 保留字指令,尝试自定义centos镜像
  6. mysql分组去掉重复记录_MYSQL中GROUP分组去除重复数据
  7. torch随机数 manual_seed
  8. 《21天学通C语言(第7版)》一6.4 小 结
  9. 计算机并口被禁用,电脑并口被禁用怎么办
  10. Snipaste操作指南
  11. php 更换外网ip,WordPress站点更换公网IP后不能正常访问的解决过程
  12. RedHat8.0配置本地yum源
  13. 计算机管理中误删用户,win10管理员账户删除了怎么解决?
  14. 【设备管理系统】-部署到正式环境
  15. android 获取视频编码,Android视频编码
  16. [jzoj 1273] 袁绍的刁难 {推理}
  17. 2022 云栖大会 | 一体化大数据智能峰会预约开启
  18. 转: angularjs学习总结(~~很详细的教程)
  19. 到底股票交易员的工作怎么样?上班时间和其他岗位一样吗
  20. datagrid之修改

热门文章

  1. HDU - 1495 非常可乐(BFS,数学)
  2. 专属海报小程序_轻松生成小程序分享海报
  3. 在flutter使用地图插件进行定位
  4. 【无标题】利用C#连接阿里云RSD数据库mysql服务器
  5. 遮罩层——通过阴影弱化背景的四种方案
  6. 江南大学计算机专硕学硕,考研择校分析 — 江南大学
  7. 谈谈PHP中的trait
  8. Vmware ESXi安装群晖Synology DSM 5.x
  9. python输出保留两位小数怎么表示_python中保留两位小数怎么表示
  10. python软件下载-Python3.8下载