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

1679111226

Comments

  • Hi everyone. For those of you not following the latest on twitter (@topologicBIM). I just made the TopologicPy for Linux and Python public and available at http://github.com/wassimj/topologicPy. We managed to get it working in Blender, and we are starting to work on adding it to sverchok. This is all very preliminary alpha code.

    brunopostleCGRtheoryshawcarlopavbruno_perdigaoJesusbillMoultpaulleeLaurensJNCyriland 3 others.
  • ..and I'm slowly porting my Topologise blender add-on to python here (using the new @topologic library): https://github.com/brunopostle/homemaker-addon

    Tips and suggestions welcome, I'm no python expert

    topologicJQLcarlopavMoultduncanCGRDADA_universe
  • Congratulations!

  • An not to leave FreeCAD behind, topologic also works in it. We now need four things to move forward:
    1. Bruno's effort to connect Topologic to Topologise
    2. Embed Topologic in sverchok and/or create a topologic add-on for Blender
    3. Create a Topologic workbench in FreeCAD
    4. Re-create the above for Blender/FreeCAD on Windows and Mac

    carlopavJQLJesusbillbrunopostleMoulttheoryshawCGRDADA_universepaulleebitacovir
  • Here's the topologicPy python bindings to the TopologicCore c++ library being used to process a blender mesh and identify external wall axis paths (work in progress).

    All this code is here on GitHub, hardly any of this is blender specific, so it should be straightforward to use in freecad.

    topologiccarlopavJesusbillarquitextonicaCGRtlangJanFJQLtheoryshawDADA_universeand 3 others.
  • Far from understanding the technicality of the discussions. Seems lots of progress :D

    If something is ready for use or test in FreeCAD, would like to try :D

    topologicJQLbitacovir
  • @paullee said:
    Far from understanding the technicality of the discussions. Seems lots of progress :D

    If something is ready for use or test in FreeCAD, would like to try :D

    Hi @paullee Are you looking to try Topologic or Homemaker/Topologise in FreeCAD? If the former: coding Topologic in FreeCAD can now be tested by installing it from http://github.com/wassimj/topologicPy
    I am happy to jump on a zoom meeting to walk you through it.

    JQL
  • First success with @topologicBIM in #sverchok on @Blender #b3d in #Linux. This creates two Vertices by Coordinates --> creates an Edge by these two Vertices --> computes the Centroid of the Edge --> and outputs the coordinates of the Centroid.

    JanFbrunopostleCGRtheoryshawcarlopavJQLbitacovir
  • @topologic said:
    Hi @paullee Are you looking to try Topologic or Homemaker/Topologise in FreeCAD? If the former: coding Topologic in FreeCAD can now be tested by installing it from http://github.com/wassimj/topologicPy
    I am happy to jump on a zoom meeting to walk you through it.

    Many thanks !
    Not aware what is Homemaker/Topologise :)
    I am on Fedora 31, just follow the instruction on github ? (not much idea what each line means :D )

    topologicJQL
  • @paullee said:

    @topologic said:
    Hi @paullee Are you looking to try Topologic or Homemaker/Topologise in FreeCAD? If the former: coding Topologic in FreeCAD can now be tested by installing it from http://github.com/wassimj/topologicPy
    I am happy to jump on a zoom meeting to walk you through it.

    Many thanks !
    Not aware what is Homemaker/Topologise :)
    I am on Fedora 31, just follow the instruction on github ? (not much idea what each line means :D )

    I understand. This effort thus far is not at the point where it is a user-friendly piece of software with a graphical user interface. @brunopostle has it installed on Fedora 32. I have it on Ubuntu 2.10 Groovy Gorilla and Python 3.8. If you are interested, my offer stands for a Zoom meeting to walk you through it. You (or anyone reading this) can book a time using http://jabiw.ycb.me

    paulleearquitextonicacarlopavJesusbillCGR
  • I would love to attend that meeting, or any other around Topologic, even if I'm a windows user waiting for a dumb UI.

    carlopavtlangCGR
  • @topologic said:
    I understand. This effort thus far is not at the point where it is a user-friendly piece of software with a graphical user interface. @brunopostle has it installed on Fedora 32. I have it on Ubuntu 2.10 Groovy Gorilla and Python 3.8. If you are interested, my offer stands for a Zoom meeting to walk you through it. You (or anyone reading this) can book a time using http://jabiw.ycb.me

    Seems quite some peoples would be interested.
    Would it be better if this is a short presentation in the Monthly Meetup ? :D
    Probably becoming a series of updates and/or discussion on the usage, direction of development, features etc. ?

    JanFCGR
  • @paullee I think once we progress with the work a bit more, @brunopostle and I could perhaps give a joint talk and field questions.

    paulleebrunopostlecarlopavJQLtlangCGRduncan
  • edited February 2021

    Here's a bit more work in progress, I've ported my Homemaker Topologise add-on code that identifies floors and internal/external walls to use the topologicPy python classes (that use the Topologic C++ library behind the scenes). Then, so there is something to see, I've used Dion's 'dumb wall' to draw the results in blender - This is just temporary code, I intend to reintegrate the old 'Molior' system that generates IFC entities for windows and doors etc..

    As you can see, using Topologic to segment some quite roughly drawn geometry into cells is really easy and very fast - with my Perl code in the old add-on I had to ensure that all the vertices in the mesh aligned perfectly, now all that is necessary is that the faces overlap.

    CGRtopologicJQLpaulleebruno_perdigaotheoryshawbasweinJesusbilltlang
  • Woahh.. is this what I think it is? I am wishing an IFC-repairing Tool. We get Revit IFCs from architects that do not respect the state-of-the-art rules. Very often the IFCspaces are not well declared. Then I need to import those IFC to the next tool (DDS-CAD or DIalux Evo) and of course it fails because of wrong IFcSpaces or Spaces-geometry descritpion. So what I see is that this combination of Topologic/Topologise can recognise volumes and declare them back to a clean IFC entity ? This is my repairing Tool ?
    Any Building in Blender (IFC or not..) can be scanned and given back as an IFC Model !! Since it is topologised and topologic.ised , it is also open for different geometry descriptions... Cyril may want only internal walls descriptions, Jesusbill only a kind of wireframe.. sounds very cool..

    topologic
  • @lukas said:
    So what I see is that this combination of Topologic/Topologise can recognise volumes and declare them back to a clean IFC entity ? This is my repairing Tool ?
    Any Building in Blender (IFC or not..) can be scanned and given back as an IFC Model !! Since it is topologised and topologic.ised , it is also open for different geometry descriptions...

    There is still the problem that the raw geometry may have gaps, so two cells can 'leak' into each other. The other issue is complexity, Topologic identifies a cell complex in a mesh with 600 faces in about three seconds (on my ancient laptop), which is incredibly fast; a normal bim model may have hundreds of thousands of faces, plus the resulting cells would have too much detail.

    This is why I suggested a two part approach: you convert the raw geometry into voxels to fill the gaps and reduce the resolution; then use this to identify cells, walls and floors; then you use this Topologic model to go back and classify the building elements properly.

  • What if topologic would ignore cells that are too thin and would then find the average axis between the thinner distance. That would allow us to turn walls into axis instead of cells. From those axis we could then auto remodel spaces. Far fetched?

  • @JQL I'm not sure, what about walls that are drawn as studs and panels? or openings that are modelled rather than cut with ifcopening* elements?

  • @JQL said:
    What if topologic would ignore cells that are too thin and would then find the average axis between the thinner distance. That would allow us to turn walls into axis instead of cells. From those axis we could then auto remodel spaces. Far fetched?

    Ever since we published Topologic, people ask us if they can use it to go from existing BIM models to conceptual models to add information, or fix them or analyse them. Our original vision was always to do the exact opposite and we need to change people's minds about this: Start with a simple conceptual model (e.g. a CellComplex), stay with it for as long as possible to analyze it, optimize it etc and when ready, use shape-grammar rules to 'thicken' it and create very well-formed BIM/IFC models. If I understand the video, this is what @brunopostle is doing. He is creating a Cell, slicing it with Faces and when done, creating a CellComplex and then 'thickening' it into a wall,floor, ceiling type of model.
    Going from Complexity to Simplicity is always going to be fraught with errors. Having said that, we are doing some interesting things with grouping rooms in a Revit model into apartments by creating the graph and checking for islands in the graph. It took a 5-day job and reduced to mere minutes.

    bruno_perdigaoJQLpaulleeCGR
  • Once everybody is opensourced, sure the simple to complex way is the right choice.. but for now, we have to deal with BIM-unaware/incomplete/mismanaged models and try to use them.. so the correction/repair tool is a kind of go in between as long as the world is not openBIMed. I do not get any chance to experiment myself.. think I need 3 weeks holiday to install and learn. I pay a xxxx.-€ to Osarch for a tutorial and workflow that would bring me the one revit-ifc here to a usable DDS-CAD model that would also go into Dialux-Evo. Probably not enough.. need to deal with import-capabilities of DDS-CAD and Dialux-Evo. But in fact I should ask these companies to pay. That is why I xx.ed the amount. Should go for xxxxx . This IFC-compatibility tool would be a runner to my opinion. (just walls, doors, windows, stairs and 2nd-ceilings)

    CGR
  • @topologic said:

    @JQL said:
    What if topologic would ignore cells that are too thin and would then find the average axis between the thinner distance. That would allow us to turn walls into axis instead of cells. From those axis we could then auto remodel spaces. Far fetched?

    Ever since we published Topologic, people ask us if they can use it to go from existing BIM models to conceptual models to add information, or fix them or analyse them. Our original vision was always to do the exact opposite and we need to change people's minds about this: Start with a simple conceptual model (e.g. a CellComplex), stay with it for as long as possible to analyze it, optimize it etc and when ready, use shape-grammar rules to 'thicken' it and create very well-formed BIM/IFC models. If I understand the video, this is what @brunopostle is doing. He is creating a Cell, slicing it with Faces and when done, creating a CellComplex and then 'thickening' it into a wall,floor, ceiling type of model.
    Going from Complexity to Simplicity is always going to be fraught with errors. Having said that, we are doing some interesting things with grouping rooms in a Revit model into apartments by creating the graph and checking for islands in the graph. It took a 5-day job and reduced to mere minutes.

    And that's exactly why I think topologic is the way to go. However the opposite would be an interesting possibility nonetheless.

    @brunopostle said:
    @JQL I'm not sure, what about walls that are drawn as studs and panels? or openings that are modelled rather than cut with ifcopening* elements?

    Maybe the threshold for how thin would ignore the thickness of those altogether?

  • @JQL said:
    Maybe the threshold for how thin would ignore the thickness of those altogether?

    The problem is if the model is like the picture below, the wall lines wouldn’t close and different rooms will blend into each other as one cell.

  • edited February 2021

    One of the approach I envisioned / experimented in FreeCAD to build the Villa Savoye model is simply use of the Sketch object there to 'outline' the layout of the floor plan / CellComplex.

    Then, currently it can be used to build with ArchWall to form the model.

    And I have initial success to use this Sketch to extrude ArchSpace from it, that can be CellComplex. This ArchSpace was early @topologic demonstrate to 'import' into Topologic to turn into CellComplex I understand
    - 1st August 20:00 UTC Monthly Meetup



    topologicCyrilbrunopostleCGR
  • And Sketch based architectural workflow with FreeCAD is really a cool concept. If topologic comes into play with it, FreeCAD will truly become an amazing architectural modeler.

  • @JQL said:
    And Sketch based architectural workflow with FreeCAD is really a cool concept. If topologic comes into play with it, FreeCAD will truly become an amazing architectural modeler.

    I agree. How far fetched would it be to find something like sverchok (or sverchok itself) for FreeCAD? That would be amazing.

    JQL
  • edited February 2021

    The @brunopostle workflow and mine seems different in quite some aspect.

    Mine : -
    2D Sketch --> (may have Height dimension built-in) --> each Edge 'thickened+extruded' to become ArchWall
    ..................... --> ............................................................................. --> areas defined by edges become ArchSpace
    Then, conceiving to use Togologic to do analysis / generate bubble diagram on Spaces

    Brunopostle :-
    3D 'Boxes' --> Using Topologic at this point ? --> each surface 'thickened' to become Walls / Slabs ?

    Seeking Algorithm
    BTW, as I am not trained as programme, I do not have a good algorithm to deduce the 'cells' from the 2D Sketch.
    Any idea ? :D

    arquitextonica
  • edited February 2021

    @paullee said:
    The @brunopostle workflow and mine seems different in quite some aspect.

    Brunopostle :-
    3D 'Boxes' --> Using Topologic at this point ? --> each surface 'thickened' to become Walls / Slabs ?

    I'm drawing boxes, or just polygons, these don't have to align perfectly, as long as they enclose space Topologise will identify the cells and create a cellcomplex. You don't actually see the cellcomplex, I iterate through it to extract 2d floorplans for each level - these are equivalent to your 2d sketch, except I can link every element back to a position in the cellcomplex. Then I'm doing the same thing, extruding wall centrelines etc..

    Seeking Algorithm
    BTW, as I am not trained as programme, I do not have a good algorithm to deduce the 'cells' from the 2D Sketch.
    Any idea ? :D

    This isn't too hard a problem, I solved it in 3d for my previous Topologise tool. Basically iterate through all your lines, allocate a 'room' to the left and to the right of the line, then propogate this information to adjacent lines until there are no lines left. Alternatively, you could convert to 3d and let Topologic [edited] sort it out for you.

    CGRpaullee
  • @brunopostle my recommendation for assigning 'rooms' to spaces is the following:
    1. Get the Cells from the CellComplex (or draw initial volumes and convert them to Cells)
    2. For each Cell, create a corresponding Dictionary with any key/value pair that you want (e.g. "room_name"/"bedroom") (Dictionary.ByKeysValues)
    3. Assign the Dictionary to the Cell (Topology.SetDictionary)
    4. Build a new CellComplex from the Cells (CellComplex.ByCells -- now all the Cells in the CellComplex have a dictionary)
    5. You can now get the interior and exterior walls, bottom slabs, intermediate slabs, and ceiling s (Faces) of the CellComplex, ask them to return the Cells that they are separating and then ask each Cell what room type they are and set the thickness and other attributes of that Face accordingly.
    I know your process is more about lines and extruding them, but I cannot help but think a fully 3D approach would give you more flexibility (e.g. inclined walls) which Topologic can handle just fine. I am also not 100% sure the above works well in 2D. We have not tested that extensively. But you can try a 2D shell of faces separated by Edges and you can ask an Edge to return the two faces it separates (or one Face if it is an external boundary edge). It might works exactly the same as in 3D.
    Regardless, I am looking forward to seeing the amazing IFC models out of Topologic/Topologise/HomeMaker! :)

    CGRpaulleeMoult
  • Amazing work @paullee. I´m currently working on my thesis and my research approach is almost identical to yours, though I got some advantages from the tools. I´m working with Rhino and GH and there the 2D bounds recognition algorithms are already strong and stable, and above all, @topologic gives a lot of strength.
    So as I saw you already built the spaces from the edges, I´ll throw my two cents.
    I´m currently working by making closed space contours with 2d polylines. I then convert it to a topologic object with properties dictionaries and operate within them. Then, the resulting objects have properties dictionaries and allow me to perform topological operations among them. The result for me is very interesting because through the overlap of the properties, new properties can airse and we get "emergence" for design.

    JQLpaullee
  • @topologic said:

    I know your process is more about lines and extruding them, but I cannot help but think a fully 3D approach would give you more flexibility (e.g. inclined walls) which Topologic can handle just fine. I am also not 100% sure the above works well in 2D. We have not tested that extensively. But you can try a 2D shell of faces separated by Edges and you can ask an Edge to return the two faces it separates (or one Face if it is an external boundary edge). It might works exactly the same as in 3D.

    This comes down to a question about 'what architecture is'; saying that a wall can be any-thing introduces a huge amount of complexity that in itself constrains action later-on. Whereas accepting that floors are horizontal, and that walls are vertical and follow a 2d path brings real flexibility - I can put a door, window, shelves wherever I need to.

    When we think of BIM, we generally think of wonky upside-down buildings, but the IFC specification actually has all this great stuff for describing 'ordinary' buildings: IfcStorey, IfcWall, IfcDoor, IfcOpeningElement - if we use these things then it will be possible to have the software check the design completely, and to automatically generate clear drawings that can be used to construct it. A frustration is that useful ideas that would make this easier, like the *StandardCase building elements, are being dropped from the IFC standard.

    I do plan to support inclined faces, but these will be 'roof' - I'm beginning to think that Topologic may be the perfect tool for designing pitched roofs; dealing with hips, gables, combinations of hip and gable, dormers etc..

    CGRJanF
Sign In or Register to comment.