This development is actually already a month old, being worked on in the OSArch Community, but I thought I’d reshare it here.
I find that many people see Blender as purely a 3D artist tool and don’t think it’s possible to create construction documentation out of it. I hope to prove them wrong. I also hope to prove that this can be done natively in IFC.
First, a screenshot:
You might recognise the model as coming originally from Revit. It was exported to an IFC, then imported into Blender using the BlenderBIM Add-on.
The BlenderBIM Add-on now has new construction documentation features, allowing you to place dimensions, text, smart tags, and so on. All the usual stuff you expect from existing proprietary BIM applications. So whereas the IFC model that came from Revit did not have any annotation, the BlenderBIM Add-on created the floor plan on the top left. Let’s zoom in:
What makes this floor plan special is that although the dimensions and so on were created in Blender, they actually export out into IFC as IfcAnnotation, IfcGrid, and IfcGroup (for each view), and will round-trip back into Blender. From then on, only data in the IFC model was used, and only the BlenderBIM Add-on was used to produce that documentation image. No Revit, Autodesk, or 2D touch-up programs like LibreCAD were used at all. It demonstrates:
- Vector documentation in SVG output. That’s right - a completely open format that anybody can view in any web browser! Web, tablet, phone support immediately out of the box accessible by anybody, not only people with CAD software!
- Styles applied with CSS, including hatching, line weights, colours (not that there’s much in that image), and fills.
- A section cut with vector geometry coming from IFC geometry. The geometry was processed directly from an IFC for the section but. No Blender is required - it can run headlessly on a server for example. This means you can also feed it multiple IFC files coming from many vendors without needing to first throw it into Blender.
- Door swings geometry is actually in the IFC itself, in the Plan context, Annotation subcontext, PLAN_VIEW target view in the IFC. The section cutter recognizes it has annotation geometry, and omits rendering the 3D body representation, and substitutes it with the annotation 2D geometry.
- All the usual annotative things you might expect - dimensions, leaders, text, symbols, etc.
- Stair break lines are a hack. Life is hard with stairs.
- Text annotations are added in bulk (like Revit’s “tag all”) with smart variables which read directly from the IFC file. Variables can be post-processed for formatting, like to round to the nearest square meter for the IfcSpace Qto Gross Area variable.
- The view is stored as an IfcGroup in IFC. The ObjectType defines it as a plan view. This, coupled with the geometric representation context, helps store the fact that it is a 2D view.
- All annotative elements are stored are stored as IfcAnnotation as simple 2D curves. The consuming application has to understand some conventions around the IfcAnnotation to understand that one is a dimension and the other is a leader.
- All text elements are also stored as IfcAnnotation, but uses the IfcTextLiteralWithExtents. The with extents is a bit lame, but buildingSMART scrapped the regular text literal.
- The SVG contains classes, at a minimum the IFC class e.g. IfcWall, and globalid-XXX and material-YYY, but can store more metadata, to allow you to semantically apply CSS styles and query your documentation for information. E.g. you can use CSS to colour all 2 hour fire rated walls red.
A slight note about the door swings. Revit does not properly export the door swing annotation, and so the BlenderBIM Add-on now has the ability to write out single representation items to particular IFC objects back to an existing IFC file without modification or data loss of the rest of the file. This is a step towards a partial authoring ability, allowing IFC to be used as the native file format for a full BIM project with many applications modifying a portion of it.
I also made a sample board of hatches, but hatches are now applied at run-type as SVG CSS, so the hatch pattern itself isn’t actually stored in the IFC. This sample board is actually yet another IFC file with 1x1m cubes of IfcBuildingElementProxy with different materials set on them.
See for yourself the IFC with annotation inside for the sample board.
There is still a lot of polish to be done, but thought others might find it interesting and seeing where the open source community is pushing things.