Search
  • Sign In

Grasshopper

algorithmic modeling for Rhino

  • Home
    • Members
    • Listings
    • Ideas
  • View
    • All Images
    • Albums
    • Videos
    • Architecture Projects
    • Installations
    • Add-ons
  • Download
    • Rhino 7 w/Grasshopper
    • Add-ons
  • Forums/Support
    • Current Discussions
    • Legacy Forum
  • Learn
    • Getting Started
    • Online Reference
    • API documentation
    • Video Tutorials
    • Common Questions
    • Scripting and Coding
    • Books and Articles
  • Attend
  • My Page

Search Results - 分分快3最准高手助赢计划-『8TBH·COM』福利彩票开奖结果012期查询--2023年3月19日6时48分50秒.H5c2a3.5jexii16x-gov-hk

Blog Post: rese arch LIVE Workshop

Let me invite you to the Grasshopper+Karamba workshop with Robert Vierlinger and Matthew Tam on 21-25 July 2015 in Bratislava, Slovakia.…



Added by Jan Pernecky at 6:28am on June 29, 2015
Topic: Memory exception in a custom plugin, manipulating Rhino layers
. Things have been working swimmingly in many areas of the plugin, but one particular problem has been tough to solve.  I have two components that are trying to read/write to the same memory at the same time, causing Rhino exceptions and crashes. The conflicts appear to be happening between two components -- one is a "Layer Events Listener" that reports essentially what type of layer event just happened.  The other is a "Set Layer Visibility" component that toggles the visibility of a list of layers. The code: public class LayerTools_LayerEventsListener : GH_Component { /// <summary> /// Initializes a new instance of the LayerTools_LayerListener class. /// </summary> public LayerTools_LayerEventsListener() : base("Layer Events Listener", "Layer Listener", "Get granular information about the layer events happening in the Rhino document.", "Squirrel", "Layer Tools") { } /// <summary> /// Registers all the input parameters for this component. /// </summary> protected override void RegisterInputParams(GH_Component.GH_InputParamManager pManager) { pManager.AddBooleanParameter("Active", "A", "Set to true to listen to layer events in the Rhino document.", GH_ParamAccess.item, false); pManager.AddTextParameter("Exclusions", "E", "Provide a list of exclusions to stop reading specific events (Added, Deleted, Moved, Renamed, Locked, Visibility, Color, Active).", GH_ParamAccess.list); pManager[1].Optional = true; } /// <summary> /// Registers all the output parameters for this component. /// </summary> protected override void RegisterOutputParams(GH_Component.GH_OutputParamManager pManager) { pManager.AddBooleanParameter("Initialized", "I", "Whether the listener changed from passive to active.", GH_ParamAccess.item); pManager.AddTextParameter("Document Name", "doc", "Name of the Rhino document that is changing.", GH_ParamAccess.item); pManager.AddTextParameter("Layer Path", "path", "Path of the modifed layer.", GH_ParamAccess.item); pManager.AddIntegerParameter("Layer Index", "ID", "Index of the modified layer.", GH_ParamAccess.item); pManager.AddIntegerParameter("Sort Index", "SID", "Sort index of the modified layer.", GH_ParamAccess.item); pManager.AddTextParameter("Event Type", "T", "Type of the modification.", GH_ParamAccess.item); pManager.AddBooleanParameter("Added", "A", "If the layer has been added.", GH_ParamAccess.item); pManager.AddBooleanParameter("Deleted", "D", "If the layer has been deleted.", GH_ParamAccess.item); pManager.AddBooleanParameter("Moved", "M", "If the layer has been moved.", GH_ParamAccess.item); pManager.AddBooleanParameter("Renamed", "R", "If the layer has been renamed.", GH_ParamAccess.item); pManager.AddBooleanParameter("Locked", "L", "If the layer locked setting has changed.", GH_ParamAccess.item); pManager.AddBooleanParameter("Visibility", "V", "If the layer's visibility has changed.", GH_ParamAccess.item); pManager.AddBooleanParameter("Color", "C", "If the layer's color has changed.", GH_ParamAccess.item); pManager.AddBooleanParameter("Active", "Act", "If the active layer has changed.", GH_ParamAccess.item); } /// <summary> /// This is the method that actually does the work. /// </summary> /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param> protected override void SolveInstance(IGH_DataAccess DA) { bool active = false; List<string> exclusions = new List<string>(); DA.GetData(0, ref active); DA.GetDataList(1, exclusions); RhinoDoc thisDoc = null; bool initialize = false; string dName = null; string activePath = null; int layerIndex = -1; int sortIndex = -1; string eventType = null; bool added = false; bool deleted = false; bool moved = false; bool renamed = false; bool locked = false; bool visibility = false; bool color = false; bool current = false; if (active) { thisDoc = RhinoDoc.ActiveDoc; initialize = (!previouslyActive) ? true : false; RhinoDoc.LayerTableEvent -= RhinoDoc_LayerTableEvent; RhinoDoc.LayerTableEvent += RhinoDoc_LayerTableEvent; previouslyActive = true; } else { RhinoDoc.LayerTableEvent -= RhinoDoc_LayerTableEvent; previouslyActive = false; } if (ev != null) { dName = ev.Document.Name; layerIndex = ev.LayerIndex; eventType = ev.EventType.ToString(); if (!exclusions.Contains("Active")) { if (ev.EventType.ToString() == "Current") { // active layer has just been changed current = true; } } if (!exclusions.Contains("Moved")) { if (ev.EventType.ToString() == "Sorted") { // active layer has just been changed moved = true; } } if (!exclusions.Contains("Added")) { if (ev.EventType.ToString() == "Added") { // layer has just been added activePath = ev.NewState.FullPath; added = true; } } if (!exclusions.Contains("Active")) { if (ev.EventType.ToString() == "Deleted") { // layer has just been added deleted = true; } } if (ev.EventType.ToString() == "Modified") { // layer has been modified activePath = ev.NewState.FullPath; //skip sortindex eventType = ev.EventType.ToString(); if (ev.OldState != null && ev.NewState != null) { if (!exclusions.Contains("Locked")) { if (ev.OldState.IsLocked != ev.NewState.IsLocked) locked = true; } if (!exclusions.Contains("Visibility")) { if (ev.OldState.IsVisible != ev.NewState.IsVisible) visibility = true; } if (!exclusions.Contains("Moved")) { if (ev.OldState.ParentLayerId != ev.NewState.ParentLayerId) moved = true; } //if (ev.OldState.SortIndex != ev.NewState.SortIndex) moved = true; if (!exclusions.Contains("Renamed")) { if (ev.OldState.Name != ev.NewState.Name) renamed = true; } if (!exclusions.Contains("Color")) { if (ev.OldState.Color != ev.NewState.Color) color = true; } } } } DA.SetData(0, initialize); DA.SetData(1, dName); DA.SetData(2, activePath); DA.SetData(3, layerIndex); DA.SetData(4, sortIndex); DA.SetData(5, eventType); DA.SetData(6, added); DA.SetData(7, deleted); DA.SetData(8, moved); DA.SetData(9, renamed); DA.SetData(10, locked); DA.SetData(11, visibility); DA.SetData(12, color); DA.SetData(13, current); } static bool previouslyActive = false; Rhino.DocObjects.Tables.LayerTableEventArgs ev = null; void RhinoDoc_LayerTableEvent(object sender, Rhino.DocObjects.Tables.LayerTableEventArgs e) { ev = e;this.ExpireSolution(true); } And for the layer visibility component: public LayerTools_SetActiveLayer() : base("Set Active Layer", "SetActiveLayer", "Set the active layer in the Rhino document.", "Squirrel", "Layer Tools") { } /// <summary> /// Registers all the input parameters for this component. /// </summary> protected override void RegisterInputParams(GH_Component.GH_InputParamManager pManager) { pManager.AddBooleanParameter("Active", "A", "Set to true to change the active layer in Rhino.", GH_ParamAccess.item, false); pManager.AddTextParameter("Path", "P", "Full path of the layer to be activated.", GH_ParamAccess.item); } /// <summary> /// Registers all the output parameters for this component. /// </summary> protected override void RegisterOutputParams(GH_Component.GH_OutputParamManager pManager) { pManager.AddIntegerParameter("Layer ID", "ID", "Index of layer that has been activated.", GH_ParamAccess.item); pManager.AddBooleanParameter("Status", "St", "True when the layer has been activated.", GH_ParamAccess.item); } /// <summary> /// This is the method that actually does the work. /// </summary> /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param> protected override void SolveInstance(IGH_DataAccess DA) { bool active = false; string path = ""; if (!DA.GetData(0, ref active)) return; if (!DA.GetData(1, ref path)) return; int layer_index = -1; bool status = false; if (path != null) { Rhino.RhinoDoc doc = Rhino.RhinoDoc.ActiveDoc; Rhino.DocObjects.Tables.LayerTable layertable = doc.Layers; layer_index = layertable.FindByFullPath(path, true); if (layer_index > 0) { // if exists RhinoDoc.ActiveDoc.Layers.SetCurrentLayerIndex(layer_index, true); status = true; } } DA.SetData(0, layer_index); DA.SetData(1, status); } Now originally I was getting exceptions when changing multiple layers' visibility properties, which would cause the Event Listener to fire and try to read the Visibility property before the memory has been released by the Set Layer Visibility component.  That led me to add an "Exceptions" input, that would allow me to disable the reading of Visibility events at the source in the Layer Events listener.  That helped me manage about 95% of the crashes I was getting, but I still get strange crashes in other event properties, even when that property shouldn't be affected.  For instance, I am getting a crash here on the Name property in the event from the delegate function, even though I am only changing Visibility at any one time: I have a few ideas but they all seem pretty hacky.  One is to try to set a flag that is readable by any component in the plugin -- so that the event listener can see if a "set" component is currently running and abort before causing an exception.  The other is creating a delay in the event listener, somthing like 200ms, to allow any set components to finish what they are doing before reading the event.  Neither seems super ideal. Any ideas? Thanks, Marc …
Added by Marc Syp at 10:45pm on July 5, 2017
Blog Post: Design Modelling Symposium Copenhagen: Workshops & Master Class

This fall the…

Added by David Stasiuk at 11:10am on July 9, 2015
Comment on: Topic 'DataTree(of object) > GH_Structure(of ?)'
3. receiver gets data from sender via input (0) < the data here may be changed in the meantime, for instance if its a double then I would like to add 1 to it. 4. receiver sends data to sender's input(2) 5. go to 1. VS 2013 studio project folder SENDER  Public Class loopStart Inherits GH_Component Dim cnt As Integer Friend Property counter() As Integer Get Return cnt End Get Set(value As Integer) cnt = value End Set End Property Dim iData As New GH_Structure(Of IGH_Goo) Friend Property startData() As GH_Structure(Of IGH_Goo) Get Return iData End Get Set(value As GH_Structure(Of IGH_Goo)) iData = value End Set End Property Public Sub New() MyBase.New("loopStart", "loopStart", "Start the loop with this one.", "Extra", "Extra") End Sub Public Overrides ReadOnly Property ComponentGuid() As System.Guid Get Return New Guid("bdf1b60d-6757-422b-9d2d-08257996a88c") End Get End Property Protected Overrides Sub RegisterInputParams(ByVal pManager As Grasshopper.Kernel.GH_Component.GH_InputParamManager) pManager.AddGenericParameter("Data", "dIn", "Data to loop", GH_ParamAccess.tree) pManager.AddIntegerParameter("Steps", "S", "Number of loops", GH_ParamAccess.item) pManager.AddGenericParameter("<X>", "<X>", "Please leave this one alone, don't input anything.", GH_ParamAccess.tree) pManager.Param(2).Optional = True End Sub Protected Overrides Sub RegisterOutputParams(ByVal pManager As Grasshopper.Kernel.GH_Component.GH_OutputParamManager) pManager.AddGenericParameter("Data", "dOut", "Data to loop", GH_ParamAccess.tree) End Sub Public Overrides Sub CreateAttributes() m_attributes = New loopStartAttributes(Me) End Sub Protected Overrides Sub SolveInstance(ByVal DA As Grasshopper.Kernel.IGH_DataAccess) Dim numLoop As Integer DA.GetData(1, numLoop) Dim loopDt As New Grasshopper.Kernel.Data.GH_Structure(Of IGH_Goo) If cnt = 0 Then Me.startData.Clear() DA.GetDataTree(0, Me.startData) loopDt = startData.Duplicate DA.SetDataTree(0, loopDt) End If If cnt < numLoop - 1 And cnt > 0 Then DA.GetDataTree(2, loopDt) DA.SetDataTree(0, loopDt) Me.ExpireSolution(True) Else DA.GetDataTree(2, loopDt) DA.SetDataTree(0, loopDt) End If cnt += 1 End Sub End Class RECEIVER Public Class loopEnd Inherits GH_Component Dim aData As New GH_Structure(Of IGH_Goo) Friend Property anyData() As GH_Structure(Of IGH_Goo) Get Return aData End Get Set(value As GH_Structure(Of IGH_Goo)) aData = value End Set End Property Public Sub New() MyBase.New("loopEnd", "loopEnd", "End the loop with this one.", "Extra", "Extra") End Sub Public Overrides ReadOnly Property ComponentGuid() As System.Guid Get Return New Guid("3ffa3b66-8160-4ab3-87c9-356b2c17aadd") End Get End Property Protected Overrides Sub RegisterInputParams(ByVal pManager As Grasshopper.Kernel.GH_Component.GH_InputParamManager) pManager.AddGenericParameter("Data", "dIn", "Data to loop", GH_ParamAccess.tree) End Sub Protected Overrides Sub RegisterOutputParams(ByVal pManager As Grasshopper.Kernel.GH_Component.GH_OutputParamManager) pManager.AddGenericParameter("Data", "dOut", "Data after the loop", GH_ParamAccess.tree) End Sub Protected Overrides Sub SolveInstance(ByVal DA As Grasshopper.Kernel.IGH_DataAccess) Me.aData.Clear() DA.GetDataTree(0, Me.aData) runner() DA.SetDataTree(0, Me.aData) End Sub Sub runner() Dim doc As GH_document = Grasshopper.Instances.ActiveCanvas.Document Dim docl As list(Of iGH_DocumentObject) = (doc.Objects) For i As Integer = 0 To docl.count - 1 Step 1 Dim comp As Object = docl(i) If comp.NickName = "loopStart" Then Dim compp As IGH_Param = comp.Params.input(2) compp.VolatileData.Clear() compp.AddVolatileDataTree(anyData) Exit For End If Next End Sub End Class …
Added by Mateusz Zwierzycki at 2:47pm on November 28, 2013
Comment on: Topic 'Voronoi relaxation (vorlax, voronax), kangaroo'
o express my gratitude. I've been experimenting with your definitions (and still am), but let me extend my question. Actually what I'm trying to achieve, is to recreate another project by Andrew Kudless, the spore lamp (I mentioned the Chrysalis at the beginning just because of the animation, which wasn't included in the Spore Lamp presentation).  Basically the spore lamp seems to me to be something like a preliminary study to the Chrysalis III project (I think it's a similar approach). Andrew stated on his site that he used kangaroo for this project, so the Spore Lamp consists in my opinion either of a relaxed voronoi 3d diagram (b-rep, b-rep intersection) on a sphere which then has been planarized, or more likely it is a sort of relaxed facet dome. The trick is to: 1. obtain a nicely-balanced voronoish diagram (or facet dome cells) 2. keep each cell/polyline planar (or force them with kangaroo to be planar) in order to move scale and loft them later on. Here is what I have by now. (files: matsys spore lamp attempt) That's the closest appearance that I got so far (simple move scale and loft of facet dome cells with the amount of transformations being proportional  to the power of the initial cell area:  bigger cell = bigger opening etc.) - with no relaxation of the diagram. But it's obviously not the same thing as the matsys design. Here are some of my attempts of facet dome relaxation, but well, it certainly still not the right approach, and most importantly I don't know how to keep or force the cells to be planar after the relaxation. 1. pulling vertices to a sphere - no anchor points. That obviously doesn't make sense at all, but the relaxation without anchor points gives at the beginning a pattern that is closer to what I am looking for. (files: relaxation 01) 2. pulling vertices to a sphere - two faces of the initial facet dome anchored (files: relaxation 02) 3. pulling vertices to the initial geometry (facet dome) no anchor points (files: relaxation 03)   The cell pattern of the lamp kinda looks like this:  you can find it here: http://www.grasshopper3d.com/forum/topics/kangaroo-0-095-released?g... Done with Plankton (of course without the "gradient increase" appearance), but in fact not, I took a look at Daniel Parker's Plankton example files, and it's not quite the same thing. Also the cells aren't planar...   The last problem is that during the relaxation attempts that I did, the biggest initial cells became enormous, and it's not like that in the elegant project by Andrew Kudless, that I'd like to achieve. So to sum up: Goal no 1: Obtain an elegant voronoi /facet dome cell pattern on a sphere (or an ellipsoid surface, whatever). Goal no 2: Keep the cells planar in order to be able to loft them later and obtain those pyramidal forms, and assemble easily Any ideas? Or maybe there's a completely different approach to that?…
Added by Benoit Martel at 4:12pm on March 1, 2016
Comment on: Topic 'Help- Geodesic Dome- Beginner Grasshopper'
les automatically at the right angle to form the cap of an icosahedron. To complete the full icosahedron, we consider just the six points we already know, the five pentagon vertices and the raised pyramid tip and reorient one of the vertices using three-point transformation so it obtains the exact same relationship between vertices only one more stage beyond our little cap pyramid, and we do a five-fold polar array: I used a password-protected cluster I ran into one the forum somewhere to reproduce Rhino's 3-point orient command: A final 3-point orientation transforms in space the original pyramid tip down to the bottom: Now we can create a convex hull which gives an icosahedron mesh: So that's how you build an icosahedron in Rhino from scratch, only using rather long winded Grasshopper. Now we use the Weaverbird plug-in to subdivide the faces and then project the vertices out onto a sphere via finding the closest points to a sphere and then recreating a convex hull to make a geodesic dome mesh: Subdividing two times works fine but 3 times blows up convex hull, so I'll just have due with the the subdivision step and leave out projecting back to a sphere, since the algorithm already gives a nice spherical result that you can see inside this disaster: Now you know what a standard geodescic dome is, just an icosahedron with faces divided into smaller triangles, projected out to a sphere. Actually, the mere subdivision is just a bit blobby instead of a sphere, damn it, so I'll have to topologically recreate the mesh after projecting the points indeed back onto our sphere. Using a subdivision plug-in may be slightly throwing the perfect result off, so manually creating subdivision points on each mesh face may be in order, doing them flat against each icosahedron face: You can also start with the two other triangulated Platonic solids but those give less regular triangles: …
Added by Nik Willmore at 3:57pm on March 19, 2016
Topic: Smart First-End Component Added
ree..   First-End List Component cannot manage branches inside every dimensions..   "Smart T8" Component is developed for managing the multi dimensional data tree with first-end algorithm.   It works with path index location..   "-1" or negative numbers mean the location of item..   "0" means the location of the last path index..   positive numbers mean the location from the back..     ----   Now look at this example.. a simple 3-dimensional boxes..   In the data tree.. of {0;0;i;j} (k)   "k" is the item index.. Y direction..   "j" is the last path.. X direction..   and "i" is the level.. Z direction..   ----   When index < 0 (i.e. "-1" or negative)   "Smart T8" performs like the First-End Item Component..   It selects first items in each list and puts them out to "F"..   and in this example.. they are boxes with same Y coordinate(=0).. In the below image..   F(Red) M(Transparent Green) E(Blue) are classified by Y coordinates..       ----   When index = 0   "Smart T8" focuses on the last path index..   It selects first list of every {0; 0; i; *} set of lists.. (i.e. every levels) In this example.. they are boxes with same X coordinate(=0)..   because the last path means X grid..   In the below image..   F(Red) M(Transparent Green) E(Blue) are classified by X coordinates..           ---- When index = 1 "Smart T8" focuses on the third path index.. (i.e. 1 step from the back)   It selects first list of every {0; 0; *; j} set of lists..   Actually in this case.. they are first levels of every YZ planes.. In this example.. they are boxes with same Z coordinate(=0)..   because "Smart T8" manages levels now (index=1)..   In the below image..   F(Red) M(Transparent Green) E(Blue) are classified by levels..         ----   When index > 1.. (if it is meaningless index or out of range..)   It performs First-End List Component..   It selects only the first and end list of all lists..         ----   The "Smart T8" component works with 3 or more dimensional data tree well..   Please control the focusing index and enjoy it.. :)    …
Added by Jissi Choi to Tree8 at 2:39am on November 5, 2012
Topic: Parse error when using example Python code for REST API “Authentication failed because the remote party has closed the transport stream”
a problem with SSL. Any Ideas? I am using the following code: import json,httplib connection = httplib.HTTPSConnection('api.parse.com', 443) connection.connect() connection.request('GET', '/1/classes/MY-CLASS', '', { "X-Parse-Application-Id": "MY-APP-ID", "X-Parse-REST-API-Key": "MY-REST-API-KEY" }) result = json.loads(connection.getresponse().read()) print result I Get the Following Messages: Runtime error (IOException): Authentication failed because the remote party has closed the transport stream. Traceback: line 280, in do_handshake, "C:\Program Files\Rhinoceros 5.0 (64-bit)\Plug-ins\IronPython\Lib\ssl.py" line 120, in __init__, "C:\Program Files\Rhinoceros 5.0 (64-bit)\Plug-ins\IronPython\Lib\ssl.py" line 336, in wrap_socket, "C:\Program Files\Rhinoceros 5.0 (64-bit)\Plug-ins\IronPython\Lib\ssl.py" line 1156, in connect, "C:\Program Files\Rhinoceros 5.0 (64-bit)\Plug-ins\IronPython\Lib\httplib.py" line 3, in script Any help would be greatly appreciated! Thanks in advance! -Zach…
Added by Zachary Soflin at 9:41am on September 21, 2015
Topic: [discussion] Sky View Factor
t defined from the discussion of radiation exchange between urban surfaces and the sky in urban heat island research (See Oke's literature list below). It will be affected by the proportion of sky visible from a given calculation point on a surface (vertical or horizontal) as a result of the obstruction of urban geometry, but it is not entirely associated with the solid angle subtended by the visible sky patch/patches. So, I think using "geometry way" to approximate Sky View Factor is not correct. Sky View Factor calculation shall be based on the first principle defining the concept: radiation exchange between urban surface and sky hemisphere: (image extracted from Johnson, G. T., & Watson, 1984) Therefore, I always refer to the following "theoretical" Sky View Factors calculated at the centre of an infinitely long street canyon with different Height-to-width ratios in Oke's original paper (1981) as the ultimate benchmark to validate different methods to calculate SVF: So, I agree with Compagnon (2004) on the method he used to calculate SVF: a simple radiation (or illuminance) simulation using a uniform sky. The following images are the results of the workflow I built in the procedural modeling software Houdini (using its python library) according to this principle by calling Radiance to do the simulation and calculation, and the SVF values calculated for different canyon H/W ratios (shown at the bottom of each image) are very close to the values shown in Oke's paper. H/W=0.25, SVF=0.895 H/W=1, SVF=0.447 H/W=2, SVF=0.246 It seems that the Sky View Factor calculated from the viewAnalysis component in Ladybug is not aligned with Oke's result for a given H/W ration: (GH file attached) According to the definition shown in this component, I assume the value calculated is the percentage of visible sky which is a geometric calculation (shooting evenly distributed rays from sensor point to the sky and calculate the ratio of rays not blocked by urban geometry?), i.e solid angle subtended by visible sky patches, and it is not aligned with the original radiation exchange definition of Sky View Factor. I'd suggest to call this geometrically calculated ratio of visible sky "Sky Exposure Factor" which is "true" to its definition and way of calculation (see the paper on Sky Exposure Factor below) so as to avoid confusion with "The Sky View Factor based on radiation exchange" as discussed in urban climate literature. Appreciate your comments and advice! References: SVF: definition based on first principle Oke, T. R. (1981). Canyon geometry and the nocturnal urban heat island: comparison of scale model and field observations. Journal of Climatology, 1(3), 237-254. Oke, T. R. (1987). Boundary layer climates (2nd ed.). London ; New York: Methuen. Johnson, G. T., & Watson, I. D. (1984). The Determination of View-Factors in Urban Canyons. Journal of American Meteorological Society, 23, 329-335. Watson, I. D., & Johnson, G. T. (1987). Graphical estimation of sky view-factors in urban environments. INTERNATIONAL JOURNAL OF CLIMATOLOGY, 7(2), 193-197. doi: 10.1002/joc.3370070210 Papers on SVF calculation: Brown, M. J., Grimmond, S., & Ratti, C. (2001). Comparison of Methodologies for Computing Sky View Factor in Urban Environments. Los Alamos, New Mexico, USA: Los Alamos National Laboratory. SVF calculation based on first principle: Compagnon, R. (2004). Solar and daylight availability in the urban fabric. Energy and Buildings, 36(4), 321-328. paper on Sky Exposure Factor: Zhang, J., Heng, C. K., Malone-Lee, L. C., Hii, D. J. C., Janssen, P., Leung, K. S., & Tan, B. K. (2012). Evaluating environmental implications of density: A comparative case study on the relationship between density, urban block typology and sky exposure. Automation in Construction, 22, 90-101. doi: 10.1016/j.autcon.2011.06.011 …
Added by Grasshope to Ladybug Tools at 10:52am on February 10, 2016
  • 1
  • ...
  • 903
  • 904
  • 905
  • 906
  • 907
  • 908
  • 909
  • 910
  • 911
  • 912

About

Scott Davidson created this Ning Network.

Welcome to
Grasshopper

Sign In

Translate

Search

Photos

  • Parametric Structure

    Parametric Structure

    by Parametric House 0 Comments 0 Likes

  • Tensile Column

    Tensile Column

    by Parametric House 0 Comments 0 Likes

  • Quarter Pavilion Rhino Grasshopper Tutorial

    Quarter Pavilion Rhino Grasshopper Tutorial

    by June Lee 0 Comments 0 Likes

  • Quarter Pavilion Rhino Grasshopper Tutorial

    Quarter Pavilion Rhino Grasshopper Tutorial

    by June Lee 0 Comments 0 Likes

  • Quarter Pavilion Rhino Grasshopper Tutorial

    Quarter Pavilion Rhino Grasshopper Tutorial

    by June Lee 0 Comments 0 Likes

  • Add Photos
  • View All
  • Facebook

Videos

  • Parametric Structure

    Parametric Structure

    Added by Parametric House 0 Comments 0 Likes

  • Tensile Column

    Tensile Column

    Added by Parametric House 0 Comments 0 Likes

  • Quarter Pavilion Rhino Grasshopper Tutorial

    Quarter Pavilion Rhino Grasshopper Tutorial

    Added by June Lee 0 Comments 0 Likes

  • Circle Packs

    Circle Packs

    Added by Parametric House 0 Comments 0 Likes

  • Random Abstract 2d Pattern - Rhino Grasshopper

    Random Abstract 2d Pattern - Rhino Grasshopper

    Added by kgm 0 Comments 0 Likes

  • Inflated Diamonds

    Inflated Diamonds

    Added by Parametric House 0 Comments 0 Likes

  • Add Videos
  • View All
  • Facebook

© 2025   Created by Scott Davidson.   Powered by Website builder | Create website | Ning.com

Badges  |  Report an Issue  |  Terms of Service