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)
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-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.
Yuki Wada
Hi Pirouz.
Your Syntactic is very exciting!
I'm having a trouble with a component 'Triangulate Mesh In All Ways'.
The error message is: '1. Solution exception: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
The goal of my project is to allocate room boxes at points generated by space syntax without overlapping each box. The boxes don't need to kiss each other because I'll connect them with corridors using edges generated by SYNTACTIC (Does a component 'Graph Edges' work for this?).
https://drive.google.com/open?id=1VveIAayRYqHDSc1rgpKWSs1n-VaXZhAM
I'm also looking forward to updates which enable point generation in 3D volume!
Oct 18, 2018
Leen Hiasat
Hello Pirouz
Thank you so much for this tool I believe its going to be of great help for me in my research.
However, I have so problems in starting it, the version on this website doesn't seem to work on my Rhino 6. Even after trying to unblock it and pasting it to the components folder.
I downloaded the one on food4rhino, it worked, but its missing many components
any suggestions please?
Thank you so much
Dec 5, 2018
maryam
hello , Mr Nourian
According to the upgrade of your new plug.
It 's possible to renew a teaching video to get acquainted with the functions version for us.
Thank you.
Dec 7, 2018
Pirouz Nourian
Hello Maryam, we are working on an update for Rhino 6, ensuring compatibility with the new library. I cannot promise a new video anytime soon, but will be happy to answer short questions here.
Dec 10, 2018
Pirouz Nourian
Hello Leen Hiasat,
thanks for your compliments. The error you are mentioning might be because the NEWS graph you are putting in is not 3-connected (has more than 3 vertices and remains connected after removing any 3 vertices), or because you are trying to find a triangulation that does not exist (referring to a high index).
The package released on Food4Rhino is indeed incomplete. We are working on it. Cannot promise an exact date but doing our best to release before the end of the year.
Dec 10, 2018
Pirouz Nourian
Hellow Yuki Wada ,
I checked your file and noticed there were quite a few errors caused by empty entries in your lists (I guess that is because I am opening your file in GH for Rhino 6 and that you have made it in GH for Rhino 5). Apart from that, I see that your graph is not 3-connected (has more than 3 vertices and remains connected after removing any 3 vertices). That is an issue. I saw at least one (Yodo r) node that is only connected to north and west. That is a breach of 3-connectivity. In your Tutte Diagram I also see that there are a few nodes connected to nowhere. That is also a serious problem with the graph drawings ahead.
Dec 10, 2018
Leen Hiasat
Hello Nourian,
I'm having a problem with the tool "DiskoGraph"
It sometimes gives me this error
"Solution exception: object reference not set to an instance of an object" and refuses to produce the graph.
What might be the problem please?
Thank you
Jan 10, 2019
Dēmiurgos
Hello, Pirouz
How can I bake the graphs? I don't know if this question has already been made.
Thank you for your time and effort
Jan 12, 2019
Dēmiurgos
I found a little script that my help me in baking the graphs from the component "GraphsfromNodesAndLinks". This is already great and very helpful.
Is there a way to bake the other output graphs?
Thank you
Jan 12, 2019
周伟杰
Your research is very helpful
Jan 14, 2019
shimaa elsayed
I want how to download space syntax inside rhino
Feb 8, 2019
Pirouz Nourian
Hi shimaa elsayed, the last working version (which might only work on Rhino 5) is available on my website: https://sites.google.com/site/pirouznourian/syntactic-design?authus... (download button at the bottom of the page).
At this moment we are working on a much delayed new release but due to my bust academic schedule I cannot promise a release date. I might gradually post here some components as user objects.
Feb 21, 2019
Dēmiurgos
Pirouz. Hello.
Just wondering if there is a way to edit graph attributes like text size, colour, etc.
I'm using the LOL component, but I can't find a concrete way to do it.
Thnank you for your answer.
Feb 28, 2019
Pirouz Nourian
Mar 8, 2019
Andrea
Can you please upload an example file of the last version of Syntactic?
Ps: on which version of Rhino does it run better?
Thanks
A
Apr 26, 2019
Pirouz Nourian
Comment by Pirouz Nourian just nowDelete Comment
Hi Andrea, the latest release, available on my website includes an example file. The link is above (under the logo). I know it has compatibility issues with Rhino 6 and that it may only work with Rhino 5. We are working on these issues.
Hope this helps.
May 5, 2019
Pirouz Nourian
Comment by Pirouz Nourian just nowDelete Comment
Hi Andrea, the latest release, available on my website includes an example file. The link is above (under the logo). I know it has compatibility issues with Rhino 6 and that it may only work with Rhino 5. We are working on these issues.
Hope this helps.
May 5, 2019
Shameem Ashraf
Hi! Sorry for the noob question, but I have installed the SYNTACTIC_V_2.7.exe downloaded from your website. Opened up grasshopper, found no tabs or tools, I'm missing something big, what am I missing here though?
May 9, 2019
Pirouz Nourian
Hi Shameem Ashraf, it could be that you are using it in Rhino 6; which might be incompatible with our last release. We are working on an update to resolve the issue.
Hope this helps.
May 14, 2019
Pirouz Nourian
Hi Shameem Ashraf, it could be that you are using it in Rhino 6; which might be incompatible with our last release. We are working on an update to resolve the issue.
Hope this helps.
May 14, 2019
Pirouz Nourian
Hi Shameem Ashraf, it could be that you are using it in Rhino 6; which might be incompatible with our last release. We are working on an update to resolve the issue.
Hope this helps.
May 14, 2019
Shameem Ashraf
Hi Pirouz,
I am using Rhino 5 x64 version actually.
May 14, 2019
Iman Sheikhansari
Hi
If you are encountering a problem with rhino 6 versions don't worry
Follow these steps.
1. Download SYNTACTIC from https://sites.google.com/site/pirouznourian/syntactic-design
2. Install it and go to the installation folder, Drag & drop SYNTACTIC(green one) over your grasshopper canvas.
3. Close your rhino and reopen it.
4. Type GrasshopperDeveloperSettings
5. Tick the Memory load *.GHA assemblies using COFF byte arrays option
6. Run grasshopper and enjoy plugin
Aug 26, 2019
Pirouz Nourian
Hi Iman Sheikhansari,
Many thanks for sharing your solution!
Aug 27, 2019
Pirouz Nourian
https://www.researchgate.net/publication/336799509_Configurative_De...
Nov 5, 2019
YUAN SHENG LIN
Hello, thank you very much for developing such a useful plugin!
I have some questions about the parameters in the process of using this plug-in. In the "force directed drawing" component, is there a more detailed description of the two parameters "St_Atr" and "St_Rep" and the impact of the parameters? Thank you very much!!
Jan 4, 2020
Pirouz Nourian
Hi YUAN SHENG LIN , thanks for your compliments. For a detailed explanation on the force directed graph drawing algorithm please see page 100 of my dissertation. 'Str_att' is the strength of attraction and 'Stre-rep' is the strength of repulsion. For very complex bubble charts or situations that do not result in a convergent diagram you can first try lowering the repulsion and then the attraction to get a near optimal layout.
I hope this helps.
Pirouz
Feb 11, 2020
Pirouz Nourian
Hello 王海涛,
The version on Food4Rhino is unfortunately incomplete. I shouldn't have put it there perhaps. Please use the old version from my website and refer to the instructions of Iman Sheikhansari for getting it to work.
I hope this helps.
Pirouz
Feb 11, 2020
王海涛
Dear Pirouz Nourian,
Thank you for your kind reply. I really appreciate your syntactic. The ‘triangulate mesh in all ways’ component doesn’t work. I followed the procedure of your PD paper and watched your video ‘SSS9 Parallel Session 1 Pirouz Nourian’ on YouTube over and over again. But I fail to find the solution. Please help me.
I found that there are many people have the same problem with me in space syntax group. I know you have heavy education load. It is more better that you record a video of your own operation to guide the steps in detail in ‘syntactic exploration’ when you have some time.
Best wishes.
topology3.3dmtopology3.gh
Feb 16, 2020
Pirouz Nourian
Dear group members, I hope all is going well with you.
Our plan for the future is to share all algorithms open source in Python. You can find one of the most wanted ones in one of our GitHub repos (graph relaxation in 3D and more). There is much more already in our GitHub repos and more to be added. For getting an idea of our future direction check this lecture out. For getting a better understanding of graphs and graph theory watch this lecture and this lecture on a gamified spatial configuration process. Stay tuned for more and do not hesitate to post Python questions in the meantime.
ps. If you are having installation problems, please check the remedy suggested below:
Comment by Iman Sheikhansari on August 26, 2019 at 8:33amDelete Comment
Hi
If you are encountering a problem with rhino 6 versions don't worry
Follow these steps.
1. Download SYNTACTIC from https://sites.google.com/site/pirouznourian/syntactic-design
2. Install it and go to the installation folder, Drag & drop SYNTACTIC(green one) over your grasshopper canvas.
3. Close your rhino and reopen it.
4. Type GrasshopperDeveloperSettings
5. Tick the Memory load *.GHA assemblies using COFF byte arrays option
6. Run grasshopper and enjoy plugin
Oct 14, 2020
Leen Hiasat
Hello guys
Im having a problem that after almost the 12th space is added the diskograph component that produces the bubble diagram stops working! always after this number of spaces it starts giving the error "object reference not set to an instance of an object"
It only works if I turn the boolean toggle to false for the forcedirecteddrawing component but then again the bubbles are not adjacent anymore! any comment please?
Thank you :)
Oct 30, 2020
Pirouz Nourian
Hello Leen, apologies for responding so late; I have been overloaded with education these months. The error sounds to be related to a mismatch between the number of attributes provided (tags, colours, areas, etc). If it is a bug caused by something else, we can perhaps replace the module with a custom-made python module. Please let me know if there is an update on this issue.
Jan 25, 2021
gaston
Hello, not all tools are available
How could i solve this issue
Aug 6, 2021
Pirouz Nourian
Hello gaston, you seem to have downloaded an incomplete new version from Food4Rhino. You can get the last complete version from here:
https://genesis-lab.dev/products/syntactic/
Stay tuned for more updates on Genesis Lab
I hope this helps!
Sep 4, 2021
Pirouz Nourian
Hi there, here is a new book chapter about going beyond analyses towards syntactic evaluations, containing some tutorials: https://www.researchgate.net/publication/354683441_Reuse_On_Evaluat...
Dec 2, 2021
asyimut
Hello!I am using Rhino7 and the .exe file I have ran does not appear in my GH canvas. Is there another location I can download a normal .gh component file?
Jan 7, 2022
Samane
If the plugin does not appear in your canvas, try the following:
Jan 8, 2022
asyimut
Hi Guys! I would like to use the idea of adjacency, closeness, betweenness of areas in order to decide on some dimensional parameters of my design. So, potentially I would feed the average shortest paths of each design topology as fitness measure into a genetic algorithm, and maybe Biomorpher. So let's say I subdivide the surfaces which occur below as iterations in Biomorpher and create a graph representation as routes and nodes. Do you know any heuristic which I can calculate the average shortest paths in such way? cheers!
Jan 9, 2022
Eman Baadullah
Hi.... I am using Rhino7.14.22010.17001 and the .exe file I have run does not appear in my GH canvas. Is there another location I can download a normal .gh component file? the one I downloaded from food4rhino is incomplete.
also, I did the way Samane explained but it doesn't work.
Jan 24, 2022
Pirouz Nourian
Hi Eman Baadullah,
While running the exe installer file you need to specify a location in which the gha component will be placed. Please run it again and specify a location that you can recognise. Then you can follow the instructions of Sama to ensure that the plugin appears in your GH canvas. I hope this resolves the issue. The download link is here: https://genesis-lab.dev/products/syntactic/
Jan 26, 2022
Pirouz Nourian
Hi asyimut,
Interesting question! I would try to build a face-to-face adjacency graph of the meshes in question (e.g. using Ivy or Python) then you can use GH CPython to access NetworkX and compute all shortest paths (or centrality indicators) and do the rest in Python or GH. If you start the Python codes I can help you by giving hints on how to finish them.
Jan 26, 2022
asyimut
Dear Pirouz,
Thank you for the great suggestions.
1. Can I create a 3D graph representation of the topologies? Can you quickly see the figure1 in the attached paper?
2. Then, NetworkX would recognise and compute the SP s in the 3D graph?
3. In the meantime, I made a very heavy model in which I can calculate a limited amount of shortest paths. See the attached image.
This is a beehive design. The combs which are inhabitable on both sides are radially distributed around a central core. There is a corridor around the inner core, as well as a peripheral gallery. Bees can also move above and below the combs. So I need the 3D dimensions in my model, or my mathematical imagination is not capable of thinking this planarly? I used the library from this link https://github.com/danilnagy/gd_tools but my model is very heavy. I made a triangulated mesh in order to define all the paths that the bees can take and defined random 20 points as start and end points to find the SPs. I guess with your system this would be faster.

