OSArch Community

[Topologic] Redefining BIM through Spatial Topology, Information, and Grammars

  1. B

    @topologic yes I'm doing cell subdivision like this, except:

    • All my work is with 2½D floor layouts, so the subdivision is walls and not floors. Building storeys are implemented as additional levels that (mostly) inherit the subdivision structure from the level below.

    • I'm subdividing arbitrary quads, which don't have to be perfectly rectangular/orthogonal.

    I'll see if I can document a simple Molior file today.

  2. B

    @brunopostle said:

    [continued] So forgetting for now about Homemaker, as literally none of this code is any use for an interactive tool:

    1. Drawing 3D non-manifold surfaces (non-self-intersecting surface that defines multiple closed cells) as required by topologic is really easy in blender and freecad (though I'm less familiar with freecad).

    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:

  3. B

    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:

    The urb-topologise.pl script 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.pl tool is used to generate an IFC file for opening with blenderbim:

    $ urb-topologise.pl t/data/non-manifold-1.dxf non-manifold-1.molior
    
    7 cells
    
    2 storeys
    
    4 rooms
    
    2 rooms
    
    $ molior-ifc.pl non-manifold-1.molior

    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.

  4. T

    @brunopostle said:

    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.

  5. R

    @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

  6. T

    @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).

  7. B

    Amazing progress here. I am curious about adding outdoor spaces that have relationship requirements to indoor rooms. A garden next to the kitchen, A attractive view, A unattractive view, etc.

  8. B

    @baswein this latest work is purely deterministic, you draw the rooms and the generated building is constructed from rules - the idea is that this is a quick and easy interactive way to design buildings without having to draw any of the detail.

    My other Homemaker work (which uses the same tools to assemble the IFC file, which is why it looks similar), uses a fitness function to evolve buildings without any interaction at all - this fitness function evaluates things like having the kitchen next to a garden and (potentially) things like attractive views.

    The latest work has no concept of room types, they are all just 'rooms'. But it won't be hard to be able to manually assign room types, which will initially just control the placement of doors and stairs. A garden in this model will be just another cell in the mesh with the type 'garden'. One potential with having a high-level model like this is that it will be possible to reintroduce the fitness evaluation, so the tool will be able to tell you that the circulation doesn't work, or there isn't enough daylight in the kitchen, or the bathroom is too far from the bedrooms - all in an interactive way, giving hints to the designer rather than taking over the design.

  9. P

    Looks great ! Look forward it being loaded in FreeCAD :)

  10. J

    @brunopostle said:

    all in an interactive way, giving hints to the designer rather than taking over the design.

    This is the way to go for sure. If AI takes over the design the architecture world will be unemployed. We are already struggling for projects and fees against each other. Struggling against free fees from machines will be bad.

    Some would say that they don't believe machines will be able to have the creativity of humans, I would not. Besides that most architectural work isn't particularly creative and so most will be at risk when your work will be finished.

    You'll be able to produce projects faster than people's need for them and shred the market altogether.

    This is scary work, to be honest.

  11. R

    I see two signs in @brunopostle's project that ensures me his approach is good but follows the somewhat wrong path

    And the third one is this one:

    The latest work has no concept of room types, they are all just 'rooms'. But it won't be hard to be able to manually assign room types, which will initially just control the placement of doors and stairs.

    However, personally like what he does. And an article from him about "perspective" gave me some new ideas to examine

  12. B

    Here's a more complex building, this mesh took about 30 minutes to model in Blender, note that I have drawn faces for all internal walls and floors, so this is non-manifold:

    The urb-topologise.pl tool identifies 88 internal cells:

    There are still some glitches, but here is the model rendered as an IFC file using the default Homemaker style:

    We have IFC wall, slab, window, door, space, storey etc.. elements:

    Note double-height spaces, corridors, funny-shaped room plans:

  13. J

    Can we connect this to a data mining app and generate a perfect house for every person on the planet based on their social media profile? And then finally get rid of architecture forever.

  14. B

    @JanF said:

    Can we connect this to a data mining app and generate a perfect house for every person on the planet based on their social media profile? And then finally get rid of architecture forever.

    Getting rid of architecture would be awesome :) but unfortunately this isn't automated design (other than trivial rules-based stuff like placing windows and doors) - it is just a way of drawing buildings so that the model is semantically complete - i.e. it's BIM

  15. P

    Looks great !

    @brunopostle can you describe the workflow ? Hope this can be reproduce in FC :D

    Thanks

  16. M

    @brunopostle can you do a short recording demonstrating how this is done? Is the only "extra" requirement for Perl to be installed?

  17. B

    @paullee @Moult I'll try and describe the workflow tomorrow somehow. It just requires Perl and four Perl modules from git (and their dependencies).

    The workflow kind-of sucks at the moment as I use DXF as input geometry, so I'm using the copy-paste trick to transfer the model from blender 2.83 to 2.79, as I need the older DXF exporter to correctly save quads rather than triangles. I can't find an easy way to simply get a list of nodes and faces out of blender, as this is all I really need (though ultimately I would like to be able to tag each of the spaces with the room 'type'), also it would be simpler to support arbitrary polygons rather than just triangles and quads - any ideas?

    The roof generation is a bit glitchy, my roof pitch code was never intended for such complex shapes, so only some of the roofs come through. The IFC file crashes freecad, though I had success in the past with similar files, and I am using freecad nightly snapshots.

    It's a proof of concept really, ultimately I would want the IFC elements to be updated in real-time in blender/freecad - so you can see the building result as you draw.

  18. T

    @brunopostle This is really a fantastic proof of concept. I can imagine how this would work great with topologic. Topologic has dictionaries for space types and apertures which are placed on any face. These can be readily translated to windows and doors. I am also thinking you can manually place/model pitched roofs same as walls with simple surfaces to avoid the glitches you mention.

    I am not familiar with how IFC interprets elements: did you have to worry about trimming/pulling back interior surfaces when they meet exterior surfaces? I assume interior walls are centred on the parent surface while exterior walls are aligned on their exterior surface?

  19. R

    @topologic could you please share that part about space types? I would be happy to see its granularity

  20. B

    @topologic said:

    I am not familiar with how IFC interprets elements: did you have to worry about trimming/pulling back interior surfaces when they meet exterior surfaces? I assume interior walls are centred on the parent surface while exterior walls are aligned on their exterior surface?

    I'm letting the ends of walls overlap slightly as this doesn't seem to be a particular problem with IFC. Though where the walls form a chain (such as the external envelope) I mitre the corners as this works-out nicely.

    In this model the interior walls are offset 80mm either side of the centerline, exterior walls are inset 80mm and outset 250mm - this results in clean wall junctions, though I would need a different strategy for a building with variable width internal walls.

    The usual situation with masonry buildings is that you don't really want to centre walls on gridlines, normally you want to align the face of blockwork with a gridline, as this is easy to not screw up on-site, but I think we don't worry about stuff like this yet.

  21. T

    @ReD_CoDE said:

    @topologic could you please share that part about space types? I would be happy to see its granularity

    Of course everything is on github so you can examine how the code works in detail. Conceptually, any “Topology” in Topologic has an associated key/value dictionary. We are limited to normal values (float, int, string). We build a dictionary object (ByKeyValue) and then we use Topology.SetDictionary. To retrieve we call Topology.Dictionary and then we get the value for a particular key.

  22. T

    If you want to associate one topology with another (eg for an LOD implementation) you can add one Topology to the Content of another topology. In the work presented here, I can imagine different ‘styles’ saved with the topological entity and called on demand.

  23. Y

    @brunopostle fantastic stuff!! The "everything is a dxf profile" philosophy is really interesting..

  24. B

    @Moult said:

    @brunopostle can you do a short recording demonstrating how this is done? Is the only "extra" requirement for Perl to be installed?

    OK, I did a ten minute walkthrough

    <iframe width="560" height="315" src="" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

    To get this tool working, you need current snapshots of four perl modules: File::DXF, File::IFC, Molior and Urb from http://bitbucket.org/brunopostle/

    Basic instructions for installing a perl module are:

    git clone https://bitbucket.org/brunopostle/file-dxf.git

    cd file-dxf

    perl Makefile.PL

    ..at this point perl will tell you if you are ready to install or if you need to fetch some dependencies first. So for example if you need to install the 'Polygon' module, you can install it with this command (use sudo if necessary depending on how permissions are setup on your system):

    cpan Polygon

    Now if the dependencies are installed, you can install the module (again, you may need to run this as root or use sudo):

    make install

    That's it, remember this is very unfinished and I may commit something that breaks it at any time! The File::DXF module will install all sorts of half-baked scripts that I have used for particular jobs and abandoned over the last twenty years, so don't ask me how any of that stuff works.

  25. J

    @brunopostle should we call you Bruno the sorcerer or something ? :D :D

    Amazing stuff really

  1. Page 1
  2. 2
  3. 3
  4. 4
  5. 29
  6. 30
  7. 31

Login or Register to reply.