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.
@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:
@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.
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.
@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.
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 :)
@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.
@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.
@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.
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.
@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.
Hi everyone. Just to update you on our efforts to port Topologic to Linux, Python, and Blender, we have over-come some segmentation faults we were causing in python. Since yesterday, I have been stress-testing the Topologic methods and I am not able to break it so that is good news. The way Topologic works requires a bit of type checking on the return values so the python syntax needs to be carefully considered. I think a more general purpose solution is to create a set of python classes that wrap and represent Topologic classes (e.g. Vertex, Edge, Wire, etc etc). These python classes would replicate all the methods. Most will be one-liners, but some need a bit more work. This is not a difficult task, but time consuming. Any python experts who would like to contribute to this effort let me know.
In addition, @brunopostle tested the latest modifications within Blender/python and everything seems to be working fine on his setup! He reports that Topologic builds easily, but ccppyy is a bit more tricky, but he managed to build it on Fedora. I am still facing issues getting the same done for Ubuntu. I am meeting @brunopostle and @Theo on Friday to try to figure it out. Once it is in Blender, we can accelerate the development of a Topologic Add-on and integrate it with sverchok. This should yield something that looks very similar to TopologicDynamo and TopologicGH.
The last, but not least challenge will be the conversion of geometry between Blender and Topologic. Topologic uses Opencascade BREP. So, if anyone knows of a python utility to convert blender geometry into and from BREP then it would be as simple as myTopology = Topology.ByString(brepString) and brepString = myTopology.String(). Any help on that is also most welcome. Absent that kind of instant conversion, we will need to examine the input geometry, parse it down to vertices and build the Topologic shape from the bottom up. I am NOT looking forward to that!
The other challenge is to bring all this work to FreeCAD. I believe we will be able to do that, but again, I am looking for an expert programmer that knows FreeCAD well and knows how to extend its python engine with additional tools. With FreeCAD, topologic will be comfortably at home as they both use OCCT.
Attached is a screenshot of the work thus far. No 3D images, but the text shows that everything is working fine.
@topologic said:
The way Topologic works requires a bit of type checking on the return values so the python syntax needs to be carefully considered. I think a more general purpose solution is to create a set of python classes that wrap and represent Topologic classes (e.g. Vertex, Edge, Wire, etc etc). These python classes would replicate all the methods. Most will be one-liners, but some need a bit more work. This is not a difficult task, but time consuming.
This does need to happen, because currently an error generates a segfault which takes out blender too. In perl I would subclass each of the classes, this way there is no need to rewrite any methods that are already ok, just those methods that take a list (as I understand the problem).
@topologic said:
The way Topologic works requires a bit of type checking on the return values so the python syntax needs to be carefully considered. I think a more general purpose solution is to create a set of python classes that wrap and represent Topologic classes (e.g. Vertex, Edge, Wire, etc etc). These python classes would replicate all the methods. Most will be one-liners, but some need a bit more work. This is not a difficult task, but time consuming.
This does need to happen, because currently an error generates a segfault which takes out blender too. In perl I would subclass each of the classes, this way there is no need to rewrite any methods that are already ok, just those methods that take a list (as I understand the problem).
Hi @brunopostle Yes you are right actually. We just sub-class it and over-write the troublesome methods.
Sorry to geek out on this, but here is an example of how the syntax can be made much more intuitive. This is the example of creating a Cluster that needs a std:list of Topology objects, so you cannot send it Wires and Edges and Vertices. They all first need to be converted to Topologies: class ClusterPy(Cluster):
def ByTopologies(topologies):
topologyList = cppyy.gbl.std.list[Topology.Ptr]()
for aTopology in topologies:
aTopology.__class__ = cppyy.gbl.TopologicCore.Topology
topologyList.push_back(aTopology)
return Cluster.ByTopologies(topologyList) Then the syntax is no longer like this:
topologies = cppyy.gbl.std.list[Topology.Ptr]()
wire1.__class__ = cppyy.gbl.TopologicCore.Topology
wire2.__class__ = cppyy.gbl.TopologicCore.Topology
topologies.push_back(wire1)
topologies.push_back(wire2)
cluster = Cluster.ByTopologies(topologies)
Instead it is simplified to:
cluster = ClusterPy.ByTopologies([wire1, wire2])
is the way for geometry not possible via ifc? ifcopenshell is also OCC? so brep<->OCC<->IfcOpenShell<->BlenderBIM<->Blender?
do I misunderstand it all?
Lukas
Does this mean that, eventually, Topologic will become a plugin for blender and that we'll be able to use it on Windows or Mac? I'm eagerly antecipating that!
@lukas said:
is the way for geometry not possible via ifc? ifcopenshell is also OCC? so brep<->OCC<->IfcOpenShell<->BlenderBIM<->Blender?
do I misunderstand it all?
Lukas
Yes that is possible too. I think ifcopenshell outputs and accepts breps so Topologic can communicate with it. I have already done a proof of concept of that in TopologicDynamo on Windows.
Comments
Here you mentioned graphs:
This part is the main part
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...
[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. :)
@brunopostle provided some interesting replies. I will focus on the technical/mundane aspects.
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.
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.
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.
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?)
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.
@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:
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:
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.
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.
@topologic Can it be used directly in FreeCAD ? Thanks
Excellent (I was just starting to think about how I would port my topology code to python, but now I can wait for this)
Yes theoretically. I don’t have FreeCAD installed on Ubuntu.
@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.
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.
Thanks for the info, would wait for more news here :)
BTW
Happy and Safe New Year 2021 !
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.
A quick rundown of where things are at:
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 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.
If anyone wants to pre alpha test Topologic for python on Linux, email me at [email protected]
Thanks. We did consider SWIG but decided to go with cppyy. Hopefully we have made the right decision.
Thanks :D Sent you a mail, hope there is something I can help.
Hi everyone. Just to update you on our efforts to port Topologic to Linux, Python, and Blender, we have over-come some segmentation faults we were causing in python. Since yesterday, I have been stress-testing the Topologic methods and I am not able to break it so that is good news. The way Topologic works requires a bit of type checking on the return values so the python syntax needs to be carefully considered. I think a more general purpose solution is to create a set of python classes that wrap and represent Topologic classes (e.g. Vertex, Edge, Wire, etc etc). These python classes would replicate all the methods. Most will be one-liners, but some need a bit more work. This is not a difficult task, but time consuming. Any python experts who would like to contribute to this effort let me know.
In addition, @brunopostle tested the latest modifications within Blender/python and everything seems to be working fine on his setup! He reports that Topologic builds easily, but ccppyy is a bit more tricky, but he managed to build it on Fedora. I am still facing issues getting the same done for Ubuntu. I am meeting @brunopostle and @Theo on Friday to try to figure it out. Once it is in Blender, we can accelerate the development of a Topologic Add-on and integrate it with sverchok. This should yield something that looks very similar to TopologicDynamo and TopologicGH.
The last, but not least challenge will be the conversion of geometry between Blender and Topologic. Topologic uses Opencascade BREP. So, if anyone knows of a python utility to convert blender geometry into and from BREP then it would be as simple as myTopology = Topology.ByString(brepString) and brepString = myTopology.String(). Any help on that is also most welcome. Absent that kind of instant conversion, we will need to examine the input geometry, parse it down to vertices and build the Topologic shape from the bottom up. I am NOT looking forward to that!
The other challenge is to bring all this work to FreeCAD. I believe we will be able to do that, but again, I am looking for an expert programmer that knows FreeCAD well and knows how to extend its python engine with additional tools. With FreeCAD, topologic will be comfortably at home as they both use OCCT.
Attached is a screenshot of the work thus far. No 3D images, but the text shows that everything is working fine.
This does need to happen, because currently an error generates a segfault which takes out blender too. In perl I would subclass each of the classes, this way there is no need to rewrite any methods that are already ok, just those methods that take a list (as I understand the problem).
Hi @brunopostle Yes you are right actually. We just sub-class it and over-write the troublesome methods.
Sorry to geek out on this, but here is an example of how the syntax can be made much more intuitive. This is the example of creating a Cluster that needs a std:list of Topology objects, so you cannot send it Wires and Edges and Vertices. They all first need to be converted to Topologies:
class ClusterPy(Cluster):
def ByTopologies(topologies):
topologyList = cppyy.gbl.std.list[Topology.Ptr]()
for aTopology in topologies:
aTopology.__class__ = cppyy.gbl.TopologicCore.Topology
topologyList.push_back(aTopology)
return Cluster.ByTopologies(topologyList)
Then the syntax is no longer like this:
topologies = cppyy.gbl.std.list[Topology.Ptr]()
wire1.__class__ = cppyy.gbl.TopologicCore.Topology
wire2.__class__ = cppyy.gbl.TopologicCore.Topology
topologies.push_back(wire1)
topologies.push_back(wire2)
cluster = Cluster.ByTopologies(topologies)
Instead it is simplified to:
cluster = ClusterPy.ByTopologies([wire1, wire2])
is the way for geometry not possible via ifc? ifcopenshell is also OCC? so brep<->OCC<->IfcOpenShell<->BlenderBIM<->Blender?
do I misunderstand it all?
Lukas
Does this mean that, eventually, Topologic will become a plugin for blender and that we'll be able to use it on Windows or Mac? I'm eagerly antecipating that!
Yes that is possible too. I think ifcopenshell outputs and accepts breps so Topologic can communicate with it. I have already done a proof of concept of that in TopologicDynamo on Windows.