ich is the following :
"in a box", i would like to create structure made by wooden blades that follow floor, wall and ceiling, but moving from this support due to "curves" which are the most important variables.
Here is my "logic". You will find enclosed to this post my files as well.
In bold what i'm unable to do by myself (i guess) :
Take the square of 25 m x 12 m ; make it a surface
I divide it in "blades" of 20 cm
I take the edges of the "blades"
I divide this edges in 40 points (or equivalent) (A)
I identify my curves (curves) which are on the floors
I identify the crosspoint between my edge-blade and the curves (B)
I have to test the difference between X Y Z of each A and B.
I have to test which B point is the closest of each A
Each A points which is close to B (Distance < 40 cm) must be on the floor
I have to input a math formula in order to représent the movement of A points regarding their distance to B (example : A1 Z = Distance between A1 and B / 2)
If there are 2+ B, that mean that i have "to do something" to get a correct movement. I mean
2 consecutives points must be on the same "plan"
2 height difference between each point must be 0 or a dedicated value
Regarding Ceiling, it is a duplication of the floor but there is coef to apply with Z distance.
2 parallele points on a define axis, example : X, and consecutive can't have more than 20cm of difference
When all points have moves regarding "parameters" and "curves"; i have to do curve linking all the point of a same "line".
After that i duplicate this curve to a upper curve.
Loft
Extrude surface and then, it's done ?
To be clear, i miss the part where i need to make my points move regarding variables...
I'm sorry, RHI Grasshopper projet.3dm does not represent the "need" to have to consecutive point on the same plan
…
he sunPath component works. For example if you want to simulate the hours from 8 to 16 it means you want 8 hours from 8 to 9, from 9 to 10,.... from 15 to 16 (8 hours duration period) so you get from the sunPath component (using default timeStep 1) the 9 sun position/vectors 8 9 10 11 12 13 14 15 16 (in the image the yellow suns). The things is that if you ask for a smaller timeStep for example 3 = 20 mins then the additional sun position (in the image the orange suns) are added also after the time limit of h16 so probably when you don't want/need. I understand that when you input a time period there is the ambiguity if the hours are the just 9 (the 9 inputs) or the 8 hours included between pairs of hours, but I would make in a way that it is possible to chose if the extra timeStep after the last hour are added or not. Thank you for your comments.
…
rom a few pieces until all of the pieces are in place. You could also, theoretically, modify the form of the base, high, etc.
To do this I started making three pieces (all triangular) of different sizes... and then I stablished that there is going to be a bigger concentration of bigger pieces on the first third of the building, a bigger concentration of medium pieces on the second third and a bigger concentration of small pieces on the last third. I did this by rotating the pieces a number of times accordingly to a percentage.. the funny thing is that it works most of the times, but it doesn't work if the base of the building has 3, 8, 12, 18 or 20 sides (20 being the higher number on the number slider).. maybe there is a way to solve this with lists that I am not using????
My second problem is that I want to rotate each floor of the building separetly using a range... the thing is, I cannot make it work, because it rotates each triangle and not the whole floor... maybe there is a way of making groups or changing the list definition, but I'm not getting there.... I tried working with planes, but it is even more difficult to make the whole thing work...
I'm attaching the grasshopper documment and a couple of pictures so you can get my idea....…
section in order to be manufactured introducing the machine width as a parameter. I have so many problems to split multiple Breps with multiple planes, and I don't know how to solve this matter. In this case, for example, i have 3 breps and each brep has to be splitted by 4 planes (that's the condition i have set), logically it should return 3x4=12 pieces, but it returns 45 different pieces! Any ideas?
These are the sections I would like to split. At the bottom, the "splitting" planes.
Here is the part of the definition i'm using to (i'm using the split component made with python scripting). I also tried with the default split component of grasshopper with similar results...
Thanks for the attention.
…
Added by JuanViamonte at 11:28am on September 1, 2015
hat said, the processes that would benefit most from it in Rhino and Grasshopper actually lend themselves remarkably well to multi-threading. Things like Intersections, Meshing, operations on individual items in arrays would all benefit since they involve a lot of repetition where one iteration does not depend on the previous one.
Rhino4 was not designed to be threadsafe, and there were places where it was not possible to thread certain tasks. For example, imagine the Contour command. You'd think that it would be a piece of cake to thread that, you assign the first 25 contour intersections to core 1, the next 25 to core 2, the next 25 to core 3 and so on and so forth. But as it turns out intersecting a Brep and a Plane requires Rhino to build a spatial tree of the Brep first (assuming it doesn't exist yet). These trees vastly speed up a lot of operations and they are created lazily, meaning they get created the first time they are needed. Now we suddenly have four threads all trying to run a Brep Plane intersection and all trying to build the same spatial tree at the same time. This cannot end well. So in Rhino5 we made sure that when the spatial tree is getting build, every other thread that tries to access the Brep gets put on hold until the tree is done.
Then there's problems that the Intersection function might store temporary data on the Brep during the intersection, which makes threading intersections on the same Brep an absolute impossibility.
Then there's the even worse problem that the Intersection function might store temporary data in a static cache, which means you cannot run the function more than once at a time, even if it's on different Breps.
In Rhino5 we tried to rectify all of these problems. I think we got most of them by now.
When Grasshopper switches to Rhino5 for good, we'll start looking into threading a lot more seriously, not in the least because we'll also switch to .NET 4, which has some pretty cool mechanisms for writing decent MT code.
Until then, we'll have to stick to good old fashioned optimization. Christoph's problem was that it takes 12 minutes to open a file. Even if you thread that and you get 100% efficiency (which you won't, there's always additional overhead when threading) it would still take 3 minutes if you have 4 cores. It's an improvement sure, but not much of one. I'd like to know exactly where all that time is spend, then maybe we can remove specific bottlenecks.
--
David Rutten
david@mcneel.com
Poprad, Slovakia…
est of the year so I'm trying to understand new things...
I downloaded Boids by Jan Pernecky and tried to do something like the flocking 2d pattern of this amazing video video (2:41) but i'm not very happy with it. You can see the first result on this image.Image of the code
For now, I have 3 groups of 3 circles with 12 points on each: blue circles (points) are used for the "Adhere" flock location and the red ones for the "Repulse" flock location.
After, I cut the whole thing with the wire-frame of the bounding box of the emitter of the points and their mirror according to the center axis of the central circle. (red rectangle on image).
First, how can i contain the curves into a region ?(without the bounce component because it's very slow...)
I think to have a result like the one in the video, i need many other forces ? I didn't understand the "finesse" of the flocking concept...
Is there a way to trim vectors but not just by speed but by angle or to replace them ?
I tried to put more forces like the "align" but results are bad for now: curves are too flat or not aligned at all.
The * parameter is also hard to manipulate (for nuts like me hehe): for example, my repulse forces are kind of not existing or too strong... ?
How can i use the stick geometry component with other behaviours on the same time ?
It will be very nice if someone can give some advises or share some codes to help me... first time I use agents in grasshopper...
Thanks in advance.
Peace.
Sorry for my frenchy English.
…
Return
End If
'
Dim ptlist As New list(Of Point3d)
Dim pn As point3d = p
ptlist.add(pn)
Dim k As Double = 1 / (4 * math.PI * (8.85 * 10 ^ -12))
Dim vvect As vector3d = New Vector3d(0, 0, 0)
For j As Integer = 1 To it
Dim fvect As New Vector3d(0, 0, 0)
For i As Integer = 0 To ps.Count - 1
Dim vtemp As New Vector3d(0, 0, 0)
Dim f As Double = 0
Dim val As Double = 1 - v(i)
vtemp = ps(i) - pn
Dim dist As Double = vtemp.Length
If dist < r Then dist = r
' LEY COULOMB
f = k * ((q * q * val) / (dist ^ e))
' LEY MODIFICADA
' f = k * ((q * q * val ^ e2) / (dist ^ e))
vtemp.Unitize
vtemp = vtemp * f
fvect = fvect + vtemp
Next
Dim avect As Vector3d = fvect / m
' MRUA
' vvect = vvect + avect * t
' pn = pn + vvect * t + 1 / 2 * avect * t ^ 2
'LINEAL
vvect = avect * t
pn = pn + vvect
ptlist.add(pn)
Next
a = ptlist
Inputs are 'p' as the point to move, 'ps' as a list of attractor points, 'v' as a list of charge values, 'r' as a minimum radius used for not ending up in a singularity, 'it' as number of iterations, 't' as the time increment in every iteration, the rest are related to physical properties that can be simplified.…
Added by Vicente Soler at 8:51am on October 10, 2010
returned to GSA, it is solving. You might have to reset result scales using the GSA button.
Cheers,
Jon
Checking Input Data - this may take some time.
________________________________________
Data checks commenced at 23/08/2017 4:59:18 PM.
Checking input data for static analysis by GSS.
Shortest element (element 9) is 5 m long.Longest element (element 1) is 6 m long.
Data checks completed at 23/08/2017 4:59:18 PM. No errors or warnings found.
Analysis commenced at 23/08/2017 4:59:18 PM.
Analysis by Gss Static analysis
Initialising results modulesSolving for displacementsSolution statisticsSparse Parallel Direct 12 active nodes 14 active elements 2 analysis cases 24 degrees of freedom Minimum degree ordering 90 terms in stiffness matrix Maximum stiffness is 4.804e+009 at node 4 in direction z Minimum stiffness is 3.132e+008 at node 2 in direction yy Condition number of the stiffness matrix is ~ 5328. Maximum relative error in displacements will be 2.4e-10 percent. Factorization in 109 msSolving for element forces and reactionsCalculation completeAnalysis completed with no errors
Analysis completed at 23/08/2017 4:59:18 PM.Analysis time: 0.172 seconds
…
This is the actual reason I'm going through all this. I want to develop an algorithm that can be applied consistently and produce good results.
Here is a a little background. I'm working on my master's thesis in structural analysis. My thesis is on seismic behaviour of a roman temple in Portugal. I will be using a method of analysis suitable for block structures called the discrete element method. I am using a commercial code called 3DEC for this.
Now in order to the analysis I need to construct a 3D block model of my structure. I received a 3D scan of the entire structure (in *.wrl) format and spent a week trying to clean it up and slice it into the blocks that make up the structure. Now I want to use the scanned geometry of the blocks and describe a simplified prism around each that will represent the block in my analysis. I've attached a file with one of the columns in the temple. I think (at least with my tests so far) that it is representative of the all the blocks I'm dealing with.
Now my criteria for creation of the blocks:
I would like the contact area between the blocks to be as close as possible to the actual drum contact area,
I would like to get the volume of the blocks to be as close as possible (secondary to the contact area) to the volume of the actual drums in order to insure that the weight distribution in the structure is as close to reality as possible,
I would like the shape of the contact area to be as close to reality as possible
I order to satisfy all these requirements, I've done the following in my grasshopper file:
I take a section at the top and bottom of each of the drum meshes. I use this to extract the contact outline at the top and bottom of the drum. This is sometimes problematic and requires me to clean up the model and remove features that interfere.
Next I take each surface and try to fit a minimum circle around it. I try to do this because in my mind this is the best possible way to find the actual centre of the drum when there is cut outs and deterioration. This works well as long as more than half of the contact surface is still in its circular shape (third block from bottom in the example file doesn't satisfy this requirement and thus causes problems).
Knowing the centre, I use an algorithm I created in VB to search for one of the flutes on the contact profile. My ideas is that if I can find one of the flutes, I can then find the others by just going around at 30 degrees (there are 12 flutes) and find the location of all the flutes. In the VB code I've tried to explain my algorithm so I won't explain it here. I also think this algorithm is needlessly complicated and stupid as I'll explain later.
Once I've got one of the flutes, I just find the intersection of a line with at every 30 degrees with the outline curve.
Having all (12) points around the perimeter, I use an loop to scale the shape around the centre of the circle I found in step 1 to get the area within a tolerance value of the actual contact area (satisfying requirement 1). I was using HoopSnake before, but it required resetting every time so I decided to write my own thing.
I then connect the points on both top and bottom to get a solid block.
Now the problems are as follows:
Sometimes the algorithm doesn't find the best location as the starting point. As I said an important thing is that the circle is tangent to the flutes and that is true only if the column profile is larger than a half-circle.
The software I use requires convex blocks. I've tried to remedy this by using convex hull component before step 5 to insure the surfaces are convex.
I'm having issues sometimes with the alignment of top and bottom points. I think I just need to implement a component that sorts the points around a single basis so that there is no twisting.
I've been experimenting with convex hull as a general approach for defining the corner points, but I'm having problem take the convex hull curve and breaking it into a 12 sided polygon, preserving as much as possible the location of the flutes and the general shape of the contact surface.
I'm really sorry about the long post and complicated question. I hope someone can give some pointers on what I could try. I understand that this is not an easy question and that it is more a question of doing something rather than asking about grasshopper itself. My goal is to have an algorithm that I can explain as a general method for others to use in the future when dealing with these structures. This is only a small minor part of my thesis (the analysis is what is important) but it is taking a lot of time to figure out.
If you have any other questions, I would be more than happy to provide a better explanation. In the file I have created a region with all my input parameters. You can choose a different mesh from that point and change various settings. I hope that is self-explanatory.
Thanks for all your help,
Ali
BTW: I'm really sorry for the poor way I've done this stuff so far. I'm not a programmer and apart from some small macros in Excel I don't know much about this stuff. To add to that, I've just started with Rhino and Grasshopper about five days ago after almost pulling out all my hair trying to do this with AutoCAD!…
and diffuse radiation for 365 days at noon (12:30)
As you can see there are some bumps that I have discarded as dependant of geometry (Did simulations with different geometries even with just an horizontal surface to analyse and nothing else.) Also discarded from the solar position since the bumps happen in different days as you may see in the graph. I have also tested it with Diva and honeybee so I guess it has to be with RADIANCE. I got this data reading the illuminance files from an annual daylight simulation.
I guess it has something to be with how RADIANCE transform radiation to luminance (luminance = (RED*.263 + GREEN*.655 + BLUE*.082) * 179) And how it determines the values Red, green and blue of the spectrum for a determined solar radiation. I guess, because I was unable to learn how RADIANCE calculates this spectrum, that it has to be dependant of the radiation and solar position with a quite large difference of spectrum.
Normally this bumps are hiden behing the variation of radiation over the year, and I guess that the tool was not designed to have such unrealistic constant radiation, but I would like to know why this happens.
Can anyone help? Any clue is welcome!
Thank you.
…