|
1 | 1 |
|
2 | | -IfcOpenShell |
3 | | -============ |
4 | | - |
5 | | -<p align="center"> |
6 | | -<img src="https://github.com/IfcOpenShell/IfcOpenShell/assets/88302/34901387-e2dd-4a0c-8e38-9ffc32a66cde"> |
7 | | -</p> |
8 | | - |
9 | | - |
10 | | -IfcOpenShell is an open source ([LGPL]) software library for working with Industry Foundation Classes ([IFC]). Complete |
11 | | -parsing support is provided for [IFC2x3 TC1], [IFC4 Add2 TC1], IFC4x1, IFC4x2, and [IFC4x3 Add2]. Extensive geometric support |
12 | | -is implemented for the IFC releases [IFC2x3 TC1] and [IFC4 Add2 TC1]. Extending with support for arbitrary IFC schemas |
13 | | -is possible at compile-time when using C++ and at run-time when using Python. |
14 | | - |
15 | | -In addition to a C++ and Python API, IfcOpenShell comes with an ecosystem of tools, notably including IfcConvert (an application |
16 | | -to convert IFC models to other formats), Bonsai (an add-on to Blender providing a graphical IFC authoring platform), |
17 | | -and many other libraries, CLI apps, and more. Support is also provided for auxiliary standards such as BCF and IDS. |
18 | | - |
19 | | -For more information, see: |
20 | | - |
21 | | -* [IfcOpenShell Website](http://ifcopenshell.org) |
22 | | -* [IfcOpenShell Documentation](https://docs.ifcopenshell.org) |
23 | | - * [IfcOpenShell C++ Installation](https://docs.ifcopenshell.org/ifcopenshell/installation.html) |
24 | | - * [IfcOpenShell Python Installation](https://docs.ifcopenshell.org/ifcopenshell-python/installation.html) |
25 | | - * [IfcOpenShell Python Hello World Tutorial](https://docs.ifcopenshell.org/ifcopenshell-python/hello_world.html) |
26 | | -* [Bonsai Website](https://bonsaibim.org) |
27 | | -* [Bonsai Documentation](https://docs.bonsaibim.org/index.html) |
28 | | - * [Add-on Installation](https://docs.bonsaibim.org/quickstart/installation.html) |
29 | | - * [Exploring an IFC model](https://docs.bonsaibim.org/quickstart/explore_model.html) |
30 | | - |
31 | | -Development is sponsored through your generous donations! |
32 | | - |
33 | | -[](https://opencollective.com/opensourcebim/) |
34 | | - |
35 | | -Contents |
36 | | --------- |
37 | | - |
38 | | -| Name | Description | License | Service | |
39 | | -| ------------------------- | --------------------------------------------------------------------- | ------------------- | ------- | |
40 | | -| bcf | Library to read and write BCF-XML and query OpenCDE BCF-API modules | LGPL-3.0-or-later | [](https://pypi.org/project/bcf-client/) [](https://anaconda.org/conda-forge/bcf-client) | |
41 | | -| bonsai | Add-on to Blender providing a graphical native IFC authoring platform | GPL-3.0-or-later | [](https://bonsaibim.org/download.html) [](https://github.com/IfcOpenShell/IfcOpenShell/releases?q=bonsai&expanded=true) [](https://community.chocolatey.org/packages/blenderbim-nightly/) | |
42 | | -| bsdd | Library to query the bSDD API | LGPL-3.0-or-later | [](https://pypi.org/project/bsdd/) | |
43 | | -| ifc2ca | Utility to convert IFC structural analysis models to Code_Aster | LGPL-3.0-or-later | |
44 | | -| ifc4d | Convert to and from IFC and project management software | LGPL-3.0-or-later | [](https://pypi.org/project/ifc4d/) | |
45 | | -| ifc5d | Report and optimise cost information from IFC | LGPL-3.0-or-later | [](https://pypi.org/project/ifc5d/) | |
46 | | -| ifcbimtester | Wrapper for Gherkin based unit testing for IFC models | LGPL-3.0-or-later | |
47 | | -| ifcblender | Historic Blender IFC import add-on | LGPL-3.0-or-later\* | |
48 | | -| ifccityjson | Convert CityJSON to IFC | LGPL-3.0-or-later | [](https://pypi.org/project/ifccityjson/) | |
49 | | -| ifcclash | Clash detection library and CLI app | LGPL-3.0-or-later | [](https://pypi.org/project/ifcclash/) | |
50 | | -| ifcconvert | CLI app to convert IFC to many other formats | LGPL-3.0-or-later\* | [](https://docs.ifcopenshell.org/ifcconvert/installation.html) [](https://github.com/IfcOpenShell/IfcOpenShell/releases?q=ifcconvert&expanded=true) |
51 | | -| ifccsv | Library and CLI app to export and import schedules from IFC | LGPL-3.0-or-later | [](https://pypi.org/project/ifccsv/) | |
52 | | -| ifcdiff | Compare changes between IFC models | LGPL-3.0-or-later | [](https://pypi.org/project/ifcdiff/) | |
53 | | -| ifcfm | Extract IFC data for FM handover requirements | LGPL-3.0-or-later | [](https://pypi.org/project/ifcfm/) | |
54 | | -| ifcmax | Historic extension for IFC support in 3DS Max | LGPL-3.0-or-later\* | [](https://docs.ifcopenshell.org/ifcmax.html) |
55 | | -| ifcopenshell-python | Python library for IFC manipulation | LGPL-3.0-or-later\* | [](https://docs.ifcopenshell.org/ifcopenshell-python/installation.html) [](https://github.com/IfcOpenShell/IfcOpenShell/releases?q=ifcopenshell-python&expanded=true) [](https://pypi.org/project/ifcopenshell/) [](https://anaconda.org/conda-forge/ifcopenshell) [](https://anaconda.org/ifcopenshell/ifcopenshell) [](https://hub.docker.com/r/aecgeeks/ifcopenshell) [](https://aur.archlinux.org/packages/ifcopenshell) [](https://aur.archlinux.org/packages/ifcopenshell-git) | |
56 | | -| ifcpatch | Utility to run pre-packaged scripts to manipulate IFCs | LGPL-3.0-or-later | [](https://pypi.org/project/ifcpatch/) | |
57 | | -| ifcsverchok | Blender Add-on for visual node programming with IFC | GPL-3.0-or-later | [](https://github.com/IfcOpenShell/IfcOpenShell/releases?q=ifcsverchok&expanded=true) |
58 | | -| ifctester | Library, CLI and webapp for IDS model auditing | LGPL-3.0-or-later | [](https://pypi.org/project/ifctester/) | |
59 | | - |
60 | | -The IfcOpenShell C++ codebase is split into multiple interal libraries: |
61 | | - |
62 | | -| Name | Description | License | |
63 | | -| ------------------------- | --------------------------------------------------------------------- | ------------------- | |
64 | | -| ifcgeom | Internal library for IfcOpenShell | LGPL-3.0-or-later\* | |
65 | | -| ifcgeom\_schema\_agnostic | Internal library for IfcOpenShell | LGPL-3.0-or-later\* | |
66 | | -| ifcgeomserver | Internal library for IfcOpenShell | LGPL-3.0-or-later\* | |
67 | | -| ifcjni | Internal library for IfcOpenShell | LGPL-3.0-or-later\* | |
68 | | -| ifcparse | Internal library for IfcOpenShell | LGPL-3.0-or-later\* | |
69 | | -| ifcwrap | Internal library for IfcOpenShell | LGPL-3.0-or-later\* | |
70 | | -| qtviewer | Internal library for IfcOpenShell | LGPL-3.0-or-later\* | |
71 | | -| serializers | Internal library for IfcOpenShell | LGPL-3.0-or-later\* | |
72 | | - |
73 | | -[LGPL]: https://github.com/IfcOpenShell/IfcOpenShell/tree/master/COPYING.LESSER "LGPL-3.0-or-later" |
74 | | -[IFC]: https://technical.buildingsmart.org/standards/ifc/ "IFC" |
75 | | -[IFC2x3 TC1]: https://standards.buildingsmart.org/IFC/RELEASE/IFC2x3/TC1/HTML/ "IFC2x3 TC1" |
76 | | -[IFC4 Add2 TC1]: https://standards.buildingsmart.org/IFC/RELEASE/IFC4/ADD2_TC1/HTML/ "IFC4 Add2 TC1" |
77 | | -[IFC4x3 Add2]: https://standards.buildingsmart.org/IFC/RELEASE/IFC4_3/ "IFC4x3 Add2" |
78 | | -[Visual Studio]: https://www.visualstudio.com/ "Visual Studio" |
79 | | -[Visual C++ Build Tools]: http://landinghub.visualstudio.com/visual-cpp-build-tools "Visual C++ Build Tools" |
80 | | -[MSYS2]: https://msys2.github.io/ "MSYS2" |
81 | | -[win/readme.md]: https://github.com/IfcOpenShell/IfcOpenShell/tree/master/win/readme.md "win/readme.md" |
82 | | -[nix/build-all.py]: https://github.com/IfcOpenShell/IfcOpenShell/tree/master/nix/build-all.py "nix/build-all.py" |
| 2 | +IfcOpenShell (3D Repo Fork) |
| 3 | +=========================== |
| 4 | + |
| 5 | +This is a fork of IfcOpenShell for use by [3drepobouncer](https://github.com/3drepo/3drepobouncer). |
| 6 | + |
| 7 | +It currently tracks 0.8.0. |
| 8 | + |
| 9 | +### Changes |
| 10 | + |
| 11 | +1. Merged this PR: https://github.com/IfcOpenShell/IfcOpenShell/pull/6329 |
| 12 | +2. Gave control over lifetime of Iterator Elements to the consumer (see this discussion: https://github.com/IfcOpenShell/IfcOpenShell/issues/6385) |
| 13 | + |
| 14 | +Problems we are aware of but will not fix: |
| 15 | + |
| 16 | +1. HDF5 caching won't work default materials: https://github.com/IfcOpenShell/IfcOpenShell/issues/6340 |
| 17 | +2. PropertySetDefinitionSets are not supported: https://github.com/IfcOpenShell/IfcOpenShell/issues/6330 |
| 18 | +3. [IfcRelDefinesByObject](https://standards.buildingsmart.org/IFC/RELEASE/IFC4/FINAL/HTML/schema/ifckernel/lexical/ifcreldefinesbyobject.htm) does not take the RelatingObject's Representations. |
| 19 | + |
| 20 | + |
| 21 | +### Building |
| 22 | + |
| 23 | +**Windows v143** |
| 24 | + |
| 25 | +1. Give `set IFCOS_INSTALL_PYTHON=FALSE` before running build-deps.cmd. |
| 26 | +2. Make sure to give the build tools with build-deps.cmd, e.g. `build-deps.cmd vs2022-x64`. Despite the samples, this is not optional. |
| 27 | +3. Give the same tools for run-cmake.bat, and disable python: `run-cmake.bat vs2022-x64 -DBUILD_IFCPYTHON=0 -DCOLLADA_SUPPORT=0` |
| 28 | + |
| 29 | + |
| 30 | +**Windows v142** |
| 31 | + |
| 32 | +1. Give `set IFCOS_INSTALL_PYTHON=FALSE` before running build-deps.cmd |
| 33 | +2. Make sure to give the build tools with build-deps.cmd, e.g. `build-deps.cmd vs2019-x64`. Despite the samples, this is not optional. |
| 34 | +3. Give the same tools for run-cmake.bat, and disable python: `run-cmake.bat vs2019-x64 -DBUILD_IFCPYTHON=0 -DCOLLADA_SUPPORT=0` |
| 35 | + |
| 36 | +If receiving linker errors, replace the Boost environment variables with a 3rd party copy of Boost in `run-cmake.bat`, e.g. |
| 37 | + |
| 38 | +``` |
| 39 | +set BOOST_ROOT=D:\3drepo\bouncer\boost_1_86_0 |
| 40 | +set BOOST_LIBRARYDIR=D:\3drepo\bouncer\boost_1_86_0\lib64-msvc-14.2 |
| 41 | +``` |
| 42 | + |
| 43 | +IfcOpenShell comes with its own version of OpenCascade (7.8.1). |
| 44 | + |
| 45 | +It is necessary to copy the Eigen dependency into the installed `/include` folder, as `INSTALL` wont do it. |
| 46 | + |
| 47 | +IFCOS 0.7.0 introduced CGAL, which itself introduces two static dependencies. The `FindIFCOPENSHELL` module has been updated to also include these libraries (`mpfr`, `mpir`), however these must be copied into the IfcOpenShell installation `/lib` folder on Windows (on Linux, the CMake will search `usr/libs` which should find the OS versions). |
0 commit comments