algorithmic modeling for Rhino

I am working with OctopusE to optimize grid configurations in gridshells, I have encountered some rare instances where it produces solutions that aren’t completely interconnected. I need a constraint function that gives a true Boolean value if all nodes are connected to each other and a false value if they are not. I’ve tried some different approaches but cant seem to make it work. Karamba have a "connected parts" component but it can only catch elements that are not connected to the supports

So I am currently looking for new suggestions on how to deal with this issue?

You can see an example of A plan view of a gridshell where the corner elements aren’t connected to the rest of the structure but they are connected to supports 

Views: 750

Replies to This Discussion

One approach would be to consider your network as a graph. In graph theory, the problem you are describing would be equivalent to what is known as a disconnected graph. In GHPython you could use NetworkX to check whether or not your graph is connected. I believe that there are a few Grasshopper graph plug-ins out there, they might be able to provide the same functionality as well. Hope that helps..

>>>>I need a constraint function that gives a true Boolean value if all nodes are connected to each other

That means that in the original topology all nodes are connected?

To help is important to know how it is the original grid and topology. You can probably get some data of her and contrast it with the new solution.

Anders Holden Deleuran: 
Thank you for your input, I will look into it :) 

Daniel Gonzales Abalde: 
Yes in the orignal topology they are all connected, I have a chromosome slider with ones and zeros that determines whether a connection between nodes is on or off: 
I have added a picture of the fully connected grid and of the chromosome slider:


If you don not want to code, you could use spiderWeb to create a Graph.

And then it depends on your problem. I would guess you could do it with A simple BFS search from one node. If a component is not connected you will get a +Infinity value in the cost list.

If you could provide the file I can show you how to...

Maybe, a simple way, would be to use Point Groups component with a value for D input given by the user(you) to be the minimum possible to return to all points in the same branch. The points of the first input, you can use the mid-point line of the original grid. After you do the same with the new grid, while maintaining the same value of D. Try to see if it works. Then you would use the second output I, to select the indices for the new grid lines. If it works, you should get several branches, gathering the various separate grids.

Or to use sandbox plugin.

Ive attached an old version of the program, I had to find a version without our own GH component we made to automatically define the connection possibilities, we called it SpiderGrid (funny coincidence :) )

I can see the file didnt upload the first time, it seems to be because the Octopus component had stored data so it filled 31 MB, I removed the component and the file should be uploaded now







  • Add Photos
  • View All

© 2022   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service