ntains only 1 item. So there is no 3 and 9 in this branch. It stems from the circle and the points having different path structures at the input to the move component circled in red.
With regard to the pipe split:
You have chosen to cap the pipe with rounded ends thus making a Closed BRep (Polysurface) so the best way to trim it is to extrude the splitting surface up into a closed Brep and do a Solid Trim.
Alternatively if it was just a single surface (no caps) you could use the Surface Split component to trim it like the image below.
Note that you need to check your data structures further upstream as you are getting duplications or null values.
…
ff and talk about another "more obvious" case: here's a visual example that may shed some light on that "interactive" BIG thingy.
1. We have a flat mesh. "Size" of mesh faces is due to a freaky thing known as MeshMachine.
2. A Physics Engine (Kangaroo 1/2) is used in order to "inflate" upwards the mesh yielding a "vault" type of topology. Either via components (K1) or straight via C# code (K2). Not a big deal at all: even a kid can do it.
3. "Inflation" without anchors ("fixed" mesh vertices == steady stuff) is kinda a 3rd marriage (avoid: better safe than sorry).
4. 1M Question: by what means can you explicitly define what vertices (on a per vertex basis) to use as anchors?
Answers to: The Lord, District 9, North Pole…
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…
nderstand each other quite well.
I will pick one piece of the PVsurface at the bottom row:
So the label "1" represents the PVsurface for which the shading diagram will be created.
Label "2" is the back facade (made of glass or opaque elements, does not matter).Label "3" represents the row of PVsurfaces above.
Now take a look at how the shading diagram would look like for the mentioned PVsurface. I made some of its parts a bit incorrect on purpose, so that I could clearly the differences a bit easier:
Label "1" would be first type of self-shading. It's the shading which prevents the PVsurface to "see" anything behind its back.Label "2" would be shading from the facade wall to which the PV surfaces are attached to. I deliberately colored it blue, to distinguish it from other two types of the shading. Otherwise it would look black.Label "3" is the second type of self-shading: the shading from the above row of PV surfaces.In literature, you won't find the terms: first and second type of self-shading. I invented them.To my knowledge, when self-shading is mention, this will probably be related with label "3" (second type of self-shading). It's the shading from the adjacent rows of PV modules in front, or like in this case above.So when I said:
You do not have to supply the surfaces additionally to the context_ input. The component will "under the hood" add them to the context_ input to account for self shading. Last year this hasn't been the case, but after the suggestion by Chris Mackey, I changed this feature.
This was related to the first type of self shading (label "1").
And when I said:
However, as we are using the PV SWH System size component, there will be no self-shading. The PV SWH System size component positions the PV rows in such a way, that no self shading will appear for the given minimalSpacingPeriod_ criteria.
This was related to the second type of self shading (label "3").
I should also mention that I made the upper photo a bit incorrect. If you would do the shading analysis, the label "3" would be almost non-existent. Here is how the shading diagram would actually look like:
As mentioned this is because PV SWH System size component will position each PVsurface row in such a way, so that there would be no second type of self shading for the chosen minimalSpacingPeriod_ criteria. In our case, as the minimalSpacingPeriod_ criteria we chose the summer solstice in the Northern Hemisphere from 10 to 14 hours. We should have taken from 9 to 15, but we took from 10 to 14 to as on option of lowering the distance between the PV rows.This means that there will be no second type self-shading all year round from 10 to 14 hours.
Let me know if all of this helps in any way.…
s para acercarse al diseño paramétrico.
El curso esta dirigido a arquitectos diseñadores e ingenieros de diseño que pretendan implementar las técnicas del modelado por parámetros dentro de sus herramientas de proyectación.
La duración de dicho curso es de 20 horas, repartidas en 6 sesiones los días lunes y miércoles de 5pm a 8:20pm, en el espacio cultural calle nueve (calle 9 # 43b-75 abajo del parque del Poblado. https://www.facebook.com/calle.nueve). El curso dará inicio el día lunes 22 de Agosto de 2011. El máximo de inscritos por curso es de 15 personas para garantizar la calidad de la enseñanza.
Este curso estará dictado por los arquitectos Ana Maria Bustamante Y David Vanegas arquitectos de la oficina de arquitectura interior137 (www.interior137.blogspot.com) que cuentan con más de dos años de experiencia en el manejo de GRASSHOPPER, y tienen una trayectoria reconocida como docentes en la Facultad de Arquitectura de la U.P.B.
Para participar en el taller los estudiantes deberán tener un computador portátil para su uso personal, durante todo el curso, además deben tener instalado el software Rhino versión 4.0 con la actualización SR9, y un conocimiento mínimo del modelado y la interfaz de este software.
Contenidos:
Sesión 1: * Introducción al modelado por parámetros y al diseño mediante algoritmos.
* Grasshopper: datos + acciones. Interface.
Sesión 2: * Datos fijos, datos variables: Parámetros.
* Puntos, Curvas parametrizables.
* Transformaciones: Mover, Rotar.
Sesión 3: * Datos múltiples (listas): Series. Rangos.
* Funciones de 1 y 2 variables.
Sesión 4: * Gestiones de datos en listas: seleccionar items, ordenarlos, desordenarlos, eliminarlos.
Sesión 5: * Atractores.
Sesión 6: * Superficies: creación de superficies, panelizaciones.
Informes e inscripciones:
Para inscribirse en el curso deberá reservar su cupo abonando el costo total del curso al menos hasta el miércoles 17 de Agosto. Este valor se devolverá totalmente únicamente en caso de cancelación del curso.
Para mayor información, póngase en contacto a través del correo electrónico interior137@gmail.com asunto: CURSO GH…
ce attractors
3- Relation between mathematics and Form
4- Network surface and Paneling
5- Fabrication methods (slice3d, nesting, ...)
6- Structure and Architecture (Millipede)
7-Energy and form
8- Islamic patterns
9- Physics with kangaroo
…
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.…
ist.
In other words, I'm looking for the GH equivalent of
Dim x As New List(Of List(Of List(Of Double)))
For example, I might have an outer list of 10 items each containing 20 lists with 30 items inside each 2nd tier list.
Say the outgoing gh_Structure is:
Dim outgoing_Struc as new gh_structure(of gh_number)
I can't seem to figure out how I might use the "append" method to GH_Structure to insert items to specific paths to create a list of a list.
The additional complexity is that I want to customize the indices of the outgoing list. Instead of the outer most list running straight from 0 to 9, I might want to have its indices non-sequential as {0}, {2}, {5}, {11} for example. This helps in using the "Tree Item" component downstream as these specific non-sequential indices refer to something specific upstream.
For example, with custom indices, I can pull a specific sublist by using index {11;3} which may not exists if the indices ran sequentially.
I guess the more general questions is whether anybody has pointers on creating nested trees in a custom component with specific indices? It appears that GH_Path has a "DebuggerDisplay" property which masks the internal continuously running index but this is a read only property.
Any pointers would be helpful
Thanks.…
Added by kermin chok at 1:37am on December 10, 2013
ield I had to use some different jumper settings as if I wanted to use the conceptinetics DMX library.
To send a chanel and a value I had to send a string from grasshopper like 001c255w to send the highest DMX value to chanel 1. See description in my code below:
/*jumper setup for Conceptinetics DMX shield:1st jumper to the right: "EN_"2nd jumper to the right: "DE"3rd jumper to the left: "TX-io"4th jumper to the left: "RX-io"
this jumper setup allows the shield to do the following actions without having to change any jumper:- transfer this arduino sketch to the arduino board- receive data from the serial port (grasshopper)- send data to a DMX device
<number>c : Select DMX channel<number>v : Set DMX channel to new value
These can be combined:001c255w002c0w003c0w --> Set channel 1 to value 255 and channel 2 and 3 to value 0.it is important that the channels are being addressed with 3 digits (001c instead of 1c)
http://dmxshield.blogspot.de/ http://playground.arduino.cc/Learning/DMX http://code.google.com/p/tinkerit/wiki/SerialToDmx http://groups.google.com/group/dmxsimple */
#include <DmxSimple.h>
void setup() { Serial.begin(9600); Serial.println("SerialToDmx ready"); Serial.println(); digitalWrite (2, HIGH);}int value = 0;int channel;void loop() { int c; while(!Serial.available()); c = Serial.read(); if ((c>='0') && (c<='9')) { value = 10*value + c - '0'; } else { if (c=='c') channel = value; else if (c=='w') { DmxSimple.write(channel, value); } value = 0; }}
…