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

145791026

Comments

  • These are the minimum things needed to be considered:

    • This is glTF 2.0's architecture which is good for the start:

    • Geometry

      • Point
      • Curve
      • Surface
      • Volume
    • Topology

      • Vertex
      • Edge
      • Wire
      • Loop
      • Face
      • Shell
      • Cell / Body
      • Complex
      • Cluster
    • Operations

    • Space features
    • Form features
    • So on
  • @ReD_CoDE said:
    @topologic dear Wassim, could you please share the latest published paper here
    If your solution doesn't have anything related to the grammar side, like shape grammar, or other grammars, it would have limitation
    As far as I know, Space Syntax doesn't support the grammar side

    Most of our publications are listed on the website some recent ones are under copyright by the publisher. The two most recent ones is SIMAUD on graph machine learning and one at the formal methods in architecture symposium.

    You ask the wrong question and make unsubstantiated statements. Where is the evidence that if something does not use shape grammars then it has limitations? I have been reading about shape grammars since I met George Stiny in UCLA in 1990. I wrote a shape grammar piece of software for an AI class at the computer science department at the University of Michigan in the early 90s. SG is very interesting but sadly has had almost zero impact on the AEC industry. It remains a largely academic project.

    Going back to your question: Topologic is a foundational software library. It does not preclude support for shape grammars. In fact, given its brep nonmanifold representation, it is highly compatible with shape similarity and detection algorithms needed for SG.

    JQLbrunopostleMoultJesusbillReD_CoDE
  • @topologic I think my message is clear:
    If your solution just focuses on the "spatial" side, but doesn't support the "form" side, it's uncompleted
    Graph, it doesn't mater AI-based or non-AI-based, doesn't support forms

  • @JuhaW said:
    Yes, I watched video again. I tried to change kitchen windows but all output windows are based style: "living outside window".

    Oops, fixed.

  • @ReD_CoDE said:
    @topologic I think my message is clear:
    If your solution just focuses on the "spatial" side, but doesn't support the "form" side, it's uncompleted
    Graph, it doesn't mater AI-based or non-AI-based, doesn't support forms

    I think the operative word here is "if".. Please explain to me if you have actually tried using Topologic and found out that it does not support forms. Have you actually used Topologic?

  • @topologic dear Wassim, I clearly know about Topologic.
    Also, on your website, you have introductions too
    Just remember this part:

    Graph, it doesn't mater AI-based or non-AI-based, doesn't support forms

    Because soon in the AI world you will find what I was saying about graphs

    The approach you follow about form is drawing shapes (geometries) and then work on their topologies, which indeed is about the optimization stage

  • @ReD_CoDE said:
    @topologic dear Wassim, I clearly know about Topologic.
    Also, on your website, you have introductions too
    Just remember this part:

    Graph, it doesn't mater AI-based or non-AI-based, doesn't support forms

    Because soon in the AI world you will find what I was saying about graphs

    The approach you follow about form is drawing shapes (geometries) and then work on their topologies, which indeed is about the optimization stage

    OK. So you have not used it, but read about it and watched videos. One warning that I give people in my presentations is the following: Just because you familiarized yourself with one aspect of a piece of software, does not define the totality of that software. Example: If you have been using 3ds Max only for rendering and animation, you might not see it as something very suitable for digital fabrication. Keep an open mind.
    I will engage you on the graph comment: Topologic is NOT just a graph. Topologic supports a graph class, but it is not a limitation, it is a feature. And I never said Graph supports forms, although the thesis by Kammal Haddad proves that you can go from a graph to forms using generative rules.
    Right now, I am teaching myself to convert Topologic entities to IFC as inspired by Topologise. And this is the beauty of this thread. Topologic inspired @brunopostle to use non-manifold meshes and his amazing IFC models inspired me to start adding that functionality to Topologic. But because Topologic has full access to the underlying geometry, topology, and embedded information, I predict it will be able to do some interesting things when converting to and from IFC. Obviously, like Topologise, it can recognise exterior vs. interior walls, roofs vs. floor slabs vs. ground slab. But also, Topologic can recognise that a space is a 'living room' or a 'kitchen' without the need for painting the floor with a certain colour or placing widgets. It can also recognise that a living room has intersected with a kitchen and therefore, a rule could create a 'breakfast room' (all just examples.. design your own 'grammar' here).

    JQL
  • Here you mentioned graphs:

    Most of our publications are listed on the website some recent ones are under copyright by the publisher. The two most recent ones is SIMAUD on graph machine learning and one at the formal methods in architecture symposium.

    This part is the main part

    Topologic has full access to the underlying geometry, topology, and embedded information

    Dear Wassim, when I talk about Tolpologic, I don't say what you do is not invaluable, I just share my view and even indirectly or directly share the solution too for help
    For me both Topologic and Topologies are invaluable, and I appreciate what you do all

  • This is getting more and more interesting. Unfortunatelly I'm getting more and more questions too.

    What are the rules that Topologise uses to recognize a room function? It can't be out of the box or can it? There must be some user input involved on that recognition.

    It's really interesting that Topologic can be used to inform what should be happen to geometry but I was under the impression it was a user that would assign "tasks" to geometry, based on user defined parameters for each space/cell and relationships between itself and their neighbours. I was under the impression that some sort of programming knowledge would be needed.

    Also, what do you mean with converting to IFC? A cell would convert to a IFCroom? A face to a wall or slab? The roof slab would have a structure, insulation and a roof tiles layer, for instance? How do we interact with these definitions? How to define that the roof will be tiles and not gravel or zinc and it's structure will be a concrete slab or a wooden?

    And finally how do we work with topologic? I want to understand it but I haven't got grasshopper nor dynamo at hand. Will it be ported to Sverchok eventually or any other Opensource alternative?

    I was never interested on investing in Revit or Rhino before, and it feels awkward that it is an Opensource software like Topologic that is compelling me to think on that...

  • @JQL said:
    This is getting more and more interesting. Unfortunatelly I'm getting more and more questions too.

    What are the rules that Topologise uses to recognize a room function? It can't be out of the box or can it? There must be some user input involved on that recognition.

    [I assume you are referring to Topologic here] There are lots of ways that the user/designer would be able to assign a function to a room, but it is also possible that you just draw the room geometry and the software figures out which rooms can only be bedrooms and which room has to be the kitchen, based on the connectivity, orientation etc..

    Another way of looking at it (see Stewart Brand, How Buildings Learn), is that a measure of a great building that survives for centuries is that there are multiple ways the set of rooms could be used - If a room could make a great kitchen or a great bedroom you know you are getting somewhere.

  • Sorry, you're right, I was referring to Topologic.
    Well so that is up to us to tell Topologic then?

    I hope so, honestly, as I wouldn't want it to think that far. I want to keep thinking on architecture and not being replaced by software plays an important part of it. :)

  • @JQL said:
    This is getting more and more interesting. Unfortunatelly I'm getting more and more questions too.

    @brunopostle provided some interesting replies. I will focus on the technical/mundane aspects.

    What are the rules that Topologise uses to recognize a room function? It can't be out of the box or can it? There must be some user input involved on that recognition.

    I assume you mean Topologic ( @brunopostle you were right. let's rename Topologise to something else! :) No, it is not out of the box, but the functionality is available out of the box. Simply: Every topology in Topologic can accept and store a dictionary with any custom keys and values pairs. So you simply make a dictionary (e.g. key="RoomType" and value="Living Room") and you assign it to the topology. Now if you have a topology with id A and another topology with id B and you intersect them, the resulting intersection topology will automatically get an id of "A, B" so you can parse that and say: "Ah.. this is an intersection of a living room and a kitchen.. let's make that a breakfast area" This requires custom node creation and/or programming of course, but Dynamo/Grasshopper/Svershok is all about that.

    It's really interesting that Topologic can be used to inform what should be happen to geometry but I was under the impression it was a user that would assign "tasks" to geometry, based on user defined parameters for each space/cell and relationships between itself and their neighbours. I was under the impression that some sort of programming knowledge would be needed.

    Not sure I understand your comment here, but the relationships are built-in when you use something like a CellComplex. So you can ask a Cell in a CellComplex to give you all its neighbours. This is a built-in node that comes with Topologic.

    Also, what do you mean with converting to IFC? A cell would convert to a IFCroom? A face to a wall or slab? The roof slab would have a structure, insulation and a roof tiles layer, for instance? How do we interact with these definitions? How to define that the roof will be tiles and not gravel or zinc and it's structure will be a concrete slab or a wooden?

    Yes exactly. I am only at the very start of this (Would love some help from IFC experts), but the idea is that a Cell becomes an IFCRoom or IFCSpace? and etc as you mention.

    And finally how do we work with topologic? I want to understand it but I haven't got grasshopper nor dynamo at hand. Will it be ported to Sverchok eventually or any other Opensource alternative?

    TopologicCore has been compiled as a .so file on Linux. I am told this might make it easy to add to Blender. If someone can do that, it would be super easy to call Topologic functions/methods and start to explore. I can help once you have it installed and you need to find out how to call it (probably from the built-in python environment in Blender?)

    I was never interested on investing in Revit or Rhino before, and it feels awkward that it is an Opensource software like Topologic that is compelling me to think on that...

    Resist! I am really hoping Topologic will be available within a completely open source environment. I love Dynamo and Grasshopper, but my dream is to see it also on an opensource platform. Feels right as its origin was a bit of a disappointment with commercial BIM platform.

    CGRbruno_perdigaoJQL
  • @JQL it seems that (like me) you think about "dynamic" geometries? Also, "rule-based" solutions?
    If yes, nobody in the industry till now did it
    Also, in data science, "dictionary" is clear what is it, but in different industries, we see different usages and methods
    In Topologic YOU HAVE TO DEFINE the dictionary yourself manually, but the desired approach could be the (information) system defines it automatically, which as far as I know till now nobody in the industry did it as well too
    (I mean the system during the time builds a complete dictionary from data and recognizes dictionary members from the given data)
    which is about AI, mainly ML or DL
    There're other considerations that I don't share this time

    About space and form features, there're some different approaches like:

    About cell and cell complex, cell and cell complex are some mathematical (topological) terms that used in our industry totally wrong, don't use it, or if used explain what they are
    I had to use them too, but I knew that mathematically this is wrong:

    • Vertex
    • Edge
    • Wire
    • Loop (this is what I add purposefully)
    • Face
    • Shell
    • Cell / Body
    • Complex
    • Cluster
  • @ReD_CoDE said:
    @JQL it seems that (like me) you think about "dynamic" geometries? Also, "rule-based" solutions?

    I am thinking that, yes. That's exactly that.

    However, the rest I couldn't fully grasp.

    I'm thinking that Architecture is simple to understand but very hard to accomplish right at a conceptual level.
    I'm also thinking that technically, what composes architecture is rather basic and it's complexity stems from quantity, geometry and the infinite amount of combinations that we can have on the elements that compose a building.

    What I see is that BIM modellers have a limited set of tools to compose these elements and those work fairly well. Walls, doors, columns, slabs, roofs...

    If those elements are rather basic and for the most part standard, if we have computer aided tools to draw them based on simple inputs like drawing a line from A to B, I really don't understand why we should loose so much time inputing A to B and why that isn't done automatically.

    What we should then do, as architects is two things:

    • Compose the most fundamental elements of space - abstract objects and their relations in space;
    • Then create the rules to build them and let the software follow those rules to create all the A to B inputs for each element.

    I think (imagine/wish) that is what Topologic is aiming for and if there is no proprietary software that is able to do that, then why not having this community creating it?

    I see blinks of this process everywhere in this community, but nothing is really binding all pieces together: BlenderBIM, Archipack, Topologise, FreeCAD sketches, Sverchok... they all have parts that could be used to create something new in the way we think and model buildings and I do feel the concept behind Topological is a great/maybe a perfect basis to solve the issue. I don't think it needs AI. It would just need an UI that would use Topologise methods to insert Archipack architectural elements, into Parametric Based Geometries like FreeCAD sketches, all neatly BIMified with BlenderBIM, and programmed with Sverchok and Topologic...

    However, at the same time I'm saying this, I feel embarassed as I know that I cannot even hope to contribute with actual code for making this happen. I'm just wishfully thinking.

    CGRReD_CoDEtopologickaiaurelienzh

  • In case you have not seen the tweet, I am happy to share that Topologic had been ported to Linux and wrapped as a python module using CPython. If you are a brave soul and want to test, get in touch. Otherwise, this will be shared publicly in early to mid January.

    paulleebasweinbrunopostleCyrilcarlopavstephen_lJesusbillCGRMoultbruno_perdigaoand 1 other.
  • @topologic Can it be used directly in FreeCAD ? Thanks

  • @topologic said:

    I am happy to share that Topologic had been ported to Linux and wrapped as a python module using CPython.

    Excellent (I was just starting to think about how I would port my topology code to python, but now I can wait for this)

    JesusbillCGR
  • @paullee said:
    @topologic Can it be used directly in FreeCAD ? Thanks

    Yes theoretically. I don’t have FreeCAD installed on Ubuntu.

  • @JQL said:
    What we should then do, as architects is two things:

    • Compose the most fundamental elements of space - abstract objects and their relations in space;
    • Then create the rules to build them and let the software follow those rules to create all the A to B inputs for each element.

    I think (imagine/wish) that is what Topologic is aiming for and if there is no proprietary software that is able to do that, then why not having this community creating it?

    @JQL sorry for late reply. You put it very elegantly. This is exactly what Topologic is aiming for. A kind of Vitruvian “setting out” of the design strategically and conceptually using simple but rigorous elements - providing enough information for the “bimification” of the design by clever software tools. I would argue that AI could help here, but it is certainly not essential.

    JQLCGR
  • Anybody can show a pointer - I try to google 'tweet' 'topologic port to python', checking https://topologic.app, but seems find nothing about it.
    With limited knowledge in python, I can import some modules in the FreeCAD python module. I am trying to understand how to find, 'install', then able to import the topologic in FreeCAD.
    Thanks for any idea :)

  • edited December 2020

    @paullee said:
    Anybody can show a pointer - I try to google 'tweet' 'topologic port to python', checking https://topologic.app, but seems find nothing about it.
    With limited knowledge in python, I can import some modules in the FreeCAD python module. I am trying to understand how to find, 'install', then able to import the topologic in FreeCAD.
    Thanks for any idea :)

    Hi @paullee . As I wrote above, it is not available publicly yet. We just managed to port it yesterday and got the first positive results from a simple test where we built a couple of vertices and an edge that connects them, and then calculated the centroid of the edge. I just shared the news on twitter and LinkedIn (if you wish, please follow @topologicBIM). Today we are going to try to load it into a Blender python script and see if that works. I am planning on testing it with FreeCAD as well. We are also working very hard to make it work with python3 in Windows (without relying on Dynamo or Grasshopper). The next challenge is to make it work within python on a Mac! I have no clue how to do that. If you (or anyone reading this) would like to help and are very comfortable with UBUNTU/Linux configuration and python and Blender or FreeCAD, I am happy to share the process to install it with you on UBUNTU for private beta testing. Contact me at wassim dot jabi at gmail dot com. Regardless, in the new year we will package it using pypi (http://pypi.org) so you can install it simply using a pip command (e.g. pip install topologicBIM). Sadly, Microsoft claimed the name topologic for their network diagnosis software.

    brunopostleMeetlatJQLCGRbasweinpaulleecarlopav
  • Thanks for the info, would wait for more news here :)
    BTW

    Happy and Safe New Year 2021 !

    carlopav
  • JQLJQL
    edited January 2021

    @topologic said:
    @JQL sorry for late reply. You put it very elegantly. This is exactly what Topologic is aiming for. A kind of Vitruvian “setting out” of the design strategically and conceptually using simple but rigorous elements - providing enough information for the “bimification” of the design by clever software tools. I would argue that AI could help here, but it is certainly not essential.

    I agree that AI is not needed. I find much more potential in a way to allow us Architects creatively manipulate data and relationships between spaces, than having AI figuring out what's supposed to happen. Creativity is what we do and architecture made with standards at a factory looses interest. That would be where AI would shine. I believe us humans still have a lot of untapped potential on creative thinking and that is what can match any AI to come.

    So, us mortals just need to be able to use it in an Opensource environment. :) I'll be very interested to follow this and see if I can use it in FreeCAD or Blender as I don't think I will ever think of going a Revit way. Also, though Rhino could be an option, I see Blender taking over most of what Rhino could add to my current workflow with Sverchok.

    So, being honest, I understand the FreeCAD idea but I'd think Sverchok would be the way to go.

    CGR
  • @JQL said:

    @topologic said:
    @JQL sorry for late reply. You put it very elegantly. This is exactly what Topologic is aiming for. A kind of Vitruvian “setting out” of the design strategically and conceptually using simple but rigorous elements - providing enough information for the “bimification” of the design by clever software tools. I would argue that AI could help here, but it is certainly not essential.

    I agree that AI is not needed. I find much more potential in a way to allow us Architects creatively manipulate data and relationships between spaces, than having AI figuring out what's supposed to happen. Creativity is what we do and architecture made with standards at a factory looses interest. That would be where AI would shine. I believe us humans still have a lot of untapped potential on creative thinking and that is what can match any AI to come.

    So, us mortals just need to be able to use it in an Opensource environment. :) I'll be very interested to follow this and see if I can use it in FreeCAD or Blender as I don't think I will ever think of going a Revit way. Also, though Rhino could be an option, I see Blender taking over most of what Rhino could add to my current workflow with Sverchok.

    So, being honest, I understand the FreeCAD idea but I'd think Sverchok would be the way to go.

    I am working furiously to bring Topologic to Linux and Blender. We got it partially working by wrapping the C++ code using CPython, and @brunopostle managed to get it working in Blender, but we hit a snag with methods that accept a list as argument. Something about shared pointers. We are hopeful this will be resolved soon. The other issue is that the different flavours of Linux and versions of python can be a real headache. Where it saves files and paths etc can be a big challenge to get everything working. I am also wondering if Blender/sverchock (of which I know nothing), can access the C++ code without needing python. To be honest, I need help here from an expert who can guide us on best practice. We developed Topologic on Windows with a robust .NET layer, but Linux and python are a slightly different ball game. Anyway, thanks for your patience. I am hopeful I can share an initial beta within a couple of weeks.

    JQLCGRpaulleecarlopavMoultbruno_perdigao
  • @topologic said:

    I am working furiously to bring Topologic to Linux and Blender. We got it partially working by wrapping the C++ code using CPython, and @brunopostle managed to get it working in Blender, but we hit a snag with methods that accept a list as argument. Something about shared pointers. We are hopeful this will be resolved soon. The other issue is that the different flavours of Linux and versions of python can be a real headache. Where it saves files and paths etc can be a big challenge to get everything working. I am also wondering if Blender/sverchock (of which I know nothing), can access the C++ code without needing python. To be honest, I need help here from an expert who can guide us on best practice. We developed Topologic on Windows with a robust .NET layer, but Linux and python are a slightly different ball game.

    A quick rundown of where things are at:

    • The TopologicCore library builds and installs as a normal C++ library, it only depends on opencascade and libuuid.
    • The method chosen for creating python bindings is cppyy, this is a very cool technology, but it does require that a modified llvm/cling compiler is installed at runtime, it also requires all the topologic/opencascade headers are available at runtime. I think it will possible to bundle all this in a future .zip blender add-on (like Dion has done with blenderbim). I'm building linux/fedora rpm packages of this cppyy toolchain, so I'll have some idea of exactly what needs to be packaged.
    • Currently the python bindings don't quite work, if anyone has experience of C++/python and/or cppyy, then maybe you can help.
    • The way that Topologic is used in grasshopper is as a collection of visual-programming nodes, so I assume that the blender equivalent is some new Sverchok nodes (Dion did this with ifcopenshell, so it seems doable), but this will likely need some help.
    • With stable python bindings Topologic will be also available to freecad, I'm also hoping to use it in the future to port some/all of my Homemaker-Topologise blender add-on to python.
    JQLtopologicstephen_lCGRbasweinpaulleeMoultcarlopav
  • I can tell that what you're doing is not easy. I hope you nail it and I'll be here for the beta. Thanks for your work.

    topologic
  • edited January 2021

    @topologic keep it up! Great work! I don't know anything C++ / Python bindings but I think IfcOpenShell uses swig. Maybe you've already considered it.

    topologic
  • If anyone wants to pre alpha test Topologic for python on Linux, email me at wassim.jabi@gmail.com

    paullee
  • @Moult said:
    @topologic keep it up! Great work! I don't know anything C++ / Python bindings but I think IfcOpenShell uses swig. Maybe you've already considered it.

    Thanks. We did consider SWIG but decided to go with cppyy. Hopefully we have made the right decision.

Sign In or Register to comment.