ndrea Graziano (Co-de-iT) Arch. Salvo Pappalardo (AION architecture) Arch. Giovanni Basile (Officina Ermocrate)
[.] Descrizione:
Modulo 1 Il workshop è finalizzato a fornire ai partecipanti i fondamenti della modellazione parametrica e generativa attraverso Grasshopper, plug-in di programmazione visuale per Rhinoceros 3D (uno dei più diffusi modellatori NURBS per l‘architettura e il design). Il workshop mira a gestire e sviluppare il rapporto tra informazione e geometria lavorando sui sistemi di involucro in condizioni specifiche. La discretizzazione di superfici (pannellizazione sia Nurbs che Mesh), la modellazione delle geometrie attraverso informazioni (siano esse provenienti da dati di analisi ambientali, da mappe di colore o da database), l’estrazione e la gestione di informazioni richiedono la comprensione delle strutture dei dati al fine di definire un processo che va dalla progettazione alla costruzione. I partecipanti impareranno come costruire e sviluppare strutture di dati parametrici per informare geometrie ‘data-driven’ e come estrarre le informazioni rilevanti da tali modelli per il processo di costruzione.
Modulo 2 Il workshop, volto a promuovere le nuove tecnologie digitali di supporto alla progettazione e alla fabbricazione, fornirà ai partecipanti, utilizzando Grasshopper, gli strumenti per la preparazione dei modelli 3D di elementi modulari decorativi "bricks & tiles" in argilla la cui successiva prototipazione avverrà tramite fresatura dello stampo con pantografo CNC a 3 assi. Il workshop darà quindi ai partecipanti i fondamenti per l’utilizzo di tale strumento di fabbricazione digitale e si concluderà con la fabbricazione di un proprio modello realizzato durante il corso.
[more info]
[Press Kit]…
flectance and use .2 as default. You can use ShadingProperty:Reflectance to change the default value. We don't support this in Honeybee interface right now but you can create the objects and add them to your energy model using additionalStrings_ input.
I put a simple example together were I change the reflection for shading surfaces to .5 for unglazed part of shading and portion and .7 for glazed part. I also set the percentage of glazing to 50% of the surface area.
I didn't put any input checks. Make sure to read the documentation to put valid input values for energyplus otherwise the energyplus simulation will fail. I also assumed that all the shading surfaces (context) will be planar surfaces.
Keep in mind that it will only effect the results if you are using one of the solar distributions with reflections. Honeybee is using FullInteriorAndExteriorWithReflections by default so you should be fine if you're using the default settings.
Hope it helps,
Mostapha
…
look like this. Where First Character of first Row is X coordinate and next character of same first row is telling No of times X coordinate is repeating.
Then next rows from 2 to 7 (6 steps) are Y, Z coordinate...like that it is going.
-3.28,61.64,0.1.64,3.281-1.64,3.281-1.64,0.1.64,0.1.64,0.-2.916,61.64,0.1.64,3.281-1.64,3.281-1.64,0.1.64,0.1.64,0.-2.551,61.64,0.1.64,3.281-1.64,3.281-1.64,0.1.64,0.1.64,0.-2.187,61.64,0.1.64,3.281-1.64,3.281-1.64,0.1.64,0.1.64,0.-1.823,61.64,0.1.64,3.281-1.64,3.281-1.64,0.1.64,0.1.64,0.-1.458,61.64,0.1.64,3.281-1.64,3.281-1.64,0.1.64,0.1.64,0.-1.094,61.64,0.1.64,3.281-1.64,3.281-1.64,0.1.64,0.1.64,0.-0.729,61.64,0.1.64,3.281-1.64,3.281-1.64,0.1.64,0.1.64,0.-0.365,61.64,0.1.64,3.281-1.64,3.281-1.64,0.1.64,0.1.64,0.-0.001,61.64,0.1.64,3.281-1.64,3.281-1.64,0.1.64,0.1.64,0.
…
Added by Amit Karanje at 11:01pm on November 4, 2017
er into the t input so that the two points were constantly shifting up the line. Is there a way of creating a normal or tangent that keeps the plane oriented in one direction?
-
The file is included, bright blue panel is where the plane function is. The rest of the code is rotating 7 points in a helix about the line, while projecting to the moving plane. The unexpected rotations are giving my helix tight turning points that are messing with the aesthetic!
-
-
Any help you can give is much appreciated.…
Added by Liam Dewhurst at 7:59pm on February 12, 2013
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)…
updater successfully, but then the newest components don't work. try running the updater again and it says that the update is already installed.
Resolution:
Step 1-(If in windows, you will need modify your folder view to include "show hidden files, folders and drives" to see all the folders in this path.)
Navigate to C:\Users\%username%\AppData\Roaming\McNeel\Rhinoceros\5.0\Plug-ins\PanelingTools {6CAED836-BC06-4EBC-B1FD-E10886A0DC94}\2012.4.30.1332\(32 bit or 64 bit, whichever is appropriate for your machine).
NOTE: The folder name has the date. The current working version I am using is in the folder listed above) I have found that the updater sometimes does "repoint" rhino to the newest version. (that will be step 2).
There should be 3 files in this folder:(the modified date on the files should be 5/4/2012)
PanelingTools.rhp
PanelingToolsDotNet.dll
PT_SDK.dll
Right click on each of the files individually and choose properties. If there is an "Unblock" button, click it to unblock the file. Check each of the 3 files. (if the "Unblock" button is not there, then you can go to step 2).
STEP 2:
Open rhino and go to the plugin manager. scroll down to paneling tools, right click and choose properties. The file path at the bottom of the properties page should point to your folder path you verified in step 1. I have found that in some cases, after running the updater, the plugin path is still pointing to the previous version. If that is the case, close rhino, go back to the folder path in step 1 and delete any older versions, (only keep the folder 2012.4.30.1332).
Re-open rhino and reload the correct version of the plug in. After successful loading, you should have a Paneling Tools drop down you Rhino menu bar.
The above steps have only verified that the correct version of paneling tools is loaded in rhino.
STEP 3:
Download the latest PTComponentLibrary.gha and place it in your Grasshopper components folder, (delete/remove any previous instances of PTComponentLibrary.gha.)
(From within grasshopper, choose File->Special Folders->Components Folder)
Once you copy it into that folder, right click on the file and choose properties. Make sure to "Unblock" that file as well.
close and re-open rhino. launch grasshopper. You hopefully have a paneling tools tab in your grasshopper toolbars.
I don't know if this is exactly your case, but for that was the solution path for a few folks in our studio that seemed to work.
…
d having the entire surface adjust while maintaining equilateral triangles. The closest solutions I've come across are the equilateralize and shell and plate examples for Kangaroo (images below), but I don't think the definition in the equilateralize demo will work because I don't always want 6 triangles around each vertex (I want a range from 4 to 7.) The shell and plate example seems more promising, but when I open it in rhino/GH it says the C# component is old, and the code is missing. Also, the shapes I'm trying to model are much less spherical than the mesh in the demo, so I'm not sure if that method will work anyway. I'm also posting an image of some physical models that show what I'm going for.
Any advice would be much appreciated!
…
l design.
2/ Optimization
2.1/ in prefabrication
2.2/ combinatorial
2.3/ approach comparisons (i.e. deterministic vs stochastic)
2.4/ share your research
2.5/ ... etc. the list goes on and on
3/ Share you design rationale and how computation fits in
4/ Need help with this problem...
5/ Challenges and workshops announcements
6/ CD News
7/ Share computational design projects under construction or built (akin to skyscrapercity)
8/ and so many other categories and sub-categories...
Just my first thoughts. That breakdown in optimization is just an example. Maybe 'sections' is an old-school way of seeing things, I just wanted to share some thoughts on the kind of content I look forward to seeing. It can be pragmatic topics, but also theoretical, and allow folks to share their projects and research. Some categories are specific, others broad. I suppose I'm interested in community building with regards to computational design. I think SmartGeometry attempted to accomplish this at some point in the past, to some degree. However their focus appears to be in the workshops and challenges.
I recall the silly flame wars that the CG industry had 20 years ago (lame). I'd avoid that, even if it meant forbidding the mention of any specific software in certain areas or in the entire forum. Which would be tricky, but the endless flame wars and silly comparisons were such a waste of everyone's time in CG.
Without dwelling on this too much yet, I think that the software specific questions belong in software specific forums. If we already had a common language for computational design, you'd just need to add the right description as a meta-tag to any Dynamo or Grasshopper forum post, and you'd be able to find analogous solutions in either forum effortlessly, right?
The Dynamo and Grasshopper forums lack design-centric content. The emphasis is generally on the tools and workflow. Computational design is hybrid in essence, it involves both design and computer programming (be it visual or textual). We could really use a forum for knowledge exchange where the expectation is that both are discussed with equal status.
I disagree that such a forum ought to exclude professional programmers. It should include professional programmers whom have an interest in design, and also include professional designers whom have an interest in computer programming, and everyone in between, and enthusiasts, and artists whom are curious about algorithms as a creative medium, and academics, and students, and etc etc. As long as there is rich content and activity on design as well, not only the computational bit, then the crowd will be diverse and we'll all have more to learn from one another.…
ather files in different file locations
I have never closed a command window
My working directory is set to c:\ladybug
I have the latest versions of ladybug and honeybee.
However, I still can't successfully generate a simulation result. The readme from runDaylightAnalysis consistently says Could not find file 'C:\ladybug\...\error.log'. And it's true that it's not there. If I create a blank text file called error.log and place it where it expects, running the GH script deletes it.
System:
Windows 7 64-bit
Rhino 5, base file has units of meters
Grasshopper 0.9.0.0076 (latest)
Ladybug 0.0.63, Honeybee 0.0.60
Radiance 5.0.a.12 (released 2 weeks ago)
I have attached my gh file which should not require a specific Rhino file to run.
Note that I followed parts of your example posted on Hydra.…
ehow acquire different settings/are calculated differently. Appears at random “rows” of points, sometimes it all works fine, so I need to do a series for the error to show. See images below.
In the Ladybug fly run the VT of the window changes.
It’s taken me a day and a half to track this error down. Phew.
I get the same error on two different comps.
What is causing this? Does anyone get the same error? Images below created with RADquality set to 2, and 7 cores. Fiddling with Radsettings dont help, I think, except error goes away with very low ab.
…