🌓
搜索
 找回密码
 立即注册

BKM · Revit二次开发12—获取构件参数

admin 2020-4-10 18:59:46 81915
之前有说到过BIM模型其实就是一个结构化的数据库,这个数据库按照特定的排列规则,在BIM模型中就是构件和语义的排序规则,今天我们就通过Revit二次开发获取构件参数。
思路:以墙为例,通过选择单个或者多个墙的方法,获取构件的id,通过id获取构件,再获取构件的参数。
准备材料:Visual Studio 2017,Revit 2017。

1.创建代码

复制以下代码到VS。
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Windows.Forms;using System.IO;using System.Data;using Autodesk.Revit;using Autodesk.Revit.UI;using Autodesk.Revit.UI.Selection;using Autodesk.Revit.DB;using Autodesk.Revit.DB.Architecture;using Autodesk.Revit.Attributes;
namespace GetElementParameters{ [Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)] [Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)] [Journaling(Autodesk.Revit.Attributes.JournalingMode.NoCommandData)] public class get_parameters : IExternalCommand { public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { Autodesk.Revit.ApplicationServices.Application app = commandData.Application.Application; Document doc = commandData.Application.ActiveUIDocument.Document; UIApplication uiapp = commandData.Application; UIDocument uiDoc = uiapp.ActiveUIDocument; Selection selection = uiDoc.Selection; ICollection<ElementId> selectedIds = uiDoc.Selection.GetElementIds(); if (0 == selectedIds.Count) { // 如果没有选择元素 TaskDialog.Show("开发提示框", "请先选择一个构件"); } else { String info = "选择到的元素:"; foreach (ElementId id in selectedIds) { Element element = doc.GetElement(id); info += "\n\t类型名称:" + element.Name.ToString(); info += " id:"+id.IntegerValue; info += " 长度:"+element.get_Parameter(BuiltInParameter.CURVE_ELEM_LENGTH).AsValueString(); info += " 体积:" + element.get_Parameter(BuiltInParameter.HOST_VOLUME_COMPUTED).AsValueString(); info += " 标高:" + element.get_Parameter(BuiltInParameter.WALL_BASE_CONSTRAINT).AsValueString(); } TaskDialog.Show("开发提示框", info); } return Result.Succeeded; } }}
记得在引用中添加RevitAPI和系统引用。

2.代码解释

这里最核心的思想就是通过内置参数(BuildInParameter )来获取到构件参数,BuildInParameter 无视语言,这种方法十分的有效和简单。
一般我们在Lookup中查找想要的BuildInParameter ,顺序:选中构件>Snoop Current Selection>Parameters

点击上方的Definition,弹出以下窗口,红色箭头就是BuiltInParameter,右键可以复制。

另外,这里有Snoop Built-In Parameters和Snoop Built-In Enum Mappings
Snoop Built-In Parameters是查看Built-In Parameter的各种属性和方法,注意红框内是我们经常使用到的将Revit自身的各种数据类型的方法转换成C#中常用的数据类型,以方便和C#进行整合使用。

Snoop Built-In Enum Mappings更像是一个Built-In Parameter和中文的对照表,左边那一列就是内置参数了。

3.编译代码

点击上方生成>生成解决方法,复制一下生成的文件路径。

4.加载到Revit

打开Revit,通过Add-In Manager将代码加载到Revit。

5. 运行代码

选中构件,这里可以选择一个墙体,也可以选中多个墙体,运行载入的dll文件,弹出窗口。

总  结


在Revit二次开发中会经常用到获取构件的参数,这也是对BIM模型的信息获取的方法。
欢迎加入QQ群:427981585。
微信公众号【BIM技术应用交流】后台回复“二开12”获取本期源代码。
欢迎关注知乎专栏【BKM - Revit二次开发】

扫一扫

101702.jpg
随机推荐

最新主题

0 回复

高级模式
游客
返回顶部