• ISSN: 1674-7461
  • CN: 11-5823/TU
  • 主管:中国科学技术协会
  • 主办:中国图学学会
  • 承办:中国建筑科学研究院有限公司

Revit-Abaqus结构模型转换接口开发

徐雪梅, 何翔, 段翔, 蔡涛, 张广

徐雪梅, 何翔, 段翔, 蔡涛, 张广. Revit-Abaqus结构模型转换接口开发[J]. 土木建筑工程信息技术, 2023, 15(1): 89-93. DOI: 10.16670/j.cnki.cn11-5823/tu.2023.01.16
引用本文: 徐雪梅, 何翔, 段翔, 蔡涛, 张广. Revit-Abaqus结构模型转换接口开发[J]. 土木建筑工程信息技术, 2023, 15(1): 89-93. DOI: 10.16670/j.cnki.cn11-5823/tu.2023.01.16
Xuemei Xu, Xiang He, Xiang Duan, Tao Cai, Guang Zhang. Development of Revit_Abaqus Structural Model Conversion Interface[J]. Journal of Information Technologyin Civil Engineering and Architecture, 2023, 15(1): 89-93. DOI: 10.16670/j.cnki.cn11-5823/tu.2023.01.16
Citation: Xuemei Xu, Xiang He, Xiang Duan, Tao Cai, Guang Zhang. Development of Revit_Abaqus Structural Model Conversion Interface[J]. Journal of Information Technologyin Civil Engineering and Architecture, 2023, 15(1): 89-93. DOI: 10.16670/j.cnki.cn11-5823/tu.2023.01.16

Revit-Abaqus结构模型转换接口开发

详细信息
    作者简介:

    徐雪梅(1998-), 女, 在读硕士研究生, 主要研究方向: BIM技术应用与研究

  • 中图分类号: TU17

