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

1101113151626

Comments

  • I deleted two comments by @ReD_CoDE since they were both condescending and rude. Since everyone else seems capable of speaking constructively I saw no reason to put up with it. This is not the first time and I had been hoping for an improvement over time.
    I thought there was a way to hide rather than delete, but I can't find it...

    CGRarquitextonica
  • edited February 2021

    @topologic said:
    This is what I was hoping to show you at the end of the recording. A simple spatial query system. You type the names of the two rooms and it will retrieve the wall that separates them. Obviously the two rooms can have the same name. It makes no difference to Topologic.

    Great presentation and demonstration of what Topologic's capabailities and potential !

    Too many questions from me maybe :D A few random thought -
    1. Since Topologic is on same engine as FreeCAD, i.e. OCCT, does it suffer the 'Topological Naming Problem'? e.g. -
    * If the input geometry is changed by modifying a rectangular cell with a chamfer corner
    * Would the Bathroom, originally paired up with Cell no. 3, now suddenly jump to another cells because of that problem ?
    I am assuming the whole thing you demonstrate is 'parametric' (If I put it correctly with right terms)
    2. If ArchSpace is used in FreeCAD and attributes (like your dictionaries) are added in FreeCAD workflow, wondering would all the efforts to add information be duplicate - one in FreeCAD and one in Topologic for doing spatial analysis ?

    Thanks :D

  • @paullee said:
    Great presentation and demonstration of what Topologic's capabailities and potential !

    Too many questions from me maybe :D A few random thought -
    1. Since Topologic is on same engine as FreeCAD, i.e. OCCT, does it suffer the 'Topological Naming Problem'? e.g. -
    * If the input geometry is changed by modifying a rectangular cell with a chamfer corner
    * Would the Bathroom, originally paired up with Cell no. 3, now suddenly jump to another cells because of that problem ?
    I am assuming the whole thing you demonstrate is 'parametric' (If I put it correctly with right terms)
    2. If ArchSpace is used in FreeCAD and attributes (like your dictionaries) are added in FreeCAD workflow, wondering would all the efforts to add information be duplicate - one in FreeCAD and one in Topologic for doing spatial analysis ?

    Thanks :D

    Thanks @paullee. I have heard of that problem in FC, but have not looked deeply into it. This needs testing but here are my thoughts on how this can be avoided. In Topologic you can create Cells, add Dictionaries to them and THEN build a CellComplex. If the original cells do not intersect, the dictionaries transfer 1:1. If the Cells intersect, the new Cells get a new dictionary which contains the values from both parents (e.g. “name”:[“living”,”kitchen”]) So the name of a Cell is not associated with a row number of a cell in a cell complex. There is no guarantee on the order or number of cells created in a CellComplex (eg the Topologic logo starts with two Cells, but creates three Cells when we build the CellComplex)

    As to repeating effort, if and when we get to building a workbench, perhaps we do some automatic transfer of attributes from FC to Topologic Dictionaries. Could be invisible to the user.

    paullee
  • edited February 2021

    @duncan said:
    I deleted two comments by @ReD_CoDE since they were both condescending and rude. Since everyone else seems capable of speaking constructively I saw no reason to put up with it. This is not the first time and I had been hoping for an improvement over time.
    I thought there was a way to hide rather than delete, but I can't find it...

    I thought we agreed on using edit with the spoiler tag:

    Hidden text

    deleting is appropriate first when someone is actively trolling in my opinion.

    lukasCGR
  • Technical hurdles with #cppyy just overcome (finally!). We will soon have #TopologicPy for #python, @Blender, #sverchok, and @FreeCADNews on #Windows10. I am still in awe of #Linux though ?.

    JanFCGRpaulleeJQLbruno_perdigaonikitron
  • @lukas said:
    Then I need to know how I would implement the next dimension: the electrical power-supply-graph.
    Would it just be a second instance of 'topologic' with an adapted behaviour (instead of geometry it would handle power ratings). Both topologic instances would run parallely and/or interact? what are the tools behind this topologic intelligence?

    Hi Lukas,
    I'm working with graphs as knowledge support based on key value dictionaries.
    I can't wrap my head around the advantages of graph theory (yet) but the advantage of topologic is that when you add these dictionaries to the whole population of elements, you can after the fact, query the elements (in your case edges that have a certain value on a certain key) and extract a graph.
    How I see it is, not only that the graphs are multidimensional but that several overlaid graphs can/could coexist in the same topological construct.
    There is where I think the power resides.
    Going back to my conceptual background, where I see the power is in that topologic allows/enables us to work on unfathomably complex knowledge structures.
    I posit that Christopher Alexander abandoned computation in his research because he realized they couldn't cope yet with the complexity (A city is not a tree (it is a lattice/network) and resorting to "Patterns" that are indeed VERY high level of abstraction objects).
    BUT NOW we have the computation power and the tool to deal with them.

    paulleeCGRtopologicJQLbrunopostle
  • edited February 2021

    @topologic said:
    Thanks @paullee. I have heard of that problem in FC, but have not looked deeply into it. This needs testing but here are my thoughts on how this can be avoided. In Topologic you can create Cells, add Dictionaries to them and THEN build a CellComplex. If the original cells do not intersect, the dictionaries transfer 1:1. If the Cells intersect, the new Cells get a new dictionary which contains the values from both parents (e.g. “name”:[“living”,”kitchen”]) So the name of a Cell is not associated with a row number of a cell in a cell complex. There is no guarantee on the order or number of cells created in a CellComplex (eg the Topologic logo starts with two Cells, but creates three Cells when we build the CellComplex)

    That would happens probably right? :)

    Say, one make a 2d Sketch representing a simple spatial disposition / floor plan. Let Topologic to do some analysis, spatial, energy etc., then feedback to refine the 2d Sketch with some wall orientation to minimise insolation, cut a few window opening to capture some view. Worse still the disposition of rooms swapped, the whole form elongate / rotate. OCCT in FC would possibly return the update Edges/Faces/Solid/Cell reference different from the original models etc. etc. And those 'corresponding cells' just do not intersect.

    I fails to compile the codes in the gitHub. Maybe someone can try alterate the 9 Cells in the demonstration to see if there is some similar issue to tackle?

    Seems quite some peoples are interested in this library, hope we can start building something in FC :D

  • What @arquitextonica is hinting at and what I failed to articulate well during the meeting is that because Topologic was created by architects and designers, it frames the knowledge structures in ways that are compatible with design thinking and not necessarily computational thinking. On many occasions while developing Topologic we would ask ourselves: Is this what the user would expect to get? A simple example are the edges of the CellComplex. We could’ve asked each Cell in the CellComplex to give us its faces and each face to give us its wire and each wire to give us it edges. That is computational recursive thinking. But a designer would expect the clean list of unique edges that are the constituent members of the CellComplex.

    CGRbruno_perdigaopaulleekaiaurelienzh
  • @JanF said:
    I thought we agreed on using edit with the spoiler tag:

    Hidden text

    deleting is appropriate first when someone is actively trolling in my opinion.

    You're right, that it what we've agreed, sorry. That 'spoiler' is the function is was looking for, so thanks for the example I could look at to see how it works. It's got nothing to do with moderation I can see, but it's useful. I found out how to restore the posts so now I've just hidden the offensive parts of @ReD_CoDE s text.

    @ReD_CoDE anytime you want to have a discussion about how to consistently contribute constructively - there are plenty of people here happy to give feedback if you ask.

    arquitextonicaJesusbill
  • @Sabufrancis is this all something that makes sense to your approach?

    carlopav
  • edited February 2021

    @duncan I'm not active in BlenderBIM community, because I think I'm in the wrong room, these guys need 3-5 years time to understand my comments

    arquitextonica
  • You definitely amaze us with your comments!

  • @JanF said:
    Can we put the recording to the osarch YouTube channel or do you have your own? We'll just share it in that case.

    Just general info here - there are playlists on our youtube channel which can be useful for this type of thing. If anyone has a clearly defined theme that is missing as a list of videos then we can bring videos together by making more playlists. For now there are just a few.

    topologicpaullee
  • edited February 2021

    Hi everyone. I am looking for beta testers for Topologic for sverchok on Linux. Anyone willing to test, please contact me. Thanks.
    The zip file is available at http://github.com/wassimj/topologicsverchok

    paulleeJQL
  • @nikitron said:
    https://github.com/wassimj/topologicsverchok/issues/1 hello there
    issue of importing some stuff

    I updated the read me file to clarify that Topologic sverchok needs TopologicPy which in turn needs cppyy and Topologic C++

    bitacovirnikitron
  • @ReD_CoDE said:
    @duncan I'm not active in BlenderBIM community, because I think I'm in the wrong room, these guys need 3-5 years time to understand my comments

    @ReD_CoDE , I don't think you are in the wrong room. You simply have a different way of looking at things. Which is ok. However, you should understand that in a community, clashing of ideas is necessary for growth. But we need to respect each other. In the end, the most efficient idea will be adopted. BTW you have a community responsibility to ensure that we catch up with you by patiently guiding some of us. I have learnt a lot from you, @duncan , @Moult , @DADA_universe @Jesusbill and others. I am still learning.

    duncanlukas
  • Proof of Life.

    theoryshawCGRcarlopavJQLpaulleeMoultnikitronbitacovirbrunopostlebruno_perdigaoand 1 other.
  • @duncan said:
    @Sabufrancis is this all something that makes sense to your approach?

    Pardon my tardiness. Got stuck in some personal matters. I need to go thru this in detail before giving a useful reply. The only point I can say for now is that there is a strong linguistic basis for representing architecture inside TAD. So when learning lessons from others efforts; I usually look for mapping other work to what is happening in TAD.

    Crudely speaking; one learns more when we compare one human language; say Hindi -- and then see how sentence construction happens in another language; say English. In English a simple sentence is S-V-O (Subject- Verb-Object) but in Hindi it is S-O-V (Of course there may not be something called a "sentence construction" directly in architecture representations) Sometimes that broad conceptual comparison gives good insight on what can be done in one approach, and not so much in another.

    The other point in architecture representation -- which I think TAD does quite well -- is the handling of the "figure-ground" confusion. Architecture and Music has this intricate representation complexity which is not seen in other specialties. In Music, it is not just the sequence of the notes themselves that give meaning; but also the periods of the silent gaps in-between ... and the timing of the notes also. On roughly similar lines, it is not just the built matter but the spaces too (emptiness of built matter) BOTH go into creating meaning in architecture -- so my eye gets drawn into whether that interplay is represented in other systems.

    More later...

    CGRnikitronpaulleeduncan
  • @Sabufrancis said:
    More later...

    is it about topology?

  • Hi everyone. Just to let you know that we managed to get TopologicPy running on MacOS. The instructions are at http://github.com/wassimj
    As usual, it is not for the faint of heart.

    paulleeCGRcarlopavbitacovir
  • Here are the images from MacOS. If anyone is interested in testing this, please get in touch, I am happy to walk you through it.



    CGR
  • @Sabufrancis said:
    Pardon my tardiness.

    Tardiness assumes expectations - there is no expectation here until someone promises something. I was just checking in to make sure you were still with us :-)

    arquitextonica
  • edited March 2021

    @topologic said:
    On many occasions while developing Topologic we would ask ourselves: Is this what the user would expect to get? A simple example are the edges of the CellComplex. We could’ve asked each Cell in the CellComplex to give us its faces and each face to give us its wire and each wire to give us it edges. That is computational recursive thinking. But a designer would expect the clean list of unique edges that are the constituent members of the CellComplex.

    Hi, made similar model built on the Villa Savoye :D

    See below model structure - can you build a Graph ('bubble digram') with below the model ?

    • Model file *.FCStd renamed to *.zip

    YouTube Video - https://youtube.com/watch?v=0bnQZ473R7A
    - (can show here directly inline ?)

    1 Sketch to build
    - ArchWall
    - ArchSpace / CellComplex (rooms)

    CellComplex
    - Built on same Sketch as ArchWall
    - Share same faces beteen Cells
    - Cell faces have no thickness

    ArchWall
    - Built on same Sketch but has thickness (width)

    ArchWindow/Door
    - 'Attach' to ArchWall
    - 'Grouped' under ArchSpace as well
    - So 2 ArchSpace / Cells with same ArchWindow/Door is interconnected

    See FC Forum Discussion -
    https://forum.freecadweb.org/viewtopic.php?f=23&t=47905&start=70



    JQL
  • You mean like this? :)

    JQLpaullee
  • @topologic said:
    You mean like this? :)

    Thanks :)

    Something more in my mind - the doors indicates connection between spaces, so there should only be lines if 2 cells are connected by a door rather than .sharing common face :D

  • @paullee said:
    Thanks :)

    Something more in my mind - the doors indicates connection between spaces, so there should only be lines if 2 cells are connected by a door rather than .sharing common face :D

    Yes all possible through adding aperture faces to the CellComplex. I will let you explore that one on your own. ?

  • I feel I ought to post an update on the status of the Homemaker-Topologise tool, it has been ported to use the @topologic Python library and has more-or-less the same functionality (with a couple of interesting new features) as my September proof of concept, though it still needs a whole lot of work to move it entirely from Perl to Python:

    @brunopostle said:
    Currently the Topologise tool is six things strung together:

    1. A simple python blender add-on that has just one function that feeds any and all selected meshes to the other tools and displays the output. This structure is very limiting, the add-on should allow the user to assign properties such as room types, wall types and styles; it should be able to display feedback from processing; and it should understand enough about the model to only regenerate IFC entities for parts of the building that have changed (otherwise it won't scale).

    This is exactly how it was before, though you can now assign styles to different parts of buildings, previously the style was fixed for the entire building. In this screenshot the outside walls of the middle floor have been given the 'fancy' style, the rest of the building is 'default':

    1. A Perl library that analyses a non-manifold mesh to identify cells and build a model where nodes, faces, edges and cells can be queried as network graphs. This is loosely based on some of the functionality of the C++ Topologic library;

    This has been entirely ported to topologicPy. Topologic is much faster, and has more functionality. An unanticipated benefit is that whereas before I had to be very careful defining the input geometry, producing clean meshes where vertices aligned perfectly, now I can just sketch walls and floors, and so long as they enclose space, these are converted to cells and rooms. This is a great way to define a building, a lot of fun and easy to play around and change anything easily. This is a loosely defined geometry definition, and the resulting building:

    Another interesting feature of this method is that it is really easy to generate some quite sophisticated roof geometry (previously the add-on just applied a default hipped roof to all roofs). A picture is needed, this roof was defined entirely by specifying some planes and pitch angles, then topologic figured out the intersections and exposed the shell:

    1. Some Perl code that searches the graphs in the topology model for rooms, walls, eaves, floors etc.. This isn't very sophisticated and could be easily rewritten in Python, though ultimately it wants to be able to identify parts of the building that have changed (see above).

    This has been ported to python by overloading a collection of specialised methods on top of the topologicPy library

    1. A Perl library for assembling IFC data. There is nothing special here, if everything else was Python, this could be replaced by the IfcOpenShell Python library.

    This is all TODO, I need to figure out how to generate IFC entities within blenderbim, so far it looks reasonably easy (though I haven't started yet).

    1. Another Perl library that actually generates the IFC geometry, places windows and doors etc.. this is a bit more of a problem as this is about 1500 lines of complicated code.

    This is a big job, not least because I want to change a lot of functionality: currently 3D entities such as doors and windows are loaded as DXF files, these need to pulled out of some kind of IFC library. I also intend to turn the style definition inside-out, which will enable a huge range of different buildings.

    1. Finally Topologise uses blenderbim to import the IFC into blender.

    The add-on is still creating external IFC files and importing them with blenderbim, for now.

    Here's another example, this collection of buildings, with each room assigned a usage (bedroom, retail, kitchen etc..), was drawn in about 20 minutes. First image shows sketch geometry, and the second image shows the IFC result:

    I'm interested in comments and ideas, the way that assets are handled needs some careful thought, and I'm not at all decided how to handle the various extruded profiles (currently they are extracted from 2D DXF detail drawings, but there are other ways this could be done).

    JanFJQLtopologicJesusbillMoultLaurensJNtheoryshawarquitextonicapaulleeCGRand 4 others.
  • @brunopostle said:

    I'm interested in comments and ideas, the way that assets are handled needs some careful thought, and I'm not at all decided how to handle the various extruded profiles (currently they are extracted from 2D DXF detail drawings, but there are other ways this could be done).

    Also I'm just starting with python, so if you look through the Homemaker add-on code and think WTF, then I definitely need correcting - pull requests with explanations welcome.

    arquitextonica
  • @brunopostle All I can say is WOW. I am glad you found topologicPy to be helpful. This is by far the most sophisticated use of the library that I have seen to date. Congratulations and I look forward to what more you will do with it.

    brunopostleSigmaDimensions
Sign In or Register to comment.