o far. Case 1 in the file works since the network is determinate, the second doesn't work. Though my intention is for the center point to move "up" (in the z-axis) until equilibrium is found.
So...my questions are
1. Should I be using springs for this? and with Kangaroo?
2. Is altering the rest length the best way to achieve this?
3. How to get out of plane movement from a planar structure?
Thanks!
Tim
…
hopper workshop.
Date: Friday, June 12
Hours: 9:30am-5:30pm
Location: Forward Design Office
Cost: US$250.00
This class will build upon the techniques explored during the first workshop and will require a basic knowledge of the software. This class will begin to address how Grasshopper can be used as an integral part of the entire building design and fabrication process. Attendees will work on a series of examples that will demonstrate how they can create parametric models that can compliment a number of different modes of fabrication (i.e. CNC mill, laser cutter, area calculations, panel systems, formatting information for custom spreadsheets, etc). If you are interested in registering for this workshop, please contact Jeffrey Kim.
This workshop is open to professionals and students; laptops required.…
are in 3 diferent planes), and their index of surfaces which they were projected onto.
What I wanted to do was to make planes out of those projected points, and those planes must have the same axes (x, y, z) direction of those surfaces they were project onto.
I tried to find a connection with the list and the indexes of the planes. Since:
Sfr01 = index 0
Srf02 = index 1
Srf03 = index 2
And tried to replace them based on the indexes that the projecton component gives, but I couldn't connect the dots.
Any ideas ( I got the result by finding the coordenates on which Srf and then finding the respective planes, but it just sounded wrong and ineficient.)
Thanks in advance.
…
he "nodes") and 2) generate a list of line elements identified by those points.
For example, given the following, I wish to obtain the following lists:
1) The list of nodes and their coordinates:
{5,0,0}
{0,5,0}
{0,0,0}
{5,5,0}
2) The elements described by these coordinates:
{0 1}
{1 2}
{2 0}
{0 3}
{1 3}
After trying for quite some time with Karamba (generating beam elements and then filtering the output text), I have attempted the attached with C#. However, it seems cumbersome and imperfect. Additionally, I would like the nodal points ordered by their x, z, and y values respectively as a bonus (not shown above).
It seems really simple, but I am pretty stumped. Thanks!…
moving start point by the vector to determine the end point). There is a specific component block even for this.
Vectors in GH are made up only by 3 values: X-Y-Z components.
Also points are made only by 3 values: X-Y-Z coordinates.
This is why GH lets you link a vector instead of a point and vice versa:
GH cannot convert a curve to a point or a vector to a brep!
But instead here, this is a fast conversion. Almost it's a non-conversion , it's "free".
But using this conversion is hard and really low common use! In few specific cases this will even become in hand, but initially it is best to "feed" blocks that ask for points with points! And vectors > vectors.
(stand with mouse cursor over input(or output) texts inside block component to found what they are "asking for")
This is why you get unexplainable results.
Watch what are you doing in your first pic: you linked normal vector "N" to point "A" in line component.
If you want to have a line to pipe on, take your start point and MOVE it with "N" vector to get the end point. If you want a longer line, change amplitude of the vector "N" before using it.
EDIT: in future, to get better help from the forum here, attach your data; .gh file with internalized geometries or .gh + .3dm files with linked geometries.…
to a graph mapper that I've attached, which allows me to scale the "floorplates" essentially any way that I want, rather than according to distance from a point or something like that.
However, the error occurs when I'm using the graph mapper, because the uniform scale button is scaling my floorplates in the z-direction, as well as the x and y directions, even though I'm scaling each floor around it's centroid, which should mean that there's no change in the z-direction.
The file is attached. The error occurs in the "elliptical tower" script. I've accomplished what I want to do successfully in the script labeled "twisting tower 3", but without the geometry that I want. The only answer that I can come up with right now is that some error is occuring because I'm using 2 catenary chains to create the planar srf and trying to read the centroid off of that, rather than using a closed ellipse like I did in "twisting tower 3". Hopefully the answer is some human error that has an easy fix, and I'm just not seeing it.
By the way, some parts of the "elliptical tower" script perform slowly since I added in the Planar Srf button, so give it a moment to think if you play with any parameters like rotation or length of the chain.
P.S. I've thought about using the Scale NU button, but that would require me to add in a vector rotation string of buttons like I did to rotate the vectors of the catenary chain, which I'd like to avoid if possible, since my script already seems to be getting pretty heavy.
I've tried to explain as clearly as I could, and I've labeled to rhino script as well as the grasshopper.
Thanks so much, any help is greatly appreciated.
Alex…
Added by Alexander at 11:26am on December 27, 2012
is set up to manipulate strings into an STL file that is quite different from how Grasshopper defines meshes, in that an STL seems to define each face by XYZ points, Grasshopper wants a single list of all vertex points and then has an allied lists of topological connectivity according to vertex number, so for now I just hacked it to spit out points minus so many duplicates it generates for STL:
Right now it has an internal 3D trigonometric function I added input sliders to control, that creates surfaces that look a lot like molecular orbitals.
So how do I make a mesh? I failed to make a single mesh face from each STL face since AddMesh seems to want a list, so I tried making a single list and matching it with a simple ((1,2,3),(4,5,6),(7,8,9)...) array of connectivity but it hasn't worked yet since the STL list of vertices has duplicates that won't work for Grasshopper and removing the duplicates scrambles the connectivity relation.
After some work on this and seeing the output, I figure I could just randomly populate the mathematical function with points instead, unless it really gives a better mesh result than other routines. I'm not sure what to do with it yet, even if I get the mesh figured out.
import rhinoscriptsyntaximport RhinoPOINTS_CONTAINER =[]POINTS = []class Vector: # struct XYZ def __init__(self,x,y,z): self.x=x self.y=y self.z=z def __str__(self): return str(self.x)+" "+str(self.y)+" "+str(self.z) class Gridcell: # struct GRIDCELL def __init__(self,p,n,val): self.p = p # p=[8] self.n = n # n=[8] self.val = val # val=[8] class Triangle: # struct TRIANGLE def __init__(self,p1,p2,p3): self.p = [p1, p2, p3] # vertices # HACK TO GRAB VERTICES FOR PYTHON OUTPUT POINTS_CONTAINER.append( (p1.x,p1.y,p1.z) ) POINTS_CONTAINER.append( (p2.x,p2.y,p2.z) ) POINTS_CONTAINER.append( (p3.x,p3.y,p3.z) )# return a 3d list of values def readdata(f=lambda x,y,z:x*x+y*y+z*z,size=5.0,steps=11): m=int(steps/2) ki = [] for i in range(steps): kj = [] for j in range(steps): kd=[] for k in range(steps): kd.append(f(size*(i-m)/m,size*(j-m)/m,size*(k-m)/m)) kj.append(kd) ki.append(kj) return ki from math import sin,cos,exp,atan2 def lobes(x,y,z): try: theta = atan2(x,y) # sin t = o except: theta = 0 try: phi = atan2(z,y) except: phi = 0 r = x*x+y*y+z*z ct=cos(PARAMETER_A * theta) cp=cos(PARAMETER_B * phi) return ct*ct*cp*cp*exp(-r/10) def main(): data = readdata(lobes,10,40) isolevel = 0.1 #print(data) triangles=[] for i in range(len(data)-1): for j in range(len(data[i])-1): for k in range(len(data[i][j])-1): p=[None]*8 val=[None]*8 #print(i,j,k) p[0]=Vector(i,j,k) val[0] = data[i][j][k] p[1]=Vector(i+1,j,k) val[1] = data[i+1][j][k] p[2]=Vector(i+1,j+1,k) val[2] = data[i+1][j+1][k] p[3]=Vector(i,j+1,k) val[3] = data[i][j+1][k] p[4]=Vector(i,j,k+1) val[4] = data[i][j][k+1] p[5]=Vector(i+1,j,k+1) val[5] = data[i+1][j][k+1] p[6]=Vector(i+1,j+1,k+1) val[6] = data[i+1][j+1][k+1] p[7]=Vector(i,j+1,k+1) val[7] = data[i][j+1][k+1] grid=Gridcell(p,[],val) triangles.extend(PolygoniseTri(grid,isolevel,0,2,3,7)) triangles.extend(PolygoniseTri(grid,isolevel,0,2,6,7)) triangles.extend(PolygoniseTri(grid,isolevel,0,4,6,7)) triangles.extend(PolygoniseTri(grid,isolevel,0,6,1,2)) triangles.extend(PolygoniseTri(grid,isolevel,0,6,1,4)) triangles.extend(PolygoniseTri(grid,isolevel,5,6,1,4)) def t000F(g, iso, v0, v1, v2, v3): return [] def t0E01(g, iso, v0, v1, v2, v3): return [Triangle( VertexInterp(iso,g.p[v0],g.p[v1],g.val[v0],g.val[v1]), VertexInterp(iso,g.p[v0],g.p[v2],g.val[v0],g.val[v2]), VertexInterp(iso,g.p[v0],g.p[v3],g.val[v0],g.val[v3])) ] def t0D02(g, iso, v0, v1, v2, v3): return [Triangle( VertexInterp(iso,g.p[v1],g.p[v0],g.val[v1],g.val[v0]), VertexInterp(iso,g.p[v1],g.p[v3],g.val[v1],g.val[v3]), VertexInterp(iso,g.p[v1],g.p[v2],g.val[v1],g.val[v2])) ] def t0C03(g, iso, v0, v1, v2, v3): tri=Triangle( VertexInterp(iso,g.p[v0],g.p[v3],g.val[v0],g.val[v3]), VertexInterp(iso,g.p[v0],g.p[v2],g.val[v0],g.val[v2]), VertexInterp(iso,g.p[v1],g.p[v3],g.val[v1],g.val[v3])) return [tri,Triangle( tri.p[2], VertexInterp(iso,g.p[v1],g.p[v2],g.val[v1],g.val[v2]), tri.p[1]) ] def t0B04(g, iso, v0, v1, v2, v3): return [Triangle( VertexInterp(iso,g.p[v2],g.p[v0],g.val[v2],g.val[v0]), VertexInterp(iso,g.p[v2],g.p[v1],g.val[v2],g.val[v1]), VertexInterp(iso,g.p[v2],g.p[v3],g.val[v2],g.val[v3])) ] def t0A05(g, iso, v0, v1, v2, v3): tri = Triangle( VertexInterp(iso,g.p[v0],g.p[v1],g.val[v0],g.val[v1]), VertexInterp(iso,g.p[v2],g.p[v3],g.val[v2],g.val[v3]), VertexInterp(iso,g.p[v0],g.p[v3],g.val[v0],g.val[v3])) return [tri,Triangle( tri.p[0], VertexInterp(iso,g.p[v1],g.p[v2],g.val[v1],g.val[v2]), tri.p[1]) ] def t0906(g, iso, v0, v1, v2, v3): tri=Triangle( VertexInterp(iso,g.p[v0],g.p[v1],g.val[v0],g.val[v1]), VertexInterp(iso,g.p[v1],g.p[v3],g.val[v1],g.val[v3]), VertexInterp(iso,g.p[v2],g.p[v3],g.val[v2],g.val[v3])) return [tri, Triangle( tri.p[0], VertexInterp(iso,g.p[v0],g.p[v2],g.val[v0],g.val[v2]), tri.p[2]) ] def t0708(g, iso, v0, v1, v2, v3): return [Triangle( VertexInterp(iso,g.p[v3],g.p[v0],g.val[v3],g.val[v0]), VertexInterp(iso,g.p[v3],g.p[v2],g.val[v3],g.val[v2]), VertexInterp(iso,g.p[v3],g.p[v1],g.val[v3],g.val[v1])) ] trianglefs = {7:t0708,8:t0708,9:t0906,6:t0906,10:t0A05,5:t0A05,11:t0B04,4:t0B04,12:t0C03,3:t0C03,13:t0D02,2:t0D02,14:t0E01,1:t0E01,0:t000F,15:t000F} def PolygoniseTri(g, iso, v0, v1, v2, v3): triangles = [] # Determine which of the 16 cases we have given which vertices # are above or below the isosurface triindex = 0; if g.val[v0] < iso: triindex |= 1 if g.val[v1] < iso: triindex |= 2 if g.val[v2] < iso: triindex |= 4 if g.val[v3] < iso: triindex |= 8 return trianglefs[triindex](g, iso, v0, v1, v2, v3) def VertexInterp(isolevel,p1,p2,valp1,valp2): if abs(isolevel-valp1) < 0.00001 : return(p1); if abs(isolevel-valp2) < 0.00001 : return(p2); if abs(valp1-valp2) < 0.00001 : return(p1); mu = (isolevel - valp1) / (valp2 - valp1) return Vector(p1.x + mu * (p2.x - p1.x), p1.y + mu * (p2.y - p1.y), p1.z + mu * (p2.z - p1.z)) if __name__ == "__main__": main() # GRASSHOPPER PYTHON OUTPUTPOINTS = rhinoscriptsyntax.AddPoints(POINTS_CONTAINER)POINTS = rhinoscriptsyntax.CullDuplicatePoints(POINTS)…
ram.com/Helicoid.html.
To be more precise, I'm not quite clear how to apply this equation to the helicoid and integrate it into my code:
where corresponds to a helicoid and to a catenoid.
I've made some attempts not worth to be shown here. Maybe somebody can help me with a pseudocode or a simple description how to start solving this classic geometric transformation.
Thanks, Sebastian
…
Added by Sebastian at 11:19am on December 27, 2012
ping objects,
4) Z Buffer Min and Max values,
and 4) when I get my ies generator working (not soon I'm afraid), it would be nice to add this option to your emitter component.
Maybe I'm missing something. Is it possible to change texture brightness, saturation etc?
A great addition to Maxwell would be to apply filters as the new Firefly vision tools (at the bottom of this page), and see this too.
Doesn't really fit into your two options, I know! So I'll vote for Scene manager too.
…
s" to show the exhibits (in green).
also I wish for the slopes to be a maximum of 3 degrees.
so I've made a grid of points and used delauney mesh for making the triangulation, and used Galapagos to control the z factor of the point while trying to get to the score of minimum faces over the 3 degrees slope.
it takes too much time for the process and I don't get good results.
thought I could share it here and see if you have a better idea or know how to do this kind of thing in kangaroo (if it possible).
I've been using the SmartForm analyser plugin for evaluating the faces slopes:
http://www.smart-solutions-network.com/page/smartform-analyser
thank you very much for your time.
Yoav
…