Grasshopper

algorithmic modeling for Rhino

 

My problem:

Multiple window surfaces on multiple facade surfaces. How do I test and measure every window surf per facade surf? My initial idea was to match their normals... But then I got stuck. Does anyone have an idea to group all window areas to their appropriate facade?

 

Help veeeery much appreciated  

Views: 1593

Replies to This Discussion

I would suggest synchronous sort or Create Sets and Member index. Could you upload your 3dm and ghx to experiment with?

Of course. Thanks. I have cleaned the file quite a bit since there are a lot of irrelevant issues and data. The main goal is to sort the surfaces directed the same way (I thought it would be possible by ordering by their normals), then measure their area and find the ratio between the areas. I like to know how many m2 is windows per facade. In my example I represent a number of linked facades (walls) and a number of linked windows.

I really don't have a clue how to create ordered sets that can do this. I tried representing each normal by its unit vector, then create a line in the direction of the vector. Then measure if the distance between the endpoints of the lines are coincided... But then I run out of juice, how do I know the relative areas from here? There must be an more elegant way to find similar vectors and then sort other properties (like area) and branch them accordingly. Any ideas?

Attachments:

This definition uses the sets components to create a unique set of unitized normals and then identifies the facade and window's normals with an id from the set. This is then used to replace the branch structure to put all surfaces, whether facade or window, with the same id onto the same branch.

Attachments:

Wauw. Thank you very much.

 

Exactly what happens in the function-code here:

Format("{0:0.00###},{1:0.00###},{2:0.00###}",x.x,x.y,x.z) 

 

I have a lot to learn. 

 

Its a way of re-formating the points to be a limited number of places so that there is no ambiguity when trying to match them up in the Member Index component.

I'll break it down.

The function: Format()

String output: " " eg "0,0,0"

Placeholders for variables: {} eg {X value},{Y value},{Z value}

{0:0} would be x value as integer where x is the first value outside the " "

{1:0.0} would be y value as floating point 1 decimal place. where y is the second value outside " "

{2:0.0##} would be z value as floating point with at least 1 decimal place and 3 if significant. where z is the third value outside " "

Because this is an Fx1 Component there is only 1 input x so

x.x is the x component of the x input.

x.y is the y component of the x input.

x.z is the z component of the x input.

This is fantastic. Thank you, it's much more clear to me now. I hope others appreciate this as much as I do.

RSS

About

Translate

Search

Videos

  • Add Videos
  • View All

© 2024   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service