Files
IfcOpenShell/src/ifcblenderexport/README.md
T

90 lines
4.5 KiB
Markdown
Raw Normal View History

2019-08-29 23:11:12 +10:00
# Blender BIM IFC
_Under heavy development!_
Let's use Blender to create BIM models, because why not?
2019-09-01 22:17:49 +10:00
## Features
- IFC4 is a first-class citizen. IFC4 has been an ISO standard since 2013, with
2019-09-11 09:23:02 +10:00
the latest published in 2018. It contains many more features than IFC2X3,
published back in 2005.
- Use open-source Blender 2.8 to do digital modeling! Used by NASA, Hollywood,
and Ubisoft, Blender allows real-time modeling in rendered view, animations,
file linking, proxy objects, Blender Cloud collaboration, lighting analysis,
CFD, energy modeling, and a huge ecosystem of add-ons with a thriving
community. No licensing, and with a strong Python API to integrate into your
custom workflow.
2019-09-01 22:17:49 +10:00
- Create complex spatial structures with multiple sites, buildings, facilities,
2019-09-11 09:23:02 +10:00
bridges, and building parts. Sites can be broken down into sub-sites and
multiple buildings per site. You can categorise different floors to different
buildings.
2019-09-01 22:17:49 +10:00
- Classify any geometry as any IFC type. Just because it is a wall doesn't
mean you should be limited to modeling it in a certain way. Easily change
2019-09-11 09:23:02 +10:00
from one type to another, switch relationships and aggregations, reuse or
even remove geometry altogether, without damaging your geometry or breaking
your BIM model.
2019-09-05 18:50:32 +10:00
- Use collections to create element compositions and decompositions with full
control over the classifications of their parts. Most BIM programs don't give
2019-09-11 09:23:02 +10:00
this flexibility. Create collection instances to efficiently duplicate
composite objects.
2019-09-01 22:17:49 +10:00
- Allow BIM objects to instance a shared geometric representations. This allows
you to place the same shape in multiple objects without drastically
increasing your filesize.
- Provide a custom value to any simple IFC attribute of an IFC product.
- Create product types that regular IFC products can inherit attributes from.
- Define your own property sets with control over exactly how the data in the
2019-09-11 09:23:02 +10:00
property sets are stored using property set template definitions which you
can download or create yourself. Property sets can apply to both types and
objects, and object property sets can selectively override type property
sets.
2019-09-02 21:27:24 +10:00
- Applies array modifiers to create instances.
2019-09-05 18:50:32 +10:00
- Basic quantity take-off support for costing.
- Settings to toggle export of quantities or geometric representations.
Exporting IFC data without geometric representations is much faster and a
fraction of the filesize.
- Maintain `GlobalId` between exports, so that you can manipulate the IFC
reliably in other software while making changes.
2019-09-07 22:32:41 +10:00
- Not all objects need full solid geometry. Create representations as 2D or 3D
curves / wireframes for rapid and lightweight BIM development.
- Create map conversions and coordinate reference system definitions to link
BIM to GIS.
2019-09-11 09:23:02 +10:00
- Export basic materials with surface and diffuse colours for representation.
You can also link materials to an externally defined file, such as a `.blend`
Cycles material, V-Ray material, or even Radiance material for lighting
simulation.
- Switch between different types of metric units when modeling.
2019-09-02 21:27:24 +10:00
## Demo
It's only just started, so everything can and will change. But if you want to
check it out:
1. Install [Blender](https://www.blender.org/).
2. Install [IfcOpenShell](https://github.com/IfcOpenShell/IfcOpenShell),
ensuring that is is compiled to the same Python version and architecture of
your Blender installation.
3. Launch Blender. Open `untitled.blend`. You should see the `export.py`
script already loaded. Change the hardcoded paths from
`/home/dion/Projects/blender-bim-ifc/` to wherever you've cloned this
repository.
2019-09-02 21:28:53 +10:00
4. Ensure `ifcopenshell` is in your Blender Python's path, so that it can
`import ifcopenshell`. You can run
`sys.path.append('/path/to/your/ifcopenshell/module')` in the Blender Python
console to do this.
5. Select all objects that you want to export. Press `Run Script`, and you will
2019-09-02 21:27:24 +10:00
get the results in `output.ifc`.
A naming convention of `IfcClass/IfcName` is enforced. If you name your object
`IfcWall/Foo`, it will turn into an `IfcWall` with the name attribute set to
`Foo`. You can override object attributes using Blender's `Custom Properties`.
Your objects must live in a top level `Collection` defined as a context class,
usually something like `IfcProject/Foo`. You can then nest spatial structures
underneath to create a hierarchy.
2019-09-02 21:38:14 +10:00
![Blender screenshot](blender-screenshot.png)
... this Blender files creates this IFC file ...
![IfcOpenShell screenshot](ifcopenshell-screenshot.png)