ng conclusions yet. The list below roughly outlines my thought process so far (apologies for the stream-of-consciousnessish style)
The problem of debugging a Grasshopper file can be broken up into two parts. First we need better tools for people to document their own creations. Then we need tools that help us dissect existing files which may or may not be properly documented/commented/structured.
There already exist some ways to add comments and structure to files; Text Panels, Scribbles, Sketches, Groups etc. Let's call these features secondary, as they are added on top of the file itself.
Perhaps we also need primary documentation and structuring features. The only example of a primary feature which is currently available is the cluster, and it's not particularly good at making a file more readable. Layers would be an example of a primary structural feature, but the question is how to implement them.
Debugging a file basically comes down to understanding the point of each and every component. At the moment it is possible to get a sense for this by using the Preview Selected option and selecting those components one is interested in. This is a very coarse solution and I'm the first to admit it's cumbersome to use.
An incremental improvement to the 'preview one component' approach would be to always draw input geometry in blue and output geometry in yellow, regardless of connectivity. And maybe include the non-previewable data (numbers, booleans and text etc) in the viewport as an overlay. Maybe the spyglass would be a good metaphor for this feature, in that an area of focus can be dragged freely around the canvas and every individual component can be highlighted in this way.
Another approach would be to have a solution barrier. An infinite vertical line that can be easily dragged left and right across the canvas. Everything to the left of the barrier is solved and previewed, everything to the right is disabled and hidden.
Unfortunately there cannot be a step-by-step feature as the execution logic of a GH file can consist of streams that split and merge. It is therefore not always possible to say which step is the next step.
If you have any additional ideas, be they vague or specific, this would be an excellent place to put them.
--
David Rutten
david@mcneel.com
Tirol, Austria…
nome there will be one of those little [+] symbols. Also, when it finds a new best-answer-yet the I'm-giving-up counter is reset to zero.
B is the average fitness of the entire population over time. It is not a particularly interesting statistic.
C represents the portion of the population that is fitter than a single standard deviation away from the average, and E represents the portion that is unfitter than one standard deviation. In a similar fashion, D represents that part of the population that is within one standard deviation of the average. None of these are particularly interesting from the user's point of view, but it does give you a sense about the general fitness variability within a population. I.e. "all genomes are quite fit but there are one or two slackers" vs. "all genomes are absolutely terrible save for a rare few" vs. "genomes are pretty well distributed along the fitness spectrum"
The vertical blue bar indicates that you currently have generation 17 selected. A 'population' of genomes evolves over time and every time-step is called a 'generation'. If all goes well, the fittest individuals in any specific generation are fitter than the fittest individuals from the previous generation. If this doesn't happen -say- 20 generations in a row, the solver will abort the search.
A single generation contains a fixed number of genomes or individuals. When you select a generation, those individuals will be displayed in the bottom three graphs. On the left you see a 'similarity representation' of this generation. The closer two dots are the more similar their genetic make-up. Black dots represent genomes with offspring, red crosses represent genomes that did not contribute to the next generation.
In the middle you see a multi-dimensional-point-graph. Each slider that is being manipulated by Galapagos is represented by a vertical line. Each genome is then drawn as a polyline connecting these vertical lines at the percentage of the slider value they all have. This representation shows not just clusters of similar genomes, it also shows you which slider layout they roughly have. You can select genomes in this graph.
On the right is a list of genomes (sorted from fittest to least fit) with the fitness value written next to it. The green bands are once again indicative of the slider layout of each genome, so if two capsules look alike, they have a similar slider layout.
--
David Rutten
david@mcneel.com
Tirol, Austria…
Added by David Rutten at 3:00pm on November 18, 2013
rid that works on the left and/or right edge of the components, so that it's easier to align them (similarly to the align functions that show up when multiple objects are selected)
Overall, I think we'd just need a basic grid for alignment, so whatever is easy/quick to implement might be good enough.
4) great, I didn't know about aliases - that pretty much answers my question.
Related to this, when I press F4 and search for a component, if the mouse/pen pointer is above the list, when I press enter Grasshopper will insert the component under the pointer, and not the one I have found with the keyboard. Am I missing something? In case could it be fixed?
As a side note, at the moment the keyboard focus is always on the Rhino Command Line. Would it be possible to optionally change the focus when the Grasshopper window is active so that we can insert new components just by typing, without pressing F4 or doubleclicking? I just find myself constantly using the keyboard to insert components, so that'd be a very nice timesaving.
5) Your idea would be great to manage complex panels and I think would be very nice to have.
However I was thinking of a different workflow, that could be useful - for instance - when working with several objects in Rhino that are referenced in Grasshopper as basis to create more complex objects.
For example: I have three different surfaces that are used to create framed grille elements. It would make sense to select these surfaces in Rhino and access to a panel that shows the element properties (for example frame dimensions, type of grille, etc.) - similarly to the property panel in Rhino.
Additionally, If I need to create a new grille element from another Rhino surface, I could just duplicate the RPC component along with the definition without the need of manually publishing all the parameters to a new RPC group. I hope this makes sense.
I understand this may not be an "urgent" feature, however I find that working with RPCs is very pleasant so I'd really like to see this feature expanded in some way :-)
6) Just perfect :-)
Thanks again David!
Marco
…
he results are accurate enough.Good to go!Current working directory is set to: C:\002_VIDEO\02_UNI\TU_GRAZ\01_DISSERTATION\02_RESEARCH\08_POMODORO\01_SIMULATION_MODEL/03_HONEYBEE\VF_00\gridBasedSimulation\start cmd /c C:\Users\paratufello\AppData\Roaming\Ladybug\unnamed\annualSimulation\unnamed_7_DS.batWMIC PROCESS get CommandlineWMIC PROCESS get CommandlineWMIC PROCESS get Commandlinestart cmd /c C:\Users\paratufello\AppData\Roaming\Ladybug\unnamed\annualSimulation\unnamed_7_DS.batWMIC PROCESS get CommandlineWMIC PROCESS get CommandlineWMIC PROCESS get Commandlinestart cmd /c C:\Users\paratufello\AppData\Roaming\Ladybug\unnamed\annualSimulation\unnamed_7_DS.batWMIC PROCESS get CommandlineWMIC PROCESS get CommandlineWMIC PROCESS get Commandlinestart cmd /c C:\Users\paratufello\AppData\Roaming\Ladybug\unnamed\annualSimulation\unnamed_7_DS.batWMIC PROCESS get CommandlineWMIC PROCESS get CommandlineWMIC PROCESS get Commandlinestart cmd /c C:\Users\paratufello\AppData\Roaming\Ladybug\unnamed\annualSimulation\unnamed_7_DS.batWMIC PROCESS get CommandlineWMIC PROCESS get CommandlineWMIC PROCESS get Commandlinestart cmd /c C:\Users\paratufello\AppData\Roaming\Ladybug\unnamed\annualSimulation\unnamed_7_DS.batWMIC PROCESS get CommandlineWMIC PROCESS get CommandlineWMIC PROCESS get Commandlinestart cmd /c C:\Users\paratufello\AppData\Roaming\Ladybug\unnamed\annualSimulation\unnamed_7_DS.batWMIC PROCESS get CommandlineWMIC PROCESS get CommandlineWMIC PROCESS get Commandlinestart cmd /c C:\Users\paratufello\AppData\Roaming\Ladybug\unnamed\annualSimulation\unnamed_7_DS.batWMIC PROCESS get CommandlineWMIC PROCESS get CommandlineWMIC PROCESS get Commandlinestart cmd /c C:\Users\paratufello\AppData\Roaming\Ladybug\unnamed\annualSimulation\unnamed_7_DS.batWMIC PROCESS get CommandlineWMIC PROCESS get CommandlineWMIC PROCESS get CommandlineRuntime error (IndexOutOfRangeException): index out of range: 0Traceback: line 271, in script…
is set to: C:\002_VIDEO\02_UNI\TU_GRAZ\01_DISSERTATION\02_RESEARCH\08_POMODORO\01_SIMULATION_MODEL/03_HONEYBEE\VF_00\gridBasedSimulation\start cmd /c C:\Users\paratufello\AppData\Roaming\Ladybug\unnamed\annualSimulation\unnamed_7_DS.batWMIC PROCESS get CommandlineWMIC PROCESS get CommandlineWMIC PROCESS get Commandlinestart cmd /c C:\Users\paratufello\AppData\Roaming\Ladybug\unnamed\annualSimulation\unnamed_7_DS.batWMIC PROCESS get CommandlineWMIC PROCESS get CommandlineWMIC PROCESS get Commandlinestart cmd /c C:\Users\paratufello\AppData\Roaming\Ladybug\unnamed\annualSimulation\unnamed_7_DS.batWMIC PROCESS get CommandlineWMIC PROCESS get CommandlineWMIC PROCESS get Commandlinestart cmd /c C:\Users\paratufello\AppData\Roaming\Ladybug\unnamed\annualSimulation\unnamed_7_DS.batWMIC PROCESS get CommandlineWMIC PROCESS get CommandlineWMIC PROCESS get Commandlinestart cmd /c C:\Users\paratufello\AppData\Roaming\Ladybug\unnamed\annualSimulation\unnamed_7_DS.batWMIC PROCESS get CommandlineWMIC PROCESS get CommandlineWMIC PROCESS get Commandlinestart cmd /c C:\Users\paratufello\AppData\Roaming\Ladybug\unnamed\annualSimulation\unnamed_7_DS.batWMIC PROCESS get CommandlineWMIC PROCESS get CommandlineWMIC PROCESS get Commandlinestart cmd /c C:\Users\paratufello\AppData\Roaming\Ladybug\unnamed\annualSimulation\unnamed_7_DS.batWMIC PROCESS get CommandlineWMIC PROCESS get CommandlineWMIC PROCESS get Commandlinestart cmd /c C:\Users\paratufello\AppData\Roaming\Ladybug\unnamed\annualSimulation\unnamed_7_DS.batWMIC PROCESS get CommandlineWMIC PROCESS get CommandlineWMIC PROCESS get Commandlinestart cmd /c C:\Users\paratufello\AppData\Roaming\Ladybug\unnamed\annualSimulation\unnamed_7_DS.batWMIC PROCESS get CommandlineWMIC PROCESS get CommandlineWMIC PROCESS get CommandlineRuntime error (IndexOutOfRangeException): index out of range: 0Traceback: line 271, in script…
d the file seems to be running well now (see attached GH file). I question whether you need to include such detailed geometry to get an accurate result but the components can handle it if you are willing to wait a long time for the simulation to run (it took 21 minutes to run a single month on my fairly high-power machine).
For a single-zone model like this, you really do not need an airflow network and I would just use the simple bouyancy driven orifice equation available in the "Set EP Airflow" component. Generally, I prefer this simple method in these cases because it is much easier to understand what is going on and what the assumptions are. They also make clear that the major aspects of your "form" that will increase/decrease your airflow is the area of openings, the vertical height distance between the inlet and outlet, and the minimization of any screens or internal surfaces that can cause friction. So you don't really need to run a simulation to design a facade with good airflow. You just need it to make sure that it is working as you intend it.
I can confirm that assuming a double-skin facade as a single zone is a decent assumption in most cases. However, there are a few things that you have to fix in your model to make this assumption work. First, you need to use the glazing based on ratio component to assign glazing to your outdoor elements (I imagine that this complex facade is supposed to be glazed). You can see this in the attached file but you need to separate out your mullion surfaces first. Next, you need to get rid of all the lighting and internal heat gains of the zone. You can do this easily with the EP Plenum component in the file. Lastly, you really need to include the building zone behind the double-skin facade zone since there is probably going to be a lot of heat flow in that direction, especially if this occupied zone behind the facade is conditioned. This tutorial walks you through setting up a multi-zone model (https://www.youtube.com/playlist?list=PLruLh1AdY-SgW4uDtNSMLeiUmA8YXEHT_).
Finally, I would be wary of DesignBuilder's CFD engine. It is not validated and I don't think that I would really trust it with such complex geometry. Using something validated like OpenFOAM, Phoenics, Fluent, etc. would be much safer.
-Chris…
e document and all expressions in the same and all nested documents.
So you can have a slider which is called @width (let's assume for the time being everything with a @ prefix becomes a global variable, which I don't particularly like) and then width becomes available in all expressions (even expressions inside input parameters).
This is a mockup, it's not actually working.
I've made sure that expressions in GH2 can handle remote variable names (or rather, I've made sure that code which runs an expression can resolve variable names)*.
There are several problems with this approach still:
It makes it hard to see (for users) where data is coming from and where it's going to.
It makes it hard to see (for code) where data is coming from and where it's going to.
It makes it more difficult to copy paste chunks of a network.
It makes it more difficult to design document agnostic clusters.
It's not entirely clear what should happen if a global datatree is used in an expression. In the example above, what if @Width is not a slider but a tree of numbers containing 300 branches and 100k values? Should the expression run 100k times?
Major benefit of course is that it will allow people to drastically cut down on wires, which is what ultimately chokes a large file. It's not a large amount of components that make a file hard to read, it's having too many wires. Unfortunately global variables will also make it possible to create very hard to read files.
tl;dr
Yes I'm trying very hard to get this to work in GH2. Numerous problems (both logically and user-interface wise) remain unsolved.
* I've also rewritten expressions to allow for multi-line C#/VB code (python will probably follow suit some day), so they'll be a lot more powerful and a lot faster.
…
gh I implemented this polygon-plotting feature on the Ladybug Psych Chart, I am very skeptical of it as a good method for using the psychrometric chart in a design process. Personally, I feel that the way we should really be testing strategies with the psych chart is by running an energy simulation with the feature in question and plotting the temperature/humidity results on the chart as I do in this video:
https://www.youtube.com/watch?v=0DK6_9qzq3w&list=PLruLh1AdY-Sho45_D4BV1HKcIz7oVmZ8v&index=8
This said, I understand that we don't always have enough information in early design to build a small energy model but we still need a back-of-the-envelope idea of strategies to explore. And, so long as we clearly know the limits of some of these strategies (like evaporative cooling being clearly defined by a line of constant enthalpy), I can accept this polygon-plotting as a suitable method. However, some of the limits of the climate consultant polygons make absolutely no sense to me (or they at least need to be re-worded to reflect what the polygons are actually showing). As an example, the "Sun Shading of Windows" polygon of Climate Consultant has always seemed to arbitrary to me. The question of whether or not you want shading is intricately tied to the glazing ratio and orientation of your building and it just seems wrong to generalize this very complex variable as a single polygon separate from any real geometry.
Still, if anyone makes a good case for a new polygon here, I will implement it. I will admit that I am on the sidelines about a passive solar polygon as well as a 2-stage evaporative cooling polygon. If someone explains a good method for defining these polygons with a good reason for the thresholds (ie. what radiation value should be used to define solar heating potential), I will most likely be on your side.
The adaptive comfort ventilation polygon on the new Climate Consultant sounds like it is useful and I can implement it if anyone seconds a demand for it here.
I will also say that "Humidification Only" and "Dehumidification Only" polygons already exist on the current Psych chart if you plug in a text string that says these words to the passiveStrategies input of the chart. I didn't end up putting them on the PassiveStrategyList component because they seemed really obvious to me and not so useful. I can easily add them in to the StrategyList component if anyone seconds a demand for it here.
-Chris…
button within the Smooth Area command, so I merely duplicated the import of your STL as 3D pixel clay, manually selected the hole edge area with the haptic arm tool being trapped inside the body to make it easy, and then smoothed a bit the resulting automatic fill-in that Defeature provided, after Boolean subtracting away the original form from the patch:
To avoid huge meshes from the uniform Freeform clay 3D voxels, there is a Reduce For Export command that I used.
This likely 3D printed titanium part wouldn't just click in place like a jigsaw puzzle so that's an issue, due to all the small undercuts within the joining line.
How to do this in Grasshopper? Well.... Various hacks come to mind and I'll think about it over time, but I know of no ready made solution.
…
Added by Nik Willmore at 8:51pm on November 19, 2015
or 3. What is important is the direction and position of end curves (where a point is connected to only one line). The direction will give the orientation of the foot. The position its position as it is used as Anchor in Kangaroo.
So you will have this mesh. There are some mesh overlaps, which are not important if points are not coincidents.
U and V curves are used for springs. Mesh is used for inflation. Points (from mesh or lines for gravity).
With no inflation (don't use it at the beginning), constant stiffness for springs and not cutoff the shape is like that :
In order to have more equal size in lateral I apply a cutoff. I also add differents strength of string on u (along legs) direction, I use genome (grafted) in order to have multiple sliders. After that a bit of inflation and it is done.
…