[From the README] The Homemaker add-on tries to automate the tedious work of designing buildings. Just indicate with simple geometry where you want walls, floors and roofs, and the software figures-out what building elements are needed to create that building. The result is an industry-standard IFC (BIM) model, suitable for taking the project towards construction.
The software is a general python library for turning 3D geometry and style definitions into IFC building models, it is initially provided as a Blender add-on, but is designed to be usable with other awesome 3D design platforms such as FreeCAD.
Will assemble buildings from any geometry, as long as the faces overlap enough to define cells for rooms. The only assumption is that walls are vertical, floors are horizontal, and that rooms are surrounded by vertical walls.
Adaptable style system, styles can be subclassed or overrriden entirely. Different parts of buildings can be assigned different styles.
Fully compliant industry standard IFC output.
Free Software, no annual licenses, these are your tools to use, customise and share as you wish.
topologicPy a python interface to the TopologicCore library. Install it with
sudo python setup.py install
- cppyy C++ python interface, this consists of four packages:
cppyy, but you can probably install it all with
sudo pip install cppyy
- TopologicCore. This is a C++ library which you build and install using the standard cmake build system. It requires the opencascade library and headers which should be available from your distribution. Note that topologicPy requires the TopologicCore header files to be present at runtime, so you need to install these too.
- cppyy C++ python interface, this consists of four packages:
blenderbim blender add-on, just download the ZIP and install from the blender preferences menu. Note April 2021, the Homemaker add-on uses very recent features of the IfcOpenShell API, so you need a nightly snapshot
- pyyaml python module.
- ezdxf python module for reading assets, which are in DXF format until we can figure out how to use IFC asset libraries.
 With all the above installed, it should just be possible to download the homemaker-addon-main.zip archive and install it as an add-on in the Blender preferences. Basic usage is to select a Blender mesh, such as the default Cube, and pick Object -> Homemaker Topologise from the menu
From the GitHub link:
This is a cool, strong, statement.
Taking architecture from architects isn't guaranteed to provide good ordinary architecture though.
Absolutely, also there is nothing in the Homemaker add-on to prevent someone designing awful buildings. I'm also looking at it from the perspective that most buildings are not designed by architects (at least in the anglo world), but they need to be good architecture anyway.
Some notes on the Homemaker add-on code.
The blender add-on is just a few lines, everything else is split into two main libraries that are not dependent on blender at all (there is a
brep2ifc.pytool that performs the main functionality on the command-line without blender). These two libraries are
Topologist extensions to topologicPy for ordinary buildings
The Topologic library and its topologicPy python interface models generic non-manifold mesh 3D geometry. This
topologistmodule overloads additional functionality onto the topologicPy module that is specific to ordinary buildings. In particular: horizontal and vertical faces are considered to be floors and walls; rooms are spaces with vertical walls on all sides; non-horizontal faces form roofs and/or soffits; and cells are tagged as indoor 'rooms', voids, or outdoor spaces.
With this model of what-a-building-is, it is possible to decompose the Topologic
CellComplexgeometry into 'traces' that define building components. Traces are 2D closed or open chains, differentiated by elevation, height and style properties, typically running in an anti-clockwise direction, these follow the outlines of rooms, walls, eaves, string-courses etc.
Traces are defined using a simple directed-graph implementation,
molior.ugraph, this only supports linear chains and doesn't support branching. The traces contain references back to relevant
Cellsin the original Topologic
Topological relationships between rooms are useful for analysis of the resulting building, this module contains methods for creating Topologic
Graphobjects representing adjacency and circulation, along with methods for referencing these back-and-forth with the original
topologistmodule knows nothing about CAD, BIM or IFC, use the
moliormodule to convert these traces into something to visualise or solid to build.
Molior builds 3D models from topologist 'traces'
Traces are 2D closed or open chains that define building elements, differentiated by elevation, height and style properties, typically running in an anti-clockwise direction, these follow the outlines of rooms, walls, eaves, string-courses etc.
Which traces are used, and how they are used, are defined by files in the
molior/sharefolder and subfolders. Each subfolder has a unique name and represents a different architectural 'style', buildings can be all one style or have multiple styles, each applied to different parts of the building. Styles are inherited from parent folders, and can represent only minor variations, without needing to duplicate anything that is already defined by the parent folder(s). Access to these style definitions is handled by the
Molior uses IfcOpenShell to generate IFC models of buildings, with some extra helper methods defined in the
molior.ifcmodule. Different building parts need to be constructed differently, so walls, ceilings, extrusions etc. are each handled by dedicated modules.
Molior is largely derived from the Perl Molior module, but has been rewritten in python in order to interface with Topologic and IfcOpenShell.
 Note, currently the Homemaker add-on assumes that all dimensions are metres, as it moves away from DXF to IFC for resources it should become agnostic about units.
