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



  • Amazing progress, @paullee!
    In the following, I am going to assume 2D, but 3D works in exactly the same way. Just replace "Edge" in 2D with "Face" in 3D and "Face" in 2D with "Cell" in 3D. I am also assuming that rather than just a 2D wire, you are able to create a 2D shell (made of inter-connected faces).
    You should assign a dictionary to each face. Or perhaps this can be intelligently derived by the faces' location, size, shape, neighbours etc (we are researching using machine learning to do exactly that).
    Get the interior edges/boundaries of the Shell. Loop through them. For each edge, ask it for its super topologies. It should give you two faces. Ask each cell for its dictionary value at key (e.g. "Function") and if the answers are "space" and "circulation" then you know you should place a door between the two.

    To return the direction of a face, use Face.Normal()

  • Hi @paullee,
    Here is a sample script in jupyter notebook that shows you how to find the walls that separate offices from circulation

  • edited September 2023

    Thanks for your time @topologic in explaining and the sample codes, learnt a lot, still studying :D

    Now, user defines 'type' of space. Conceiving usescases like user define main entrance and the script know the 1st cell/space is kind of passage and place doors to reach every room, checking of escape route distance, window area vs room area etc.

    @yorik @Moult Anything in IFC define 'main entrance(s) ' ( for door(s)) of a building ?

    Thanks all again :D

  • Yes. Very possible.

  • Amazing exploration @paullee @topologic ! in ifc, there is nothing in the IfcDoor object itself, but there is an "isExternal" property in Pset_DoorCommon: https://standards.buildingsmart.org/IFC/RELEASE/IFC4/ADD1/HTML/schema/ifcsharedbldgelements/pset/pset_doorcommon.htm

  • Happy to announce that #topologicpy now supports Apple Silicon. Download the latest version (0.4.41) through pip install topologicpy --upgrade or visit: http://pypi.org/project/topologicpy

  • edited October 2023

    Further to previous Automatic Building Generator,
    now feature includes automatically :-

    • identify Internal Corridor
    • identify Internal Wall connecting to Rooms, and
    • place Door at these internal walls :D
      (Next is let Topologic to work out the graph of corridor and rooms?)

  • Fantastic work @paullee! Graph is very straightforward. I assume you have a CellComplex with apertures (calling it myCellComplex below). So:

    from topologicpy.Graph import Graph
    g = Graph.ByTopology(myCellComplex, direct=False, directApertures=True) #Connects cells/rooms only if they share an aperture.
    # or
    g = Graph.ByTopology(myCellComplex, direct=False, viaSharedApertures=True) #Connects cells/rooms to shared apertures so you get a node at the door.

    You can then do shortest path, draw the graph etc. etc.. lots of methods to analyse the building. Let me know if you have any questions.

  • Hi everyone,
    I want to share that I just released a new version of topologicpy (v. 0.4.48) that has many bug fixes, but one MAJOR improvement. I have introduced a new method called Topology.Cleanup(). This method will cleanup global memory resources that topologic is storing. You should use this method with care as it deletes dictionaries, contents, context etc. You usually use this at the end of a for-loop where you are done with all topologies and are about to start a new cycle with new parameters. This will delete the resources that the old topologies have used and are no longer needed. The difference in RAM usage can be huge. Where before, for-loops with many iterations would continually consume more and more memory until the app can potentially crash as it runs out of memory, now if you place Topology.Cleanup() at the end of each loop, you will see the memory used by topologic reset to a low value.

  • Hi everyone,
    Today's progress: Added Shell.Simplify to simplify internal and external boundaries of an input Shell while maintaining topology and avoiding gaps. This is included in #topologicpy v. 0.4.54 which is published. Also, behind the scenes, I now use multi-processing to speed up certain operations. Upgrade through pip install topologicpy --upgrade.

  • Dear @everyone,
    If you would like to get an update on the status of topologicpy and the use of graphs and graph machine learning in AEC, please join me on Wednesday 8 November at 11:00 for a one hour talk and discussion. The zoom link is:
    Hope to see many of you there.
    Best Regards,

  • Hi @topologic I'm guessing that's 11am GMT? :)

  • @Nigel said:
    Hi @topologic I'm guessing that's 11am GMT? :)

    Yes sorry. This would be 11:00 am GMT (UK)

  • @topologic Hi Wassim, excellent presentation the other night, your morning
    I cannot find how to download Topologic Addon for Blender? can you point me in the right direction please?

  • Hi @Nigel
    Thank you!
    TopologicSverchok is currently being rewritten to use topologicpy. We are about 60% done. The older version (should still run fine) is at: https://github.com/wassimj/TopologicSverchok

  • In the department of "wow, that is really powerful, but also really geeky!", today's #topologcipy progress included the ability to store and retrieve nested multi-modal values in dictionaries and expand the supported types to include actual topologies! And, to add to the power and geekiness, if these topologies already have embedded dictionaries, these are preserved as well and are stored and retrieved with the topologies themselves. New release coming soon.!

Sign In or Register to comment.