Skip to content

An IFC4x1-based method to model bridges and transform corresponding IFC models into MIDAS/Civil

Notifications You must be signed in to change notification settings

1molPotato/ifc2mct

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ifc2mct

Overview

The project ifc2mct is part of my Master's thesis, where an IFC4x1-based method is proposed to describe alignment-based steel plate-girder (box-girder) bridge and map them to a data model that represents entities for FEA. To follow the dissertation, this project is divided into two parts, one is to provide interfaces that generate the bridge's data in the form of .ifc, the other is to implement MCT (MIDAS/Civil Text) data model and translate the built data to mct files which can be imported to MIDAS/Civil.

Introduction

Part 1

This sub-project, which is called ifc2mct.BridgeFactory, aims to provide a uniform interface (BridgeBuilder) to Application layer so that any application in this layer is able to produce IFC data of a continus steel-box-girder bridge. The infrastructure of this project is XbimEssentials library, which provides basic functions to access and produce IFC data. AlignmentBuilder is a built-in class to create an instance of entity IfcAlignment that has a simple alignment curve. This module is not necessary when Application layer or other sources can provide alignment information, for example, IFC files exported from Civil3D. IfcModelBuilder is an encapsulation of some interfaces of XbimEssentials in order to quickly construct IFC entity from basic geometric data structure (point, line, matrix, etc). The overall architecture is shown below:

architecture

The table below illustrates the interfaces provided by ifc2mct.BridgeFactory.

Name Arguments Function
Constructor path(String) input ifc file
Build - build the IFC bridge model
Save path(String) save IFC model to appointed path
SetBridgeAlignment startPosition(Double), endPosition(Double), offsetVertical(Double), offsetLateral(Double) set an offset curve as bridge alignment which is derived from alignment curve
SetOverallSection dimensions(Double[5]) set the section dimensions of a single-box-girder, which includes B1(the external top flange width), B2(the internal top flange width), B3(the external bottom flange width), B4(the internal bottom flange width), H(the height of box)
SetThickness plateCode(Integer), distanceAlong(Double), thickness(Double) define the thickness change of flanges and webs along the bridge alignment curve
AddStiffenerType typeId(Integer), dimensions(Double[]) define a type of stiffener profile, supported profiles are flat stiffener (H, B), T-shape stiffener (H, B, tw, tf) and U-shape stiffener (H, B1, B2, t, R)
AddStiffenerLayout layoutId(Integer), <num(Integer), gap(Double)>[] define a type of stiffener layout on the stiffened flanges and webs, the number of stiffeners and their gap between each other should be provided
AddStiffeners plateCode(Integer), distanceAlong(Double), typeId(Integer), layoutId(Integer) define the stiffener change by givien its type and layout at a particular position along the bridge alignment curve
AddBearingType typeId(Integer), dx, dy, dz, rx, ry, rz(Boolean) define a type of bearing by given constraint value for 3 axis
AddBearing distanceAlong(Double), offsetLateral(Double), typeId(Integer) add a specific bearing instance to a particular position along the bridge alignment

In the IFC4x1-based bridge representation presented, bridge alignment curve is an offset curve of the overall alignment curve as shown below:

bridge-alignment

IfcBearing is a newly added entity in IFC4x2 draft, so an instance of IfcProxy is used to replace it and a property set Pset_BearingCommon is assigned. Its positioning depends on the entity IfcLinearPlacement, in case most vendors haven't supported this IFC4x1 entity, the arribute CartesianPosition should be assigned for backward compatibility.

bearings

Flanges and webs are the most important components in a box-girder so they should better be represented by individual entities and then aggregated into an assembly which represents the girder. Some IFC4x2 features (say new PredefinedType) are adopted. IfcSectionedSolidHorizontal is selected to represent these linear element's shape along the alignment.

girder

Stiffenrs (stiffening ribs) are part of their parent plates (flanges or webs), so they are aggregated into an instance of IfcElementAssembly.

stiffeners

Currently, XbimGeometry library hasn't adapted to IFC4x1. To enable the visualization, the source code is reviewed and updated to comput the geometry of IfcAlignmentCurve, IfcSectionedSolidHorizontal and IfcLinearPlacement. For now, it's not a good implementation and can only work in a particular situation when the horizontal alignment curve contains only one line segment or arc segment.

bridge-circular bridge-circular

Part 2

Firstly, the MCT Data Model was proposed to represent almost all elements in MIDAS/Civil, of which the conceptual model is illustrated below:

mct-conceptual-model

Since IFC Data Model and MCT Data Model cannot be comprehensively mapped onto each other, the mapping process is inevitably human-interfered. In this project, a specific mapping strategy is taken, which aims to transform data of steel-box-girder bridges from IFC to MCT. The mapping model is shown as below:

mapping-model

To implement the mapping method presented above, some class libraries and programs are developed. The diagram below shows the basic architecture of ifc2mct:

translator-architecture

A test case that transforms the data of a specific steel girder bridge from IFC file to MCT file is excuted and the comparison of the models in 2 environments is shown below:

comparison

To be continued..

Getting Started

Acknowledgements

About

An IFC4x1-based method to model bridges and transform corresponding IFC models into MIDAS/Civil

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages