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
  • Bruno Galvao

    Hi Pirouz,

    I had the same problem with the .gha fila loading as some of the others have asked(alois).

    Intuitively, i went to "Grasshopper Developer Settings" And rechecked the "Memory Load .GHA with Coff byte arrays" box, which i had unchecked for another plugin, and it loaded Syntactic.

    I don't really understand why, though. Maybe somebody can explain.

    Hope it helps the others,

    Bruno

  • Pirouz Nourian

    Hi Bruno, 

    Thank you for sharing your insight into installation problems. I need to inspect this issue more deeply. There might be an issue in my code referencing rhinocommon or grasshopper dlls. 

    Best wishes for 2016!

  • Junghwo Park

    Hi Pirouz Nourian,

    Happy New Year!! Hope you took some rest:)

    I have a problem to install SYNTACTIC_V_2.7

    I have followed the exact steps from the instruction

    Then I have copy and paste "SYNTACTIC Grasshopper Assembly (.GHA)" into my grasshopper components folder.

    Unfortunately, All the components are missing.

    I am using the most current Rhino Version 5 SR12 64-bit with Grasshopper 0.9.0076 

    Could you please help me out?????? Thanks in advance

  • Pirouz Nourian

    Hi Junghwo, 

    Happy new year! I guess it might be because the GHA is blocked by your system. Please right click on it in your components' folder and go to its properties and double check. Otherwise, please read Bruno's comment on another probable cause of this problem below. To open Grasshopper Developer Settings type it in your Rhino command line. 

  • ahmad heidari

    dear  pirouz

    Happy new year!

    I have used the plug in that you give me(Syntactic) in my design process and the result graph is attached.Please comment on that graph.
    thanks in advanced

    بررسی جایگاه نحو فضا در فرآیند طراحی معماری.pdf

  • ahmad heidari

    Faculty of Architecture and Urban Design Art and Shiraz

  • Junghwo Park

    Hi Pirouz,

    Grasshopper Developer Settings solved the issue. Thanks heaps!!!!!!!!!

  • Florino Ita

    Hello, is there some examples about using space syntax with kangoroo?Thank you for your answer

    Great plugin btw I am having fun using it with my projects, but how can I exploit the result... Is there a gap between this plugin and other functionality in grasshopper or maybe i am wrong...

  • Pirouz Nourian

    Hi Florino, I just made two components for baking the disks as colored meshes. You can find them in the attached file. 

    C%23_Disk_PZN.gh

  • Pirouz Nourian

    the other component thickens the edge-lines (only for visualization)...

  • Florino Ita

    Thank you for this fast development of the component... but actually, it is a bit frustrating since, after doing a graph in space syntax, I would like to extract the exact graph made, however, the component you should yesterday does not extract the exact graph, it makes other "disks" maybe with same area (not sure also if I have the same area, since I noticed that the area is different for some disks) but anyhow the other disks dont follow the same graphical representation made with the first simulation of space syntax...

    or maybe I missed something? 

    Thank you again 

  • Florino Ita

    I have another question (sorry for my questions, I hope they are not really stupid since I am really new to grasshopper) I would like to know per example, when I am defining relations between spaces, in your plugin, we have to first define the points and for each point we have a space, after this we will link these points to the space names we have to deal with... so for each point we have an appropriate space name, in the second phase we will draw manually a line between each point to define the relation between the spaces... well here is my question, linking points (or spaces) is done manually, there is not automated method to link these points? (maybe having a list of all the configurations (links ) possible and after this we will choose links we want to keep?

    Thank you again Pirouz

  • Pirouz Nourian

    Florino, re your first question, could you please post your file? In doing so, please remove all components from other plugins and make it as simple as possible. 

    Regarding your second question, I think it is best if the designers themselves specify which spaces should connect to which other. Potential connections between n spaces will be n-squared. Frankly I don't see why removing unnecessary connections could be better than specifying directly what spaces should connect to one another. However, of course you can make connections automatically (I am not so interested in automating decision-making in design). If you need to make connections automatically you can do that with native components from grasshopper such as Proximity tools. Perhaps a better approach would be to use SpiderWeb tools to design a systematic process for doing so. 

  • Florino Ita

    Thank you Pirouz for your answer.

    well, I said removing unnecessary connections, but it can have another way of defing the connections automatically

  • Pirouz Nourian

    C_Disk_PZN_Corrected.gh

    The attached component puts out the disks for working with the disk graph drawings. 

    Just noticed there was a small problem with the areas in the earlier version of this. I have fixed that problem in the attached. 

  • Bao Nguyen

    Hello, I had a problem with the RectangulateDual component, it appeared to have many layers. If anyone know why? Thank you.

  • CathyTs

    Hello!! I downloaded Syntactic and i'm running the setup but it doesn't appear anywhere as a plug in in Grasshopper! What should i do?

    Thank you!

  • Pirouz Nourian

    Hi Katerina, after you finish the installation process, the installer will place a folder containing a GHA file and example Rh& GH files in your system. If you didn't notice where it put the folder, please repeat the process and make sure you place it somewhere recognizable. Once done, you can drag and drop the GHA onto your GH canvas and then start with the example files. 

  • Pirouz Nourian

    Hi Bao, 

    Looking at the picture it seems like one of the inputs must be a data tree. Anyhow, as I've mentioned in the example file this Rectangulate Dual is mostly an experimental placebo. If time allows I will propose an alternative method for geometric layout based on Isovist Bubbles: https://sites.google.com/site/pirouznourian/syntactic-design

  • Tim

    Hi Pirouz,

    Hope you are doing well.

    I would like to ask about pie chart component, is there a way to make it show labels or is it a bug?

    Check this discussion, your pie chart will do a nice addition to chart tool set.

  • Pirouz Nourian

    Hi Tim, do you mean with this C# component that I've put below? or the component from the SYNTACTIC plugin?The C# add on below doesn't have the mechanism for representing labels. You can add those using tagging components of GH. In the original component from SYNTACTIC I have put those mechanisms as well. I hoped this component would provide for more options without having the texts.

  • Tim

    Hi Pirouz,

    I meant the component from the syntactic plugin, from utilities tab. You show it in the example images and it has white text labels. Not that I use it a lot, but when I did a quick walk through of the components I noticed that it didn't show any text.

    Maybe something is wrong on my side, but I thought I'd let you know anyway.

    Have a nice day.

  • Pirouz Nourian

    Hi Tim, it might be an issue with GH preview or an issue with my code which pertains to GH preview. Anyhow, I would suggest using the C# component I've posted below in combination with tagging components from GH for the time being. I can more quickly add such snippets if necessary instead of revising the whole package at once. 

  • Tim

    Ok, no worries, I don't plan to use pie chart anyway, just thought I should report this.

    I will use other components to analyse spacial relationships for my care center, I'd like to post some screenshots later.

  • Pirouz Nourian

    Thanks for letting me know. Interesting topic (care centre). Please do post some screenshots :)

  • Tim

    Hey Pirouz,

    Finally got to use Space Syntax.

    Trying to put everything together met this error:

    1. Solution exception:Object reference not set to an instance of an object.

    Happens when I'm trying to connect restaurant, cafe, hair salon and post office with inner yard. What might cause the problem? Do you need the file?

  • Pirouz Nourian

    Hi Tim, I'd say it is probably because the points and lines do not 'exactly' touch each other where you expect them to. Could you please try redrawing them accurately, preferably using the snapping options of Rhino? if the problem persisted, then my next guess would be something pertained to the error tolerance that I have hard coded in the components, that is the document tolerance set once when you initiate a file. An idea to solve this issue would be through raising the tolerance for error through Rhino command line or Rhino options. 

  • Arindra Januari

    Hi Pirouz, thanks for the awesome plugin! I'm new to this Space Syntax thing and now Im having problem when trying to make the triangulation. First I thought it was because I used too many nodes that caused the configuration to be not planar the but then I tested it with simpler one and the problem is still the same. I think I already follow the example and also read your pdf but couldn't really find the solution. The value on the base plan is also xy instead of coordinate, maybe it is the issue but I dont know how to fix it. Following is the screenshot:

    Thanks in advance! :)

  • Pirouz Nourian

    Hi Arindra, thanks for your compliments! From what I see in the image I can guess that the problem is that you have not mentioned links towards the 4 sides (NEWS: North, East, West, and South). You need to provide additional links towards the sides to use the triangulation methods. 

    I hope this helps. 

  • Lea Dietiker

    Hello Everyone! 

    Thanks Pirouz for this amazing tool!  I would love to use it - BUT the Node-Link Graph is constantly telling an error.

    >> Boolean Rhino.geometry.Line.EpsilonEquals (Rhino.Geometry.Line, Double) 

    Anyone knows what is the problem? :) THANK u!! 

  • Pirouz Nourian

    Hi Lea, Happy to hear you find them useful. Regarding the error, as I understand it is complaining that it cannot find the method Line.EpsilonEquals(). Based on what I've seen so far, this problem is usually solved by  updating Rhino. Could you please go to your Rhino options and check if it is up to date? 

  • Lea Dietiker

    Hey Pirouz!

    Thank u so much for your quick answer! Now it is working! Was not thinking about this solution.... Thanks  a LOT!

  • Pirouz Nourian

    Most welcome! Comments and complaints are also welcome :)!

  • Chandan Chaturvedi

    Great tool to analyze and take inferences. However, I have a lot of trouble getting it to create exportable results while using its generative design capabilities. To be very specific, I see no labels and colour when I use the dual graph command and further ahead from there. Any ideas if I am doing something wrong?
    Keep uo the work. Very inspiring.

    Regards
  • Pirouz Nourian

    Hi Chandan, Thanks for your compliments. Could you please describe what you want to get from what component exactly? I might be able to add a code snippet to help you achieve that for the time being. 

  • Francisco Diaz

    Great app Pirouz!, I seem to be having the same problem as a recent post from a couple days ago. Specifically, i dont have a clue on how to add links to the NEWS. 

    Do you reference them by adding additional points?

    Thanks.! 

  • Pirouz Nourian

    Hi Francisco, Thanks! It appears you are missing links towards the 4 sides. Once you provide the nodes and links to the NEWS (North, East, West, South) node-link graph, a sketch-pad with four nominal sides appears. You need to provide additional links from your spaces towards these sides in order to proceed with the rest of those methods. Please check the example file as well. 

  • Chandan Chaturvedi

    So, here's an example of what happens when I try to get it to work.

    Thats the definition...

    Now, the result..

    Now, Where is the label that says which box represents which room. I mostly figure that out myself but that is very counterproductive. I use an application that makes me pick up the pen and paper. Suggest something.

    Regards

  • Tim

    Hey Pirouz,

    How are you doing?

    I keep using your plugin, start to get used to it. My professor love it, it helped me a lot. During my work with it I sometimes find bloopers and would like to drop some wishes.

    For example it would be super useful to be able to bake Justified Graph to work with it later. Specifically, I think it would be useful for it to have geometry outputs. For example with other plugins I can convert colored circles (which I assume are surfaces) into hatches and safely export them into AI and work with nice fills from there (avoid filling it up myself this way).

    Or you could make them to be hatches when they are baked.

    Also, input for text color is essential. Since I can't bake it I have to take a screenshot but white text will just disappear on my (so happens) white presentation poster.

    It is a really beautiful graph, I can see the logic or a problem clearly from it, but it can be much better, text can be centered to its bubble and resized to fit in and so on.

  • Tim

    Hello again,

    Also I think it would be nice to add a piece of code that tries to avoid intersections in Justified Graph

  • Pirouz Nourian

     Chandan Chaturvedi 

    Please follow the way it is done in the example file. There you can see how to use the attributes to keep track of the spaces in your configuration. In principle, the order of the spaces does not get disrupted when they go through the process; that is if the graph is planar and sufficient links to the sides are provided. You can do the labeling and similar tasks with native components of GH. BTW, do not expect the rectangular drawing components to do the job properly, they are only place holders. Check the example file and read the "read me" notes please. 

  • Pirouz Nourian

    Hi Tim, Thanks for your suggestions and compliments. I am fine and getting closer to my defense ceremony I presume :). I have posted a C# snippet previously here for baking the balls of a bubble diagram as colored meshes. Have you tried that? I will try to find it from here and re-post it. It does not do all you have asked for, but it is something to start with. You can then perhaps adjust the texts separately using GH native components.  

  • Tim

    Hey Pirouz,

    Great to hear, please don't worry about the snippet, I'll find it myself.

  • Tim

    What you say is that it is possible to assign names through tags to corresponding bubble and from there just tweak and bake the tag.

    I found it extremely useful to work with pipeline component with your plugin. I guess you know why (although not without some trickery))). Also, it seems more efficient to name the geometry and with Human plugin retrieve these names to each bubble accordingly.

  • Tim

    Just to be on the same page, are you talking about C_Disk_PZN_Corrected.gh?

  • Tim

    If yes, I just checked it, maybe I haven't gotten it yet, but how does it bake justified graph (it doesn't even have any outputs, which is the problem)

  • Pirouz Nourian

    Yes Tim, that is the component I meant. Indeed it cannot do the job as is because the Justified Graph Component doesn't have an output. That component has one of the biggest chunks of code... Let me see if I can rewrite it to get an output from it. 

  • Tim

    Please do if you have time, if not with code, I could rearrange intersecting bubbles in AI if have baked geometry. Meshes are ok too, I can convert them to hatches with Human or FabTools plugins.

  • Tim

    Also text is very important, if possible to output it as a text that would be most useful.

  • Arindra Januari

    Hey Pirouz,

    I would like to ask about the entrophy parameter that is connected with the integration. In the paper 'designing with space syntax' there's explanation about the formula that you used to get the measurement for each parameter but how about the entrophy? I'd really love to know where do the numbers come from. Thanks in advance!