on Grasshopper, I'd probably research how people use the tools. For example; take a well known architectural shape and make algorithms that duplicate this shape in a number of languages (written English, drawn images, RhinoScript, MEL, AutoLISP, Grasshopper etc. etc.), then compare these different implementations. Which approach allows you to achieve the goal with least steps? Which representation can be most easily explained to others? Which can be most easily changed? and so on and so forth.
Voronoi diagrams are pretty mundane these days. Not that long ago only the best and brightest could use them for architectural purposes, but now everyone who is smart enough to install a plugin can.
One of the truly useful features of Grasshopper (and -of course- programming in general) over traditional approaches is that it can handle vast amounts of data. Given a couple of hours I can create a Voronoi diagram for 500 points by hand, but I would be hard pressed to manually evaluate the year-average of sun light contribution on every vertex of a 10000 point mesh.
If you're looking to do something reasonably innovative (and I think 10~11 weeks is plenty of time for that), I have yet to see someone do 3D isovist data maps of architectural models. I think Grasshopper can be used to at least aid in researching isovist properties of platonic, organic and custom volumes.
Or... a lot of people worry about shadow-casting properties of building envelopes, but nobody seems to be interested in solar reflection via windows and other reflective surfaces.
Or... given the average dioptre of the human eye, what can we say about the level of detail that is perceivable on every square unit of the facade of a 50 story building?
Or... how are grooves in a floor, wall or facade surface perceived as one walks past them? Or take it even further and research the rate of change of visual properties of a bas-relief surface.
--
David Rutten
david@mcneel.com
Poprad, Slovakia…
Added by David Rutten at 4:41am on November 21, 2009
hopper 0.9.0076, EnergyPlusV8-2-7 and my OS is windows 7.
This time i've used small box shaped building, and drag & drop all my components instead of copying from the old file. I have a warning message from Honeybee Run E+ report which is same as below.
And this is the overall definition:
Don't know whats the problem is but my guess is the version of energy plus V8_2_7? Cause the Honeybee_Honeybee component is the one you modified for Energy PlusV8_2, not from the original downloading directory.One thing I've observed is when i boolean toogle E+ simulation on, the calculation windows pops up and disappears so quick. I'm not sure its working properly.
What should i do next to make it work? I can uninstall my rhino and everything or installing it on other computer to check if it works...
Here is the new definition link:
https://www.dropbox.com/s/lvvnfipqpum7b4p/Honeybee%20issue2.gh?dl=0
Regards.
…
g-in, brief theory of complex systems, introduction to multi-agent systems and non-linear design, flocking, Boid library, basic examples - brownian motion, adhesion, separation, alignment, geometry following.-----------------------TIME: first session10am – GMT, London11am – Paris, Brussels, Rome, Vienna, Budapest, Bratislava, Warsaw9pm - Sidney7pm – Tokyo6pm – Beijing, Shanghai, Shenzhen, Hong Kong, Taipei3:30pm – Mumbai3pm – Karachi2pm - Samara1pm – Baghdad, Moscow, St Petersburg12pm – Istanbul, Athens, Helsinki, Cairo, JohannesburgTIME: second session3pm – GMT, London4pm – Paris, Brussels, Rome, Vienna, Budapest, Bratislava, Warsaw7pm – Dubai, Abu Dhabi, Baku6:30pm – Tehran6pm – Baghdad, Moscow, St Petersburg5pm – Istanbul, Athens, Helsinki, Cairo, Johannesburg1pm – Rio de Janeiro, São Paulo, Montevideo12pm – Buenos Aires, Santiago10am – Toronto, New York City, Bogota, Lima9am – Mexico City7am – Los AngelesWEBINARSThe rese arch Grasshopper® sessions are unique for their thorough explanation of all the features, which creates a sound foundation for your further individual development or direct use in the practice. The webinars are divided into four groups: Essential, Advanced, Iterative and Architectural. If you are a Rhinoceros 3D or Grasshopper® newcomer, you are advised to take all the Essential sessions before proceeding to the next level. If none of the proposed topics suit your needs or if you require special treatment, you can request a custom-tailored 1on1 session. All sessions are held entirely in English.The webinars are series of on-line live courses for people all over the world. The tutor broadcasts the screen of his computer along with his voice to the connected spectators who can ask questions and comment in real time. This makes webinars similar to live workshops and superior to tutorials.…
Added by Jan Pernecky at 3:36pm on February 17, 2015
f objects with the main ring body, and that cannot be done in parallel since you are modifying the item once at a time, algorithmically.
The original example of a cylinder and sphere are textbook failures of the Rhino 5 dumb algorithm, since that combination features kissing surfaces that confuse Rhino about where they are intersecting since really in tolerance values they are overlapping along a ribbon instead of a sharp line.
Normally you would slightly move or rescale one of the pair to create a single loop intersection curve that doesn't wander around in jerky fashion trying to combine two surfaces that fail to actually plunge through one another.
Your main Boolean union is 116 prongs with a ring base, and that's slow because Rhino bogs down as the model gets more an more complicated with each internal step, I imagine.
The speed is not all that slow either, only 21 seconds for the Booleans themselves.
If you turn of Grasshopper preview meshing via the toolbar menu it should be significantly faster while you are tweaking the design.
To troubleshoot the slow Boolean, I went into Rhino and tried merely splitting the ring body with the prongs and that itself was just about as slow as the Boolean union, so Rhino is not being badass about it. Then I exploded the ring body and tried splitting just that with the prongs and it was *much* faster to operate on just that single surface! The black box reveals itself a bit.
In kind, splitting the prongs with that single surface was about the same speed as splitting it with the whole ring body, so no speed gain there.
But, to speed up your script, since we *cannot* in fact use parallel processing, we can instead manually create that prong surface by doing our own splits and using Grasshopper's natural order of parts, hopefully consistent, to get rid of the junk.
That prong surface is item 4 of an exploded object.
So I will mutually split them and tease out the good parts from the junk and then rejoin the parts, no Boolean union component needed.
First, I went into your prong cluster and removed the capping, so I have merely an open revolution surface instead of a polysurface, letting me access the surface trim command after quickly finding the BrepBrep intersection curves between the prongs and the single ring surface.
For that Boolean union step I'm down from 11 seconds to 4 seconds, but confusingly we added a second to the Boolean difference that follows:
It's fast since we are manually selecting junk instead of Rhino having to sort which is which, I imagine.
We still have a slow Boolean subtraction of the gems and holes from the finished ring body.
That's not simple so will remain slow and cannot be parallel processed since again there's a single main ring body being modified in each step, and nor are there simple pairs of split object to select from manually to discard junk.
…
ocessed once Grasshopper is done with whatever it's doing now.
3) Grasshopper tells the Slider object that the mouse moved and the slider works out the new value as implied by the new cursor position.
4) The slider then expires itself and its dependencies ([VB Step 1] in this case, but there can be any number of dependent objects).
5) When [VB Step 1] is expired by the slider, it will in turn expire its dependencies (VB Step 2), and so on, recursively until all indirect dependencies of the slider have been expired.
6) When the expiration shockwave has subsided, runtime control is returned to the slider object, which tells the parent document that stuff has changed and that a new solution is much sought after.
7) The Document class then iterates over all its objects (they are stored in View order, not from left to right), solving each one in turn. (Assuming the object needs solving, but since in your example ALL objects will be expired by a slider change, I shall assume that here).
8) It's hard to tell which object will get triggered first. You'd have to superimpose them in order to see which one is visually the bottom-most object, but let's assume for purposes of completeness that it's the [VB Step 1] object which is solved first.
9) [VB Step 1] is triggered by the document, which causes it to collect all the input data.
10) The input parameter [x] is asked to collect all its data, which in turn will trigger the Slider to solve itself (it got expired in step 4 remember?). This is not a tricky operation, it merely copies the slider value into the slider data structure and shouts "DONE!".
11) [x] then collects the number, stores it into its own data structure and returns priority to the [VB Step 1] object.
12) [VB Step 1] now has sufficient data to get started, so it will trigger the script inside of it. When the script completes, the component is all ready and it will tell the parent document it can move on to the next object (the iteration loop from step 7).
13) Let us assume that the slider object is next on the list, but since it has already been solved (it was solved because [VB Step 1] needed the value) it can be skipped right away, which leaves us with the last object in the document which is still unsolved.
14) [VB Step 2] will be triggered by the document in very much the same way as [VB Step 1] was triggered in step 9. It will also start by collecting all input data.
15) Since all the input data for [VB Step 2] is either defined locally or provided by an object which has already been solved, this process is now swift and simple.
16) Upon collecting all data and running the user script, the component will surrender priority and the document becomes active again.
17) The document triggers a redraw of the Grasshopper Canvas and the Rhino viewports and then surrenders priority again and so on and so forth all the way up the hierarchy until Grasshopper becomes idle again.
[end boring]
Pretty involved for a small 3-component setup, but there you have it.
To answer somewhat more directly your questions:
- The order in which objects are solved is the same as the order in which they are drawn. This is only the case at present, this behaviour may change in the future.
- Adding a delay will not solve anything, since the execution of all components is serial, not parallel. Adding a delay simply means putting everything on hold for N milliseconds.
- [VB Step 1] MUST be solved prior to [VB Step 2] because otherwise there'd be no data to travel from [GO] to [Activate]. The only tricky part here is that sometimes [VB Step 1] will be solved as part of the process of [VB Step 2], while at other times it may be solved purely on its own merits. This should not make a difference to you as it does not affect the order in which your scripts are called.
--
The Man from Scene 24…
Added by David Rutten at 4:43pm on December 10, 2009
to host the annual parade of Samba Schools during the Carnival festival. For the remaining 361 days of the year it stands empty and desolate as a massive dividing wall within its degraded urban context. Renovated in 2012 and now the future site for the 2016 Olympic marathon finish line and archery events, the Sambadromo is receiving renewed international attention, but it drastically needs to accommodate new types of programme and improve its connection with its surrounding context. AAVS Rio de Janeiro will explore ways to intervene within and transform the Sambadromo, with a potential focus on the VIP and Press Rooms ‘camarotes’, which were originally designed to house classrooms when Carnival was not taking place, and are now the site for over-commercialized, under-designed temporary installations during Carnival, and abandoned throughout the rest of the year. Teaching team:The teaching team will be led by Elena Manferdini, from Atelier Manferdini (www.ateliermanferdini.com), to teach and use advanced digital design and fabrication to generate iterative transformations in the creation of new micro-infrastructures. Computational and fabrication skills: The workshop will teach advanced computational design skills. A series of physical models will be built using digital fabrication techniques, such as laser-cutting and rapid-prototyping, that will be taught during the workshop. No previous digital or fabrication experience is needed. Applications: http://www.aaschool.ac.uk/STUDY/VISITING/rio http://rio.aaschool.ac.uk/2015-aa-marathon-runway-sambadromo/ or mail brazilvisitingschool@aaschool.ac.uk…
Ruby, [9] R, [10] PHP ,[11] MATLAB [12]
Maybe it can find it's way into GH somehow..
when using the default GH random number generator i mostly use much higher seed values.…
Added by Robert Vier at 10:08am on December 27, 2012
he resulting STL file has no problems. I was going to make a 3D print of it but I thought I could make it even more interesting.
When I make a duplicate piece of geometry with reversed curve rotation values and combine the 2 together I get this interesting result:
However, after baking this geometry the exported STL file has a huge number of errors - there are literally thousands of flipped normals, multiple mesh parts, and disconnected triangles.
I have tried lots of things to resolve this and none of them worked: converting to meshes in GH, GH mesh smooth, Rhino Solid Union, Mesh Repair, Align Normals, etc. I use 3D Builder to correct STL problems, but it can't fix this one.
An even more interesting shape happens when I twist the above shape in one direction, and then add it to another that is twisted in the opposite direction:
Of course the STL file for this one is even worse because it just compounds the previous problems.
Is there any way to resolve these problems? My GH file is somewhat messy and perhaps a bit obscure, but I'd be happy to clean it up and share it with anyone who thinks there is a way to get this puppy working.
…
Added by Birk Binnard at 11:56am on September 22, 2016
ace Syntax." eCAADe 2013 18 (2013): 357.
http://www.sss9.or.kr/paperpdf/mmd/sss9_2013_ref048_p.pdf
The measure Entropy is newer. I hereby explain it (from my PhD dissertation):
Entropy values, as described in (Hillier & Hanson, The Social Logic of Space, 1984) and specified in (Turner A. , “Depthmap: A Program to Perform Visibility Graph Analysis, 2007), intuitively describe the difficulty of getting to other spaces from a certain space. In other words, the higher the entropy value, the more difficult it is to reach other spaces from that space and vice-versa. We compute the spatial entropy of the node as using the point depth set:
(11)
“The term is the maximum depth from vertex and is the frequency of point depth *d* from the vertex” (ibid). Technically, we compute it using the function below, which itself uses some outputs and by-products from previous calculations:
Algorithm 4: Entropy Computation
Given the graph (adjacency lists), Depths as List of List of integer, DepthMap as Dictionary of integer
Initialize Entropies as List(double)
For node as integer in range [0, |V|)
integer How_Many_of_D=0
double S_node=0
For depth as integer in range [1, Depths[node].Max()]
How_Many_of_D=DepthMap.Branch[(node,depth)].Count
double frequency= How_Many_of_D/|V|
S_node = S_node - frequency * Math.Log(frequency, 2)
Next
Entropies [node] = S_node
Next
…
edit 29/04/14 - Here is a new collection of more than 80 example files, organized by category:
KangarooExamples.zip
This zip is the most up to date collection of examples at the moment, and collects t