algorithmic modeling for Rhino

Cellular Automata for Grasshopper


Cellular Automata for Grasshopper

CA4Gh is a framework for string-expression-based neighborhood-generation; a CELLULAR AUTOMATA.

This utility uses the gh-internal expression-parser; expanding it by pointing-operators and a 'Key-Value'-Database:

  • T{...}      OR      Top{...}
  • L{...}      OR      Left{...}
  • B{...}      OR      Bottom{...}
  • R{...}      OR      Right{...}
  • TL{...}      OR      TopLeft{...}
  • TR{...}      OR      TopRight{...}
  • BL{...}      OR      BottomLeft{...}
  • BR{...}      OR      BottomRight{...}
  • nesting like:    Top{... + Left{...}}
  • all other variables are interpreted as a 'Key' and collected from the cell's database.
    (detected from the gh-internal parser)



Ortler Mark

Members: 26
Latest Activity: Sep 8, 2023

Discussion Forum

This group does not have any discussions yet.

Comment Wall


You need to be a member of Cellular Automata for Grasshopper to add comments!

Comment by Ortler Mark on May 16, 2016 at 5:48am

Hey Igor,
sure; u can do this.
Just set up the entrance-data with the setter in the beginning and go on.

As far as u use the syntax/operators of the gh-internal-expression-parser it should work just fine... So ur If(... , ... , ...) is fine; u can use ca_expressions everywhere there.

My Expression-Parser its just a framework which parse the given string to a valid gh-expression which takes the needed (Variable-)Values from a KeyValue-DataBase

I currently digging into this stuff again. Currently I am writing some code to enable n-Dimensional Cellular-Automate (2d,3d,4d,nd)... So, do not go too far with ur experiments, because the available operators (Left, Right...) are going to be replaced by a single one: Pointer{[,,,] ...}

If u want to do some beta-testing, let me know; I can send u a preview...

Greets Mark

Comment by Igor on May 11, 2016 at 6:37am

Hi Ortler

I it is inexact I have formulated a question. I wanted to ask whether it is possible to set two parameters (or more) as entrance. For example a - curvature and b - distance from a point/attractor. Expression could  look so If(a<L{a} AND  b>L{b}, (some value or expressoin), ........).



Comment by Ortler Mark on May 9, 2016 at 5:45pm

The Link to beta-1.1.0

(copy & paste)!Ut8A0QjI!RhUCYjd4z5hb8VGBE2nwfA

Don't know why the link below does not work...

Comment by Ortler Mark on May 9, 2016 at 5:42pm

Hey Igor,

Just to say. This was and is a prove of concept: Its about the ExpressionParse. But its going to be fun to dig into possibilities. So...

At the moment there is no edge, so if u think u are on the left outside, u aren't, u start again from the right.... (top/bottom == same)

I do not understand what u mean with array...

"{ aababbabbbaaabbabb ..... "

if u can give me some more informations about this, I will try to dig into it.

In the meantime, u could test the beta of 1.1.0 where borders are enabled; and some more, like 'parallel-processing' and 'generation-groups'


Comment by Igor on May 8, 2016 at 3:30pm

You couldn't explain how the plug-in processes data on the edge of the array. For example at the left border where value Left{a} doesn't exist. And also it would be desirable to know how to apply several variables in one array like as { aababbabbbaaabbabb ..... }.


Members (26)






  • Add Photos
  • View All


  • Add Videos
  • View All

© 2024   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service