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.…
reaky thing consisting from triangulated "modules" (i.e an assembly out of this, this and that) where the exterior edges ARE always under tension (= SS 304/316 cables OR nylon) and the interior ones MAY be under compression ( = steel, aluminum, wood, carbon) OR ... some of them ...may be under tension. Bastardized T trusses deviate a bit from theory ... but who cares? (not me anyway). T trusses have many variants (but as the greatest ever said: Less is More).
2. Large scale T for AEC is the art of pointless since it costs around the GNP of Nigeria. Here's some indicative components from a module of a multi adjustable TX system costing (the module) ~ the price of my Panigale (Google that):
The above is mailed to a friend who has MIT (yes, that MIT: the top dog) on sight ... therefor he needs some appropriate "credentials", he he.
3. The distance that separates the above with the demo TDT node provided is around 666.666 miles - but we don't care: we are after Art not some testimony to vanity.
4. On purpose I've used a smallish ring to give you a clear indication upon the constrain numero uno in truss design: CLASH matters.
5. You'll need:
(a) A decision related with the tensioners (classic Norseman + SS cables or nylon machined thingies?).
(b) A machinist who can do elementary stuff (like the adapters) and can weld this to that (the "ring" for instance). His abilities must be 1 in a scale of 100. If the fella has a computer (not a CRAY) and he knows what 3dPDF is (hmm) ... well ... use that way to communicate with him PRIOR designing anything: He must agree on the parts BEFORE the whole is attempted (as a design in GH or in some other app).
(c) A carpenter with a wood lathe for the obvious. BTW: BEFORE doing any TDT attempt > ask the carpenter about the available wood strut sizes. Against popular belief DO NOT varnish the wood (use exterior alkyd/oil stains from some top maker like the notorious US company PPG).
http://www.ppgpaints.com/products/paints-stains-data-sheets
(d) Good quality cigars (and espresso) plus some classic music (ZZTop, PFloyd, Cure, Stones, U2 etc etc) during the assembly.
(e) Faith to the Dark Side (see my avatar).
May the Force (the dark option) be with you.…
llet Distance]
[Slider=0..1..10]-->[D][Fillet Distance]
[Slider=1..5..20]-->[F][Unit Z]
[Fillet Distance][C]-->[B][Extrude]
[Unit Z][V]-->[D][Extrude]
This still leaves the problem of having more than one of a single component on the canvas. Referral can be made unambiguous by simply picking the most recent component with the same name. But how do you indicate you want a second Polyline component?
Possible solutions:
Separators in the text:[Point=SetMultiplePoints]-->[V][Polyline]----------------------------------[Point=SetMultiplePoints]-->[V][Polyline]
Keywords or symbols to indicate the creation of a new component rather than the re-use of an existing one:new [Point=SetMultiplePoints]--> new [V][Polyline]new [Point=SetMultiplePoints]--> new [V][Polyline]
(2) is a lot more flexible and (1) may not work at all as it will prevent any reuse above and below the separator.
--
David Rutten
david@mcneel.com…
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.…
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 …