Though I’m not entirely sure how this will relate to my studio project, I’ve finally made my first Rhino Script. I’ve been fascinated by the pollibility of using a halftone gradient as a generative image, and I’ve created a process to do just that. Take any image (random Photoshop “Clouds” for instance) and transform it with a color halftone filter (all angles set to zero to assure black and white dots). Then, take it to Illustrator, perform a live trace to vectorize the image, export it to a dwg file, and import it in rhino.
In rhino, join all the curves and make surfaces from planar curves. Then comes the script. The script takes a selection of surfaces, and extrudes them each to a height related to the inverse of the square root of the surface area. What this means is from any halftone image, areas of high density will become low, flat areas for inhabitation, while diffuse areas will become either completely open, or populated by tall, slender columns.
Here’s the result of running the script on the image above:
And here’s the script:
Option Explicit'Extrude multiple surfaces to a height depending on surface area'Script written by Evan Chakroff Public intCount Call Main()Sub Main() 'Define the height-area ratio Dim ratio 'ratio = Rhino.GetString("Select height to area ratio", , , True) ratio = .00005 'smaller number = bigger range of heights 'need new method for height calculation If IsNull(ratio) Then Exit Sub Rhino.Print "Ratio: " & ratio 'Select surface objects and print area Dim arrObjects, strObject, arrArea, area, height, strSurface, strCurve arrObjects = Rhino.GetObjects("Select surface objects", , , True) If IsArray(arrObjects) Then For Each strObject In arrObjects arrArea = Rhino.SurfaceArea(strObject) area = CStr(arrArea(0)) height = (100/(area^0.5)) Rhino.Print "Object identifier: " & strObject Rhino.Print "The surface area is: " & area Rhino.Print "The height to extrude is: " & heightif height > 100 then height = 100if height < 1 then height = 1 strCurve = Rhino.AddLine(Array(0,0,0), Array(0,0,height)) Rhino.ExtrudeSurface strObject, strCurve Rhino.DeleteObject (strCurve) Next End If End Sub
Any scripters out there? Comments are welcome.