ve segments as seen in figure 1.
But as soon as I create more than one set of curves, the loft goes awry. I was able to make simple version of what I’m trying to in rhino as seen in figure 2, however I’d like to be able to quickly make changes in the rotation angle in grasshopper.
So far, it seems to work when I isolate one set of points form the curve segments – top and bottom. However, when I try to loft the entire series of points. I end up with a continuous loft, from the first point to the last point, as seen in figure 3.
Any help would be greatly appreciated, thank you in advance.
- David …
r reference, I uploaded a testfile with labels A to F that shows this issues.
When selecting some objects and pressing the middle mouse button, a button for clustering appears. The inputs and outputs of clusters created with this immense useful function cannot be tagged.
1.
Set up a cluster like in A with inputs/outputs, tag the inputs/outputs with double click, cluster it, the inputs of the clusters B are correctly labeled.
double-click the cluster to edit it, double-click the input to edit the label, edit, save-and-close cluster - the new label doesn't appear at the input. Maybe I'm doing something wrong?
2.
select the objects to be clustered like in C, middle-mouse-button, cluster selection, the result can be seen in D. Again, double-click the cluster to edit it, edit the labels - nothing happens.
3.
This has to do with the visibility of clustered components. E shows two clusters that cannot be displayed, no matter if they are set to visible or not (it's the same component imported from my library, copied, disentangled and made inside visible one time). I believe I created it like method C.
I tried different cases (that's why there are so many differently visible variations in the file), but cannot reproduce this error.
best regards, Laurenz…
s to load from file (from 0 to 1)
So this post is about masks.
Rhino Point Clouds can store information such as : location of a point, it's color and normal vector. It is common to store intensity values, but it is not supported in Rhino.
Mask characters :
x y z - location
u v w - normal
r g b - color
a - intensity
Let's say that your file is formatted such as :
10.000 ; 12.000 ; 20.053 ; 0.243
which means it stores location and intensity values.
A proper mask will inform Load Cloud component how to read those values
x;y;z;a
The first non-alphabetic character in the mask is automatically interpreted as the separator.
Same masks work with Save Cloud component. Note that it has D input which when set to True will make it surround all the values in double-quotes.
"10.000" ; "12.000" ; "20.053" ; "0.243"
Cloud Load doesn't care about those double-quotes, it just ignores them and proceeds to read the values without them.…
you may know, PCS (from now I will call polar coordinate system with PCS, and cartesian one with CCS) describes point position with 2 values (like x and y in CCS) which are r and theta(r,theta). r is for distance from PCS center, theta is angular dimension which is in 0 to 360 or 0 to 2*pi domain.
To hark back to David's guide line - here it is replaced with guide circle.
Why to sort points like this ? As usual, one image tells more...
Here is logic behind all this stuff :
Find an average point of all given points*
Search for furthest point from an average point*
Create a circle with center at average point and radius = distance from average point to furthest point*
*Steps 1-3 can be replaced with custom hand-made circle, I decided to automate it that way.
For each point find closest point on circle - this will be used for finding theta value
For each point find distance to average point - this is r value
To overcome problem with same theta (t) values (like same x values in CCS), instead of multiplying by 1000, we will use a new create set component. This component creates set of integers, each one representing one unique input value. So if points A, B, C, D, E are (r,theta) :
A (1, 30)
B (2, 30)
C (3, 30)
D (1, 45)
E (1, 60)
Then create set will output list of integers = 0,0,0,1,2 (same theta for A, B, C other theta for D and E). Now its getting really easy - remap r values to domain 0 to 0.5 (or any less then 1), and add integers from create set component to remapped r values.
7. So what we have now is list of floating point numbers : A=0, B=0.25, C=0.5, D=1, E=2
Profit of remapping is that r values will never affect integers representing theta values - and all the information is stored in one floating point number ! By sorting these values we will obtain proper order of points - to complete this, we need to sort points parallel with values.
What's really cool about polar sorting - there could be any amount of points, but polyline connecting all of them will never self-intersect. Probably there is some relation with 2d convex hull.…
.. then you put (or drill) rather "canonical" patterns that formulate the inner/outer skin (or both).
2. The above approach hits 3 walls: (a) very slow response (Rhino is a surface modeller) (b) booleans/fillets potential issues (Rhino is a surface modeller) (c) a potential aesthetic antithesis between the liberty of the "whole" VS the "strict" rules of the "details".
3. Since you opt to work with Rhino It could be worth considering playing his own game: deforming surfaces that is ... by working against control points or via the Morph methods. Then join them and get the decorative thingy as "solid".
Images below are from a C# that actually gets the control points of Surfaces in Lists and "deforms" them according a gazillion of options (a) via any "on-the-fly" defined pattern (Take or skip this control point: shift branches/items that is) (b) using any number of attractors in any push/pull mode (c) using chaotic vector values (d) using ... well too many ways to list them here.
Imagine what the Alien cuppa def does (modifies "diagonally" control points) ... multiplied by 1000.…
ure with the param viewer to build a matching search mask. seems to be working.
In the past when I solved my questions without any response I deleted the discussion. is that considered bad practice/ frustrating?
EDIT original question:
I’m having trouble rebuilding a path after flattening it.
I understand the idea of rebuilding a list after it has been flattened but I can’t seem to get that principle to work in a path situation.
I’m certain the solution will have something to do with culling index’s and using graft tree but I can’t seem to figure it out. This image should explain what I’m looking for.
I want the data stream on the right to look like the data stream on left.
There is one caveat, this example is based on edge data from a box so everything clumps neatly in groups of four, my real world data is not based on a box so the srfs could have any number of sides. So using the grouping function in path mapper does not seem viable to me.
Thank you
Don
EDIT UPDATE:
I have discovered the replace branch component but it wasn't the amazingly simple solution I was hoping for.
so in the top replacement component:
D a list of data I need restructured.
R a list of branch coordinates I need it to be restructured too.
that setup results in an error obviously by the picture. GRR
in the bottom replacement component I have the same streams only with list item components before the inputs. so I'm sending the same data lists only one index at a time. that works exactly how i need/dreamed it should but I need/dreamed of the entire list being restructured.
any ideas on how to get replacement branch to work on the lists? or at least how to replace the entire list?
…
n en el diseño y fabricación digital de formas complejas y euclidianas.
Tomando como plataforma Grasshopper con RHINO, se explora y optimiza el diseño y fabricación de topologías complejas bajo los entornos de "Grasshopper", "RhinoNest" y "RhinoCAM" así como la parte de renderizado tipo high-end con Brazil.
D-O-F De 8:00 AM a 12:00 PM y de 1:00 PM a 5:00 PM
Contenidos:
1. Modelado Avanzado y sus Tecnicas. Aplanado y Desarrollo de Superficies.Anidado y distribución Nesting.
2. Introducción al Diseño Paramétrico.Definiciones Avanzadas de Grasshopper,posibilidades y limitaciones. Ajustes de escala para impresión y corte.
3. Introducción a la Manufactura en CNC - RhinoCAM 2.0.
4. Guía Paso a Paso para la realización de un Renderizado usando Brazil 2.0. Presentación DIGITAL de proyectos.
Docentes:
Andrés González - CEO McNeel Miami
Ovidio Cardona - Especialista en RhinoCAM y Zebra
Juan David Moreno - Especialista en Rhino y Brazil
Inversión:
$650 000 (Incluye licencia Educativa y Certificación de McNeel)
$550 000 ( Incluye Certificación de McNeel)
Informes:
Bits LTDA Tel: 412 30 15
Laboratorio de Imagen Facultad de Arquitectura Tel: 430 94 32…
ices" which i found very intresting , I have your thesis and it will be the base of my futur work, I'm a graduate student in bioclimatic architecture and environment in Constantine -Algeria , I will prepare a thesis for my master degree in the theme of " parametric design, the dynamic envelope and intelligent façade" and really I need your help, if you can send me your work in grasshopper in(.ghx) mentioned in the "APPENDIX D SOLAR CONTROL VISUAL DEFINITION "(GRASSHOPPER),because i can't download it from the web site , I'm juste a beginner in grasshopper so I want to master the link between all the elements ,for this reason I would like to master your exemple in grasshopper as beginning , and I'll work with daylighting + thermal comfort in my thesis which is the continuity of your work, can you share your exemple with me please ? and why did you choose a 200 btu/ft² as a limits for direct normal irradiance , what is the formula ? I'm waiting for your response because it's so importante for my work , and i promise you , i will put your name in my references . thank you karla. the files needed are: the part which contains: 1-Solar Irradiance / TMY3 Excel Data (in grasshopper) 2-:Surface Geometry Analysis / Grid Pattern Selection (in grasshopper) 3-: Solar Profile Angles (in grasshopper)
4- Shading Geometry Profile Angles (in grasshopper) …
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 …