基于Revit二次开发(C#语言)的模型自定义参数批量赋值技术

(整期优先)网络出版时间:2024-05-24
/ 2

基于Revit二次开发(C#语言)的模型自定义参数批量赋值技术

陈焕伟

中国交通建设股份有限公司轨道交通分公司

摘要本研究提出了一种利用C#语言进行Revit二次开发的技术,实现了对建筑信息模型(BIM)中模型构件的自定义参数进行快速批量赋值。该技术通过与Revit API的交互,允许用户根据项目需求灵活调整参数值,并通过提供完整的源代码,展示了其在提高参数赋值效率和减少重复劳动方面的应用潜力。

关键词:Revit二次开发;C#编程;BIM参数化;自动化赋值

一、引言

Revit 是一款建筑信息模型(BIM)软件,它提供了丰富的 API 接口,允许用户通过编程方式对模型进行定制和扩展。在 Revit 模型中,参数是模型元素的重要属性之一,它们可以用来表示模型元素的各种特性,如尺寸、材质、位置等。在实际应用中,经常需要对模型中的大量参数进行赋值,以满足施工要求。传统的手动赋值方式效率低下,容易出错,操作步骤繁琐。因此,开发一种模型参数批量赋值技术具有重要的实际意义。

二、技术原理

在数字化建筑设计的浪潮中,Revit作为一款强大的BIM软件,为建筑设计师提供了从概念到施工图的全流程解决方案。批量赋值技术的核心在于利用Revit API提供的方法和属性,通过编程实现对模型参数的自动化操作。这一技术的实现,不仅大大提高了建模效率,更保证了数据的一致性和准确性。

1)导出模型构件列表数据

2)添加模型构件的相应自定义参数名称

3)在Revit项目环境中读取Excel表,实现一键批量赋值

三、实现步骤

(一)数据导出

1)创建一个 C# Revit 二开项目。

2)程序入口处需实现IExternalCommand接口并创建UIDocument对象、Document对象,方便程序内相关代码调用。

3)通过uIDocument.Selection.PickObjects(Autodesk.Revit.UI.Selection.ObjectType.Element)方法选择需要修改的模型集合。

再通过document.GetElement(references).Id.ToString()document.GetElement(references).Name.ToString() 获得每个模型元素的名称及ID(用于匹配元素实例)

4)通过EPPlus库中excelWorksheet.Cells[i, j].Value属性将名称及ID写入本地Excel表格中,并通过excelPackage.Save()方法保存至本地

(二)数据导入

1)在导出的excel中添加参数名称(与模型元素中自定义实例参数相一致)

2通过EPPlus库中的excelWorksheet.Cells[i, j].Value属性获取excel表格中的模型元素ID、参数名称、参数值。并通过list.Add()方法将数据储存于程序集合内。

3通过document.GetElement(new ElementId(Convert.ToInt32(Id集合[i])))方法,找到指定ID的模型元素。

4)通过element.LookupParameter(参数名集合[i])方法,找到模型元素的对应的对应实例参数,再通过parameter.Set(参数值集合[i])方法将指定的参数值写入模型元素中。

核心代码节选:

Excel excel2 = new Excel();

List参数名 = new List();

List> 参数集 = new List>();

excel2.ReadExcels(form.path);

参数集 = excel2.参数集;

参数名 = excel2.参数名;

using (Transaction transaction = new Transaction(document, "adds"))

{

     transaction.Start();

     foreach (var 参数值 in 参数集)

     {

         Element element = null;

         element = document.GetElement(new ElementId(Convert.ToInt32(参数值[0])));

         for (global::System.Int32 i = 0; i < 参数名.Count; i++)

         { Parameter parameter = null;

             parameter = element.LookupParameter(参数名[i]);

             if (parameter == null)

             {TaskDialog.Show("提示", "未找到" + 参数名[i] + "族参数!");

                 return Result.Failed;}

             parameter.Set(参数值[i + 1]); } }

     transaction.Commit(); }

TaskDialog.Show("提示", "参数赋值成功!\n共赋值" + 参数集.Count.ToString() + "个实例!");}

}        }

5)保存文件:赋值完成后,使用 Revit API 中的Document.Save()方法保存文件。

(三)配置环境及程序应用

1)配置Add-In Manager(插件管理器),将Add插件文件复制至C:\ProgramData\Autodesk\Revit\Addins\2020,安装成功后Revit界面中会出现下图内容。

Add-In Manager(插件管理器)界面示意图

2)在 Visual Studio中生成二次开发插件解决方案,并将生成的dll文件添加至Add-In Manager插件管理器中,具体操作为再上图界面中“附加模块-外部工具-Add-In Manager(Manual Mode)-Load加载dll文件”,从而实现将dll文件加载至插件管理器中。

3)在Add-In Manager插件管理器中找到导入的插件程序并运行。

4)至此,基于Revit二次开发(C#语言)的模型自定义参数批量赋值技术功能就实现了!(因篇幅有限,具体源代码参见链接:https://pan.baidu.com/s/1jRhH1Brv55qcDqjIFV0mQQ?pwd=1111 提取码:1111

四、讨论

基于Revit的二次开发(特别是使用C#语言)为建筑信息模型(BIM)带来了巨大的灵活性和扩展性。Revit API 允许开发者创建自定义插件,这些插件能够自动化任务、优化建模流程、提高数据质量,并与其他系统进行集成。

在Revit中,任何模型构件都有自身的各种参数,本插件的调用的revitAPI接口不止可以修改系统内置BuiltInParameter参数,对于用户新建的自定义参数也能够实现批量化修改。未来可以考虑通过智能化算法,自动选择符合条件的元素并进行赋值,从而进一步减少用户的工作量。

五、结论

C#作为.NET框架下的一种强大的编程语言,在Revit二次开发领域具有广阔的应用前景。Revit作为建筑信息模型(BIM)的核心软件,为建筑、结构和机电等。利用C#对Revit项目进行数据分析,可以发现设计中的潜在问题,为项目优化提供依据。例如,通过分析建筑模型的能耗数据,可以为绿色建筑设计提供参考。

六、参考文献

[1] 张红蕾, 李君,王洪涛. 基于Revit的古建筑信息模型构建与应用[J]. 四川建筑科学研究, 2020, 46(6): 115-119.

[2] 杨强, 李英攀, 王全超. BIM技术在地铁车站结构设计中的应用研究[J]. 工程技术研究, 2022, 7(23): 34-37.

[3] 王健, 王进. 基于Revit的桥梁参数化设计与应用[J]. 中外公路, 2021, 41(5): 115-120.

作者简介:陈焕伟1992.3- ),男 ,汉族 ,河北沧州学士工程师从事方向:BIM技术软件二次开发、市政工程施工