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
…
te some cut sheets, but not to optmize material, rather define some cut lines. Everything that I am cutting is made of planar wood elements, but there are very specific geometries (mostly straight lines) and I have to put tolerances and radiasas at the corners in order to cut on the cnc mill. Spending time to figure out how to automate is necessary, but I am stuck!
One thing the definition is doing is taking my brep modeled components in rhino and makking them into 2d close curves and laying them side by side. It works...not ideal as its not layed out in a sheet, but that is not the most important part.
Another particular problem is that you will see some notches in the curves, which other pieces will slip into, so different slots need different specific offsets (making them larger) as a toelrance to allow for material play. This I don't even know how to set up so maybe it will just have to wait.
THE MAIN QUESTION, and super important would be, LIFESAVER:
At all 'inward' corners...which I think will always mean concave corners (most are 90 degrees, but are within to sides, instead of a corner sticking out). I'm sure its obviousy, but the reason being the outward corners a circular dril bit can cut, but inward ones need an arc profile extended beyond where the corner of the other piece will fit into. The drill bit i am using is 6mm, so 6mm diamters arcs is what i'm working with.
I have managed to put such an arc at every vertices of each cut piece. The problem being some stick outward isntead of cutting into the piece. So each one needs to be orieneted correctly. Ideally they would also only draw into inward corners, but I can always delete them out. I think maybe I am missing a more logical mathematical way of defining?
For these geometries it is not very important which side the half circle arc in on in the inward corners, but I also have some geometries that I will have to control where the circles face according to the rest of the cut piece.
The cutouts in the middle of the pieces that are curves do not need such corners obviously.
The picture is an example drawn
I hope this isn't too specific and long. in general though automating fabrication, and controling pracitcal math and orientation problems like this is itnersting to me!
THANKS…
perienced with grasshopper, but so far I've managed to combine the following:
Giulio Piacentino's "Catenary arch from height" script
Pirouz Nourian's "Mobius" script (Obtained from a friend)
End Result:
Here's where I'm stuck: I want the mobius twist to revolve around the midpoint of the arch, but the script uses the input values to determine the endpoints, resulting in a weird sinuous shape when viewed from above. Also, the secondary end points (generated by the mobius script, determining the width of the surface) are generated by default along the z axis, resulting in an arch that only touches the "ground" at two points. I attempted to work around this issue by trying to force the zHeight parameter to correspond with the y axis (thus rotating the arch 90 degrees so it would lay "flat"), but the script interprets the third point as a value and not as an actual point to bisect. I thought this might be an issue with the C# component that I obtained from Giulio Piacentino's script, so I attempted to tinker around with the source code. Unfortunately, I'm not fluent in C# so I only managed to mess everything up (I've since recovered the code from the cache). Anybody got some ideas? -BC …
onsidered period.
Even if the end of July for the mediterranean climate is not the best period to perform an adaptive comfort analysis (it's just a pretest to define a LB model) I want to refine the Adaptive comfort Chart (AC) by changing the external air temperature data imported from the .epw file with that of monitored data as reported here below:
Where the monitored ext air temperature are in this form (green panel below):
I have used the comfortPar component to set the following parameters:
Adaptive chart as defined by EN 15251
90% of occupants comfortable
the prevailing outdoor temperature from a weighted running mean of the last week
fully conditioned space (even if it is not properly in line with AC as already discussed)
The question is this: the AC component could correctly apply the code below if there is only a list of external temperature data for a restricted period (without indication about the limits of this period) and not for an entire year?
else: #Calculate a running mean temperature. alpha = 0.8 divisor = 1 + alpha + math.pow(alpha,2) + math.pow(alpha,3) + math.pow(alpha,4) + math.pow(alpha,5) dividend = (sum(_prevailingOutdoorTemp[-24:-1] + [_prevailingOutdoorTemp[-1]])/24) + (alpha*(sum(_prevailingOutdoorTemp[-48:-24])/24)) + (math.pow(alpha,2)*(sum(_prevailingOutdoorTemp[-72:-48])/24)) + (math.pow(alpha,3)*(sum(_prevailingOutdoorTemp[-96:-72])/24)) + (math.pow(alpha,4)*(sum(_prevailingOutdoorTemp[-120:-96])/24)) + (math.pow(alpha,5)*(sum(_prevailingOutdoorTemp[-144:-120])/24)) startingTemp = dividend/divisor if startingTemp < 10: coldTimes.append(0) outdoorTemp = _prevailingOutdoorTemp[7:] startingMean = sum(outdoorTemp[:24])/24 dailyRunMeans = [startingTemp] dailyMeans = [startingMean] prevailTemp.extend(duplicateData([startingTemp], 24)) startHour = 24
…
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...
…
tract subsets, be sure you always perform the same actions on a list of increasing numbers. So, before you start to manipulate a list of 100 points, create a list of 100 integers (0, 1, 2, ..., 99) and make sure it gets mutilated in the exact same way as the pointlist.
Then, when all your points are modified, bring them all into the same list again and sort that list using the integer array as keys. This ought to put them back into the right order.
2) Reverse Engineering: since you know all your points are along well defined curves (lines in your case), you could project them all onto a line that spans the entire model. This will give you a list of curve parameters (floating point numbers). You can then sort your points once again, but this time using the parameters as keys. (See image: by sorting all the points using the curve parameters, you get the order in which they appear from left to right)
2b) If you need to do this thing on points which are in a grid (i.e. 2D sorting), you have to project onto a surface so you get uv parameters for every point. Then vastly multiply only the u (or only the v) values, since you want to give rows (or columns) a higher weighting. Finally add u and v together and this will give you another list of floating point numbers which can be used as a keys array in a sort operation.…
.0001, the functionality is been put into dedicated components (see this post for further details).
Different branches are always combined using Longest List logic. I'm unhappy about this as well, I need to give more control over how different branches are combined, but I haven't figured out yet how to expose such functionality without it being utterly incomprehensible to 99% of the users.
If you want to ignore the data inside the fourth branch, you'll need to remove that branch before the data goes into the Line component. It's easy to remove a specific branch, somewhat trickier to make this removal dependant on variables elsewhere in the network.
You can use the Split Tree component to achieve this either way. Using a fixed mask (like in the image below) may be sufficient.
The !3 means that any branch is allowed except when it has a 3 in that location. The [0-2] means that only branches which have a number in between and including 0 and 2 will be allowed.
--
David Rutten
david@mcneel.com
Poprad, Slovakia…
d" floor side).
Rails are obviously defined with slope adjustments at start/end: Imagine a rail ramp curve made via, say, 20 control points: at start p0 is not moved, p1 is moved half the step .... p19 is moved half the step*17 and p20 is moved the full distance. Thus we have what is called "slope adjustment" in our trade.
a myriad of options controls where the spaghetti starts (curve.PoitAt(userControllableT)) what is the continuity mode (sequential or steady[shown]) and what type of profile is used for the sweep.
…
that ... blah, blah) but each of those cores will be running at lower speeds because of the thermal restrictions.
For instance, a dual core may have base clock speeds of 3.5 GHz for each processor while a quad core processor may only run at 3.0GHz. Focusing to single core (on each of them) the dual core processor will be able to about fourteen percent faster than on the quad core. Thus, if you have a program/app that is only single threaded (99% of what's available for AEC puproses to be honest), the dual core processor is actually better. Then again, if you have something that can (?) use (??) all (???) four processors such as the notorious Nexus rendering engine (Modo/Microstation/AECOSim), then the quad core processor will actually be about seventy percent faster than that dual core processor.
But no AEC engineer worth his name cares about rendering stuff, he he.
AMD and Intel have introduced technologies that can dynamically increase the speed of a processor core to help offset these differences between the dual and quad/octa core products. For instance, Intel may have the quad core processor with a base clock speed be 3.0GHz but when only a single processor core is in use at full load, that processor core will be boosted up to 3.4GHz. This would then make the quad core processor just three percent slower than a dual core processor that runs at 3.5GHz.
In general and theoretically, a multiple core processor is a "better" choice but that does not necessarily mean that you will better overall performance.…
switch this talking off-line if you are interested to know the real reasons in depth.
What is the pro way? Well ... imagine objects (blobs et all) that are placed in 3d space by some per object policy whilst their "property" (bend,repulse) is user controlled on a per object basis. Then imagine variants of all that spaghetti yielded (the rays, that is) stored in parameters in order to do the obvious : take control of all your previous attempts (replace, remove, swap, reset etc etc).
Get a 10-- minute thingy (straight out of my head: NO checks OF ANY kind performed [bugs possible], just a grid that shoots rays and a single blob (a sphere) that does the job). Not even a decent random policy is applied in order to have some nice looking rays (not to mention their directions).
Now ... imagine any collection of breps distorting the ray chaos: i.e. a ray meets a blob > is distorted (or not) > then meets another > ... > blah, blah (plus some policy for killing rays heading to Sahara instead of Vienna - but that's elementary).
This requires at least 2 hours of coding to do it properly (+ the variants "management" C#).
But ... well ... it could be a good real-life case when Solaronix "sponge" type of U/V collectors could be available (rather soon) > I'll do it > the future > the glory > the cash > the polar bears.…