e design intent, but this is what Inventor is good at. The way it packages bits of 'scripted' components into 'little models' that can be stored and re-assembled is central to MCAD working. The big speed/usability advantage for the user that apps like Inventor provide is: All the defining, handling, assembling/gluing to the adjacent components is done as part of its 'main loop' with all the hooks that can cater to user interaction, ie traditional modeling. I guess one example of this is how Revit handles the placing of Adptive Components. AC's (and GC's GFT's) is pretty much a copy of Catia PowerCopies (which are probably a copy of something else). When placed, the AC's input points are transferred one by one to the cursor for the user to interactively place them. When copied, it tries to keep the same inputs, while changing its position/parameters. This saves a lot of time/nerves.
Catia, OTOH, is still thinking in terms of scripting and looks for matching property names, or uses a script to match strings, that nearly match. Sure, sometimes, this is unavoidable, but I think that there is a lot of room for incorporating a more traditional 'event-based' interface or 'wrapper' around the scripted components.So much is scripted in GH, maybe it should also be possible to script/define/constrain/assist the placement/gluing of the results? An example of this is how Modo's Toolpipe works. The Toolpipe is a simple tool to record the active selection, snap/alignment/working plane, tool settings for re-use. I could see the user benefitting if the GH component was aware of the app's 'state' when placing/assembling components.
Also, a lot of simple things could be 'modeled' first and translated into scripted form if GH could read the active workplane, snap settings etc. Draw first, convert to hand-scripted script later?Columns: Looking at your description, the vertical elements were modeled in Rhino, and referenced in GH? 5hrs to get some points on the lines? And using Excel as the design table? I think this could be 'drawn' and constrained in Inventor in a lot less time. I know the GH model would have a lot of flexibility, but in this case, what can you do with it that wasn't provided by an Inventor model? The other thing that MCAD apps like Inventor have, is the 'structured' interface that offers up all that setting out information like the coordinate systems, work planes, parameters etc in a concise fashion in the 'history tree'. This will translate into user speed. GH's canvas is a bit more freeform. I suppose the info is all there and linked, so a bit of re-jigging is easy. Also, see how T-Flex can even embed sliders and other parameter input boxes into the model itself. Pretty handy/fast to understand, which also means more speed.Would love to understand what you did by sketching.Starting point: I think we are talking across purposes. AFAIK, the solving sequence of GH's scripted components is fixed. It won't do circular dependencies... without a fight. The inter-component dependencies not 'managed' like constraints solvers do for MCAD apps.
With a manager, If one of the beams is connected to the column, changes in either component would trigger changes in the other to preserve the connection, regardless of the creation history. In GH, the dependencies are fixed, and the connection points would probably need to be defined independently, and placed 'upstream' of both elements. This makes editing laborious... but DAG processing is a lot quicker than constraints solving. Switching direction seems to be possible in the animation world. Maya etc have IK/FK switching, which seems to be able to reverse the solving direction on demand. Not sure how or whether the rig is scripted.…
. From the Thermal Comfort Indices component, Comfort Index 11 (TCI-11):MRT = f(Ta, Tground, Rprim, e)
with:- Ta = DryBulbTemperature coming from ImportEPW component- Tground = f(Ta, N) where N comes from totalSkyCover input. Tground influences the long-wave radiation emitted by the ground in the MRT calculation.- Rprim defined as solar radiation absorbed by nude man = f(Kglob, hS1, ac)- ac is the clothingAlbedo in % (bodyCharacteristics input)- I can't find any definition in the code of Kglob and hS1. Could you tell me please what are those values referencered to? --> probably the globalHorizontalRadiation but how?- e = vapour pressure calculated from Ta and Relative Humidity input
Do you agree that in this case the MRT does not depend on these inputs: location, meanRadiantTemperature, dewPointTemperature and wind speed?It does not depend neither on the other bodyCharacteristics like bodyPosture, age, sex, met, activityDuration...?
MRT calculated by the TCI-11 method is the mean radiant temperature of a vector pointing vertically with a sky view factor of 100%?For ParisOrly epw,
2. From the SolarAdjustedTemperature component (that seems to be more used for the UTCI calculation examples on Hydra compared to TCI-11).
In contrast to the TCI-11, this component distinguishes diffuse and direct radiation and contextualizes the calculation thanks to _ContextShading input, right? It can also be applied to a mannequin thanks to the CumSkyMatrix and thus evaluate the dishomogeneity of radiation exposure.This component seems not to consider the influence of vapour pressure on the result --> is it then more precise to put the MRT output (from the TCI) as an input of meanRadTemperature for SolarAdjustedTemperature?The default groundReflectivity is set to 0.25 --> is GroundReflectivity taken into account in the Tground or MRT calculation in the TCI component? If yes, what is the hypothesised groundReflectivity?The default clothing albedo of 37% (TCI-11 bodyCharacteristics) corresponds to Clothing Absorptivity of 63%?
If the CumSkyMatrix input is not supplied, I get 9 results for the mannequin --> where are those points/results coming from?
If the CumSkyMatrix input is supplied,I suppose the calculation of the 482 results correspond to a calculation method similar to the radiation analysis component that is averaged over the analysis period. Right?But I don't understand why the mannequin is composed of 481 faces and meshFaceResult gives 482 results.
Finally, what is the link between the MESH results, the solarAdjustedMRT and the Effective Radiant field ? Is there a paper to have a detailed explanation of the method?
3. Here are some results for the ParisOrly energyplus weather data. You can find here attached the grasshopper definition.There is no shading in this simulation and the result coming from the ThermalComfort indices for MRT is very different compared to the solar adjusted MRT.Why such a big difference and which of the result should be plugged into the UTCI calculation component?
Results for ParisOrly.epwM,D,H:1,1,12
Ta : 6.5°Crh: 100%globalHorizontalRadiation: 54 Wh/m2totalSkyCover: 10MRT (TCI-11): 1.2°C
_CumSkyMtxOrDirNormRad = directNormalRadiation : 0 Wh/m2diffuseHorizontalRad: 54 Wh/m2_meanRadTemp = TasolarAdjustedMRT: 10.64°CMRTDelta: 4.14°C
_CumSkyMtxOrDirNormRad = CumulativeSkyMtxdiffuseHorizontalRad: 54 Wh/m2_meanRadTemp = TasolarAdjustedMRT: 10.47°CMRTDelta: 3.97°C
_CumSkyMtxOrDirNormRad = CumulativeSkyMtxdiffuseHorizontalRad: 54 Wh/m2_meanRadTemp = MRT (TCI-11)solarAdjustedMRT: 5.17°CMRTDelta: 3.97°C
Thanks a lot for your helpRegards,
Aymeric
…
robablemente las uniones son forzadas/rotadas levemente para que calcen.
Probablemente se puede variar el angulo de 90° entre cada pieza a un angulo que permita crear el octagono perfecto, pero habría dos posibilidades de giro entre cada pieza.
Tal vez el problema hay que repensarlo desde el octagono/poliedro que forman los triangulos en el modelo y luego generar los triangulos.
Bueno aca mi definicion y algunos comentarios:
- Hoopsnake pide una condicion inicial que solo la utiliza en la primera iteracion (input S).
- Luego hay que definir el algoritmo reiterativo/recursivo que es toda la parte de abajo. Como input se utiliza el output S de hoopsnake (en la primera iteracion es la misma informacion que ingresaste en S).
El resultado de este algoritmo/proceso vuelve a ingresar a hoopsnake en el input D para una nueva iteración.
- El output H es el historial de toda la geometria/datos procesados en las iteraciones.
Ahora te explico el algoritmo:
- Se toma el triangulo y se sacan los puntos en las esquinas.
- Se revisa si los puntos estan contenidos en otro triangulo existente y hago cull para dejar los libres (ocupo el output H del hoopsnake para ver los triangulos de las iteraciones anteriores). En la primera iteracion hago un bypass para dejar todos los puntos iniciales libres (ya que no hay historial en el hoopsnake).
- La parte de abajo es para elegir una de las dos opciones max disponibles (tu comentaste arriba que habia tres opciones... en realidad son tres opciones en la inicial, luego son solo dos opciones. No se que va a pasar si se se completa el octagono, teoricamente habría solo 1 opcion disponible, pero no pude reproducirlo por el problema geometrico).
A modo de ejemplo, en la imagen le deje todas las opciones disponibles y conecte directamente (dos para el triangulo) para tratar de generar los octagonos.
- La parte final es simple, desde el centro del triangulo se genera una linea hacia las opciones disponibles para generar un plano perpendicular para la simetria y luego se rota en 90° (que creo debería ser otro angulo). Puedes mover el slider del plano perpendicular para generar la interseccion deseada en los triangulos (0.5 para interseccion completa).
Como ya te indicaron, yo tampoco hice el tema de las areas.. pero deberia ser simple en mi definición: Calculas el area del output H (triangulos), aplicas flatten, mass addition y si el numero resultante es mayor al area de la placa que quieres, debería generar un valor falso que va en el input B de hoopsnake.
Sorry que no haya ocupado tu definicion, pero ocupe un grasshopper antiguo y ademas ya había solucionado un problema similar con un alumno el semestre pasado, asi que realicé lo que me acordaba :D
Saludos y suerte!
…
Salimzadeh
Assistant: Saeede Kalantari a Fabrication Project for “Structural Systems” BA Course;
Participants: Maryam Ahmadi, Amir Ansaripour, Kimia Bagheri, Mohammad Hassan Habibi, Mohammad Mehdi Zamani, Sam Sabzevari, Zeynab Seyed Zehtab, Mohammad Mehdi Shahroudi, Niloofar Taheri, Masoumeh Abedini, Pedram Feyzi, Asma Karamouz, Kimia Karbalayi, Hamed Kamalzadeh, Fateme Kianinejhad, Maryam Mohammaddoust, Faeze Motamedian, Romina Mehrbod, Sara Naderi, Yasaman Nejati, Kimia Nourinejhad, Morteza Vaziri, Mehragin Baghi, Sana Motallem, Helpers: Milad Amiri, Soroush Raesi, Mahla Behrouz, Alireza Sheykhlar, Shadi Khaleghi, Mohaddese Taheri, Alireza Mohammadi, Mehrnoush Kia
Photography: Sara Ahmadi, Hasan Habibi
Video production: Shayan Khalilbeigi
Special Thanks To Dr. K. Taghizadeh, Dr. H. Mazaherian, Dr. Y. Eslami and Mr.Aliari
With Support Of: Center Of Excellency In Architecture Technology – CEAT - , Collage of Fine Arts University of #Tehran, ‘Art And 4th Dimension’ Symposium, Iran #Fablab and #Fologram
Rhino/Grasshopper and C# Definitions of form-Finding and Member-generation :
http://bit.ly/2RUKc5i…
nputs to run (please refer to the image)
Currently, here is how I set the data:
protected override void RegisterInputParams(GH_Component.GH_InputParamManager pManager) { //Create default size
double defaultBaySize = 0; pManager.AddTextParameter("LotLib", "Llib", "Lot Library", GH_ParamAccess.tree); pManager.AddCurveParameter("BoundaryCrv", "BC", "Boundary Input", GH_ParamAccess.list); pManager.AddIntegerParameter("Direction", "D", "Direction of gridLines", GH_ParamAccess.item, 0); pManager.AddNumberParameter("CCsize", "S", "Distance from column to column", GH_ParamAccess.item, defaultBaySize); pManager.AddCurveParameter("GridCrv", "GC", "Take in curves input for gridlines", GH_ParamAccess.list);
}
protected override void SolveInstance(IGH_DataAccess DA) {/* Setup */ GH_Structure<GH_String> LotLib = new GH_Structure<GH_String>(); DA.GetDataTree(0, out LotLib); List<Curve> BoundaryCrv = new List<Curve>(); if(!DA.GetDataList(1, BoundaryCrv)) { return; } int Direction = 0; DA.GetData(2, ref Direction); double CCsize = 0; DA.GetData(3, ref CCsize);
List<Curve> GridCrvs = new List<Curve>(); DA.GetDataList(4, GridCrvs); if (!DA.GetDataList(4, GridCrvs)) { return; }}
Is there a way can set data in the way if the component does not receive inputs for BoundaryCrv but only GridCrvs, the BoundaryCrv List will empty.
Thank you very much …
t, you can see 6 (+) signs with what you can add (A,B,C,P,Q,R).
Let's say you add A = 90 and B = 50.
Now you can't add the third angle (cause its 180-(50+90) = C output).
What you can add at the moment is P,Q,R.
You choose to add P = 10.
There is no more a possibility to add Q and R.
All component outputs now give us the data.
2. Triangle with P,Q,R
When you zoom the component, you can see 6 (+) signs with what you can add (A,B,C,P,Q,R).
Let's say you add P = 15, Q = 20.
Now if you add R, the component's outputs all the angles and edge lengths.
If R > P+Q then component throws warning. (> or >= ?)
You cannot add A,B or C anymone.
3.Triangle with P,Q and C
When you zoom the component, you can see 6 (+) signs with what you can add (A,B,C,P,Q,R).
Let's say you add P = 15, Q = 20.
Now if you add C (angle), the component's outputs all the angles and edge lengths.
You cannot add A,B or R anymone.
To make it all easier, disable the possibility to internalize the data.
Tolerance issue... Maybe round the angles always to floor , with 0.1 precision ?
…
We are posting a few experiments, created with the work-in-progress RABBIT 0.2. We plan to release it within a week or two…
RABBIT 0.2 has a lot of new features:…
Added by Morphocode at 8:42am on February 23, 2010
being driven by the wii nunchuck... But, here's my issue. I tried it first by having the output from the listener be a 6-digit number... so, I'm using the (CInt(Val(StoredValue))) command and it's writing out 181130... and I can easily split it up selecting the Left(x,3) or Right(x,3)... I first rant that number through a Format("{0:000000}",x) so that even if one of the accx or accy numbers were a 2-digit number (so my overall number would only have 5-digits)... with this Format function... I'm always assured a 6-digit number. And this method works... except...
If the first group of numbers coming in only has 2-digits... So, lets say the accelerometer read out of the first one (accx) is 89. Let's say the accy read out is 119. So, when I run this through the Format function to make it have at least 6 digits, my number now reads 011989. So, if I were to take the first three numbers on the right, my read out would be 989... which is much higher than my expected (60-180 range that is really coming over the Serial Port)... So, I'm back to where I started... in that I need to figure out a better way to split up the data.
Which brings me to your method. I tried it as well... in fact, I added a comma in the serial readout, so the string coming out of the listener reads 89,119. So, I can use your trick to go look for a delimeter and then read to the left and right a certain number of digits... The problem I still have is that the data going into the function is a string, and thus even if I split the 3 digits to the right of the comma out (so, my output says 119)... it's still a string, and my number parameter is still red. In your picture above, was your original 181 130 a number or a string? My guess is that it was understood as a number, because your number parameters at the end are accepting the value. But, in my case... I'm still stuck with the inability to convert a string to a number... Does this make sense? And are their any other workarounds?…
Added by Andy Payne at 9:42am on September 3, 2009