he plug-in supports intuitive design of paneling concepts as well as rationalize complex geometry into a format suitable for analysis and fabrication. The plug-in is closely integrated with Rhino 7 and is widely used for architectural and other building designers.
Download
The new PanelingTools for the new Rhino 7.2 is now available. You can access Rhino 7 evaluation and upgrades from here…
Documentation
For documentation and examples, please check:
PanelingTools Manual for detailed description of commands and options.
PanelingTools for Grasshopper Manual includes tutorials and description of PT-GH components.
Paneling Scripting page has a listing of paneling methods for RhinoScript.
Paneling Tutorials page has links to video tutorials.
Paneling Short Clips page has short video tutorials that covers the core functionality of PanelingTools.
Paneling Gallery page has users projects with PanelingTools.
Videos
**NEW** PanelingTools Webinar Course - December 2014 learn how Paneling tools works and how best to integrate it into your design process.
Paneling Tools Webinar - February 11, 2011
Paneling Tools Webinar on Vimeo
Feedback
Please tell us what you think and how you are using PanelingTools to help shape future development.
Join the PanelingTools Group in Rhino Forum and post photos, news and discussions. Make sure to tag with keyword “PanelingTools”.
For questions and feedback, contact the developer.
Source: McNeel Wiki
Keshia C. Stich
Grid Paneling Group
…
edit 29/04/14 - Here is a new collection of more than 80 example files, organized by category:
KangarooExamples.zip
This zip is the most up to date collection of examples at the moment, and collects t
ers and researchers, programmers and artists, professionals and academics who come together for 4 days of intense collaboration, development, and design.
The sg2012 Workshop will be organised around Clusters. Clusters are hubs of expertise. They comprise of people, knowledge, tools, materials and machines. The Clusters provide a focus for workshop participants working together within a common framework.
Clusters provide a forum for the exchange of ideas, processes and techniques and act as a catalyst for design resolution. The Workshop is made up of ten Clusters that respond in diverse ways to the sg2012 Challenge Material Intensities.
Applicants to the sg2012 Workshop will select their preferred cluster from the following:
Beyond Mechanics
Micro Synergetics
Composite Territories
Ceramics 2.0
Material Conflicts
Transgranular Perspiration
Reactive Acoustic Environments
Form Follows Flow
Bioresponsive Building Envelopes
Gridshell Digital Tectonics
More information about the Workshop and Clusters can be found here:
http://smartgeometry.org/index.php?option=com_content&view=article&id=116&Itemid=131
The application process will close on January 15th, 2012.
Full Fee $1500
Reduced Fee $750
Scholarship Fee $350
Fees include attendance to both the workshop and conference from March 19th-24th.
Reduced Fee and Scholarships are available only for Academics, Students and Young Practitioners, and are awarded during a competitive peer review process.
sg2012 takes place from 19-24 March 2012 at EMPAC (http://empac.rpi.edu/) and is hosted by Rensselaer Polytechnic Institute in Troy, upstate New York USA. The Workshop and Conference will be a gathering of the global community of innovators and pioneers in the fields of architecture, design and engineering.
The event will be in two parts: a four day Workshop 19-22 March, and a public conference beginning with Talkshop 23 March, followed by a Symposium 24 March. The event follows the format of the highly successful preceding events sg2010 Barcelona and sg2011 Copenhagen.
sg2012 Challenge Material Intensities
Simulation, Energy, Environment
Imagine the design space of architecture was no longer at the scale of rooms, walls and atria, but that of cells, grains and vapour droplets. Rather than the flow of people, services, or construction schedules, the focus becomes the flow of light, vapour, molecular vibrations and growth schedules: design from the inside out.
The sg2012 challenge, Material Intensities, is intended to dissolve our notion of the built environment as inert constructions enclosing physically sealed spaces. Spaces and boundaries are abundant with vibration, fluctuating intensities, shifting gradients and flows. The materials that define them are in a continual state of becoming: a dance of energy and information. Material potential is defined by multiple properties: acoustical, chemical, electrical, environmental, magnetic, manufacturing, mechanical, optical, radiological, sensorial, and thermal. The challenge for sg2012 Material Intensities is to consider material economy when creating environments, micro-climates and contexts congenial for social interaction, activities and organisation. This challenge calls for design innovation and dialogue between disciplines and responsibilities. sg2010 Working Prototypes strove to emancipate digital design from the hard drive by moving from the virtual to the actual in wrestling with the tangible world of physical fabrication. sg2011 Building the Invisible focused on informing digital design with real world data. sg2012 Material Intensities strives to energise our digital prototypes and infuse them with material behaviour. They have the potential to become rich simulations informed by the material dynamics, chemical composition, energy flows, force fields and environmental conditions that feed back into the design process.
More information can be found at http://www.smartgeometry.org
Follow us on Twitter at http://twitter.com/smartgeometry…
Added by Shane Burger at 12:29pm on December 13, 2011
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)…
hat, in accordance with this stable release, I have posted an updated version of this outdoor microclimate map example to the same link:
http://hydrashare.github.io/hydra/viewer?owner=chriswmackey&fork=hydra_2&id=Outdoor_Microclimate_Map
1. You will see that, in the new file, I now have a single component that is able to turn a zone into a "ground zone" (similar to a plenum). To clarify, both the plenum and ground zone components set all of the loads of the zone to 0 (no internal heat gain). So this means that any of the characteristics of the default office program will be negated. From your comments, Grasshope, it seems that you understand that the reason why I have a ground zone defined in this model is to account for the variation in ground surface temperatures that can occur with different objects casting shade onto the ground. Therefore, the key property that defines this zone is the construction of the top surfaces, which is now changed based on a number that you input into the Ground Zone component.
2. You are correct in understanding the need for both "set zone construction" components in the old file. Because of the zone's position below the Rhino model origin, the walls and floor are defined as underground surfaces and so I need the extra "Set EP Ground Construction" component. Admittedly, the constructions on the underground surfaces should have a minimal effect on the modeling of the surface temperature above the zone (the roof construction is most important) but it made sense to me that results would be more accurate by setting all of the constructions of the zone to the ground material. The current Ground Zone component ensures that all surfaces of the zone are assigned the ground material construction. It also ensures that all walls and floor surfaces have a ground boundary condition regardless of where they sit in relation to the rhino model origin.
3. The distFromFlrOrSrf input can take either a number representing the distance from the floor of zones at which you would like to build a microclimate map or any surface on which you would like to see temperature variation. So the input is flexible and allow you to both build micro-climate maps quickly or take a longer time building them with more customization. For a visual of what you can do by inputting surfaces into this component, see this thermal animation of a section through a building that I designed for my thesis:
https://www.youtube.com/watch?v=WJz1Eojph8E&list=PLruLh1AdY-Sj3ehUTSfKa1IHPSiuJU52A&index=3
For an example of a file using a numerical input for the microclimate map, see here:
http://hydrashare.github.io/hydra/viewer?owner=chriswmackey&fork=hydra_2&id=Indoor_Microclimate_Map
4. The component has since been renamed (sometime in early July) to be called "Honeybee_Microclimate Map Analysis". Originally, I developed the component to help me understand thermal diversity within zones but realized after building it out that the same method could be used to give deeper understandings of the outdoor environment. So, at present, it can do both indoor and outdoor microclimate maps. The only shortcoming at present is that the outdoor microclimate map uses EnergyPlus's oversimplified means of accounting for outdoor wind (a simple wind profile that does nto account for obstructions). This shortcoming will be addressed once the first stable release of butterfly is out or I manage to work in components into LB that use the botlzman lattice particle collision method to approximate outdoor wind speeds. Other than this shortcoming, you can trust that all results you are getting from these components are to a high degree of accuracy (meaning that all air temperature and MRT values are accurate).
5. Thanks for pointing this out. This is a mistake in my labeling of the file names and I will fix this before the end of today. When you use the workflow with the PMV recipe, these values are actual PMV/PPD values. When you use the Adaptive comfort recipe, these values are "degrees from neutral temperature" and "Comfortable Or Not" values. When you use the workflow with the UTCI recipe, these values are also "degrees from neutral temperature" and "Comfortable Or Not" values but they are different for UTCI than they are for the adaptive model. Specifically, the neutral temperature and comfort zone for UTCI is defined to be the same as it is in this publication:
https://www.ipma.pt/en/enciclopedia/amb.atmosfera/index.bioclima/index.html?page=utci.xml
Hope this helps and let me know if you have any more questions,
-Chris…
inner As Curve() = section.ToNurbsCurve().Offset(normal, pc, -plate, 1e-3, 1e-4, Rhino.Geometry.CurveOffsetCornerStyle.Sharp)
the error message is:
"
{0}0. Error: Het oplossen van de overbelasting is mislukt omdat dit aantal argumenten door geen enkele toegankelijke Offset wordt geaccepteerd. (line 104)
"
this is the VBA script:
"Option Strict OffOption Explicit On'Import SDK and Framework namespacesImports RhinoImports Rhino.GeometryImports Rhino.CollectionsImports GrasshopperImports Grasshopper.KernelImports Grasshopper.Kernel.DataImports Grasshopper.Kernel.TypesImports GH_IOImports GH_IO.SerializationImports SystemImports System.IOImports System.XmlImports System.DataImports System.DrawingImports System.ReflectionImports System.CollectionsImports System.Windows.FormsImports Microsoft.VisualBasicImports System.Collections.GenericImports System.Runtime.InteropServices'Code generated by Grasshopper(R) (except for RunScript() content and Additional content)'Copyright (C) 2011 - Robert McNeel & Associates<System.Runtime.CompilerServices.CompilerGenerated()> _Public Class Script_Instance Implements IGH_ScriptInstance#Region "Members" ''' <summary>List of error messages. Do not modify this list directly.</summary> Private __err As New List(Of String) ''' <summary>List of print messages. Do not modify this list directly, use the Print() and Reflect() functions instead.</summary> Private __out As New List(Of String) ''' <summary>Represents the current Rhino document.</summary> Private doc As RhinoDoc = RhinoDoc.ActiveDoc ''' <summary>Represents the Script component which maintains this script.</summary> Public owner As Grasshopper.Kernel.IGH_ActiveObject#End Region#Region "Utility functions" ''' <summary>Print a String to the [Out] Parameter of the Script component.</summary> ''' <param name="text">String to print.</param> Private Sub Print(ByVal text As String) __out.Add(text) End Sub ''' <summary>Print a formatted String to the [Out] Parameter of the Script component.</summary> ''' <param name="format">String format.</param> ''' <param name="args">Formatting parameters.</param> Private Sub Print(ByVal format As String, ByVal ParamArray args As Object()) __out.Add(String.Format(format, args)) End Sub ''' <summary>Print useful information about an object instance to the [Out] Parameter of the Script component. </summary> ''' <param name="obj">Object instance to parse.</param> Private Sub Reflect(ByVal obj As Object) __out.Add(GH_ScriptComponentUtilities.ReflectType_VB(obj)) End Sub ''' <summary>Print the signatures of all the overloads of a specific method to the [Out] Parameter of the Script component. </summary> ''' <param name="obj">Object instance to parse.</param> Private Sub Reflect(ByVal obj As Object, ByVal method_name As String) __out.Add(GH_ScriptComponentUtilities.ReflectType_VB(obj, method_name)) End Sub#End Region ''' <summary> ''' This procedure contains the user code. Input parameters are provided as ByVal arguments, ''' Output parameter are ByRef arguments. You don't have to assign output parameters, ''' they will be null by default. ''' </summary> Private Sub RunScript(ByVal p0 As Point3d, ByVal p1 As Point3d, ByVal p2 As Point3d, ByVal pc As Point3d, ByVal plate As Double, ByVal itt As Integer, ByVal dev As Double, ByRef crvout As Object, ByRef crvin As Object, ByRef sec As Object, ByRef opp As Object, ByRef div As Object, ByRef pt4 As Object) 'your code goes here… opp = "test01" Dim section As New Polyline(5) section.Add(p0) section.Add(p1) section.Add(p2) section.Add(pc) section.Add(p0) Dim normal As Vector3d = vector3d.CrossProduct((p1 - p0), (p2 - p0)) Dim area As Double Dim chicken_int As Int32 = 0 Dim XX As Double Dim YY As Double Do chicken_int += 1 If (chicken_int > itt) Then Exit Do 'Compute the section offset Dim inner As Curve() = section.ToNurbsCurve().Offset(normal, pc, -plate, 1e-3, 1e-4, Rhino.Geometry.CurveOffsetCornerStyle.Sharp) Dim edges As New CurveList(inner) edges.Add(section.ToNurbsCurve()) crvin = edges Dim sections As Brep() = Brep.CreatePlanarBreps(edges) If (sections Is Nothing) Then Exit Do opp = "test02" 'Compute the centroid of the current section Dim am As AreaMassProperties = AreaMassProperties.Compute(sections(0)) Dim ct As Point3d = am.Centroid XX = am.CentroidCoordinatesMomentsOfInertia.X YY = am.CentroidCoordinatesMomentsOfInertia.Y area = am.Area Dim dx As Vector3d = pc - ct 'Compute the error of the current centroid Dim dl As Double = dx.Length div = dl 'Update output values crvout = section crvin = inner sec = sections(0) opp = area If (dl < dev) Then Exit Do 'Adjust outline with a boosting factor. section(3) += dx * 4 Loop pt4 = section(3) crvout = section End Sub '<Custom additional code> '</Custom additional code> End Class
"…
mponent (level 1){ Exception has been thrown by the target of an invocation. TargetInvocationException}
Object: AntiprismComponent (level 2){ Method not found: 'Void Grasshopper.Kernel.GH_PersistentParam`1.SetPersistentData(**UNKNOWN TYPE**)'. MissingMethodException}
Object: PrismComponent (level 1){ Exception has been thrown by the target of an invocation. TargetInvocationException}
Object: PrismComponent (level 2){ Method not found: 'Void Grasshopper.Kernel.GH_PersistentParam`1.SetPersistentData(**UNKNOWN TYPE**)'. MissingMethodException}
Object: PyramidComponent (level 1){ Exception has been thrown by the target of an invocation. TargetInvocationException}
Object: PyramidComponent (level 2){ Method not found: 'Void Grasshopper.Kernel.GH_PersistentParam`1.SetPersistentData(**UNKNOWN TYPE**)'. MissingMethodException}
Object: LaplacianComponent (level 1){ Exception has been thrown by the target of an invocation. TargetInvocationException}
Object: LaplacianComponent (level 2){ Method not found: 'Void Grasshopper.Kernel.GH_PersistentParam`1.SetPersistentData(**UNKNOWN TYPE**)'. MissingMethodException}
Object: LaplacianHCComponent (level 1){ Exception has been thrown by the target of an invocation. TargetInvocationException}
Object: LaplacianHCComponent (level 2){ Method not found: 'Void Grasshopper.Kernel.GH_PersistentParam`1.SetPersistentData(**UNKNOWN TYPE**)'. MissingMethodException}
Object: CatmullClarkComponent (level 1){ Exception has been thrown by the target of an invocation. TargetInvocationException}
Object: CatmullClarkComponent (level 2){ Method not found: 'Void Grasshopper.Kernel.GH_PersistentParam`1.SetPersistentData(**UNKNOWN TYPE**)'. MissingMethodException}
Object: LoopComponent (level 1){ Exception has been thrown by the target of an invocation. TargetInvocationException}
Object: LoopComponent (level 2){ Method not found: 'Void Grasshopper.Kernel.GH_PersistentParam`1.SetPersistentData(**UNKNOWN TYPE**)'. MissingMethodException}
Object: SplitPolygonsComponent (level 1){ Exception has been thrown by the target of an invocation. TargetInvocationException}
Object: SplitPolygonsComponent (level 2){ Method not found: 'Void Grasshopper.Kernel.GH_PersistentParam`1.SetPersistentData(**UNKNOWN TYPE**)'. MissingMethodException}
Object: SplitQuadsComponent (level 1){ Exception has been thrown by the target of an invocation. TargetInvocationException}
Object: SplitQuadsComponent (level 2){ Method not found: 'Void Grasshopper.Kernel.GH_PersistentParam`1.SetPersistentData(**UNKNOWN TYPE**)'. MissingMethodException}
Object: BevelEdgesComponent (level 1){ Exception has been thrown by the target of an invocation. TargetInvocationException}
Object: BevelEdgesComponent (level 2){ Method not found: 'Void Grasshopper.Kernel.GH_PersistentParam`1.SetPersistentData(**UNKNOWN TYPE**)'. MissingMethodException}
Object: BevelVerticesComponent (level 1){ Exception has been thrown by the target of an invocation. TargetInvocationException}
Object: BevelVerticesComponent (level 2){ Method not found: 'Void Grasshopper.Kernel.GH_PersistentParam`1.SetPersistentData(**UNKNOWN TYPE**)'. MissingMethodException}
Object: CarpetComponent (level 1){ Exception has been thrown by the target of an invocation. TargetInvocationException}
Object: CarpetComponent (level 2){ Method not found: 'Void Grasshopper.Kernel.GH_PersistentParam`1.SetPersistentData(**UNKNOWN TYPE**)'. MissingMethodException}
Object: FrameComponent (level 1){ Exception has been thrown by the target of an invocation. TargetInvocationException}
Object: FrameComponent (level 2){ Method not found: 'Void Grasshopper.Kernel.GH_PersistentParam`1.SetPersistentData(**UNKNOWN TYPE**)'. MissingMethodException}
Object: OffsetComponent (level 1){ Exception has been thrown by the target of an invocation. TargetInvocationException}
Object: OffsetComponent (level 2){ Method not found: 'Void Grasshopper.Kernel.GH_PersistentParam`1.SetPersistentData(**UNKNOWN TYPE**)'. MissingMethodException}
Object: ThickenComponent (level 1){ Exception has been thrown by the target of an invocation. TargetInvocationException}
Object: ThickenComponent (level 2){ Method not found: 'Void Grasshopper.Kernel.GH_PersistentParam`1.SetPersistentData(**UNKNOWN TYPE**)'. MissingMethodException}
Object: WindowComponent (level 1){ Exception has been thrown by the target of an invocation. TargetInvocationException}
Object: WindowComponent (level 2){ Method not found: 'Void Grasshopper.Kernel.GH_PersistentParam`1.SetPersistentData(**UNKNOWN TYPE**)'. MissingMethodException}
…
runs perfectly in rhino, yet not in grasshopper. I am using windows XP. Thanks in advance, any help will be great!
here's the typical error:
Object: AntiprismComponent (level 1){ Exception has been thrown by the target of an invocation. TargetInvocationException}
Object: AntiprismComponent (level 2){ Method not found: 'Void Grasshopper.Kernel.GH_PersistentParam`1.SetPersistentData(**UNKNOWN TYPE**)'. MissingMethodException}
Object: PrismComponent (level 1){ Exception has been thrown by the target of an invocation. TargetInvocationException}
Object: PrismComponent (level 2){ Method not found: 'Void Grasshopper.Kernel.GH_PersistentParam`1.SetPersistentData(**UNKNOWN TYPE**)'. MissingMethodException}
Object: PyramidComponent (level 1){ Exception has been thrown by the target of an invocation. TargetInvocationException}
Object: PyramidComponent (level 2){ Method not found: 'Void Grasshopper.Kernel.GH_PersistentParam`1.SetPersistentData(**UNKNOWN TYPE**)'. MissingMethodException}
Object: LaplacianComponent (level 1){ Exception has been thrown by the target of an invocation. TargetInvocationException}
Object: LaplacianComponent (level 2){ Method not found: 'Void Grasshopper.Kernel.GH_PersistentParam`1.SetPersistentData(**UNKNOWN TYPE**)'. MissingMethodException}
Object: LaplacianHCComponent (level 1){ Exception has been thrown by the target of an invocation. TargetInvocationException}
Object: LaplacianHCComponent (level 2){ Method not found: 'Void Grasshopper.Kernel.GH_PersistentParam`1.SetPersistentData(**UNKNOWN TYPE**)'. MissingMethodException}
Object: CatmullClarkComponent (level 1){ Exception has been thrown by the target of an invocation. TargetInvocationException}
Object: CatmullClarkComponent (level 2){ Method not found: 'Void Grasshopper.Kernel.GH_PersistentParam`1.SetPersistentData(**UNKNOWN TYPE**)'. MissingMethodException}
Object: LoopComponent (level 1){ Exception has been thrown by the target of an invocation. TargetInvocationException}
Object: LoopComponent (level 2){ Method not found: 'Void Grasshopper.Kernel.GH_PersistentParam`1.SetPersistentData(**UNKNOWN TYPE**)'. MissingMethodException}
Object: SplitPolygonsComponent (level 1){ Exception has been thrown by the target of an invocation. TargetInvocationException}
Object: SplitPolygonsComponent (level 2){ Method not found: 'Void Grasshopper.Kernel.GH_PersistentParam`1.SetPersistentData(**UNKNOWN TYPE**)'. MissingMethodException}
Object: SplitQuadsComponent (level 1){ Exception has been thrown by the target of an invocation. TargetInvocationException}
Object: SplitQuadsComponent (level 2){ Method not found: 'Void Grasshopper.Kernel.GH_PersistentParam`1.SetPersistentData(**UNKNOWN TYPE**)'. MissingMethodException}
Object: BevelEdgesComponent (level 1){ Exception has been thrown by the target of an invocation. TargetInvocationException}
Object: BevelEdgesComponent (level 2){ Method not found: 'Void Grasshopper.Kernel.GH_PersistentParam`1.SetPersistentData(**UNKNOWN TYPE**)'. MissingMethodException}
Object: BevelVerticesComponent (level 1){ Exception has been thrown by the target of an invocation. TargetInvocationException}
Object: BevelVerticesComponent (level 2){ Method not found: 'Void Grasshopper.Kernel.GH_PersistentParam`1.SetPersistentData(**UNKNOWN TYPE**)'. MissingMethodException}
Object: CarpetComponent (level 1){ Exception has been thrown by the target of an invocation. TargetInvocationException}
Object: CarpetComponent (level 2){ Method not found: 'Void Grasshopper.Kernel.GH_PersistentParam`1.SetPersistentData(**UNKNOWN TYPE**)'. MissingMethodException}
Object: FrameComponent (level 1){ Exception has been thrown by the target of an invocation. TargetInvocationException}
Object: FrameComponent (level 2){ Method not found: 'Void Grasshopper.Kernel.GH_PersistentParam`1.SetPersistentData(**UNKNOWN TYPE**)'. MissingMethodException}
Object: OffsetComponent (level 1){ Exception has been thrown by the target of an invocation. TargetInvocationException}
Object: OffsetComponent (level 2){ Method not found: 'Void Grasshopper.Kernel.GH_PersistentParam`1.SetPersistentData(**UNKNOWN TYPE**)'. MissingMethodException}
Object: ThickenComponent (level 1){ Exception has been thrown by the target of an invocation. TargetInvocationException}
Object: ThickenComponent (level 2){ Method not found: 'Void Grasshopper.Kernel.GH_PersistentParam`1.SetPersistentData(**UNKNOWN TYPE**)'. MissingMethodException}
Object: WindowComponent (level 1){ Exception has been thrown by the target of an invocation. TargetInvocationException}
Object: WindowComponent (level 2){ Method not found: 'Void Grasshopper.Kernel.GH_PersistentParam`1.SetPersistentData(**UNKNOWN TYPE**)'. MissingMethodException}
…
WIP Anemone loop that builds gradually variable membrane modules) as a generic guideline related with the hot spot N1: how to feed Kangaroo with a proper "minimum" mesh.
By "minimum" I mean a mesh that "approximates" what are you doing PRIOR the kangaroo engagement. I'll post in some days the real case (a very complex one I confess) in order to understand why this is urgently required.
Add ons used: Starling, Paneling tools, MinSurf (Cerver.org), LunchBox, Weaverbird, Anemone, Kangaroo
Notes::
1. Use Stored Views.
2. A variety of gates is used in order to exploit all available (I believe) ways in order to deal with a mesh. The fact that the reduce mesh is not exposed in SDK ... well you understand.
3. Kangaroo is deactivated. Prior activation (see equivalent Stored View) choose some mesh "method" that you rate best for feeding Kangaroo. Of course real-time design is out of the question (see FormFinder).
4. LunchBox can't operate with trimmed nurbs .... thus the "equal" tri/quad mesh dream is a wishful thinking.
5. MinSurf (dealing with nurbs instead of meshes) can't work in a 1:1 basis (we have one membrane "base" and 2 rings or more).
6.For comparison the Rhino file has 2 outputs (depending on the fabric stress conditions) from FormFinder. Notice the way that FF builds up the mesh (MUCH simpler and this is the reason that FF is real-time).
7. Anemone loop is not complete yet (not all data tress required for creating a series of membrane variations are linked). Anemone is temperamental as well (lot's of crashes).
8. Plan Z is WIP.
All in all : a far better way is urgently required in order to feed Kangaroo with some reasonably minimum mesh (like a mini Evolute Tools pro preparing the mesh)..
best, Peter…
, Engineer and Researcher from France with broad programming experience. He is the author of the City in 3D Rhinoceros plugin for creation of buildings according to geojson file and with real elevation. Guillaume already created a new component: "Address to Location". It enables getting latitude and longitude values for the given address:
2) Support of Bathymetry data: automatic creation of underwater (sea/river/lake floor) terrain. This feature is now available through new source_ input of the "Terrain generator" component. Here is an example of terrain of the Loihi underwater volcano, of the coast of Hawaii:
3) A new terrain source has been added: ALOS World 3D 30m. ALOS is a Japanese global terrain data. Gismo "Terrain Generator" component has been using SRTM 30m terrain data, which hasn't been global and was limited to -56 to +60 latitude range. With this addition, it is possible to switch between SRTM and ALOS World 3D 30m models with the use of source_ input.
4) 9 new components have been added:
"Address To Location" - finds latitude and longitude coordinates for the given address.
"XY To Location" - finds latitude and longitude coordinates for the given Rhino XY coordinates. "Location To XY" - vice versa from the previous component: finds Rhino XY coordinates for the given latitude longitude coordinates. "Z To Elevation" - finds elevation for particular Rhino point. "Rhino text to number" - convert numeric text from Rhino to grasshopper number. "Rhino unit to meters" - convert Rhino units to meters. "Deconstruct location" - deconstructs .epw location. "New Component Example" - this component explains how to make a new Gismo component, in case you are interested to make one. We welcome new developers, even if you contribute a single component to Gismo! "Support Gismo" - gives some suggestions on how to make Gismo better, how to improve it and support it.
5) Ladybug "Terrain Generator" component now supports all units, not only Meters. So any Gismo example file which uses this component, can now use Rhino units other than Meters as well. Thank you Antonello Di Nunzio for making this happen!!
Basically just forget about this yellow panel:
This panel is not valid anymore, so just use any unit you want.
6) A number of bugs have been fixed, reported in topics for the last couple of weeks. We would like to thank members in the community who invested their time in testing, finding these bugs and reporting them: Rafat Ahmed, Peter Zatko, Mathieu Venot, Abraham Yezioro, Rafael Alonso. Thank you guys!!! Apologies if we forgot to mention someone.
The version 0.0.2 can be downloaded from here:
https://github.com/stgeorges/gismo/zipball/master
And example files from here:
https://github.com/stgeorges/gismo/tree/master/examples
Any new suggestions, testing and bug reports are welcome!!…
Added by djordje to Gismo at 5:13pm on March 1, 2017