starting as soon as possible.
We're offering challenging projects, insights and contact to leading industry companies, project responsibilities according to abilities and initiative, great work environment and laid-back atmosphere, room to play and evolve,...
Our ideal candidate:
- is passionate about construction, engineering and (computational) design
- is proficient in Rhino / Grasshopper / (GH-)Python
- knows his ways around the Adobe Suite and MS Office
- has a current work permit for Germany
- is a German speaker (other native speakers also welcome, with excellent English skills)
- has an architectural background (Student / BA / MA /...), ideally with work experience
- is interested / has experience in digital manufacturing and prototyping
- will be able to join us shortly
We're looking forward to your applications / inquiries / CVs to: mpelzer@fat-lab.de
View our past projects here: www.fat-lab.com
(Current projects, unfortunately, are non-disclosed)
…
rld.wolfram.com/EnnepersMinimalSurface.html
when i type the equations for z,y,z it says a syntax error so i obviously do not understand how to construct an expression. (screen capture attached)
Any help/explanation of using this function would be greatly appreciated
thanks so much
Capture.JPG…
string may contain any number of curly bracket pairs with non-negative integers in them:
"When {0} brings back {1} days and {2}"
The number inside the brackets refers to the data to insert in that location. In effect, {x} is a placeholder for actual data. The data inserted into a specific bracket pair is the data supplied in the latter part of the function. {0} refers to the first item, {1} to the second, {2} to the third and so on ad infinitum.
If I supply some data the entire expression may look like this:
Format("When {0} brings back {1} days and {2}", "Spring", "blue", "fair")
which will result in the string "When Spring brings back blue days and fair".
If the data you're inserting is a number (or a date) then you have additional formatting flags that you can use. These additional flags appear behind the placeholder index integer separated by a colon.
Format("Pi = {0:0.00} ({0:0.000000})", Pi)
The :0.00 means the number will be formatted using two digits. The other flag will enforce six digits, resulting in: "Pi = 3.14 (3.141593)"
--
David Rutten
david@mcneel.com
Poprad, Slovakia…
Added by David Rutten at 3:00pm on February 3, 2013
n the inability to be a real-life member within a parametric workflow (same kind of issue with Evolute Tools Pro).
As regards strictly AEC matters the main problem with GH is Rhino itself (not feature/constrain driven, not a solid modeler, not AEC oriented by any means and not biased towards assembly/component modeling). Other than that and due to the known GH inability to handle/manage blocks/nested blocks at bake time ... well... I hardly can see how "to set up work flows between different tools such as ..."
I'll post soon 5 - rather "trivial" - AEC cases that are totally undoable (shop drawing level) with anything other than CATIA (or NX).
BTW: since international practices grow and grow in numbers these days (and individuals are dead) I can't see any realistic limitation for creating dedicated teams (kinda like Frank Gerhy did) that can easily deal with the "extremely heavy" nature of the beast.
BTW: this is a job ad (Project Architect role) from one of the biggest US AEC practices (rather a corporation, he he)
How things change these days ... don't you agree?
best, Peter
…
nette for years.. but without the nice GUI. It also allows combining constraints solving to be part of the DAG.
What is parameterics? Or parametric associative as GC has been described. Can't remember. History or procedural modeling? Even constraints solving or rules based solving all use parameters. Is it generative or merely parametric? I guess the difference is a parametric door doe not generate other parameteric doors?
BIM has opened the door to a more data centric view and manipulation of the design model. To old skoolers a wall is a linear construct that can be abstracted into parameters... beginning and end points of wall in plan + height and thickness. But start adding other stuff and need to ineteroperate with others and things get problematic.
Pretty soon, all those abstractions (parametric or otherwise) need to be structured and you end up talking about schemas etc to control the format of the parameters using rules as checks or constraints..so that your parameters can interface with parameters from others without causing data quality issues. It all gets very database thinking like.
So, I would say parametrics as GH does it is more free form and ad hoc and at some point if it goes BIM, the parametrics will be need to be (re)structured..
BIM is dependent on IFC development which is not very fast. IFC4 is only beginning to think about parametrics and 'Design Transfer'.
…
humacher (Zaha Hadid) and in fact most issues of AD (Architecture Design)
The Politics of Parametricism: Digital Technologies in Architecture by Matthew Poole, which is kind of a follow up
In my opinion learning Grasshopper will be enough and there is no need to learn Python to use it successfully. Best to have a deep understanding of Grasshopper and what it can do then to try and learn too many things at once. It will help you in applying the principles to other code and not the other way round (ie. learning the concepts first and then going into grasshopper). The best way to learn the concepts is by applying and trying them in a tool like Grasshopper.
I absolutely recommend that you visit a Grasshopper workshop, as that will teach you a lot more than Youtube videos. If you cant visit a workshop, then I recommend the rese.arch video series on Grasshopper. They're really indepth and go from simple introduction to very advanced. You should ideally buy and complete all of them.
Also there is of course Dynamo and its integration with Revit and BIM, which is something to look at, although Grasshopper covers all of that as well, at least with the integration with ArchiCad. Autodesk products are more common around the world though.
Be aware that a lot of the power of Grasshopper is also in the plugins you can get for it, like Kangaroo (physics simulation), Ladybug&Honeybee (environmental analysis), Karamba (finite element analysis), Hoopsnake or Anemone (looping) and many, many more. You can find them at food4rhino.com.
Good luck!…
50 and reduced the 'cell size' slider to 0.5. When the 'Azimuth' angle is changed to 180 +- 90 (dawn or dusk), the points are widely dispersed, reducing the density and increasing the number of cells in the "sparse grid". Under these conditions, the number of cells was ~2000 and the Profiler time for 'Boundary' went up to a full minute or more each time 'Altitude' or 'Azimuth' was changed.
So I created this code to benchmark some alternatives and found two interesting things:
'Boundary' surface performance (v.1) is not linear. As the number of surfaces goes from 1000 to 2000, the time per surface goes up dramatically.
I tried three alternatives for creating a rectangular surface at a given point that are all substantially faster: v.2, v.3 and v.4. For 2000 points, v.4 is 150 times faster than v.1 !!!
Performance of v.2, v.3 and v.4 are similar and all scale up very well. To benchmark beyond 2000 points, I recommend disabling the VERY SLOW v.1. At 5000 points the 'Pop2D' component takes ~11.3 seconds but v.3 and v.4 take less than one second to generate 5000 surfaces!
See boundary_2015Nov19a.gh attached.
So I replaced the 'Rectangle' and 'Boundary' components in my sun reflection model with v.4 in focus_2015Nov19b.gh (also attached) and the performance is amazing.
I'm sure someone has mentioned this performance issue with 'Boundary' on the forum before but as with many things, I didn't realize what a major obstacle it can be until I discovered this for myself.…
Added by Joseph Oster at 9:16pm on November 19, 2015
grout lines, a tile surface and tile perimeter poly line). I then use that as a Mesh (from Rhino) in the second definition.
2. I can tile out the mesh surface and rotate all the tiles in 90 deg. increments.
To get what I wanted. I took the Mesh and have copied it in series to make a grid. I can then control the dimensions of the grid. X and Y extents. I can also rotate the tiles around their centers.
The spacing of the grid is set from an edge curve of the tile (or mesh). This sets the size of the squares in the grid themselves.
See definition, images and Rhino 4 File, to give the definitions a shot. I have labeled how to use them.
My question -- how can I randomly rotate squares in my grid? I would like the deg of rotation to be random and also which tiles they are.
Also how might I rotate (every other tile) for example? So that I can control the pattern more?
Thoughts?
Thanks!
…
ror when it comes to points on edges of the surface.I guess it is because normal vectors at a few of points are invalid. After all, because of these invalid points, an error message comes out which is saying " Runtime error (PythonException) : Unable to add polyline to document " and it results in no output. Please give me some help if you know how to handle this problem. I post a code below.Thanks in advance.
---------------------------------------------------------------------------------------------
import Rhinoimport rhinoscriptsyntax as rsimport mathimport ghpythonlib.components as gh
output_crvs = []
for pt1 in input_pt :output_pts = []newPt = pt1output_pts.append(newPt)
while len(output_pts) <= 100: newPt = outputpoint(base_srf, newPt, distance_factor) output_pts.append(newPt)
output_crv = rs.AddPolyline(output_pts)output_crvs.append(output_crv)A = output_crvs
def outputpoint(base_srf, input_pt, distance_factor):centre_point = rs.AddPoint(0,0,0)height_point = rs.AddPoint(0,0,10)
zaxis = rs.VectorAdd(centre_point, height_point)
cp_pt = rs.SurfaceClosestPoint(base_srf, input_pt)normal_vector = rs.SurfaceNormal(base_srf, cp_pt)drain_vector = rs.VectorCrossProduct(normal_vector, zaxis)
dvector2 = rs.VectorUnitize(drain_vector)dvector3 = rs.VectorRotate(dvector2, 90, normal_vector)
mpt = gh.DeconstructVector(distance_factor*dvector3)moved_pt = rs.PointAdd(input_pt, mpt)moved_uv = rs.SurfaceClosestPoint(base_srf, moved_pt)output_pt = rs.EvaluateSurface(base_srf, moved_uv[0], moved_uv[1])
return output_pt…
g from a list of 12 items I would find all the combinations taking just 4 at time.
I'd use a Stream gate that takes the indexes of the items and pass them to a list item in order to select just the items of the combination. Doing so I can choose a single combination of index at time to pass to the list item.
In this moment all the data come out from the first gate, all the others are empty.
If I pass these index to the list item it gives me an error (probably because of the data structure).
*long version*
I start from a list of 12 segments, all of them with the starting point in common and the ending point distributed regularly in the space. It's a quite simple starting point.
What I'm trying to achieve is to find all the possible spatial configurations made of 2, 3, 4 segments. I started with 2 segments so I've 12^2=144 possible configurations but just 4 different configurations that can intuitivelly be recognized (60°, 90°, 120°, 180°).
Doing the same with 3 segments generates 12^3=1728 configurations and I don't know how many different ones. With 4 segments I've got 12^4=20736 possible configurations.
As you can imagine many configurations are identical but just with a different orientation so at the end I'll have to parse geometrically the output to delete duplicates (I'll address this later on).
Please could you help me to figure out how to mix these segments in different configurations?
Thank you in advance.…