Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

THUCBIMS/CBIMS.IFCNormalization

Repository files navigation

CBIMS.IFCNormalization

Introduction

CBIMS.IFCNormalization is a tool to "normalize" an IFC file (in ISO 10303-21). The normalized IFC file can be used for better comparison of changes between versions, and for storage in Git-like tools.

The tool has the following features:

  • Merging redundant nodes in an IFC file.
  • Re-assigning stable integer row IDs according to the row contents and references.
  • Sorting the rows, and (optionally) segmenting the rows into chunks.

Please refer to:

Liu H, Gao G, Gu M. A Parallel IFC Normalization Algorithm for Incremental Storage and Version Control. International Workshop on Intelligent Computing in Engineering (EG-ICE), 2023: 511-520.

https://arxiv.org/ftp/arxiv/papers/2312/2312.14931.pdf

Patent (China):

刘寒, 高歌, 顾明. 一种图数据处理与增量存储方法、装置及计算机设备. 中国专利: ZL 202211625638.5 . 2022年12月16日.

Dependencies and resources

The project uses the following dependencies from the NuGet:

Other resources contained in the repository:

Folders in the repository

  • CBIMS.IFCNormalization.CMD - The command-line entrance of the tool.
  • CBIMS.IFCNormalization.Core - The core implementation of the IFC normalization algorithm.
  • CBIMS.IFCNormalization.Interface - The interface for accessing the input IFC data structure.
  • CBIMS.IFCNormalization.Xbim - The implementation of the interface for getting IFC data using Xbim

Usage

dotnet CBIMS.IFCNormalization.CMD.dll -i <input path>
 [-o <output path>]
 [--level <chunk level>]
 [--spare <chunk spare rate>]
 [--parallel <true|false>]
 [--exp_chunk_num <true|false>]
 [--rm_ownerhistory <true|false>]
 [--do_segment <false|true>]
 [--just_compress <false|true>]

-i: An input IFC path.

-o: <default {inputPath}/{inputFileName}.norm.ifc> The output IFC path.

--level: <default 5> The level of chunk size.

Level Chunk size Max chunk numbers
3 10000000 214
4 1000000 2147
5 100000 21474
6 10000 214748
7 1000 2147483
8 100 21474836
9 10 214748364

--spare: <default 2.0> A real spare rate greater than 1.0 to make more efficient assignment of node storage.

--parallel: <default true> Use multi-core CPU to speed up calculation.

--exp_chunk_num: <default true> Using the exponential function for increasing the number of chunks of each type.

--rm_ownerhistory: <default true> Removing IfcOwnerHistory references for all IfcRoot nodes on output.

--do_segment: <default false> Adding "/*========*/" as segmentation for each chunk.

--just_compress: <default false> I do not want to re-organize the IDs but just want to merge the redundant nodes.
* Ignoring most of the parameters above except '--parallel' and '--rm_ownerhistory'.
* The default output file name will be '{inputFileName}.compress.ifc'.

License

CBIMS.IFCNormalization uses GNU Lesser General Public License (LGPL). Please refer to: https://www.gnu.org/licenses/lgpl-3.0.en.html

About CBIMS

CBIMS (Computable Building Information Modeling Standards) is a set of research projects aiming at the development of computable BIM standards for the interoperability of BIM data exchange and the automation of BIM-based workflow. The projects are led by the BIM research group at the School of Software, Tsinghua University, China.

About

CBIMS.IFCNormalization is a tool to "normalize" an IFC file (in ISO 10303-21)

Resources

License

LGPL-3.0, GPL-3.0 licenses found

Licenses found

LGPL-3.0
COPYING.LESSER
GPL-3.0
COPYING

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /