ing results and I think it is based on the assumption of small displacements. That’s why I want to try with LaDeform.
But doing this I met some problems. I tried to experiment it on the small examples that are provided with Karamba:
1.LaDeform in load-controlled behavior
I know Karamba has mainly been created make form-finding and not properly precise calculations, but I’d like to evaluate deformations of my structure under certain loads (load-controlled). It is said to let it in Default value for MaxDisp (-1).
[Rhino view for deflection of the rope]
In this example derived from a Karamba example (Large_Deformation_Rope.gh), the programs shows different ways to get approximately equal max deflection. But, getting into it, I realized Load Multiplier for gravity is different from one model to another (-3.237 for Analyze TH1 and -134 for LaDeform). So what is the interest of the example if the quite similar shape of deflections are not got under the same loadings? (quite different loadings indeed)
Doesn’t it show on the contrary that LaDeform algorithm does not work properly, if you need to change the load multiplier?
The Grasshopper file is shown below.
2.MaxDisp
When I use the model is “max disp”, I command the deformation, but how can I get the value of the virtual force exerted (which I don’t know because it is now imposed)? What is its link with the imposed deflection?
Otherwise I can’t figure how to use it with displacement-controlled loading
3.Iterative process
As it seems impossible to use LaDeform process, I tried to test it by iterations, as you recommend it on the forum, saying that it is equivalent to an iterative Analyze Th1 process.
I tried to reproduce this loading but the result is not very enthusiastic as you can see. The Rhino file shows the progressive loading, with the corresponding Grasshopper files, where I
- disassemble the model,
- get the previous deformed model
- put in another part of the load,
- re-assemble and then calculate it on the previous deformed shape.
Do you have any idea why the answer is not the same ? (LaDeform seem to give like 5 times less for the same loadings) (and even controlling it by displacements the shapes do not fit the principle of the algorithm would let think)
[RhinView for Iterative process]
First step by analyze Th1, and result by LaDeform
4.Analyze Th1 after LaDeform?
Some tutorials of Karamba show that an analysis with Analyze Th1 is sometimes made immediately after a calculation in large deformations. What is its reason? It seems to sometimes change considerably the result. What is the sense of such an operation? Would it mean that LaDeform is not trustworthy?
ð My question is then: is there a way to make the use of LaDeform for other purposes than form-finding affordable and coherent? If I mistake using it, where?
Thank you very much for your help,
…
th the most crucial and imposing challenges that Mexico City faces and the ways in which architecture and urbanism can shape the metropolis at different scales. In these sense the progamme sees the city as a laboratory where the virtual and experimental tradition of the Architectural Association finds a fertile and concrete ground for the application of its methodology in Mexico.
“Manufactured Landscapes/Manufactured Urbanities” explores the metropolitan condition understood as a manufactured process by and for human beings. Henceforth the traditional opposing concepts, artificial vs nature, are replaced under the premise, nature does not exist, where nature is not natural but naturalised and the artificial is not an external or impose construct but manufactured intrinsically.
With this as a starting point the programme will study 2 instances of Mexico City’s “Manufactured Landscapes/Manufactured Urbanities”: The ravines in the west of Mexico City, last bastion of the existing “Nature” and its crucial role in the viability of Mexico City and social housing, as the fundamental construct of the “artificial” habitat in the metropolis´s urban tissue. These “Manufactured Landscapes/Manufactured Urbanities” and the ways in which they are designed, produced, reinvented regenerated, show a vast spectrum representative of the crucial urban conditions to be address and therefore they posed an enormous urban and architectonic challenge to confront in order to apply contemporary design methodologies.
To tackle the complexities of the “Manufactured Landscapes/Manufactured Urbanities”, the programme will immerse students and staff in a 10 day intensive workshop within a multidisciplinary environment where national and international experts from various fields will enrich their proposals. Students will work in architecture and/or urban scale teams and will critically assess the impact of their multiple scales interventions.
A backbone of lectures, talks and seminars, including local and international speakers, are designed to broaden and reflect the relevance and the importance of the topic for Mexico City. Finally a public exhibition of student’s work will be held at Centro Cultural de España in autumn 2013.
…
ectual property that goes nowhere:
In my opinion it's very dificult to determine when someones intelectual work becomes actual property that you should be able to protect.
There's a big difference between intelectual property and other types of scarce property (like a computer, a chair, etc.). Usually, its a good idea that scarce resouces are bought and sold in the market instead of sharing them because the price mechanism (supply and demand) determines its best possible use in that given moment. Intelectual property on the other hand is not scarce once it has been created, so if a 5 year old with an internet connection downloads a Grasshopper definition i created, it's not preventing an architect to use it for a more suitable purpose. Just like, in a practical sense, the more air I breath doesen't mean the less less air other people have left to breath, because there is so much air it could be asumed (today, at least) that the abuncance is infinite. So trading air in the maket place is nonsensical.
The only reason for copyright and patent laws to artificially make scarce a particular piece of intelectual property is so that people have an economic incentive to innovate and create new intelectual property. The advances in inovation should offset the artificial scarcity.
If that last point is true, it should be a good thing that people are not giving things up for free but rather selling them because it promotes inovation, but I'm personally not sure if this is true. Probably McNeel will agree to the last point on some extent and say that maybe patent laws go too far but copyright laws that protect Rhino and Grasshopper (even though right now it's free, it still 'owned' by McNeel) should be in place.
So I end up as I started, it's very dificult to determine when its a good idea (not just for an individual but in general) to sell or share this stuff.
If someone is interested in an extreme anti intelectual property rant from someone that otherwise defends private property, see this guy: http://www.youtube.com/watch?v=oRqsdSARrgk
…
However I feel that the rhinoscriptsyntax command curvecurveintersection gives a really complex output repeating the same intersection for each curve considered, and it seems to me also having some problems with the tolerances. It would be really nice to have a command which would give out directly just the intersection as a list of points just exactly how it happens when you run the "intersect" command in the usual interface of rhino.
However, I tried to make a function, even if it is far from being accurate.
import rhinoscriptsyntax as rs
def intersect (crv1,crv2,tol): divisions = 1000 pts1 = rs.DivideCurve(crv1,divisions) outpts = [] for i in range(0,len(pts1)): par = rs.CurveClosestPoint(crv2,pts1[i]) pt2 = rs.EvaluateCurve(crv2,par) dist1 = rs.Distance(pts1[i],pt2) if dist1 < tol: if len(outpts)>0: print "it is" index2 = rs.PointArrayClosestPoint(outpts,pts1[i]) dist2 = rs.Distance(pts1[i],outpts[index2]) print dist2 if dist2 > tol*5: outpts.append(pts1[i]) else: outpts.append(pts1[i]) return outpts
crv1 = rs.GetObject("crv1",4)crv2 = rs.GetObject("crv2",4)
pts = intersect (crv1,crv2,.01)
if pts: rs.AddPoints(pts)
don't know if someone has better ideas/solutions.
Just to give an overall idea my main goal was to sample (part of) a surface with equal length segments. To do so i put spheres equally spaced in one direction, than get their intersection with the surface (intersect brep = curves) than starting from one sphere and its intersection (curve) in the other direction get the intersection between the two curves (the curve curve intersection) and draw another sphere from there and so on.
I don't know if it is a conceptual problem or a problem of memory but it looks the iteration at a certain point just stop working, and the intersections, no matter what the tolerance, start to fail.…
ld see were the set of basic tutorials. I've run through a few other folk's video tutorials also.
The test case I chose, I picked because it is a super simplification of an actual space I'm trying to model (a large school sports complex - see below). Ive modelled it as a closed volume, with a few solid objects inside it, and it is a much less box-shaped space, with a ceiling that is not flat, and a significant lattice of acoustic panelling that encloses the roof trusses.
the volume of this space is around 50000 cubic metres, which if I followed the guidelines o0f 50-100 rays per cubic metre, would be 2.5 - 5 million rays. I ran a simulation on the test simplified box space with 100k rays, which took about 2 hours running on a macbook pro booted into windows. Perhaps I need to find a much more serious machine to run this on. would it be a reasonable assumption to think that as more rays are added, the results would converge on a particular solution? if so, if you had to take a guess, how many rays/m3 would be required to get a solid estimate of reverb time +/- 0.1s?
I don't mean to imply that Pachyderm isnt up to scratch - simply that I'm trying to find some way of determining whether a given set of simulation parameters are going to give a result that will be enough to make decisions about surface materials and treatments that will be required. I tried a bunch of different methods and simulation parameters to see if they were even remotely similar, and unsurprisingly, they werent. I'm not an acoustic engineer, I'm an architect who has studied some acoustics in addition to my regular subjects. I know enough to be dangerous, but I'm trying to convert that into enough to be useful. :). I'm totally open to any advice anyone might offer.
One last thing, could you confirm that the T-30 parameter is T-30 (and so needs to be doubled to get RT60)
Thanks for responding,
Ben
…
ys to make use of it.
What it does...
This plug-in allows for one to "connect" a Rhino document with
Grasshopper documents (referred to throughout the plugin as pairing) so
that you can remember which Grasshopper documents are used or reference
data from the Rhino document
How to use it...
Right now, the plug-in is just one command "PairGHFiles" which has
five(5) different options.
PairAllActiveGHDocs - This option pairs all of the documents that are
currently active in the GH Editor to the current Rhino document
PairSelectedGHDocs - This option shows a dialog that allows you to pick
from all the currently active documents in the GH Editor. The selected
documents will be paired to the current Rhino document
OpensAllPairedGHDocs - Opens all the GH Documents that are currently
paired with the Rhino Document
RemovePairedGHDocs - Shows a list of the currently paired GH Documents
and allows you to select which ones to remove.
CurrentlyPairedGHDocs - Prints to the command line all of the GH
Document paths that are currently paired to the Rhino Document.
The plug-in automatically saves all the necessary data, so you don't
need to remember to save any additional files. Do keep in mind that
only GH documents that have been saved and have a valid path will be
able to be paired to the Rhino Document.
Installation
Place the rhp file in a safe, static locataion, then drag and drop it on
top of a running instance of Rhino. Or run the PlugInManager command,
click the Install button towards the bottom of the window, and choose
the rhp file.
If anyone has any questions, feedback, suggestions, or issues, feel free
to post here or email me. Also, for people looking to do the "opposite"
of this (pairing a Rhino Document to a GH Document), check out Visose's
post below.
http://news2.mcneel.com/scripts/dnewsweb.exe?cmd=article&group=rhino&item=353734&utag=
This plug-in is provided without any written or expressed guarantee. By
downloading and installing the plug-in you release the author of any
liability in regards to anything this plug-in may or may not do.
Best Regards,
Damien
Develop | Research | Design
e| damien[AT]liquidtectonics.com
w| liquidtectonics.com…
Added by Damien Alomar at 12:27pm on October 26, 2010
ss 2010.
It is mainly to understand how to create the relationship between rhino / vb.net / rhinocommon, somewhat how grasshopper works.
The error which comes up is the following:
Could not load file or assembly 'RhinoCommon, Version=5.0.15005.0, Culture=neutral, PublicKeyToken=552281e97c755530' or one of its dependencies. The system cannot find the file specified.
It seems to be an issue with the RhinoCommon.dll file.
I am loaded this and made sure the Copy Local was false.
David you mentioned "
To make a .NET plugin for Rhino5 (rhp) you need to reference only RhinoCommon.dll and make sure you don't 'Copy Local'.**"
Now am I going about this the wrong way? Because the setup which I'm doing now is building a windows application file not a rhp. I would assume that you would be able to create an application in this manor to run operations in rhino. Perhaps I am wrong.
I have a gut feeling that the setup to create a plug in much more comples then just importing the rhino, rhino.geometry, rhino.collections libraries. Would you have to create some type of link to the rhino active window/application? Any thought, insights, or greatly appreciated when all have some free moments.
Many thanks as always!
…
Added by Madu Mohan at 10:35pm on January 28, 2011
each space needs to be created out of 4 sweeps, otherwise sweep does not work. I tried loft, but it only works in the direction of one section curve.
One definition uses 4 planes (floors) as basis since spaces interact with each other vertically.
I started applying grasshopper definitions to surfaces in order to bake them. I managed to bake first four components... ...and then at the fifth one all the sudden the sweeps were not as clear as in the previous ones.
The curves just go crazy somewhere near the intersection point. I don't have a clue what could have gone wrong all the sudden, because I haven't changed the definition or any of the sliders.
This is very odd, because even when I open a new rhino file, create new surfaces and try applying the most basic definition for just one suspended space that i know worked a couple of hours ago, same thing happens.
Maybe it is some overall setting either in rhino or grasshopper that went crazy... Could anyone please assist me with this?
I am attaching two snapshots (one is the part of the gh definition where I am suspecting something went wrong and the other is a rhino snapshot of one component)
Thank you so much in advance!
Best
Luka…
ond class to my c# Project to get a second Component, which doesn´t work. when i load the .gha file, only my first component appears.
so i have a C# Project with two classes like this:
namespace myUtilities{ public class My1stComponent : GH_Component { public My1stComponent() : base("My1stComponentName", "MFC", "do something", "myTab", "my1stToolBox") { } protected override void RegisterInputParams(GH_Component.GH_InputParamManager pManager) { //myInputs } protected override void RegisterOutputParams(GH_Component.GH_OutputParamManager pManager) { //myOutputs } protected override void SolveInstance(IGH_DataAccess DA) { //myAlgorithm }
public override Guid ComponentGuid { get { return new Guid("88e6231b-d998-4de2-85dc-451b0158c599"); } }
namespace myUtilities{ public class My2ndComponent : GH_Component { public My2ndComponent() : base("My2ndComponentName", "MSC", "do something else", "myTab", "my2ndToolBox") { } protected override void RegisterInputParams(GH_Component.GH_InputParamManager pManager) { //myInputs } protected override void RegisterOutputParams(GH_Component.GH_OutputParamManager pManager) { //myOutputs } protected override void SolveInstance(IGH_DataAccess DA) { //myAlgorithm }
public override Guid ComponentGuid { get { return new Guid("c5aaf8ea-3a02-4d6e-86ee-a8e35ba2b96d"); } }
Can anybody tell what´s wrong about that?
Another Problem i have is to to get my own icon. i added one to my c# Project like this:
protected override Bitmap Icon { get { return myUtilities.Properties.Resource_icon.myFirstComponent; } }
In Rhino 5 my icon appears, but not in rhino 4 :(.
Thanx for your answers.
…
Added by max wittich at 8:00am on September 17, 2012
h all the documentation and code samples I can find. I'm running the latest build of Rhino 5, 64-bit, with the latest Grasshopper plugin installed.
To get the Grasshopper plugin object, I call the following:
dynamic gh = RhinoApp.GetPlugInObject("Grasshopper");
My code then uses the plugin object instance to open a Grasshopper project file, bind data to parameters, run the solver and bake the resulting data. No problem (well, no problem after I spent a couple of hours trying to guess the method names and parameters exposed by Grasshopper plugin object....)
I'm a software engineer and despise the lack of strongly-typed variables at design time so I figured there must be a better way...
At runtime, I see that the dynamic plugin object is actually an instance of Grasshopper.Plugin.GH_RhinoScriptInterface. So I added a reference to the Grashopper assembly to my plugin project and tried doing a cast of the dynamic gh variable to a GH_RhinoScriptInterface instance like this:
Grasshopper.Plugin.GH_RhinoScriptInterface ghInterface = gh as Grasshopper.Plugin.GH_RhinoScriptInterface;
However, after adding just this one single line of code without changing anything else (i.e., my code still references the dynamic gh variable everywhere), I get an error about a bunch of "Unrecognized Objects" when I call gh.OpenDocument():
No idea what I might be doing wrong, but this sure seems like something that should work correctly.
…