google's data (please correct if I'm wrong):
"SRTM1 data is sampled at one arcsecond (about 30 meters) and SRTM3 data is sampled at three arcseconds (about 90 meters). The higher resolution SRTM1 data is available for most of the US and the lower res SRTM3 data is available for most of the world."
The 3x3 stitching definition above is done in Rhino 4 but it doesn't actually "stitch together" or merge the surfaces into one. I had to do it manually in Rhino with the merge surfaces command. Which I think does a better job than grasshopper.
Also I think the calculations within it (distance of one degree change in lat/lng) won't be accurate enough (or high enough in resolution) even though they are correct so I cannot guarantee the 3x3 pieces are perfectly neighbouring sets of data (they might contain very very tiny strips of overlapped/missed topography data). However this error is really insignificant next to the limited resolution of the generated topography so it is neglectable if you're not a perfectionist like me.
Edit: For bigger areas Elk is much easier, but for smaller areas where you want to specify the area size Xiaoming's component is more convenient I think.…
s set up. All the goals in Kangaroo have indices identifying which of the points in the system they act on.
Assigning these indices automatically and still allowing inputs to change during simulation requires some tricks to work around the acyclic directed nature of Grasshopper.
In remeshing the indexing and even number of points changes which greatly complicates things if you want to also have goals assigned to certain edges/points.
Last time I spent serious time on this though was before the K2 library, so maybe time to revisit soon. I think it would probably over complicate things trying to accommodate this remeshing directly within the main Kangaroo solver component, but there could be a dedicated membranes tool (though I know you also want me to prioritize documenting the existing tools!).
Stepping back for a moment though - it is usually possible to separate the remeshing and relaxation into separate steps. Membrane relaxation generally needs well shaped triangles (no angles over 90), and remeshing can give you this. Of course the triangles change shape during relaxation, but if the unrelaxed geometry is not too dramatically different from the end result, and you use tangential smoothing to keep vertices from drifting, they can stay well shaped throughout. For bigger changes in geometry you could also remesh-relax-remesh-relax.…
Added by Daniel Piker at 10:29am on January 13, 2016
nds except only using CreateHBSrfs which can be unstable for me with some geometry (GH crashes).
If you want proof of the rotation not taking place using MSH2RAD, please look in the Daysim*.rad file that gets created when performing a Daysim simulation.
See example below. The same polygon is processed via the CreateHBSrs component and via the MSH2RAD component. The polygon gets rotated 90 degrees using CreateHBSrs but unfortunately not with MSH2RAD:
_______________
##GENERATED BY HONEYBEE
OPAQUE polygon b69a317a402d42c1994f410463cd_00 0 12 -15.824400 -5.615800 0.000000 -15.824400 -44.175400 0.000000 -15.824400 -44.175400 28.363100 -15.824400 -5.615800 28.363100
# SOURCE FILE: c:\ladybug\000000_TEST\SURR\MSH2RADFiles\SURR.rad
## c:\radiance\bin\\obj2rad -f c:\ladybug\000000_TEST\SURR\MSH2RADFiles\SURR.obj## OBJ file written by TurtlePyMesh
OPAQUE polygon object_1.10 0 12 44.175400 -15.824400 28.363100 5.615820 -15.824400 28.363100 5.615820 -15.824400 0.000000 44.175400 -15.824400 0.000000
_______________
All the best
-M…
what i want.
My intention is that the Randomly selected brick be rotated 90 degrees so that header face is proud of the actual wall face rather than stretcher face.
I can easily rotate the selected bricks and then protrude them in the desired direction. However, if i rotate the brick a gap is created on either side of rotated brick (refer sketch 1). I want to set a parameter that CLOSES THAT GAP, so that the wall remains watertight (refer sketch 2).
Brick size used 230mm (L) x 76mm(W) x 70mm(H).
Attached are
1) 1-Sketch: Explaining my conundrum
2) 2-Sketch: Explaining what i want to achieve
3) 3-Perspective: Baked Geometry of what i have achieved so far
Please feel free to ask for my GH definition if required.
I'm an absolute dummy in VB scripting.
So insight to solve my conundrum will be highly appreciated.
Cheers
…
if i select one by one and it shows
and also, select different amount of curves shows different angles[same curve]but the most important thing is all of them are wrong angles,
if i draw some 90 degree curve, the answer is right.
thank guys…
ard to find example...
I do not know how to load windows form and send data to object in form.vb...using grasshopper sdk.
it is the same,, when I try to use dll(class) with VB component in grasshopper.
may be I have to make two class (class1, form1) but,
when I send data to class1, form1 can not receive class1 data because form 1 made new class1 and both class1, class1(from form1) is different session?
for novice programer,, for me it is very hard.
load class1,
class1 load form1
send data from grasshopper to form1. x
and button click
couldn't calculated,... result was always "0"
and tried many other methods,, but it failed...
may be some known technic but it is hard to find books...
Please...help me.
if possible would you tell me how to load form1 using grasshopper sdk and ""send data "" to form1
or form1 could use data from grasshopper?
Thank you....
for ex)
'(in class.vb)
Public Class Class1 Private Shared fl As Form1 Public Sub fload() If fl Is Nothing Then fl = New Form1 fl.Show() End If End SubEnd Class
'(in form1.vb)
Public Class Form1 Public x, y As Double Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
ab(x, y) MsgBox("hi" & y) End Sub Sub ab(ByRef a As Double, ByRef b As Double) b = a * 2 End SubEnd Class
'(in Grasshopper VB.component)
Dim cl As ClassLibrary1.Class1 If cl Is Nothing And f = True Then cl = New Class1 cl.fload() End If Dim fr As ClassLibrary1.Form1 If fr Is Nothing Then fr = New Form1 End If fr.x = x a = fr.y…
doing this with the current tools or a bit of scripting since the Flickr API allows you to make requests in a REST format, but utilizing the Flickr.net API library makes it much simpler.
First and foremost, you need a Flickr API key...do you have one of those?
A great way to get to know the Flickr API is with the API Explorer. Here is a link to the page for the flickr.photos.search method explorer: http://www.flickr.com/services/api/explore/flickr.photos.search
The cool thing about this page is that it generates the REST Http call towards the bottom. So, here is what I did:
1. Grab the coordinates of the bounding box per Flickr API request:
bbox (Optional)
A comma-delimited list of 4 values defining the Bounding Box of the area that will be searched. The 4 values represent the bottom-left corner of the box and the top-right corner, minimum_longitude, minimum_latitude, maximum_longitude, maximum_latitude. Longitude has a range of -180 to 180 , latitude of -90 to 90. Defaults to -180, -90, 180, 90 if not specified. Unlike standard photo queries, geo (or bounding box) queries will only return 250 results per page. Geo queries require some sort of limiting agent in order to prevent the database from crying. This is basically like the check against "parameterless searches" for queries without a geo component. A tag, for instance, is considered a limiting agent as are user defined min_date_taken and min_date_upload parameters — If no limiting factor is passed we return only photos added in the last 12 hours (though we may extend the limit in the future).
So, I went to Google Earth, picked a city (London, UK) and dropped two pins:
This gave me two locations, which I can put into the Explorer Page next to the bbox option. Here is what I put for these two points: -0.155941,51.496768,-0.116783,51.511431
2. Check has_geo
3. In extras, type in geo
4. Make the call!
You will see a list of responses in an XML format, these responses will be from the first page. Geolocated photos are limited to 250 / page, so you will have to grab them page by page.
If you want to add more options (minimum upload date, maximum upload date, etc) you can do this as well)
The best is at the bottom, you get the full http call for this: http://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=ffd44f601393a46e86aa3a5f8a013360&bbox=-0.155941%2C51.496768%2C-0.116783%2C51.511431&has_geo=&extras=geo&format=rest&api_sig=b42330e5d1523bd5fe60c2ad43acde99
Notice this call has some other api key, you should eventually replace this with your own.
You could copy and paste this into a browser and you will get the results with the latitude and longitude:
So this is really what you need to know to do this through GH. Since gHowl has an XML parser component that can access files on the web, you should be able to use the same http call into this component.
Eventually, we get a response, and we need to grab the lat and lon data. With gHowl we can map these to xyz coordinates, and generate the heatmap...this is just a linear mapping:
Attached are both the Rhino file and the Grasshopper file, as well as the image underlay.
I am working on a series of components that makes this more straightforward, but for now, this should get you started.
…
le with you.
I am trying to achieve the minimal path algorithm of Steiners tree in Python using the minimal path algorithm.The syntax would be as followsFirst I need to create a cube of any dimension.
Then I need to specify one origin say point A and destination point say B.
Now for this point A,B I need to create a machine based network which will automatically enroute A to B.
Where the angle will be constant i.e 120, length can be a variable, triangular node(steiners tree)using these constraints it will create a network.
Now, I should iterate the program in such a way that I should specify the further points say like A1 and B1 so on.The program will contain a limit constraint where it will come out of iteration loop and start a new loop,forming the network.
By this I will get a dense network of 120 deg branches.
The branching gets denser the moment I add source and destination points.
There can be 100 iterations to reach from A to B but the algorithm chooses the one following the minimal path.
I would be highly thankful to you if you would please share the python syntax and grasshopper definitionCapture.JPG for the same
Thank you for your time in advance
I would be highly grateful if you help me through
warm regards
Arya
12.gifShortest%20path%20algorithm.gh
min-paths.jpgcc.henn.studyimagesminimalpaths.jpg …
er, i hae drawn a quck sketch. Different curves in blue and orange colour. i have marked on my sketch which is a a non-planar surface.
At the moment, i have modeled this with NURBS curve component (component without Knots & Weights). I have set 5 to its 'P' intput (I'm going to reduce it to 3). Each point having 3 parameters X, Y & X axis. I have set my slider from -100mm to 100mm range. It is a closed curve.
If i just loft it, i get random results which i donot want. I can get a planar surface if i set Z parameter to zero. But how do i get a non planar and preferably a burbs surface?
the curves are very important to this projects. as Whole form is dependent on these curves.
Your tips will be highly appreciated. If you have different way of modelling it, I'm open to suggestion too.
cheers,
aB…
and perpframes
3) Ellipse on perframes
4) Series + Move + Series + Scale + Series + rotate (to create generations)
5) Divide curve (ellipse) + Dispatch only seleced points + join those points on ellipse using Intercurve + Divide the resulting intercurve
6) List items (I used list items 4 times, you could do as many). For 'i' parameter in list item i used slider to create generations. depending upon your definition, at this stage you might have to flatten your list output
7) joint the points you get from list output to form another intercurve + repeat that for all items.
8) Loft the curve
9) to form fenestrations, i again used rhino closed curves.
8) Project curve onto surface + copy trim + surface to mesh + mesh thickening from WB.
Hope this helps
Cheers
aB
…