ncluded 3) using a freaky thing that "makes" Planes in order to do ramps (spot the Vodka option = Mobius + antigraviity OFF).
Don't touch the freaky things: for the moment just go and play with this palatable portion (GH components, nothing to fear he he):
depending on choice in gates: Paranoid (Mobius "shifted in Z")
sane (using corrected Planes):
not so sane:
What we have learned so far? Well ramps (and most of other things) ... it's about Planes (coordinate systems) you know.
Again: this is for fun/demo ONLY. I'll prepare a dedicated def for your case soon.
have fun, be brave
…
he past Architecture was the art of sketching: some "idea" with pencils/crayons + vellum paper (or with some computer) > then "others" trying to make this happen. This in general is known as top-to-bottom approach. Naive and dangerous (for the reputation/reception/acceptance of Architects/Architecture) to the max.
2. These days we work both ways: whilst some work on some "idea" (called it: "assembly") others (in sync mode) resolve the bits and nuts of that "idea" - up to 1:1 level of detail (called it "components"). This is the bottom-to-top approach. Make this your way: NEVER proceed in something whist's not EVERY bit of that something is well addressed (with at least 3-5 ways).
3. The emergence of parametric (GH, Generative Components, Dynamo) in AEC (an approach well known in MCAD word many years ago, mind) made things ... worst: the tremendous topology exploitation capabilities blinded people's mind and they are completely sucked up by the forest forgetting/by passing the critical fact that there's no forest without trees.
4. That's expected: is in the human nature to follow/admire the blink/glam and omit/skip the humble. It's the easy way you know, he he.
5. The tremendous growth of countries the likes of UAE/China/Russia made AEC things ... even worst: lot's of cash available > make us some encomium to Vanity, forget Modesty. You can replace "Vanity" with "New Frontiers" ... if you like fooling yourself.
Some Academics are not capable to understand all that: if they could they would potentially operate in the field (where the pink color is rarely used) and not in fishbowl(s). Some Academics believe that an "idea" is the 99% of the whole whilst actually is less than 1%. But on the other hand anyone can do Architecture (even Architects, he he).
That said (Vanity crisis) you want some other "component" options for this case of yours? (starting with "some" dollars more and ending with the mortgage the house/sell wife+kids option).
take care (and kill them all)…
something (C# or components) that does a planer periodic nurbs - any shape imaginable in fact (shown a humble "figure of 8").
2. Imagine a capability (C# only: sorry) to create a "guide" (indicative/intermediate) surface. Basically: patch the nurbs from step 1 against a variety of user controlled curves/points/cats/dogs/you name it.
3. Imagine doing this U/v quad mesh thingy (we can fill the "gaps" [C# only: sorry] with the base boundary easily - especially when triangulating the mesh - but better work as shown):
4. Imagine calling the cavalry (Kangaroo) and instructing to do ... things on that "normalized" mesh.
5. What things? Well ... like equalize edges, "inflate", planarize the quads (extra WOW stuff that one), pull it against the "guide" surface [from step 2] or some other weird ideas of mine.
this is what V2 does (WIP).
more soon
…
e "amusing") - but all the intelligence is lost + the assembly hierarchy is lost + my dog is MIA as well.
2. This relates ONLY with some members of a given XFrame (meaning that you need a zillion things [or some "abstract" ones] for a relatively "large" scale tensegrity truss).
Meaning: instance definitions ... or Armageddon.
Meaning: some "adjustments" in a given definition having in mind similar systems (Plan B: abandon ship).
3. The fact that the 4 (ex single "tube") members are NOT planar (while ones in the previous example) AND their angles are variable as well (blue in the previous example) makes things hideously complex: we need ways to achieve levels of freedom AND some rigidity: the other way is to machine custom MERO type of stuff (balls, that is) that could host the adapters (but this means 1 zillion DIFFERENT balls). So in this variant shown the angles are managed by a "fixing" ring and rigidity by double tube [MERO type] members. Cables shown are classic Norseman stuff (Plan B: abandon ship).
4. So it's not a mystery why nobody uses that type of nonsense stuff for real-life AEC projects (other than smallish decorative things with a very limited load bearing capacity).
5. All that ... BEFORE the ultra complex system that supports the roof.
STEP mailed but ... well ... what about doing some nice tensile membrane? I have a zillion "simple" defs that do that sort of stuff.
best, Lord of Darkness (ex SardineLand Lord)…
posted rather testifies that. Randomness is the virtue here NOT equality. BTW: forget completely "optimization" of the mount points et all.
2. The thing in pic is airy (quality Numero Uno on that type of stuff, especially for things with no real load bearing capability) meaning minimum profiles ... meaning FORGET wood. Use aluminum tubes (rather cheaper than wood) as follows: screw the Captain Hook "node" in some kind of machined tube end (a humble massif cylinder that is screwed or clued [Araldide 2 part Epoxy] to the tube AND machined with threads for the hook).
NOTE: I could make a simple tube "adjustment" system that could allow you to build that on-the-fly WITHOUT any GH/K or anything: just start connecting variable length tubes ... er ... hmm ... randomly. This is the recommended way to do it anyway: we can't emulate art with software and even if we could: it's the art of pointless.
3. Additionally the whole conceptual aesthetics BEG for some kind of metal instead of wood. The fact that wood is aplenty in Russia doesn't justify killing trees (for any scope), anyway.
4. Using rings to "attach" the hooks ... well that could yield a highly unstable structure for more than obvious reasons. I could provide to you dozens of highly sophisticated bespoke solutions on that matter ... but they are unsuitable for this DIY occasion: I must think on a zero basis on that puzzle - allow me some time to propose the best "adapter" (easy, cheap, stable and allowing some liberties).
5. A Connectivity tree (see for instance Sandbox) can resolve with easy the equal axis worry of yours (thus: FORGET equality, just buy a hack-saw [ aluminum is very easy to "cut", he he]).
All in all: I like that a lot. I'll post soon some examples related with the all overall approach (including the node, he he). You don't need Kangaroo for that (and dare I say no structural analysis IF the structure to be is "similar" in size with the one pictured).
more soon, best, Lord of Darkness…
d the Pts from 1 to the List 2 of reduced Points.
4. Sort the List VS the curve (or use some smart way to properly "insert" Pts from 1 to Pts from 2).
public List<Point3d> SortPointsAlongCurve(List<Point3d> points_list, Curve sorting_curve) { points_list.Sort((point1, point2) => { double point1_t = 0; double point2_t = 0; sorting_curve.ClosestPoint(point1, out point1_t); sorting_curve.ClosestPoint(point2, out point2_t); return point2_t.CompareTo(point1_t); }); return points_list; }
or
public List<Point3d> SortPointsAlongCurve2(List<Point3d> pList, Curve curve) { List<Point3d> pSorted = new List<Point3d>(); List<Point3d> pClosest = new List<Point3d>(); for(int i = 0; i < pList.Count;i++){ double t; curve.ClosestPoint(pList[i], out t); pClosest.Add(curve.PointAt(t)); } Point3d pPrev = pClosest[0]; Rhino.Collections.Point3dList points = new Rhino.Collections.Point3dList(pClosest.Skip(1).ToList()); for(int i = 1; i < pClosest.Count;i++){ pSorted.Add(pPrev); int ind = points.ClosestIndex(pPrev); Point3d pNext = points[ind]; points.RemoveAt(ind); pPrev = pNext; if(i == pClosest.Count - 1) pSorted.Add(pPrev); } return pSorted; }
5. Do some Polyline or Nurbs .…
n requires ASCII format STL files, a Rhino export option.
(4) Compared to the bunny, your mesh was huge so I scaled it down 1/100th, so the same maximum tetrahedron size setting would blow up the output.
(5) I updated the Python to make Voronoi and Tetrahedron meshes output optional and added a file path input.
So I reduced your mesh after saving as an STL, using Autodesk Meshmixer, to half the number of triangles.
Before reducing the triangles I got a very fine tree that took a long time, with some segments so short it was hard to make a mesh pipe without artifacts:
After reducing:
Shortest walk won't yet work with the more open and direct path Voronoi diagram lines, since the target points are not the same surface mesh points and thus I can't specify each path endpoint yet.
The Tetgen internal Python -q quality setting dominates internal tetrahedron size unless you specify a very small maximum tetrahedron size input such as 0.01. With such an overly fine mesh, there were quite a few internal tetrahedra, since the angle quality settings won't let it expand to bigger ones very fast away from the surface.
…
Added by Nik Willmore at 3:16am on February 6, 2016
ill be curves not lines. But it could be fixed if necessary
1 Generation of a torus
2 Generation of Voronoi in 3d and calculation of intersection between cells and torus
3 Cut of the curves with 2 planes
4 Projection of the curves in XY planes between 0 and 2*PI
5 Scale in X of this pattern and array
Main variables are
Little radius of torus
Number of points for Populate 3d component
And the scale in X
It seems quite a simple way to generate a Seamless Voronoi.
Happy ?
For the question about symetry, cut, rotate ... you will have to draw things , seek on internet ... figure it by yourself. …
ges can have much stronger impact on the final design.
The problem is that usually the more "nonlinear" the mapping is the more interesting the result usually are because a definition with a very "linear" mapping doesn't have so much potential for surprise and unforeseen solutions.
It can be a random number as you stated, but also some like for example a slightly different point coordinate leads to different typology in a delaunay triangulation, now the strength of the impact also depends on the total sum of the delaunay points as well on how early the triangulation happens in the definition.
I seen that a shape analysis is a not easy at all not only technical but especially by defining the criteria. Looking forward to see your approach compare genotype and phenotype 'solution' spaces. Maybe an additional approach could be to have something like a gene manager where you can narrow down ranges of certain genes, weight them or freeze them.
to 4) and 5) looking forward to see the history once its ready. I think it could be beneficial to also be able to insert solution "by hand" for further crossbreeding and saving.
What i found myself doing quite often was taking solutions from the biomorpher and then tweaking one or more parameters "by hand" because then you can really see the impact and then you would like to have the possibly to bring that solution back into the biomorpher process.
I will go on testing and get back to you guys in some weeks! I attached you the my definition in case you want to have a look. Its needs kangaroo1, lunchbox, heteroptera and wb. Its more a graphical formal exercise:
best, chris…
branch. The weird part is that when I add stuff to the "trail" branch, the path "p" gets rewritten, and if I comment(trail) out it maintains its proper structure.
The structure normaly goes{0;0}-{1;0}-{2;0} and so on, when I enter the if statement it should be {0;0}-{0;1}-{1;0}-{1;1}-{2;0}-{2;1}, but what I get is {0;0}-{0;1}-{0;2}-{0;3}-{0;4}-{0;5}
The code in question is bellow(it is a part of a bigger whole).
For i As int32 = 0 To trail.BranchCount - 1 For j As int32 =0 To trail.Branch(i).Count - 1 Dim ghi As GH_Path = trail.path(i) Dim v As Vector3d = vL.Branch(i).item(j) Dim pw As New Polyline(trail.Branch(i).item(j)) Dim agent As New point3d(pw.Last) Dim p As New GH_Path(ghi(0), ghi(1) + 1) v.Unitize v *= seg agent += v If (count Mod math.Ceiling(conrate * div) = 0) AndAlso _
(stopper.Branch(i).item(j) = 0 AndAlso count > 0) Then print(p.ToString) Dim dupPw As New polyline duppw.Add(pw.Last) duppw.Add(pw.Last + v * seg) vl.Add(v, p) gen.add(gen.Branch(i).item(j) + 1, p) stopper.add(0, p) stopper.Branch(i).item(j) = 1 trail.Add(duppw, p) Continue For End If pw.Add(agent) vl.Branch(i).item(j) = v trail.branch(i).item(j) = pw NextNext
I am looking foreward to hear any suggestions.
Sincerely…