[Topologic] Redefining BIM through Spatial Topology, Information, and Grammars
I am wondering if this group would be interested in a talk on Topologic (https://topologic.app). Would be happy to present it.
Edit 2021-04-21 changed name of this thread @duncan
I'd love to hear about that!
I'd also really like to hear about it!
Any chance to get is running on Linux / MacOs ?
Will never go back from full open source stack.
Agree with @stephen_l - is it possible to run on Linux / MacOS? Also, I'd be interested in a demo that does not rely on proprietary software, e.g. running it without needing Rhino and without needing Dynamo.
Edit: if this is not possible, we will need to fix it in the Wiki too, to recategorise it as a extension to proprietary software.
Second time I hear about Topologic :-). Yes I am interested and also my colleague who told me about for the first time. Thank you Wassim to propose it.
Core is in C++ : https://github.com/NonManifoldTopology. Third party softwares are OCCT, Boost, OpenStudio and EnergyPlus.
There is a .net and BHoM versions available in download section. So it definitely not rely on a proprietary software.
Edit : Additionnal info. Dynamo and Grasshopper are only for visual data flow according to official website :
If you can move to Linux as operative system, you could get up to double of speed improvement:
@topologic it seems ambiguous as to whether it is practical to run your software on a full FOSS stack. Could you clarify?
@topologic ping - would you be interested in presenting? The meetup is in two weeks.
Everyone. Apologies. I had not turned on email notifications and missed your comments. Plus it was a hectic time finishing up the academic year. I will try to answer your questions here:
Cheers @topologic Would love to hear more about it! See this thread for the monthly meetup. Add yourself to the spreadsheet :)
Done. Looking forward to it.
@topologic Thanks for the talk, and I feel a little embarrassed that I didn't have any questions to ask. I've been pursuing a lot of related ideas and I can see that this system is very well placed exactly at the level where buildings should be designed. A BIM model that is just a collection of building components may have full semantic information about all the things in the model, but it doesn't say anything about the usefulness of the building as a whole - and as we've discovered, trying to assign information about relationships between parts to an existing 3d model after the fact is hard and not easily automatable.
This could be the missing link that allows blender and freecad to leapfrog other software and become invaluable for architectural design. i.e. rather than concentrating on tools that work at the level of drawing walls and connecting them together, they could work at the level of rooms, spaces and the relationships between them, with the walls and other building components derived from this higher level information, their 3d geometry dynamically generated.
Imagine a design tool where the spacial topology is used to generate a list of all the boundary and edge details in the building - inside corners, partitions, outside corners, eaves etc... then as each detail in the list is refined by the designer, the 3D geometry is updated. Similarly, the 3D geometry gets updated if the high level spacial topology is modified. Clash detection could then be used to highlight problems with details that don't fit, windows that clash with flashing etc...
This is exactly our vision for topologic. I hope we can get it to be fully platform agnostic.
@topologic Thank you for the invaluable presentation and a lot of interesting work on geometry, topology, graphs, matrices (especially adjustment matrix), and AI
I think gbXML had (and still has) some limitations and inaccuracy, and yes, until 2-3 years ago IFC (IFC2x3) was a small schema/spec, and file format that didn't support many things, especially related to LOD and HVAC and energy, however, today IFC to FMI (Modelica) is one of the recent and important movements and I think gbXML in the near future will be replaced by this approach
I think Topology has a good infrastructure to be in Blender too (normally almost all software (somewhat) support non-manifolds too), please check Animation Nodes (developed for Animation, Motion, and Particles): https://animation-nodes.com
Maybe friends suggest other addons, however, I think AN is more advanced for Topologic than other ones
Perhaps after that, we can work on SketchGraphs (https://github.com/PrincetonLIPS/SketchGraphs) and other approaches too
Hi all and @topologic,
I had a post earlier at 1st August 20:00 UTC Monthly Meetup before realising this thread.
There are FreeCAD and IFC file there, bother to have a look there to avoid duplicating? Maybe continue here if there is any feedback.
I do not realise any possible way to link to particular post in a thread, any idea ? Thanks.
[unfortunately this thread is in two places, I'll continue here] This discussion is really clarifying what I have been doing all this time with automated design and showing how the same principles can be applied to interactive design.
This is the topology of the building I designed in Homemaker during the talk last month. The Homemaker geometry is much more constrained than topologic, i.e. it is strictly four-sided spaces in a 2½D world rather than arbitrary geometry in a 3D world, but the result is equivalent, all the spaces are joined into this non-manifold surface (i.e. a non-self-intersecting surface that defines multiple closed cells):
This sort of thing is really easy to draw in blender, no need for additional helper tools. Homemaker doesn't currently spit this out as a 3D model like this, but it would be very easy to do.
So, I'm using this topology to generate the dual graph which describes the connectivity between spaces, then I prune the dual graph to create the circulation graph that @paullee quoted:
I'm also using this model to extract external walls, internal partitions, floor slabs etc.. :
Plus it is really easy to extract all the edge conditions that need to be detailed, here I'm showing the eaves 'path' and two parapet 'paths':
Elsewhere, I have a DXF file for each of these edge conditions, anything I draw in this DXF file gets extruded along the 'parapet' path shown above. What never occured to me before is that I could put a drawing box around this, add additional elements, annotate it with semantic information, and it could be the detailed design construction drawing - in addition to just being an extrusion definition that is used in the 3D model:
Here is this 2D drawing mapped to the parapet 'path' in the IFC model, using a series of IFCSURFACECURVESWEPTAREASOLID entities:
..and all the walls and edge details converted into various IFC elements:
Fantastic work, @brunopostle. Yes, I saw your talk and your approach is very close to ours. Our mission was to create a foundational layer that can work in different contexts and on which other people can build. I would be very interested in the connection to IFC. Might be cool to collaborate and convert Topologic models into full IFC BIM models.
I have a couple of questions:
1. Can you explain a bit more how you prune the dual graph to create circulation?
2. How much of the above is your crafting of the model vs. automated generation by scripts etc? My goal is to be able to create what you have done algorithmically.
[continued] So forgetting for now about Homemaker, as literally none of this code is any use for an interactive tool:
The initial dual graph is all the 'potential' connections between spaces, i.e. any bit of wall that is big enough for a door. This is the most important graph as it defines all the possible futures of the building - the higher the degree of connectivity in this graph, the more likely the building can be adapted to unknown future uses. See Stewart Brand's book 'How Buildings Learn', though he doesn't talk about this in these words.
I have each cell/space/room assigned a type: 'kitchen', 'bedroom', 'outside', etc... so I just traverse the graph and delete all the links between 'kitchen' and 'bedroom', or between 'toilet' and 'living room'. I discard multiple paths, i.e. if a toilet has two doors, then I keep the one that is the furthest distance from the 'living' spaces (I'm using Dijkstra's algorithm to calculate all the travel distances). I also assign vertical links between 'circulation' spaces that have enough space for a stair and still fit in the necessary doors. I add a link between the street and the building, preferably via an outside space, if not then directly through a circulation space, and in desperation I will add a link directly from the street to a living space or kitchen.
At this point I can check that the graph is connected, any design with an unconnected circulation graph is scored down.
It's all 100% generated by Homemaker, I only specify the boundary conditions (the literal site boundary, and the patterns that the building needs to fit) and at the end it spits out an IFC file with a (hopefully) complete design for the building. Homemaker works with more constrained topology than topologic is capable-of, so I can guarantee that walls are vertical, eaves are horizontal, and other things that dramatically reduce the number of edge conditions that I have to deal with. I'm only concerned with 'traditional' domestic architecture, so I only have to worry about getting that right and can ignore all the problems that 'artistic' architecture produces.
Yes. This is same in the Space Syntax world (see Hillier and Hanson's book 'The Social Logic of Space'). I have implemented quite a bit of graph theory algorithms in Topologic. So all this is possible.
How is the assignment made? By a user or also automatically? If automatically, is it based on area? What floor level the space is on?
This is the bit I am missing. I know there are IFC exporters for Dynamo/Revit etc.. but if Topologic can return to Homemaker the 'skeletons' and centerlines then it will be very easy for Homemaker to turn these into IFC components. Topologic, as you said, can use logic and computation to correctly detail the non-manifold model with the needed place holders for things like windows and doors etc.
Happy to work on a proof of concept even if it is a bit clunky in terms of data exchange; if you are up to it :)
It's 100% evolution, I don't pre-empt the design by trying to assign attributes like this manually or procedurally, so the types are allocated by mutation and crossover, and the fitness algorithm takes care of removing individuals from the population that have stupid assignments.
As it happens I needed to modularise this because it made my brain hurt, so the IFC generation is done by a tool called 'Molior' that accepts as input a (currrently undocumented, but quite simple) file format that is just a YAML formatted list of all the building components: wall (an open or closed 2d path with thickness and height information), extrusion (the 2d directrix used by the parapet profiles above), insert (which is implemented at too low a level to be fully useful, needs fixing), then ceiling, slab, roof, space, and stair all currently presume a four-sided perimeter (but ceilings slabs and space can be fixed easily, probably).
If you like I can document this Molior file format a bit, starting with 'wall'? I can start a new thread.
Yes please! Thanks
Perhaps I can combine this with the work I did on Cell subdivision which is based on a building program (expressed as percentages of a total volume). We can feed that into a GA and use the dual graph and the resulting geometry to compute a fitness function.
@topologic yes I'm doing cell subdivision like this, except:
I'll see if I can document a simple Molior file today.
I've been playing with some Perl code to partition these non-manifold surfaces, here's a test, Suzanne is a manifold mesh, but I have drawn a baffle down the middle to partition it into a non-manifold with two internal cells (and another external cell):
Now I can split each of the three cells into a clean manifold:
Here's some more work in progress, I might not get a chance to work on this for a few days and there are a couple of monstrous bugs that I need to resolve. The code is in the the Urb perl module (you will also need the latest File::DXF, File::IFC and Molior modules from the same place).
This is a mesh made up from vertical and horizontal quads, it is partitioned internally so it is non-manifold:
urb-topologise.plscript processes this as a DXF file (I really need a better way to do IO), identifies cells, storeys, generates graphs for walls, floors, room connectivity etc.. Then the
molior-ifc.pltool is used to generate an IFC file for opening with blenderbim:
Here are the internal cells identified (the external cell isn't shown):
..and the network graph showing the connectivity between cells:
This is the IFC file, it has walls, slabs, windows, spaces, storeys etc... internal walls, doors between rooms etc... This is skinned with the default style in the molior module, so all the details are customisable by creating a new 'style':
Note internal walls, doors, non-quad shaped room:
Gotta go, this is just a proof-of-concept, but I'm convinced this is the way to go to get interactive design of buildings with full semantic BIM data.
Fantastic work and almost exactly how topologic works. I fully agree that this is the way to go. I always mention in my presentations that software can be far better than humans at detailing and populating BIM models. What we should focus on is the conceptualisation of the spaces and their topology.
@topologic so it means machine learning and some techniques like labaling/classification and also optimization/correction techniques
Or evolutionary computation and some strategies like Fitness function that @brunopostle does
However, the process matters most, we can do a process in different ways and come up with different outcomes
@ReD_CoDE yes. A combination of straightforward rule based system, ML, GA etc will get us there. I agree there will be different interpretations of a conceptual model And the process can change the outcome. Like @brunopostle I see the outcome as style or architectural language (Phenotype) The conceptual model is more the DNA of the design (genotype).