With the rapid advancement of computer hardware and software technologies, computer-aided design (CAD) has made significant strides in the field of architecture. Numerous CAD architectural design software programs have flooded the market. Although each software is built on a specific building entity model, they typically support only their own data standards. As a result, data exchange and sharing between different professional software have become significant bottlenecks in architectural design integration.
There are two main solutions to address this issue. First, each application software can develop its own interfaces to enable data exchange and sharing with other programs. For example, version 9.0 of the 3D3S software from Tongji University offers an import interface for SAT WE model files from PKPM software and export interfaces for ANSYS and SAP2000 model files. However, this approach does not fundamentally resolve the problem of data interoperability among building models.
The second and more fundamental solution is the emergence of a truly open international standard for the representation and exchange of building product data. The Industry Foundation Classes (IFC) standard, developed by the International Alliance for Interoperability (IAI), is an ISO standard widely embraced by professionals in the architecture sector. This article focuses on how to apply the IFC standard to automatically generate structural model files from building models.
IFC Standards and Revit
The IFC standard essentially defines data related to buildings and construction engineering. It is important to note that IFC builds upon the STEP project, which includes extensive mature research results, such as the geometric definitions in STEP and the core construction engineering model. Leading global research based on the EXPRESS data modeling language can be easily incorporated into IFC. In particular, the development of building structural models in STEP can be effectively utilized within IFC projects.
In January 1997, IAI released the first complete version of the IFC information model (IFC 1.0), followed by IFC2x3 (version 3) in February 2006. This article is based on IFC2x3 for implementing data conversion. Major international CAD software developers—Autodesk, Bentley, and Graphisoft—have all adopted and support the IFC standard.
In this article, Autodesk’s Revit Architecture and Revit Structure software are used to export IFC model files, which are then converted into structural model files. Although IFC documentation is openly available, the complexity of the STEP file format and the IFC building model itself makes IFC development challenging. Consequently, many companies offer IFC toolkits that simplify development by providing support platforms, so developers do not have to build everything from scratch.
Commonly used IFC toolkits include the EDM Model Converter by EPM Technology AS, IFC Classic Toolbox from Eurostep, and the IFC Engine DLL from TNO Environment and Geosciences. This article utilizes the IFC Engine DLL toolkit to extract building model information from IFC files.
3D3S and Structural Model Files
The general format for expressing structural model files in 3D3S is as follows:
1) Annotation:
Strings starting with $or!, or, or / indicate comments. Please note that comments must contain no spaces.
2) Define the structural system:
STRU No.
3) Define length unit:
UNIT No.
4) Generate nodes:
Nodes are defined with their coordinates x, y, and z.
5) Generate elements:
E UnitNumber Node1 Node2
6) Define node constraints:
Con NodeNumber X(0|1) Y(0|1) Z(0|1) RX(0|1) RY(0|1) RZ(0|1)
Due to space limitations, the full file format is not fully described here. Please refer to the 3D3S user manual for detailed information.
Data Conversion from IFC Files to 3D3S Files
Data Structures
The primary data structures involved are nodes, elements, and floors.
Node Data Structure:
Class Node
{
Int NodeID; // Node index number
Double CoordinateX, CoordinateY, CoordinateZ; // 3D coordinates of the node
Int ConstraintType; // Constraint type of the node
ArrayList NodeInElements; // List of elements connected to the node
};
Element Data Structure:
Class Element
{
Int ElementID; // Element index number
ArrayList NodesInElement; // List of nodes within the element
Int SectionType; // Element cross-section type
Int PropertyType; // Element material type
Int ContainedInFloor; // Floor where the element is located
Int ElementType; // Element type
};
Floor Data Structure:
Class Floor
{
Int FloorID; // Floor index number
Double Elevation; // Floor top elevation
Double FloorHeight; // Floor height
}














Must log in before commenting!
Sign Up