ipants from 12 countries to attend lectures and technical seminars furthering their understanding of digital design and fabrication in architecture. This year LaN extends the workshop with parallel intro sessions in all LAN ports–Barcelona / Boulder / Brooklyn / Bozeman (Aug 10-12). In 2009, you choose your modules.
Register Online
*please note, participants who have previously attended a LaN workshop automatically get a discount of total price.
Key Dates:
June 1, 2009: Workshop Launch - Applications Open @ 10% off price
June 19, 2009: Workshop Applications Open at 5% off
July 10, 2009: Applications open
August 7, 2009: Applications Closed
August 10-12, 2009: PHASE I - Modules [North America and Barcelona]
August 16-22, 2009: PHASE II - Modules [Barcelona @ IaaC / Institute for advanced architecture of Catalonia ]
August 24-30, 2009: PHASE III - Urban Drifts Workshop [Barcelona @ IaaC / Institute for advanced architecture of Catalonia]
*please note: all Rhino courses will be taught by a Rhino Certified Trainer
PHASE I: Aug 10-12
Phase I will be conducted in parallel in BARCELONA / BOULDER / BROOKLYN / BOZEMAN and are meant to familiarize participants with software and techniques. Phase I registration is inclusive of both module 1 & 2.
1. Rhino Introduction - 12hrs
2. RhinoFab: Rhino + Fabrication - 12hrs
PHASE II: Aug 17 - 22
Phase II modules will take place at the Institute for Advanced Architecture of Catalonia [IaaC] in Barcelona, Spain and will deal with scripting, parametric design and fabrication provided by FabLab BCN.
3. RhinoScript - 20hrs
4. Parametric Modelling in Rhino: Grasshopper - 20hrs
5. Introduction to Digital Fabrication - 20hrs
6. Machining Processes- 20hrs
PHASE III: Aug 24-30 ‘Urban Drifts’ Workshop - 40hrs
Register Online
Contact: bcn2@livearchitecture.net
More Information: http://www.livearchitecture.net…
gh, when I bake, the geometry suddenly exists in rhino.
Second, I can seem to figure out how to set default numeric values in the component.
Protected Overrides Sub RegisterInputParams(pManager As Grasshopper.Kernel.GH_Component.GH_InputParamManager)
pManager.AddPointParameter("Focal Point", "FP", "The focal point", GH_ParamAccess.item)
pManager.AddNumberParameter("Focal Point Horiz Dist", "D", "Focal point distance from performance boundary", GH_ParamAccess.item)
pManager.AddNumberParameter("Focal Point Height", "H", "Focal point height above performance boundary", GH_ParamAccess.item)
pManager.AddPointParameter("First Row Start Point", "FR", "Location of first row in tiered seating", GH_ParamAccess.item)
pManager.AddNumberParameter("First Row Horiz Dist", "FRD", "First row distance from performance boundary", GH_ParamAccess.item)
pManager.AddNumberParameter("First Row Height", "FRH", "First row height above performance boundary", GH_ParamAccess.item)
pManager.AddNumberParameter("C Value", "C", "C value", GH_ParamAccess.item)
pManager.AddNumberParameter("Row Width", "RW", "Row width", GH_ParamAccess.item)
pManager.AddIntegerParameter("Number of Rows", "RN", "Number of Rows", GH_ParamAccess.item)
pManager.AddIntegerParameter("Construction Tolerance", "CT", "Construction Tolerance: 1=1in, 2=1/2in, 4=1/4in, 8=1/8in", GH_ParamAccess.item)
pManager.AddNumberParameter("Max Riser Height", "MR", "Maximum riser height allowed", GH_ParamAccess.item)
pManager.AddGeometryParameter("Spectator", "S", "Seated/Standing spectator", GH_ParamAccess.item)
End Sub
Protected Overrides Sub RegisterOutputParams(pManager As Grasshopper.Kernel.GH_Component.GH_OutputParamManager)
pManager.AddLineParameter("Sightlines", "SL", "Sightlines", GH_ParamAccess.list)
pManager.AddLineParameter("C Value", "CL", "Line represents C value height", GH_ParamAccess.list)
pManager.AddLineParameter("Ground Line", "GL", "Ground Line", GH_ParamAccess.list)
pManager.AddLineParameter("Tier tread", "TR", "Line represents tier treads", GH_ParamAccess.list)
pManager.AddLineParameter("Risers", "RI", "Line represents risers", GH_ParamAccess.list)
pManager.AddGeometryParameter("Spectators", "SP", "Seated Standing Spectators", GH_ParamAccess.list)
End Sub
Protected Overrides Sub SolveInstance(DA As IGH_DataAccess)
Dim newLine As New List(Of Line)
Dim newCValue As New List(Of Line)
Dim rowWidthLineList As New List(Of Line)
Dim floorLineList As New List(Of Line)
Dim riserLineList As New List(Of Line)
Dim leghtList As New List(Of String)
Dim newSeated As New List(Of GeometryBase)
Dim inputPoint As Point3d
If (Not DA.GetData(0, inputPoint)) Then Return
Dim viewPointY As Double
If (Not DA.GetData(1, viewPointY)) Then Return
Dim viewPointZ As Double
If (Not DA.GetData(2, viewPointZ)) Then Return
Dim firstRowPoint As Point3d
If (Not DA.GetData(3, firstRowPoint)) Then Return
Dim firstRowY As Double
If (Not DA.GetData(4, firstRowY)) Then Return
Dim firstRowZ As Double
If (Not DA.GetData(5, firstRowZ)) Then Return
Dim cValue As Double
If (Not DA.GetData(6, cValue)) Then Return
Dim rowWidth As Double
If (Not DA.GetData(7, rowWidth)) Then Return
Dim numberOfRows As Integer
If (Not DA.GetData(8, numberOfRows)) Then Return
Dim M As Integer
If (Not DA.GetData(9, M)) Then Return
Dim maxHeight As Double
If (Not DA.GetData(10, maxHeight)) Then Return
Dim seated As GeometryBase
If (Not DA.GetData(11, seated)) Then Return
Call addNewRow(newLine, newCValue, inputPoint, viewPointY, viewPointZ, firstRowPoint, firstRowY, firstRowZ, cValue, numberOfRows, rowWidth, rowWidthLineList, floorLineList, riserLineList, M, maxHeight, seated, newSeated)
DA.SetDataList(0, newLine)
DA.SetDataList(1, newCValue)
DA.SetDataList(2, rowWidthLineList)
DA.SetDataList(3, floorLineList)
DA.SetDataList(4, riserLineList)
DA.SetDataList(5, newSeated)
End Sub
Public Sub addNewRow(---constructor----)
---additional code----
end Sub…
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
r availability on each orientation.
But to make thinks (hopefuly! :-) ) clearer, I attach a simplified version of my analysis using the same one surface to run the three different cases. I assume that the direction of the surface is now the same, still results are different. The top case in rhino correspond to the top case in the GH canvas, the lower in Rhino to the lower in GH..
I expected a difference in each run.. but the cases differ of 100% not 10% that would be reasonable..
Case 1 158 W/m2 for the "only test point" option
Case 2 314 W/m2 for the "test point + pts Vectors" case
Case 3 282 W/m2 for the ladybug option
The analysis is made the day 1 , hour 12h and the the solar radiation condition are:
Direct 125 W/m2
Diffuse 164 W/m2
Global Horiz 207 W/m2
The interesting thing is that the three cases made for the orizontal surface give the same results.
moreover if the materials reflectance is changed to 1, the results are very similar but the values are higher than the sum of direct + diffuse as for case 2
125+164 = 289 results give 314
(diffuse radiation is obviously calculated on horizontal surface in the weather file and the surface analysis is vertical so the percentage of diffuse radiation that the surface will receive will be even less).
Hope that I've been clearer and sorry if you already have answered my question, but I'm not understanding the results. (i'm not a GH pro-user but I'm quite familiar with analysis and these stuff)
Thank you again
filippo
…
plication to Rhino.Exe.
3. Press Start.
4. Rhino is opening and I open grasshopper.
5. I add native grasshopper c# component and reference .dll
6. I have an access to static variable.
then what I want to do but I can't:
7. I stop the debugger in visual studio and add one more variable and expect that the library would be updated as is when I compile gh components.
8. But when I press continue and the .dll file is not updated and I do not see any additional variables declared. First I thought ok, maybe it is not visible, but I typed a correct name, but the message says that my dll does not contain this type.
9. Then I tried to reference the .dll again, but nothing happens, same old .dll is referenced.
10. When I close and open rhino it is updated. The whole closing and opening operation is a bit disturbing and I would like to debug it via Visual Studio.
Do you know what I doing wrong?
Is it working like so, because .dll is loaded to memory and not referenced from Hard Drive?…
and maybe the last 10 or so that I have created
1b. I also like the idea of shades of color and some preset color swatch libraries like Rhino has or being able to load our own.
2. I mostly use the color picker for setting the color of groups to organise files. Again here swatches would be so great, because I hate having to always eyeball it to get the same color or set it as default just to create several groups with the same color.
2b. Related to that is that please please pleeeaase let us edit more than 1 group at a time. Why cant I select several groups and set a color at once? Actually all group functionality should work with several groups and not just the one I right-click over. Using the Edit > Ungroup when having multiple groups inside a larger group selected also doesnt work and creates some sort of visual bug - I just noticed it now, will post separately.
3. The color picker should also pick transparency from other groups and not the actual on-screen pixel color, so that I can use the color picker to recreate the color of another group. Right now this isnt possible as groups are by default somewhat transparent, so if I pick a color it always comes out several shades darker.
Thanks for considering and keep up the amazing work!…
row out there.
I know that with preview geometry there is no rhino geometry to actually click on, but for example, if a GH point parameter holding 10 points was selected in GH, and then you clicked on or near one of those points in rhino, is it possible to at least return the index of the point closest to the location of the click? I'm not sure about how depth plays into that, but it seems at least possible.
So in that case, I was wondering if it might be possible to do something like:
1. Select a component in GH representing a list of objects
2. go into rhino and click an object (while holding another key, ctrl or whatever)
3. Grasshopper would then place a "click-cull" component just downstream of the parameter component, connected to the parameter component, with the index(es) of the clicked objects automatically entered in the "index" input of the "click-cull" component.
Or:
You could just have a "record click indexes" component that keeps track of the indexes of objects near rhino clicks within a list of selected objects in GH. Then you could take care of the culling yourself.
So ultimately you would have a method of isolating objects from a list much more intuitively
Would something like this be technically feasible?
Thanks,
Brian…
uts.
If I change the number of polygon sides to 8 the result looks like this:
Note that there are no missing rows with 8 sides. I've tried all the numbers from 3 to 12 and in general an even-number of sides results in no missing rows, but an odd number of sides has a missing row. And for # sides 10 - 12 there are 2 missing rows.
I tried all the options for the Offset object's Corners variable which is use to make the solid outside wall, but this has no effect. I also tried rotating the cutouts a little and a lot, changing their size, height, etc., but this had no effect either. So I'm stuck on how to eliminate the missing row of cutouts.
I realize this is a more or less cosmetic problem (no one will see the bottom of the printed part unless they pick it up), but I'd like to get it fixed before I publish the final design. The attached GH file has all the components used to make these images.
…
Added by Birk Binnard at 11:58am on November 28, 2016
the basics of grasshopper and wanted to inquire about the most effective way in learning this tool. I have put it off for some time due to exams and just the fear of "the unknown" that is grasshopper. I do have some questions which may be somewhat naive in nature, so please excuse me.
1) Do I need to know how to code to better learn grasshopper. Would learning the fundamentals in coding help?
2) Besides the learn tab above, are there any other sources/books that you guys think would really help beginners?
3) How often do people come up with definitions? Is this something new you do for each project or do you have one definition that you customize each time? Do most of you end up with huge definition libraries that you later apply to different project?
4) Can grasshopper be used for estimating/takeoff purposes? More "real world" applications.
My main objective here is to learn this as a hobby and use it to build furniture for myself (mainly out of wood/steel), but would love to learn it for everyday application, or even just to make cool forms. I am based in the LA area, so if you feel the need to PM to say hello, please feel free. Thanks for all your help and support. …
hape files. They need to be either points, polylines, polygones, so one geometry type.
To fix this I saved your shape file in QGIS as polygon type.
You can download it below, along with .gh example file:https://www.dropbox.com/s/5bi3q8n77nxvxov/3D_LoD2_33416_5622_2_sn_QGIS.zip?dl=0https://www.dropbox.com/s/qy4fo6mgkbkcd9d/Geising_shp.gh?dl=0
Or for future cases, when you have such an issue, you can correct it yourself:
1) Download the latest QGIS.2) Install and open QGIS.choose:3) Project->New4) Layer->Add Layer->Add Vector Layer5) Then under 'Vector Dataset', choose the .shp file and click on 'Add'.6) If asked to choose the geometry type, choose 'polygon' for example.7) Layer->Save as8) Define the 'File name' box, and change the 'CRS' value to 'Default CRS: EPSG:4325 - WGS84'.9) Click on 'Ok' to save a new shapefile.10) Load that newly saved shapefile into Gismo with the 'Read SHP' component.…
Added by djordje to Gismo at 10:10am on September 23, 2021