This image represents how I would like to think of the nest spaces and connectivity but in the honeybee nest case- which is a designed one not a natural one-
Jan 26, 2022
Pirouz Nourian
Hi Asya, sure, happy to help, I find the Termite nests very inspiring; thanks for sharing the picture! Re your questions:
1. The notion of a 3D graph is somewhat confusing because the graph itself is not a 3D space but yes, sure, if the vertices are "embedded" (mathematical term for 'drawn'/placed) in a 3D space you can colloquially call it a discrete model of the 3D space... Bottom line is that you need to produce the topology of the graph as a set of edges connecting those vertices. Since you have the models as meshes, you kind of implicitly have the graph data in the mesh as face to face adjacency graphs. If you are familiar with Python I can help you write that. Or I might even find it as I have written it before and share it. In the meantime, have a look at Ivy, it has a tool that can produce such graphs (as far as I remember).
2. once you have your graph data as a set of edges, practically a set of tuples of two integeres, referring to the vertex indices, then you can initiate an NX graph and then you are all set for computing geodesic distances
3. I suspect that NX would be/could be faster in running some analyses but I must say I did not quite fully understand what is the goal/process. If you have a publication or a proposal or a description of the process please feel free to send me through email p.nourian at tudelft.nl. I would appreciate it if you could summarise the idea in a workflow diagram (even if drawn by hand)
2.
Jan 26, 2022
Eman Baadullah
Hi.. Where can I find more videos and tutorials about syntax?
Jan 28, 2022
Eman Baadullah
Is there any way to convert the bubble diagram to a floor plan and control the shape of the rooms or areas?
Jan 29, 2022
worawit hansombu
Hi I'm a student from Thailand I want to download this but I can't download
it because my Gmail doesn't have access. And I have asked for permission many times.
please help me
Gmail:worawitjob.2542@gmail.com
thank you.
Feb 4, 2022
Samane
https://genesis-lab.dev/products/syntactic/
Feb 5, 2022
Pirouz Nourian
Hi Eman Baadullah, good question! The answer is rather long; you can have a look at our new open-source approach in the course Spatial Computing : we are using a Multi Agent System to grow the parts of the building in 3D based on voxels. We also have a new open source process in Python for forming bubble diagrams in 3D that matches this process in VectoRelax (Graph Relaxation). I hope this helps.
Feb 16, 2022
Kim Ricafort
Hello everyone!
I just have a question on NodeLinkGraph component. Just wondering if anyone knows how to reduce the size of the text of the points? I worked fine on the first diagram, but now it's too big to even be legible.
I need it quite urgently.
Thanks a lot!
Cheers,
Kim
Oct 6, 2022
Pirouz Nourian
Hello Kim, this component guesses an average size for the presentation of the labels; I can see that the size is too big so the smart procedure is over-engineered. Anyhow, you can turn off the preview of this component and use a controllable tex3D component to draw labels with an arbitrary size, but for doing that you need to create the labels, e.g. by using a Series component (provide the number of nodes by using a List Length component to the Series).
Oct 6, 2022