eas and references:
1. The Geometry of the Envoirnment, Lionel March and Philip Steadman, Chapeter 10 - 11
2. There is a good overview on Floorplan generation methodes under this link:
http://entwurfsforschung.de/layout/
3. Have a look @Space Syntax grasshopper plugin
4. The random approch / Infinit monkey theorem
https://vimeo.com/37186522
This has its limits 100+ rooms will not realy work...
5. A more obscure math approch -> spectral Graph matching
https://vimeo.com/136231619
And the paper to read:
http://www.sss10.bartlett.ucl.ac.uk/wp-content/uploads/2015/07/SSS1...
6. Shape grammers
https://en.wikipedia.org/wiki/Shape_grammar
enjoy....
…
r-workshop programme will focus on the design and 1:1 fabrication of an interactive pavilion for the 2012 International Festival of Electronic Language (FILE). Located on Avenida Paulista, the pavilion will react to light sensors and human activity, so as to transform and create a range of different lighting and spatial effects, triggering further movement and producing an interactive feedback loop of behaviour and response. To accommodate this responsiveness, the design should be developed using recursive scripting, associative modelling and digital fabrication.
Each workshop will focus on a different phase of the pavilion’s design and construction. Instruction will be led by Rob Stuart-Smith of Kokuggia and Tristan Simmonds of Simmonds Studio, with Lawrence Friesen of Generative Geometry, Anne Save de Beaurecueil and Franklin Lee of SUBdV, together withand other AA tutors, as well as local structural engineers and set-designers. Each workshop will offer introductory instruction in computational design - Grasshopper, (GECO, Firefly) and Arduino, and digital fabrication, while advanced instruction will be offered to participants undertaking multiple workshops.
Workshop 1 will develop design variations in small models, as well as material and structural scale modeling, testing and initial 1:1 prototyping, following computational and digital fabrication instruction. Workshop 2 will produce 1:1 prototyping. Following computational and digital fabrication instruction, it will explore the mechanics and electronics of the light-sensors and motors that generate the transformations of the pavilion. Workshop 3 will fabricate the final elements, working directly with manufacturers, testing partial assemblies. Advanced development of all circuits and Arduino scripts will take place following computational and digital fabrication instruction. Workshop 4 will focus on the final assemblage of the pavilion on site.
www.aaschool.ac.uk/saopaulo.
OTHER WORKSHOPS
Workshop 2: 4–13 January 2012
Workshop 3: 3–12 April 2012
Workshop 4: 3–12 July 2012
…
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…
d Y it will create points by matching each index of each list in order. For example index[0] of list X with index[0] of list Y , etc...
If the lists are are of uneven length the component will match the last index of the shortest list with the remaining indices of the longest list. For example list X has 10 items and list Y has 12 items. The matching logic would be list X [9] list Y [10] and list X [9] list Y [11]
Cheers
Nicholas…
keep the same number of branches.
The way I'm doing it now has the inconvenience of only working for this particular number of branches, and I would like a more general way. Do I need a script or can I solve it with components, path mapper, etc?
-Also, and this one is probably simple but I can't seem to figure it out: I have a tree structure as in fig B, and I want to pick out certain series of branches from it, for example {1;0} to {2;11}. (PathGen seems to only go from {0;0} to a specified item?) So I want to be able to plug in a choice of numbers, and dispatch those branches into separate trees/cull them somehow. What am I missing? In general, I've failed to find a way to pick out all of the "uppermost" level of branches, eg {3;x}.
Any help greatly appreciated!…
s the "Surface Populating" definition: I manage to populate my geometry over the surface, but after I bake it, I have to delete the boxes that define my components limits as well! Is there any way of populating and baking only the chosen component, without having to delete the boxes afterwards?
Secondly:
Basically: I am trying to cover a surface with two types of components [ an open one and a closed one] , which will be proliferated over my tubular surface according to the main sunlight direction.
1. I introduce the surface component.
2. I use "Divide Interval2" in order to have division into U and V.
3. i generate the target boxes [ "surfaceBox"] .
4. I use "Isotrim" ( same intervals) and "BRepArea" to find centroid of each area.
5. My "Curve" component introduces sun angle, with its "End Points".
6. I use "Vector 2Pt" to specify sun-light direction.
7. I want to measure the angle between sun-light and the surface normals, at the position of each component; after generating the centre points, I need the normals of each centre point to get the surface's points' UV, and "Evaluate" the srf at points.
8."Angle" and "Vector" components: I use them in order to evaluate the angle between the sun direction and the srf.
9. I convert this angle to degree by using a "Function" [ to see if the angle is bigger from the max.angle or not...]
10. Function "x,y" gives me boolean data.
11. Data become "Dispatch"ed...
12. Two "Morph" components , each one linked to one part of the "Dispatch" data, generate "closed" and "open" components over the srf.
The result should have been different types of components, based on the surface's curvature, diraction and sun-light direction...
I do not understand where the mistake is in this definition...
Thx in advance1
Spyros K.…
to create building blocks in this grid. The problem I have is that my input list to cull pattern has 6 rows of 11 curves. And I have a cull pattern with 10 variations to select 2 of the 11 curves but I want to apply each pattern to each row. This sounds like a Cross Reference option on other components but this option is greyed out for Cull Pattern.
So instead the result I get is the first pattern is applied to the first row and the second to the second etc. until I run out of rows and then everything else is on the top row. see Image.
They only way I have found to get it to work is to split each row into it's own cull pattern component and apply the whole list of booleans to each row. But as I would like this definition to be adaptable allowing the user to specify number of rows and columns, there would be some limitation if copy/paste approach is the only option.
There is probably a better way of selecting these adjacent curves so I am open to all suggestions.
…
hem. Now I need to search through the original points that comprise the voronoi diagram and replace them with the new averaged points. I need to do this while still preserving the logic of the old data tree which is comprised of {i}j values. In other words each point is grouped into a vornoi cell so that the cells can be created with the polyline component
I believe I have a relatively simple solution, but need help create a python script that searches and replaces values within a data tree.See the psuedo code below:
Psuedo-Code:
For each item(i) in Data tree B (list of index values points to be replaced grouped into a data tree corresponding to the new point) find the corresponding integer in Data tree C (list of points grouped around {i;j} values)Then replace the integer in Data Tree C with the key value (the data tree path) that corresponds to the item from Data tree B that is replacing the item from Data tree CFor example:Data Tree B{14}(0)2(1)3(2)6(3)11(4)13(5)14Data Tree C{0;1}(0)2(1)3(2)6Output:Data Tree {0;1}(0){14}(1){14}(2){14}
List A - Single point (New Point) with Data Tree/Key value corresponding to group of points it will replace ( List B)
List B-list of index values of flattened voronoi point list with Data Tree/Key Value corresponding to List A - in other words these are all the points I need to replace with the point in List A
List C-list of index values of flattened voronoi point list with Data Tree/Key Value corresponding to {i}j values necessary to re-create voronoi cells with the polyline component
Once this is done I can use the Output and the new Points in List A to replace the set of old points in the original voronoi diagram with the new set up reduced points.
If there is another way to achieve the goal of eliminating small edges of a vorononi diagram, I'm open to suggestions.
…
view. So in the GH Definition i have only to estimate a center for always 4 holes. So i get 3 centers and they can be targets for the 3 details.
Sounds difficult but is not...look at the definition attached:
You have to find out what is best for your situation, this is just an example since i don't know what you're really doing.
As an extra tutorial i also added how to convert the text dots to 3d text, which you obtained from the counting. Could be useful for e.g. numbering the holes.
GH and 3dm files as well as screenshots are the attached zip file.
Cheers,
FF…
Added by Florian Frank at 9:47am on January 21, 2016