rs interface og dykker derefter ned i mere komplekse parametriske modeller. Vi vil desuden arbejde med forskellige funktioner, der hjælper med til at gøre modeller mere responsive og interaktive.
Efter kurset vil du have/kende til:
Basale inputs og parametre, punkter og vektorer, og små geometriske eksempler
En forståelse for Grasshoppers interface og teorien bag den visuelle programmering
Kendskab til og forståelse af de væsentligste komponenttyper i Grasshopper
Matematiske principper, der giver mulighed for sortering gennem sandt/falsk og mindre-end/større-end udsagn
Dataflow: midlertidige og permanente data
Forene og styre data-input, samt en dybere forståelse af Grasshoppers datastyring.
Styring af lange data-lister og data-træer i Grasshopper
Eksempler på parametrisk geometri, som feks. attractorpoints
Brugen af Grasshopper som et panel værktøj, der giver mulighed for at beklæde overflader med paneler baseret på underindelinger, gradienter og attractor points
forberedelse af egne definitioner, med fortsat fokus på projektets responsibilitet.
…
on this, but to my understanding, the Δt_pr used is the same - the equations used to calculate are not. Take a look at this (from EN 7730 as well):
If I can make some wishes too; it would be cool, if you included the last local comfort metrics from EN7730 in LB/HB as well. Besides the local asymmetry there are: an equation for warm/cold floors, stratification and draught. I know, that you will need preform a CFD simulation to properly calculate stratification and draught, but the comfort equations are really simple and seeing that you have(might have) a CFD tool under way it could be useful. Anyways I think it would possible to import external generated CFD data to grasshopper.
The pictures in my previous post are from a paper called: "A simplified calculation method for checking the indoor thermal climate" by B.W. Olesen, it can be found in ASHRAE 1983, vol. 25, issue 5. I don't know if there have been any updates to it since '83.
Looking forward for the new components, and if there is anything I can help with please let me know.
/Christian
…
derstanding of the graphical algorithm editor, and then dive into more complex parametric models. We’ll also learn tricks to keep our project responsive and enjoyable to use.Course outline
covering similar content as the first part of the primer(http://www.grasshopper3d.com/page/tutorials-1)
novel material
duration: 3 days (24 hours)
Including
An understanding of the Grasshopper interface and the visual programming theory
Base parameters, large numbers of points and vectors, and small geometrical instances
Data flow
Troubleshooting definition problems and solutions
Know the main component types
Be able to join, and manage connections and trees
Expressions for both calculation and boolean creation
Understand Data Matching and casting
Managing long lists of objects within Grasshopper
Have an understanding of the functioning of Grasshopper components
Experience creating definitions
Parametric geometry examples, like attractors and list culling
Re-utilizable modeling examples: colored panelization, surface population, gradient and picture sampling and manipulation, catenary line and weaving
Spline animation examples
Getting ready to prepare own definitions in groups
More information...
…
(tree info, relationships to certain other objects, etc.) after it's been baked, so that our team can hand tool some of the results, delete certain objects, etc. I'm using the doc.objects.find(guid) function right now - which works fine when I feed a string into the VB component and set the input as a GUID, but am having a hard time casting my strings from Excel into the GUID directly in the VB component. Hopefully it's easy to do and I can whack my palm on my face, as often I do. Here's my script...I get the "specified cast is not valid" error at: Dim obj As Guid = xlSheet.Range(strGUIDColumn & I).Value.
If activate = True Then
Dim xlApp, xlSheet As Object
xlApp = System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application")Dim strSheet As String = "MEM_6"
Dim strGUIDColumn As String = "C"
Dim strDeleteColumn As String = "F"
Dim intCheck As Int16 = xlApp.Worksheets("META").Range("B4").Value
Dim I As Int16
xlSheet = xlApp.Worksheets(strSheet)
For I = 2 To intCheck + 1
Dim obj As Guid = xlSheet.Range(strGUIDColumn & I).Value <- returns my casting error
If doc.Objects.Find(obj) Is Nothing Then
xlSheet.Range(strDeleteColumn & I).Value = "X"
End If
Next
End If
thanks!…
Added by David Stasiuk at 8:05am on December 15, 2010
Simpsons episode were Bart goes into a mall and in the time he goes in and out of a shop all others have been turned into Starbucks.
I personally don't like it but you can't say they are crushing all competitors because, as far as i know, all owners of those software packages voluntarily sold their property for a good price. I would actually be more worried that an antitrust lawsuit was filed against Autodesk.
For example, this is what happened with Rockefeller's Standard Oil:
The antitrust case against Standard Oil also seems absurd because its share of the petroleum products market had actually dropped significantly over the years. From a high of 88 percent in 1890, Standard Oil's market share had fallen to 64 percent by 1911, the year in which the US Supreme Court reaffirmed the lower court finding that Standard Oil was guilty of monopolizing the petroleum products industry.[32]
The court argued, in essence, that Standard Oil was a "large" company with many divisions, and if those divisions were in reality separate companies, there would be more competition. The court made no mention at all of the industry's economic performance; of supposed predatory pricing; of whether industry output had been restrained, as monopoly theory holds; or of any other economic factors relevant to determining harm to consumers. The mere fact that Standard Oil had organized some thirty separate divisions under one consolidated management structure (a trust) was sufficient reason to label it a monopoly and force the company to break up into a number of smaller units.
To economists, "predatory pricing" is theoretical nonsense and has no empirical validity, either.
In other words, the organizational structure that was responsible for the company's great efficiencies and decades-long price cutting and product improving was seriously damaged. Standard Oil became much less efficient as a result, to the benefit of its less efficient rivals and to the detriment of consumers.
From: http://mises.org/daily/2317
(Beware, that site is very ideologically charged)…
points within the bounds of the site boundary and use each location as an attractor point controlling a variable at each point in the grid (radius of a circle/height of a cube/colour based on a gradient etc.).This would be based on proximity to the attractor points with the effect of each attractor point essentially scaled by the percentage associated with it. For example a location with 88% visitor rates would have a more dramatic effect than a location with 26% visitor rates.
I've had a bit of a play around but can't seem to get beyond the point of what is shown in basic point attractor tutorials online. I'm definitely a novice.
Here's how I figured it would be done:
1) Create a grid of source points within a boundary curve.
2) Select 18 pre-defined attractor points.
2) Measure the distance between the source points and the attractor points.
3) Invert this data so that variables increase with proximity rather than decrease.
4) Give each of the attractor points a strength value from 1-100% based on the visitor rates.
5) Use the scaled data to control a variable at each of the source points.
6) Create some way to control the drop-off rate of the effect from each point.
It is at step 3 that I get completely lost.
I hope my description is clear. Any help would be greatly appreciated,
Adam
…
oCommonSDK, I modified a working C# component that does something similar (ReduceMesh, written by Andrew Heumann). Both scripts are attached.
Aside from changing the component name and eliminating the P parameter, I made two modifications to the script:1) changed line 87 from private void RunScript(Mesh M, double P, ref object A) to: private void RunScript(Mesh M, ref object A)2) changed line 93 from: Rhino.RhinoApp.RunScript("_-ReduceMesh _ReductionPercentage " + Convert.ToString(P) + " _Enter", false); to: Rhino.RhinoApp.RunScript("_-MatchMeshEdge " + " _Enter", false);When I run the ReduceMesh component, the mesh object I feed it gets baked, the ReduceMesh command is run, the temporary object is deleted, and the reduced mesh result is returned. (Thanks, Andrew).When I run the MatchMeshEdge component, the mesh object I feed it is baked, the MatchMeshEdge command is run, but the temporary object is not deleted and no result is returned. The runtime error reads: "Sequence contains no elements (line 0)". I have a feeling that the command line string I am handing to RunScript is incomplete. When I enter it manually on the Rhino command line I see that it wants a mesh and three parameters. Of course I can hit Enter to accept the default values, but when you invoke a command through RunScript do you have to supply all parameters regardless? Also, where would I find details on the argument types that the command wants? For example, the last parameter reads "RatchetMode=On" or "RatchetMode=Off". How do I know if the type is Bool or the literal string "On" or "Off"?I am a complete novice at this so any help you can provide would be greatly appreciated! …
ey eventually recover and you can continue to working normally. This however is not very practical...
(Additional information: We have a virtualized Windows SPS environment, might this be the problem? Locally - on my hard drive - it works fine.)
Futhermore we've discovered the following bug/feature:
We export a cluster and reference it back into our .gh file, then copy the .ghcluster file to a different location and rename the copy (without opening or changing it), then also reference the copied version back into the .gh file. Now Grasshopper shows two clusters with two different file paths, but claims that they both are the same ("this cluster occurs twice in this document"). If I double click one of them, make a change and save, both clusters get changed, even though they are separate .ghcluster files.
This would follow the logic that David laid out in this entry (http://www.grasshopper3d.com/page/clusters09), that GH identifies a cluster not by its file name or location but by its internal ID.
An addition we would very much appreciate for the next GH update, would be the option to right click a referenced cluster and then not only be able to "update" it but to also to "relink" it to a new or different source.
Right now you have to rename or delete the .ghcluster file in order to relink a cluster via the update option. You can also overwrite the old cluster und update. However, sometimes we want to keep the old version or disentangle one of a clusters many instances and relink just one, with out loosing its various inputs and outputs by referencing the new version and reconnecting it.
Thanks, BB.…
f my list.I don't understand why, but I guess I must be too young user ^^In the original list, i have a path {0;0;0;4} with two index and after the random node, {0;0;0;4} has 88 index.Items are not correct?I would have a comparable structure has the right list on my jpg (photomontage...)How I can do that?Thank you in advance
…
even (0, 2, 4) then that means the point either never hit it, or went in and out again, meaning it's outside. If it hits an odd number of times, then it must have come from within originally.
The method implements this approach using the mesh bounding box, and then striking a polyline from your test point along a vector that is defined by the upper right corner of the bounding box + a vector of (100,100,100). In the case of your failing points, this is a result of their striking an edge very precisely, which gets counted as 2 hits instead of 1 (as it should be getting captured) and passing false:
Your best bet is probably to roll your own implementation, that tests for multiple vectors:
private void RunScript(List<Point3d> P, Mesh M, ref object A, ref object B, ref object C) {
BoundingBox bb = M.GetBoundingBox(false);
List<bool> inside = new List<bool>();
for (int i = 0; i < P.Count; i++) {
Polyline a = new Polyline(); Polyline b = new Polyline();
a.Add(P[i]); b.Add(P[i]);
a.Add(bb.Max + new Vector3d(100, 100, 100)); b.Add(bb.Max + new Vector3d(100, 150, 150));
int[] fa; int[] fb;
Point3d[] xa = Rhino.Geometry.Intersect.Intersection.MeshPolyline(M, new PolylineCurve(a), out fa); Point3d[] xb = Rhino.Geometry.Intersect.Intersection.MeshPolyline(M, new PolylineCurve(b), out fb);
inside.Add(xa.Length % 2 == 1 || xb.Length % 2 == 1);
checkA.AddRange(xa, new GH_Path(i)); checkB.AddRange(xb, new GH_Path(i));
}
A = inside;
}
…
Added by David Stasiuk at 10:20am on October 10, 2017