Development of Revit_Abaqus Structural Model Conversion Interface

  • 摘要: 本文针对有限元模型设计分析软件Abaqus建模工作效率低下的问题, 提出了开发Revit-Abaqus结构模型转换接口的方法。根据Autodesk公司提供的Revit API可定制化技术, 本文通过C#编程语言对Revit与Abaqus转换接口进行研究。通过提取Revit结构物理模型与结构分析模型数据, 整理为Abaqus可运行的Python脚本, 实现了将模型从Revit转换到Abaqus软件中, 提高了建模与计算分析的效率。
    Abstract: Aiming at the low efficiency of finite element model design and analysis software Abaqus, this article proposes a method of developing Revit-Abaqus structure model conversion interface. According to the Revit API customization technology provided by Autodesk, this article studies the conversion interface between Revit and Abaqus by C # programming language. By extracting the data of Revit structural physical model and structural analysis model, a runnable Python script is organized for Abaqus, and the model can be transformed from Revit to Abaqus, which improves the efficiency of modeling and calculation analysis.
  • Revit在BIM技术的发展过程中起着重要的作用,对比传统建筑设计有着协作、数据共享和信息化的特点,不再像传统二维设计串行式作业,而是使各生产阶段相互联系转变为并行式作业[1],其超强的互动控制功能,将平面、立体、剖面及明细表等双向联系,一点改动,处处更改,有效减少设计错漏。许多行业实践表明,Revit设计可有效节约生产成本,减少设计变更,提高施工效率。

    Revit API是Autodesk公司让Revit能更好地解决用户需要而提供的二次开发接口。已经有不少的开发人员成功地通过Revit API开发Revit与第三方软件的接口。到目前为止,已经能够实现Revit与PKPM、ANSYS、STAAD.Pro、YJK、Bently等软件的模型数据的双向导入和增量更新[2-6]。宋杰[1]提供了一个利用Revit和Revit API技术进行的模板转化方式,使用C#编程语言实现了二次开发,将由Revit所获得的数据结果整合为ANSYS APDL命令流格式,以此完成Revit-ANSYS模式的直接转化。秀保娟[8]通过调用Revit API获得Revit建模数据信息、并在PKPM中建立了Revit模块,研发了Revit-PKPM双向接口软件。王玄玄[9]运用Revit API转换接口,提取数据最终生成Abaqus可识别的INP文件,实现了Revit中复杂结构模型导入Abaqus进行精确的结构计算分析。

    Abaqus被普遍认为是有限元软件操作系统,有助于解析复杂的固态力学构件或流体力学体系,尤其有助于驾驭超大规模、高复杂度问题并解决高度不确定性问题。Abaqus与建模功能强大的软件Revit的接口目前只能够实现结构物理模型从Revit到Abaqus的转换,但对于进行计算分析的约束条件与荷载工况信息的转换研究较少。本文将结合Revit强大的建模功能与Abaqus先进的非线性有限元分析功能进行二次开发,将Revit结构物理与分析模型完整导入Abaqus,实现更精确的复杂构造计算分析。

    对于Revit模型,在Abaqus中重建模型可通过ACIS的模型转换方式,ACIS是Abaqus软件和Revit软件共同支持的三维几何造型引擎,两者基于此都支持.sat文件的导入和导出,理论上这就为Revit-Abaqus模型转换提供了便捷的接口。但这种方式有以下三方面问题:一是.sat文件只存储结构的几何模型,目前也仅支持以part形式导入Abaqus,因此还需在Abaqus中手动完成材料指派、楼层装配、设置时间步、构件连接、施加荷载及网格划分等步骤;二是导入的模型是一个完整闭合的几何图形,不能直接进行单元网格划分,需要手动切割出单元几何形状,且需要修复填补才能划分出高质量并计算精确的网格;三是通过.sat文件导入可能出现几何数据的丢失或者转换不彻底的情况。

    因此基于ACIS的转换方式效果并不理想。本文将对Revit-Abaqus进行二次开发,实现将Revit结构物理模型与结构分析模型数据完整导入Abaqus,无需手动完成part后步骤,一次性导入模型数据完成计算分析。

    Abaqus有着多种建模的方式:

    (1) CAE:在Abaqus中新建CAE直接建模是基本的建模方法,但人工操作工作量大,不能实现自动化,不能实现从Revit直接转入;

    (2) 直接填写Keyword文件:写Keyword工作量较大,除非很多相同的部分,简单的装配;

    (3) Python script: Python脚本语言简单易懂,并且Abaqus软件中自带的脚本录入开发工具能够读取大量脚本代号,再经过修改与合并,就可以进行Python脚本编辑。还可以把研究变量设定成Python脚本中的函数自变量,建立参数化模型设计脚本,通过修改关键参数即可修改研究变量,可实现对单一因素变化快速模型分析计算的目标[10]。因此本文将采用Python script方式对Revit与Abaqus进行二次开发。

    在结构设计完成后的Revit模型中包括结构物理模型和结构分析模型数据,其中物理模型数据包含几何尺寸、材质信息、楼层信息等;结构分析数据包含荷载工况、构件两端约束、边界条件信息等。两者都是Abaqus建模并完成计算分析所必不可少的,其在Revit与Abaqus中的模型信息对照如表 1所示。

    表  1  Revit与Abaqus模型信息对照
    Revit模型可提取数据 Python脚本对应步骤
    构件坐标,几何尺寸
    材料,截面参数
    位置信息
    Part
    property
    Assembly
    边界条件
    荷载信息
    Interaction
    load
    下载: 导出CSV 
    | 显示表格

    基于前面对Abaqus建模方式的讨论,如何将Revit模型数据完整的导出、进而在Abaqus中生成模型并计算是要解决的问题。由表 1可知,Revit可直接获取的数据与Abaqus通过编写Python脚本建模完成计算分析所必需的大量数据吻合,适宜于利用二次开发技术手段来进行数据的提取和转存。因此对于RevitAbaqus转换接口开发, 本文的开发思路是:基于Visual Studio2017平台,利用运行在.NET平台下的C#编程语言调用Revit API接口进行二次开发形成.dll文件,并以插件的形式载入到Revit的附加模块中[11]运行,提取Revit模型的空间坐标、几何尺寸、材料及材料的密度、泊松比、杨氏模量、荷载位置与大小等信息提取出来,将信息整理好,再写成一个Abaqus可以直接运行的从建模到计算的完整Python script。

    程序首先对Revit所有的图元进行筛选,判断是否为某一族类型,将其按照族类型收集并储存起来,遍历集合,按照楼层标高过滤,自下而上将每层族实例的几何信息、材质信息、楼层信息及荷载信息提取出并赋予相应编号后储存,将所有的数据整理输出一个可以使Abaqus运行的Python脚本,模型转换接口实现流程如图 1所示。

    图 1 转换接口实现流程图
    图  1  转换接口实现流程图

    模型转换到Abaqus主要分为两部分:一部分是建模,一部分是执行模型。对应的程序代码也分为两部分:一是提取Revit模型信息的代码,二是输出为Abaqus可运行的Python脚本的代码。

    为了便于建模以及避免梁柱板节点处的问题,本文主要采用梁壳单元在Abaqus中建模,梁,柱采用梁单元,板采用壳单元,以简单二层框架为例,

    实现程序如下:

    Foreach (Element beam in beamclass)

    {

    XYZ directionvector ← positionline.Direcation; // 获取梁定位线坐标

    Definition section ← sectionproperty.Definition; // 获取梁截面尺寸

    Material characteristic ← beam as Material; // 获取材料属性

    Lineload beamload ← beam. Lineload; // 获取梁上线荷载

    }

    s.Spot(point ← (locationlineX,locationlineY)); // 以梁定位线坐标建模

    mdb.models.materials.Density(table ← density)El;

    astic(table ← ((elasticity,position) ISelectionFilter floorselFilter ← new FloorSelectionFilter(); // 材料指派

    Foreach(Reference floor in floorselFilter)

    {

    BoundingBoxXYZfloorXYZ ← floor_1.get_BoundingBox(doc.ActiveView); // 获取板顶点坐标

    Material floormaterial ← floor as Material; // 获取材料属性

    Areaload floorload ← floor.Areaload; // 获取板上面荷载

    }

    s.Spot(point ← (locationlineX,locationlineY));

    mdb.models.materials.Density(table ← density) Elastic(table ← ((elasticity,position);

    a.translate(instanceList ← (beam-column-floor),vector ← (X,Y,Z));

    mdb.models[‘Model-1’].Tie(beam-column-floor);

    mdb.models[‘ Model-1’].Load(beam-columnfloor);

    基于Revit“点—线—面—体”的建模方式,分别针对Abaqus采用的梁、壳单元,获取梁柱定位线两端坐标、楼板各角点坐标,根据Abaqus中梁单元的横截面库赋予构件截面属性,再赋予板厚度,在Abaqus完成建模。以筛选出OST_Structural Framing族为例,以下代码实现了梁的模型信息提取与在Abaqus中建模:

    LocationCurve beamlocationcurve ← beam as LocationCurve; // 获取梁定位线坐标

    double.TryParse(beamsectio,out beamsection); // 获取梁截面尺寸

    s.Line(point1 ← (point1,point1Y),point2 ← (point2X,point2Y))); // 以梁定位线坐标建模

    根据Abaqus结构分析过程中对材料物理特性的需要,获取Revit结构物理模型中材料名称、材料密度、泊松比及杨氏模量等,在Abaqus建立material并指派给对应特性构件,以筛选出OST_Structural Framing族为例,以下代码实现了梁的材质信息提取与在Abaqus中完成材料指派:

    Material bmat ← beam as Material; // 获取材料

    ElementId beamad ← bmat.StructuralAssetId; // 获取结构材料编号

    mdb.models[‘ Model’].materials[‘ liang]. Density(table ← (density)); // 材料指派

    mdb.models[‘ Model’].materials[‘ liang]. Elastic(table ← (elasticity,position)); // 材料指派

    根据Revit模型楼层标高以及构件位置坐标利用平移,旋转等功能在Abaqus中完成装配。以筛选出的OST_Structural Framing族为例,以下代码实现了梁在楼层中的装配:

    Element element←collector.Of Class(typeof(Level))First Element(); //获取梁所在楼层

    a.translate(instance List←(‘liang), vector←(0, 0, levelj)); //平移操作

    一般默认构件之间为刚接,Abaqus中梁柱间利用merge功能使其成为一个part解决“梁—梁”、“梁—柱”、“柱—柱”刚接方式,板与梁柱间采用tie连接的方式,以筛选出的OST_Structural Framing族为例,以下代码实现了梁之间的连接:

    Element element a.InstanceFromBooleanMerge

    (name ← beam,instances =column); // 梁柱完成刚接

    region1 ← a.instances[floor].surfaces[surface]. sets[beam]; // 板与梁柱刚接

    Revit模型荷载包括节点荷载、梁上线荷载、板上面荷载以及结构自重,提取各构件作用荷载,在Abaqus中采用施加位移与力的方式完成荷载的施加,以筛选出的OST_Structural Framing族为例,以下代码实现了获取梁上线荷载以及在Abaqus中给梁施加荷载:

    if (Math.Abs(liangmax X-lmax X) < 1 & & Math.Abs(liangmax Y-lmax Y) < 1 & & Math.Abs(liangmin X-lmin X) < 1 & & Math.Abs(liangmin Y-lmin Y) < 1 & & (liangmax Z←lmin Z));

    liangload[m]←ll Fz; //根据荷载作用边界条件判断并获取梁上线荷载

    mdb.models[‘Model-1’].Line Load(name=Load, create Step Name=’Step1’region=region, comp3←beamload); //给梁施加线荷载

    以下代码实现在Abaqus中对模型进行网格划分:

    p. s e e d P a r t (s i z e = s i z e,deviationFactor=deviationFactor,minSizeFactor=minSizeFactor);

    按照以上程序完成Revit与Abaqus转换接口开发,实现快速将Revit模型在Abaqus中建模、装配及施加荷载,最后进行计算分析。

    以某6层2跨框架结构建筑为例,梁柱采用C35混凝土板采用C40混凝土,板厚为100mm,考虑结构自重、梁上承受线荷载、板承受面荷载,验证Revit数据信息导入Abaqus后模型的完整性以及是否存在偏差。在Revit中运行程序,选中该模型,最后生成Python脚本,脚本部分信息如图 2所示。

    图 2 脚本部分信息
    图  2  脚本部分信息

    将生成的文本导入Abaqus,按照文本内容,由柱、梁、板的顺序依次建立part,如图 3所示。该框架建筑包含36根柱、42根梁、12块板,导入Abaqus后生成分析模型用时6秒,转换程序效率高,在模型构件数目、信息以及构件材质方面都与Revit模型吻合,结果显示,本文开发的接口程序实现模型转换的算法准确可靠。

    图 3 建筑模型“柱→梁→板”展示效果
    图  3  建筑模型“柱→梁→板”展示效果

    将梁柱板按照Revit位置信息通过移动、阵列、旋转和平移等操作装配成框架模型。在Abaqus的Interaction步骤中处理梁柱板节点连接问题,然后再依据《建筑结构荷载规范》计算出的梁上线荷载与板上面荷载施加到模型上,划分网格,最后进行计算分析。从建模到完成计算分析完成过程如图 4所示,网格详细划分图以及模型计算应力云图分别如图 5~6所示。

    图 4 结构计算分析过程展示效果
    图  4  结构计算分析过程展示效果
    图 5 模型构件网格划分结果展示图
    图  5  模型构件网格划分结果展示图
    图 6 模型位移分布图
    图  6  模型位移分布图

    本例通过转换接口将Revit物理模型及结构荷载信息提取后导入Abaqus,进行模型建立、材质指派、楼层装配、节点连接、施加约束与荷载、单元网格划分,最后完成计算等一系列操作,验证了转换接口在Revit中的模型与导入后Abaqus中模型完整一致性。

    本文针对Revit软件结构三维可视化、参数化的优点与其计算分析功能的不足,Abaqus软件复杂异形模型建模耗时,低效率的不足与其强大的有限元计算分析功能的优势,结合二者优点,提出Revit-Abaqus模型数据转换接口开发思路并进行开发实践,大大提高Revit在结构设计过程进行复杂结构分析的效率,对于反复修改模型重新建模进行计算分析的项目效果尤为显著。

    本文基于Visual Studio2017平台,借助C#, Python语言,调用Revit API接口,实现了Revit软件模型数据完整一致的导入Abaqus,通过给出程序开发的详细过程与算法要点与实例验证,表明了基于RevitAbaqus转换接口,可以大大减少建模时间,将Revit中模型的物理与几何信息完整无误的导入到Abaqus中完成计算分析,整个过程无需人工参与修改,具有较大的实用价值,但针对Revit-Abaqus模型数据双向导入问题中将完成计算分析的数据返回Revit中并未涉及,之后可以进行更加深入的研究。

  • 图  1   转换接口实现流程图

    图  2   脚本部分信息

    图  3   建筑模型“柱→梁→板”展示效果

    图  4   结构计算分析过程展示效果

    图  5   模型构件网格划分结果展示图

    图  6   模型位移分布图

    表  1   Revit与Abaqus模型信息对照

    Revit模型可提取数据 Python脚本对应步骤
    构件坐标,几何尺寸
    材料,截面参数
    位置信息
    Part
    property
    Assembly
    边界条件
    荷载信息
    Interaction
    load
    下载: 导出CSV
  • [1]

    Holness Gordon V.R. . BIM building information modeling: Gaining momentum [J]. ASHRAE Journal, 2008(06): 28-30+32+34+36+38-40.

    [2] PKPM与Revit实现双向数据互连进一步推动中国BIM技术的普及[J]. 土木建筑工程信息技术, 2013, 5(04): 6.
    [3] 赵晓宇, 陈子晗, 余思令, 等. 基于Revit与ANSYS的模型转换自动化研究[J]. 长江信息通信, 2021, 34(01): 119-121. https://www.cnki.com.cn/Article/CJFDTOTAL-HBYD202101039.htm
    [4] 严旭, 范盛颖, 周进. Revit到STAAD. Pro的模型数据转换研究[J]. 土木建筑工程信息技术, 2017, 9(03): 104-109. DOI: 10.16670/j.cnki.cn11-5823/tu.2017.03.18
    [5] 杨平. Revit Structure转盈建科软件的数据分析与研究[J]. 福建建筑, 2015(08): 126-128. https://www.cnki.com.cn/Article/CJFDTOTAL-FJJZ201508042.htm
    [6] 蓝天宇. BIM技术在建筑工程结构设计阶段的应用研究[D]. 华东交通大学, 2019.
    [7] 宋杰, 张亚栋, 王孟进, 等. Revit与ANSYS结构模型转换接口研究[J]. 土木工程与管理学报, 2016, 33(01): 79-84. https://www.cnki.com.cn/Article/CJFDTOTAL-WHCJ201601013.htm
    [8] 乔保娟, 邓正贤, 张洪磊. PKPM与Revit接口软件中若干问题探讨[J]. 土木建筑工程信息技术, 2014, 6(01): 113-117. http://tmjzgcxxjs.manuscripts.cn/article/id/b0de20ec-bebe-414e-8736-e4e7106548bd
    [9] 王玄玄, 黄玉林, 赵金城, 等. Revit-Abaqus模型转换接口的开发与应用[J]. 上海交通大学学报, 2020, 54(02): 135-143. https://www.cnki.com.cn/Article/CJFDTOTAL-SHJT202002006.htm
    [10] 庞芝炯. 基于Python脚本的ABAQUS参数化建模方法[J]. 城市建设理论研究, 2014, (09): 1-2.
    [11] 王维轩, 周东明. 基于Revit平台二次开发模式的研究[J]. 土木建筑工程信息技术, 2019, 11(01): 132-136. DOI: 10.16670/j.cnki.cn11-5823/tu.2019.01.19
  • 期刊类型引用(1)

    1. 杨成发,刘鸣岐,赵飞,王宁,张育智,杨万理. 桥梁信息模型——有限元模型转换接口研发. 土木建筑工程信息技术. 2024(05): 91-96 . 本站查看

    其他类型引用(0)

图(6)  /  表(1)
计量
  • 文章访问数:  3632
  • HTML全文浏览量:  1084
  • PDF下载量:  51
  • 被引次数: 1
出版历程
  • 发布日期:  2023-02-19
  • 刊出日期:  2023-02-19

目录

/

返回文章
返回