Space Syntax

Space Syntax is a theory of architecture and built environment that seeks to explain the effect of spatial configurations on behavioral patterns of people. SYNTACTIC tools bring Space Syntax theory into parametric design workflows. More information on syntactic design methodology:

My PhD dissertation (see chapters 3 & 4)

Designing with Space Syntax

Syntactic Design Methodology

For more information, videos, news and updates you can visit the following website. 

See a video demo-tutorial here

The plugin is available for download here: https://genesis-lab.dev/products/syntactic/

This plugin is completely compatible with SpiderWeb for Grasshopper and we hereby thank Richard Schaffranek for all we have learned from this extremely useful plugin

NEW VERSION WAS RELEASED ON JANUARY 25, 2015. 

See our newest results these publications:

Voxel Graph Operators

Voxel-Based Spatial Ergonomics Research

Evaluating Spatial Configurations as to their [Adaptive] Reuse Potential

UPDATE: Genesis Lab [webpage][website] is to modernize, open-source, and develop the toolkit starting in December 2021. Stay tuned for updates through my YouTube Channel and ResearchGate

Load Previous Comments
  • Frano Bazalo

    Pirouz, the seminar video looks great. When will you be uploading the new release? Look forward to it.

  • Ángel Romo Sandoval

    Congratulations for the work, Pirouz and Samaneh! Your work has encouraged me to work hard. Since I discovered Grasshopper a few months ago I have been learning at a time I have created a generative algorithm to create program diagrams like your plug-in but simpler (I have just started learning Vb.net so I have used components of grasshopper, kangaroo and spiderweb). I finished today and I can´t wait to start with the floor plan generator. (I am discovering computer engineering and I am delighted).

    I would like to know your opinion about the best way to create the floor plan generator, I am a little lost, I don´t know if to use voronoi, rectangles o something like this (sure you know it):http://graphics.tudelft.nl/~rval/papers/lopes.GAMEON10.pdf

    If I find an interest algorithm do not hesitate that I will share it here. Obviously I am not the badass but I would like to help in this exciting issue.

    Here is the video of program diagram generator

  • Ewa Jakub

    Hi,

    I've been trying to use Space Syntax and I keep getting the following error in the GraphFromNodes&Links component: Solution exception:Method not found: 'Boolean Rhino.Geometry.Line.EpsilonEquals(Rhino.Geometry.Line, Double).

    Any idea what the issue is?

    Regards,

    Ewa

  • Pirouz Nourian

    Hi all, my apologies for losing track of the posts here. Re Frano's post; we are hoping to release the new version in May. We will do our best to add the option for Space Syntax calculations with various radii (R3, Rn). Sorry I just deleted a post by mistake...

  • Pirouz Nourian

    Hi Angel, Thanks for your compliments on our work. Glad to see you find this work inspiring. Very interesting paper, I need to check their algorithm. The problem of plan layout can be formulated in many ways. In any case, the geometric possibilities for a plan corresponding to a graph are endless, unless you target a specif class of plans, e.g. a plan composed of rectangular cells. In that case, it is possible to enumerate possibilities. The force-directed graph drawing algorithms, like the one we have implemented and the one you have made are not guaranteed to converge and their results are not unique in the sense that there might be many local optima/states of equilibrium that they can reach to. However, they are quite useful in many practical applications. Voronoi diagrams can also be a class of geometric "dual" cell configurations that can satisfy the connectivity graphs. I will post a small definition for using them shortly.    

  • Ángel Romo Sandoval

    Hi Pirouz, hi Sam,

    I admit that when I uploaded the algorithm I though that it works correctly but later I discovered a problem with bigger diagrams. Since that day I tried to fix it but it is taking me too much time, so here is my file, if Sam o somebody wants to work over it and can improve it, welcome! I am learning python but it will probably take me a lot of time because I have no programming knowledge.

    2-It would be better that the stiffness (kangaroo component) of the lines that connect no-neigbourds nodes changed in function of the distance between this nodes. It could be solve with a loop. Until now, I fix this problem applying a very high stiffness in the repulsion kangaroo component during the simulation and after I reduce it slowly.

    In the file there is an explanation more detailed.

    floorplanator.3dm

    floorplanator.gh

  • Sam Florance

    Excellent, thanks a lot Angel.  I will be sure to share any results I have with you.  I am not very good with grasshopper yet, but I do have the advantage of having a some time to work on it.

  • Sam Florance

    Hi Pirouz,

    Excellent set of components.  I am wondering about the attraction strength and the repulsion strength for the Force Directed Drawing component.  What do the input values dictate?  I have been inputting 13 values with many connections and I notice that if I play with the repulsion strength the space organizes a little better.  Could you tell me what these to variables mean?

    Thank you for your time,

    Sam Florance

  • Pirouz Nourian

    Hi Sam, Thanks for your compliments. I am qouting from our paper in eCAADe 2013 on this component. 

    "This tool contains our force-directed graph-drawing algorithm and makes a “kissing disk” drawing of the bubble diagram. This algorithm works by a set of attractive and repulsive forces (as in Equation 9) acting recursively on graph vertices, seeks a ‘relax’ situation for a graph, and reaches to a graph drawing. This tool is quite intuitive and shows in real-time bubble diagrams neatly according to the specified areas and the connectivity graph.

    Equation 9

    Attraction: 〖AF〗_ij=ka ∆x_ij  for all linked (i,j) 

    Repulsion: 〖RF〗_ij=kr /x_ij   for all (i,j)

     

    The attraction/repulsion strength inputs are denoted as ka and k

    in the above equations. If some configuration is very messy, you need to have a high repulsion first to untangle it. I have not tried Angel's method but it is very similar to the method we have scripted for this component. 

    I hope this helps. 

    Best regards, 

    Pirouz

  • Pirouz Nourian

    Hi Angel, 

    Thanks for sharing your model; It's a good example that shows how the Force Directed graph drawing component of our toolbox works, especially for those interested to tweak. However I could not manage to open the file because of conflicts of missing Spider Web components (perhaps you are using a version other than the last one?). 

    Keep in touch!

  • Pirouz Nourian

    Hi Ewa, 

    Excuse my late response. I have seen the same problem before it has to do with an inundate Rhino. Could you please go to Rhino/Options/Check for Updates and make sure your Rhino is updated?  

    Best regards,

    Pirouz

  • Sam Florance

    Hi Angel and Pirouz,

    If you are interested then feel free to take a look at the script I have been working on, I would appreciate any comments.  I believe it could be a useful tool for studying what the Space Syntax Kissing Disk Diagram does automatically, or perhaps studying the many possible equilibrium's of more complex relationships.  Thanks for your help by sharing your script's and components, I referenced them quite a bit with making this one.

    Sam

    Program%20diagram%20script.gh

  • Ángel Romo Sandoval

    Sorry I haven´t seen the comments last days because I am travelling.

    I´ve download your file, Sam and, at first glance, congratulations!  

    In a few days , when I came back I´m going to share new files (to resolve the spyderweb problem) and additional interesting thoughts.

    Keep in touch!

  • Richard Schaffranek

    To add to the discussion:

    I changed a bit on the floorplanator file, its now based on the latest release of spiderWeb. Manly the part where to calculate the repulsion / attraction forces.

    The idea is that to store these values in the edge costs of the graph this makes the file cleaner and faster.

    Remark: if the starting attraction graph is not clean (no intersections of edges) this script will not solve the problem... I have to admit I don't know how to solve it with Kangaroo.

    Have fun...

    floorplanator.gh

  • Ángel Romo Sandoval

    Sam, I like your algorithm a lot!! My algorithm is worse so I think that it´s no sense to upload it again with new versions of spyderweb or whatever be. I am trying to solve a problem with the spyderweb in order to open the file of Richard (I don´t know why I can´t install one of the .dll of spyderweb files).


    I share here a prototype of Sam´s algorithm with the "hoopsnake" component. I am trying to create an algorithm for other shapes instead of circles. I know that is dirty and it has a lot of bugs but I think that it is very interesting.

    2014_04_23_FPGhoopsnake.gh

    2014_04_23_FPGhoopsnake.3dm

  • Richard Schaffranek

    Could you specify the problem? Maybe discuss that in the SpiderWeb group...

  • Ángel Romo Sandoval

    I solved it. Richard, thanks a lot for your improvement. Your idea of storing the values in the edge costs it´s very clear, I like it! Also I've learnt a lot more about spyderweb looking your algorithm.
    The problem of the starting attraction that only can be solve with a loop, as Pirouz said, "If some configuration is very messy, you need to have a high repulsion first to untangle it".

    Thanks, Richard, I'm having fun, hehe

  • Pirouz Nourian

    Richard, Angel and Sam, thank you  for the interesting discussions. Developments in the direction of rectangular drawing (replacing the circles with rectangles of certain areas and proportions) would be very interesting.

    BTW, we are working on some new stuffs... have a look at these: https://sites.google.com/site/pirouznourian/syntactic-design

    Wish us luck and fewer bugs... :)

  • Richard Schaffranek

    Hi Pirouz

    A student of mine is working on a KD-Tree subdivision ensuring square meters and connectivity (if possible ...) from a bubble diagram, will ask to share it when he is finished with it.

    Whats the idea behind the isovist bubble? Any comments on that?

    Richard 

  • Pirouz Nourian

    Hi Richard, sounds great! A Geomatics student of mine is also busy with kd-trees for another reason... heard about it just yesterday.

    About isovist bubbles: I'm working on a generic syntactic design method, without many geometric constraints. This lead to a question as this: What would be the shape of an imaginary bubble that wants to maintain its size (area) and visibility from a point, given some obstacles. 

    It needs a proper justification; we're busy writing on it for a paper. Would be good to hear your critique/idea about this.

     

  • Azad Hadji K

    Hi pirouz, I have difficulties to install this plug-in. it has an exe file and I try to install it but nothing happening after. any idea might help me please? thanks mate.

  • Pirouz Nourian

    Hi Azad, the exe file puts the GHA file and the examples where you specify or by default somewhere in your computer. You can repeat the installation and specify a location you will remember. Afterwards, you just need to drag and drop the GHA file into your GH canvas or put it in the components folder of your grasshopper. 

  • Azad Hadji K

    Hi and thanks Pirouz, that comment solved the issue. cheers mate.

  • Fateme Jafari

    Hi, I installed space-syntax and I tried to follow the video to learn it. but I had problem in the first step. when I connect the curve to the "graph from nodes and links" object it turns red and shows an error. could you please help me?

  • Agneesh

    Hey there,

    Not entirely sure, but do you wanna double check that curves are LINES and not a POLYLINES?

  • Fateme Jafari

    Hi Agneesh

    Thank you for your suggestion. I checked all the curves once more but unfortunately it didn't work. 

  • Pirouz Nourian

    Have a deadline right now, will get back to your problem on Friday. It has been mentioned before here and I suspect there is the same problem of old/inundated versions of Rhino. Please check the former posts here.  

  • Fateme Jafari

    Hi Pirouz

    I checked my rhino and grasshopper versions and they are not old versions. I have rhino 5 and grasshopper 9.0075. 

  • sarah Ceravolo

    Hello,

    If anyone knows why and how to resolve this issue, the same as posted in Fateme's image below

    1. Solution exception:Method not found: 'Boolean Rhino.

    .Line.EpsilonEquals(Rhino.Geometry.Line, Double)
    Could you please help me?
    Thanks,
    Sarah.
  • Pirouz Nourian

    Hi Sarah and Fateme, 

    I have seen this error before. the method (said to be missing) is actually from Rhinocommon library and is definitely part of Rhino. As solved before; I guess this is because your Rhino is not up-to-date. To make sure your Rhino is up to date, you can go to Rhino/Tools/Options/Updates and Statistics and press "check now". I hope this helps, otherwise let me know. 

  • Agneesh

    Hi Pirouz,

    If possible could you please reply to my query wrt cardinal directions ?

    Regards

  • Pirouz Nourian

    Hi Agneesh, There are a few components that I have not released yet, simply because one of them doesn't properly function. I have decided to release all in a week or so because some people have been asking for them. Then I will announce a challenge for correcting that one component. I wanted to make a complete package but academic life pressure is too high to allow for that.

    Best regards

  • Rafat Ahmed

    great work Pirouz 

    i wish the best for your bro 

  • Fateme Jafari

    Hi Pirouz

    I checked my Rhino as you said. It shows that my Rhino is up-to-date but the problem still exists. What should I do?

  • sarah Ceravolo

    Hello Pirouz and Fateme,

    Thank you both for your responses,

    I have had the same result with my rhino 5, sorry that I can not help solve it I just would not know where to start...

  • Pirouz Nourian

    Hi Sarah and Fateme, 

    It is somewhat strange, but in any case we will release a new version soon, hopefully with this problem solved. Have spotted a line in our code that might have caused the confusion for some systems. 

    Our plan is to release until September 18. 

  • Pirouz Nourian

    Hi Rafat, Thanks for your kind message. Pleased to hear that you have found the tools useful. It is still a work in progress though; far from something I could consider as great :). Best wishes

  • Rafat Ahmed

    Its Brilliant plugin bro, easy to use, functional & clear visual Analysis, we appreciate you works much.

    and just a wish for this plugin, that need more flexibility for large scale & complex projects, bcz when i use it, i found it hard to manipulated.

  • Pirouz Nourian

    new versions of SYNTACTIC and Spider Web are going to be tested in this workshop in London, together with my friend Richard Schaffranek:

    http://www.architecturalgeometry.org/aag14/?page_id=554 

    Generative Syntax in Architecture and Urban Design by Richard Schaffranek (Vienna University of Technology), Pirouz Nourian (TU Delft)

  • Pirouz Nourian

    There is a minor bug in the new release (for London workshop). Just need a couple of free hours and I will release a better version. This version includes all the tools you previously shown in videos including layout with cardinal directions. 

  • wiku

    where can i download the new one

  • wiku

    looking forward to the new releases!!!

  • Azad Hadji K

    Hi Pirouz,

    I am going to analyse an urban space with Space Syntax add-on. I imported the line from openstreetmap. They are not lines they are curves, is it makes any issue? Secondly, when I use axial line graph (ALG) component, the add-on gives me a numbers top of some lines(not all of them) which does not make sense. Finaally, would you please guide me how I can get some graphical outcome of this add-on? Generally speaking, Is there any way to get some sense of how this add-on works? I do appreciate your help mate. Thank you

    Regards,

    Azad

  • mahdi

    Hi Friends

    I've installed the plugin spacesyntax

    But it gives error and does not work anymore

    When I open the example project still gives error

    Please advise your

    سلام دوستان

    من پلاگین spacesyntax را نصب کردم

    اما ارور می ده و کار نمی کنه

    مثال پروژه را وقتی باز می کنم باز هم ارور می ده

    لطفا راهنمایی کنید

  • Edward Whitley

    Hey, so I have tried using the space syntax plug in on my program, and its a pretty intensive program with lots of relationships and different spaces. I have done some preliminary connections and used the plug in. Most of the widgets Ive used seem to be working. The analysis widgets are working very well and providing useful insight into the social aspects of the design. BUT the main problem comes when I try to use the ForceDirectedDrawing widget. It poops out and kinda takes my rhino file with it. ANy suggestions? Please help. I have attached some screen shots and the rhino file and gh file.

    ERRORSLIDESHOW.pdf

    firstProgramSyntax.3dm

    FirstProgramsyntax.gh

  • Ortler Mark

    Hey Edward Whitley, I have the exactly same problem...
    Here, the drawing is also locked; I can't draw anything.
    You found any Solution?

    greets

  • Pirouz Nourian

    Hi, let me answer one by one:

    @ Azad: you can only work with lines (axial lines crossing each other) I don't think you can immediately convert OSM street centerlines to axial lines. This has a number of probelms, most important of which is methodological. Graph theoretical distance used in Space Syntax measurements (the ones I have implemented) is based on the idea of measuring the [cognitive] steps one takes from one space to another. In architectural configuration these spaces (spatial units) are conventionally considered as convex spaces or let us say rooms. In urban configurations, streets are considered as the [public] space and axial lines are to represent them as the spatial units. In general if you are going to do a large scale urban computation, you can use DepthMap or Depthmapx (the original Space Syntax software application). The main reason I added the Axial-Line Graph component was to use it for education. You cannot yet get visualizations or efficient calculations at urban scale using this one. But please do a bit of research about the methodical problem I mentioned above before going to any other software. This is not a technical problem. 

  • Pirouz Nourian

    @ Mahdi:

    You have not posted the error message but I guess most probably it's saying something like the method X doesn't exist in Rhino. I have seen the same problem many times... the solution is to make sure your Rhino is updated. You can go to Rhino/Options/Updates to do so. 

  • Pirouz Nourian

    @ Edward:

    Hi, first of all note that the graph drawing algorithm is not guaranteed to work always, especially if the input graph is non-planar, there is no such proof for any force-directed graph drawing and ours is not an exception. If you are only trying the software with random points and random connections to see if it works then I assure you it won't work for just any combination of points lines and areas. It is simulating a physical system of disks attracted to one another if there should be a link between them. If one disk or coin doesn't fit in between it's neighbors (the problem of area) then of course the algorithm fails because you are trying the impossible. And if the graph is non-planar per se, which is your case, then again it fails. It of course happens in real-world architectural bubble diagrams that they don't constitute a planar graph, simply because there are many buildings that can only be built with the same abstract configuration in more than one floor. But in this case, you can divide the graph into planar components and proceed. I believe We have mentioned these points in the help text of the component itself. Please have a look.  

  • Pirouz Nourian

    @ Ortler:

    Please read my answer to Edward; most probably the same issue.