I am trying to give homemaker a go on win10. Do all the dependencies (other than blenderbim) have to be installed from within the python bundled in Blender?
We have established that all the tools work on Windows, but I haven't tried putting it all together.
Currently the most straightforward way to do this would be to follow the topologicPy instructions for Blender on Windows. These instructions are for installing everything outside Blender and then using
sys.path.append()to load them from the Blender python console (I think you would need to match the version of python in Blender and also the version of opencascade in Blenderbim, but I haven't tried these instructions since I'm on Linux).
Then you would install the
pipwithin Blender, and the Homemaker add-on should install just like any other Blender add-on.
Alternatively, it may be possible to install
cppyythe same way with
pipin Blender? in which case all you need is a
TopologicCore.dllfile with TopologicCore headers, and you could install
topologicPyin the Blender console. @topologic do you have a pre-compiled DLL? preferably linked with opencascade 7.4.0 (since this is what ships with the Windows Blenderbim add-on).
Another alternative, if you are comfortable with virtual machines, would be to install fedora in a VM, and use the precompiled rpm packages I've built for all the dependencies.
@brunopostle yes I have a precompiled Windows DLL linked to OCCT 7.4.0. Will upload soon to my GitHub repo at http://github.com/wassimj
Great project! We should add it to our Software Directory. Which category is more suitable? CAD / BIM Design Developmen or Schematic design? Or both?
I don't think it particularly matters. It is definitely a schematic design tool, but isn't yet part of a working CAD workflow
Added to schematic design tool group. https://wiki.osarch.org/index.php?title=AEC_Free_Software_directory#Schematic_design
I posted this on the Geometry Nodes thread already, but wanted to share it here as well. It's so interesting how the ability to nest parametric controls in Geo Nodes enable fairly interesting configurations. Should make a powerful combination with Homemaker:
I've uploaded an experimental test of a Linux Homemaker add-on package for blender. It works for me, but I can see that there may be issues on other systems as there are some complex dependencies and there is a lot to go wrong, I'd like to see any error messages, but if it works then that would be even better.
A Windows package will take a bit more work, so sorry not yet.
Will be really looking forward to the Windows package! Will also test the linux package
Setup under linux Mint (latest) report missing / wrong version for GLIBC (latest ubuntu available glibc is 2.31)
@stephen_l thanks for testing, this is a problem with creating these packages with the latest fedora. It looks like the solution is to use a 'manylinux2014' docker image, and build everything in that, this may take a while :(
python 3.9 will only work under 2.93+
I have uploaded another experimental test of a Linux Homemaker add-on package for blender.
I have built this using debian buster docker images, so it should work on any recent linux distribution with glibc 2.28 or later. I also hadn't realised that expecting python 3.9 was a bit ambitious, so there are two downloads, one for python 3.7 and one for python 3.9.
It works for me, but even if it doesn't work, I would like to see any error messages.
Under blender 2.93
ModuleNotFoundError: No module named 'yaml'
But the good news is once pyyaml installed it does work as expected.
Have a small class to setup python modules from blender itself https://github.com/s-leger/blender-pip
@stephen_l this is actually encouraging. yaml is imported later, so topologic and the cppyy stack is probably imported ok. I'll do another bundle with yaml included.
Here are some new Homemaker add-on packages for Linux now containing the yaml module, please test
Hi @brunopostle as reported on github, it is now working as expected under Mint (latest) so i guess will also apply for recent ubuntu distos.
Should probalbly take a closer look at Fedora, but old apt habits make it hard to switch.
But when I try to activate...
(Re-)building pre-compiled headers (options: -O2 -mavx); this may take a minute ...
sh: 1: /home/alfkubuntu/.config/blender/2.93/scripts/addons/homemaker/libs/site/packages/cppyy_backend/etc/gdb-backtrace.sh: Permission denied
Segmentation fault (core dumped)
===== System ======
Operating System: Kubuntu 20.04
KDE Plasma Version: 5.18.5
KDE Frameworks Version: 5.68.0
Qt Version: 5.12.8
Kernel Version: 5.8.0-53-generic
OS Type: 64-bit
Processors: 16 × Intel® Core™ i9-9900K CPU @ 3.60GHz
Memory: 31.3 GiB of RAM
Thanks, the 'permission denied' error is caused by blender removing the executable bit from all add-on files, please can you make the file executable like this:
This should give a better error message if you try and activate the add-on again.
Strange, had no such issue under Mint. The message "(Re-)building pre-compiled headers (options: -O2 -mavx); this may take a minute ..." was same, but no right issue.
gdb-backtrace.sh is not "executable" here.
I don't pretend to understand all that cppyy is doing here - cppyy is a piece of magic, generating python APIs for C++ libraries on the fly with no configuration - the problem is that to make a downloadable blender add-on that contains Topologic we need to bundle the whole thing, including a modified clang compiler and all these other tools. But it looks to me that
gbd-backtrace.shis a tool that cppyy runs to provide information after it has already crashed, which explains why we haven't seen this error before, by fixing the executable bit it might tell us why it crashed.
I updated the Homemaker add-on packages for Linux, they now include a pre-compiled header file - previously the PCH file was generated on first-run by collecting headers from the user's system, which made the download smaller, but was a potential failure point.
I tried the Python 3.7 version on 2.91 and got this:
I find it strange because Blender 2.91 is 3.7, so perhaps it is looking for my system Python, not Blender Python. My system has 3.8 and 3.9.
@Moult does your blender installation include a
@Moult Blender ships with a static
.alibrary, what use could that possibly be? @stephen_l are you using a blender downloaded from blender.org too?