ay how many valid permutations exist.
But allow me to guesstimate a number for 20 components (no more, no less). Here are my starting assumptions:
Let's say the average input and output parameter count of any component is 2. So we have 20 components, each with 2 inputs and 2 outputs.
There are roughly 35 types of parameter, so the odds of connecting two parameters at random that have the same type are roughly 3%. However there are many conversions defined and often you want a parameter of type A to seed a parameter of type B. So let's say that 10% of random connections are in fact valid. (This assumption ignores the obvious fact that certain parameters (number, point, vector) are far more common than others, so the odds of connecting identical types are actually much higher than 3%)
Now even when data can be shared between two parameters, that doesn't mean that hooking them up will result in a valid operation (let's ignore for the time being that the far majority of combinations that are valid are also bullshit). So let's say that even when we manage to pick two parameters that can communicate, the odds of us ending up with a valid component combo are still only 1 in 2.
We will limit ourselves to only single connections between parameters. At no point will a single parameter seed more than one recipient and at no point will any parameter have more than one source. We do allow for parameters which do not share or receive data.
So let's start by creating the total number of permutations that are possible simply by positioning all 20 components from left to right. This is important because we're not allowed to make wires go from right to left. The left most component can be any one of 20. So we have 20 possible permutations for the first one. Then for each of those we have 19 options to fill the second-left-most slot. 20×19×18×17×...×3×2×1 = 20! ~2.5×1018.
We can now start drawing wires from the output of component #1 to the inputs of any of the other components. We can choose to share no outputs, output #1, output #2 or both with any of the downstream components (19 of them, with two inputs each). That's 2×(19×2) + (19×2)×(19×2-1) ~ 1500 possible connections we can make for the outputs of the first component. The second component is very similar, but it only has 18 possible targets and some of the inputs will already have been used. So now we have 2×(18×2-1) + (18×2-1)×(18×2-1) ~1300. If we very roughly (not to mention very incorrectly, but I'm too tired to do the math properly) extrapolate to the other 18 components where the number of possible connections decreases in a similar fashion thoughout, we end up with a total number of 1500×1300×1140×1007×891×789×697×...×83×51×24×1 which is roughly 6.5×1050. However note that only 10% of these wires connect compatible parameters and only 50% of those will connect compatible components. So the number of valid connections we can make is roughly 3×1049.
All we have to do now is multiply the total number of valid connection per permutation with the total number of possible permutations; 20! × 3×1049 which comes to 7×1067 or 72 unvigintillion as Wolfram|Alpha tells me.
Impressive as these numbers sound, remember that by far the most of these permutations result in utter nonsense. Nonsense that produces a result, but not a meaningful one.
EDIT: This computation is way off, see this response for an improved estimate.
--
David Rutten
david@mcneel.com
Poprad, Slovakia…
Added by David Rutten at 12:06pm on March 15, 2013
th one element which is a list of 10 numbers?
I can flatten it and get (I think) a list of 10 elements (even though when I hover over the output of "Flatten" it says "Tree(T) as tree"). I'm surprised I can flatten at all what would appear to common sense to be a simple list of 10 numbers.
I'm hoping that if I can get this answered it will become obvious why we have trees of lists rather than just lists of lists as you would in most computer languages. That's my real goal - to understand the purpose of adding what seems like an unnecessary complication - trees - to the concept of lists in GH. It seems to me as though a "tree" is just a list of other "trees" until you get to the leaves where you can have "lists" which are identical to trees but can have something other than a tree in them. Whether you can have lists of trees or trees with no lists I'm unclear on. Do the leaves of trees have to be lists? Do lists have to be contained in trees? It would appear from the series example where a tree is produced for no obvious reason to contain the list that this is the case but given that you can flatten it, I guess not - or is the "List" I see in the param viewer just another type of "tree"?
I've found many tutorials that talk about how to manipulate trees and lists and I've managed to get along fairly well with them so far, but nothing seems to explain the reasoning behind the existence of trees and the philosophy for how and when they should be used and when lists should/could be used and precisely what the difference is between them.
Sorry to be long winded but I'm so confused!
Darrell Plank
P.S. I've seen David Rutten's diagram with the colored leaves in Grasshopper Primer 2 and that seems helpful. It would appear that trees can only have lists at their leaves and lists can't have trees although I'm not sure that it comes out and says that directly but at least there are no examples of this shown in his tree diagram. I thought I had it down pretty much so decided to test myself. Apparently I'm as confused as ever:
It certainly appears to me that this tree has two levels - a first level with one limb and a second with 10 limbs - and that I should be able to index it with {0;0} and retrieve a tree with one item in it - the list {0}. The panel data seems to confirm this with indices of {0;0;0}, etc. so I put this path in with quite a bit of confidence that it would work and...bust. The error reads "Path {0;0} does not exist within this tree". Huh? Again, I'm just so confused.…
Added by Darrell Plank at 12:17am on January 20, 2015
egin working on a design, we first have to systematically examine the resources and restrictions which, on the one hand, make every design project possible and, on the other hand, also define and delimit it. Knowing what we have to work with enables us to explore its boundaries and at the same time to venture beyond those boundaries. This is our studio’s sphere of action; our projects emerge as a critical reflection of the discipline of architecture, in its essence, on fundamental concepts, their general form, and their underlying media and processes. The goal of our work is to master a variety of forms of the architectural repertoire of the 20th century, but especially to develop and expand this repertoire, as has been happening in the past 20 years. The goal of this workshop is to introduce a series of these techniques and expertises and to apply the knowledge transfer on a given site in Timisoara. GUESTS: STUDIO ZAHA HADID VIENNA: http://www1.uni-ak.ac.at/architektur/ https://www.facebook.com/StudioHadidVienna Ass. Dipl.-Ing.MArch. AA Dist. Robert NEUMAYR-BEELITZ - lecturer/critic http://www.unsquare.at/ AProf. Mag.arch. Mag.theol. Johannes TRAUPMANN - critic http://www.pxt.at/ Univ.-Ass. Dipl.-Ing. Jens Erik MEHLAN - critic http://moh-architecture.com/ Univ.Stud.Ass. Daniel BOLOJAN - tutor - Grasshopper http://nonstandardstudio.wordpress.com/ Univ.Stud.Ass. Bogdan ZAHA - tutor - Maya http://bogdanzaha.tumblr.com/ LOCAL: Prof.Dr.Arh.Urb.Conf. Florin MACHEDON - critic (BUC)
more information on https://encodedfields.wordpress.com/…
unity in Ukraine, which is orientated to contemporary architecture.
The results of CANactions will be published in ACC magazine (link), on the web-sites of “Architectural club” (link), AB "ZOTOV&CO" (www.zotov.com.ua),
Theme
Theme of CANactions 2009 is emergent design techniques.
This theme could include following architectural branches as Digital design, sustainable architecture and other sectors, which by the participants’ opinions, could be EMERGENT.???
Any architectural projects made earlier of specially for the CANactions’09 are allowed for submission.
Presentation
All the projects will be submitted in two phases:
Phase 1 – selection of 10-15 participants of CANactions.
Project has to be sent by e-mail to: (__) in PDF (not less then 300 dpi, not more then 10 Mb).
Phase 2 –the CANactions participants prepare 15-20 min presentation of their projects (screen projector, microphone) and materials for the exhibition in House of Architect, Kyiv. The project has to be presented by author. -> exhibition is the first architecture biennale
Presentation requirements: file should be composed in PDF format on A0 sheets, placed horizontal (not more then 1 sheets). This file should contain sufficient amount of the presentation graphic material, including text explanation up to 300 words.
The raster images should have printing definition not less then 300 dpi. It’s recommended to avoid solid black fillings, because the projects will be printed on ink-jet printer.
The presentation requirements could be changed after phase 1 results.
The presentation materials should be made in Ukrainian (or Russian) and English. Verbal part can be presented in any language.
Tarek Naga, Naga Studio, Los Angeles / USA (I can contact him - he will do it for free)
Awards
DIA (Dessau Institute of Architecture), Germany gives a prize: certificate for the education for 1 (2) semesters of Master-program in DIA for students and young architects (up to 30 years) from Ukraine. The decision about the prize winners will be made by selection board.
Guests presentations
- Daniel da Rocha DIA /Germany/ (flights, accommodation?). Theme: (scripting???)
- Aleksandr Kalachev DIA /Riussian Federation/, Tudor Cosmatu DIA /Romania/, Irina Bogdan DIA /Romania/ - "Parametrically Defined Urban Patterns".
- Grygorii Zotov DIA /Ukraine/ - “The Multicultural Columbarium”.
- Armen Menendian /USA/ - "Blending Parametric Methods With Traditional Design:
"The Danish Pavilion at Shanghai EXPO 2010".
Exhibitions
1. Projects of 10 (15) CANactions participants
2. other projects: Zotov+Co
Bollinger+Grohmann - structural eng.
the very many
C-Space Pavillon / alvin huang
ala _ amanda levete studio
anOtherArchitect
student work, Charles Walker, AA Unit Pavillon
Event schedule
Phase 1: 01.07.2009 – start of the CANactions 2009 and beginning of projects submission.
16.08.2009 - dead-line of the project submission of phase 1.
Phase 2: 17.08.2009 – announcement of the CANactions 2009 participants.
30.08.2009 – dead-line of submission of the CANactions 2009 exhibition materials.
14-26.09.2009 – exhibition of the CANactions 2009 projects in House of Architect, Kyiv.
25-26.09.2009 – CANactions 2009.
26.09.2009 - finnissage / announcement of competition winners for DIA study
Contacts: canactions2009@gmail.com…
Added by Grisha Zotov at 6:32am on August 10, 2009
r-workshop programme will focus on the design and 1:1 fabrication of an interactive pavilion for the 2012 International Festival of Electronic Language (FILE). Located on Avenida Paulista, the pavilion will react to light sensors and human activity, so as to transform and create a range of different lighting and spatial effects, triggering further movement and producing an interactive feedback loop of behaviour and response. To accommodate this responsiveness, the design should be developed using recursive scripting, associative modelling and digital fabrication.
Each workshop will focus on a different phase of the pavilion’s design and construction. Instruction will be led by Rob Stuart-Smith of Kokuggia and Tristan Simmonds of Simmonds Studio, with Lawrence Friesen of Generative Geometry, Anne Save de Beaurecueil and Franklin Lee of SUBdV, together withand other AA tutors, as well as local structural engineers and set-designers. Each workshop will offer introductory instruction in computational design - Grasshopper, (GECO, Firefly) and Arduino, and digital fabrication, while advanced instruction will be offered to participants undertaking multiple workshops.
Workshop 1 will develop design variations in small models, as well as material and structural scale modeling, testing and initial 1:1 prototyping, following computational and digital fabrication instruction. Workshop 2 will produce 1:1 prototyping. Following computational and digital fabrication instruction, it will explore the mechanics and electronics of the light-sensors and motors that generate the transformations of the pavilion. Workshop 3 will fabricate the final elements, working directly with manufacturers, testing partial assemblies. Advanced development of all circuits and Arduino scripts will take place following computational and digital fabrication instruction. Workshop 4 will focus on the final assemblage of the pavilion on site.
www.aaschool.ac.uk/saopaulo.
OTHER WORKSHOPS
Workshop 2: 4–13 January 2012
Workshop 3: 3–12 April 2012
Workshop 4: 3–12 July 2012
…
I would to convert then to meshes: when I connect the triangular surfaces to mesh, they are divided into two smaller triangles.
I would like the triangle AEa, instead there is an other segment that connects point E with the midpoint of Aa!
Any ideas?
Can you help me, please? Thanks in advance
…
tion: Trastevere - Rome - Italy
Professors and tutors from University of Pennsylvania- USA, Greenwich-UK, politecnico di Milano- Italy, SAS-UNICAM-Italy, MSA, AAST and Cairo University - Egypt
Final outcomes: scale 1 to 1 responsive façade; kinetic and optimized regarding to environment and users interaction. An official research will take in advance of how people interact with the kinetic Architectural object through the final exhibition survey.
main instructors:
ARTURO TEDESCHI
Author of “ AAD_Algorithms-Aided Design ” and “Parametric Architecture with Grasshopper” books. Digital consultant at Politecnico di Milano(Architectural Design Studio2). Authorized Rhino Trainer. In 2011 worked at Zaha Hadid Architects, London. Co-director of the AA Rome Visiting School
MOSTAPHA SADEGHIPOUR
Creator of Ladybug and Honeybee plugins for grasshopper. Integration Applications Developer at Thornton Tomasetti CORE studio. New York, New York Architecture & Planning. Lecturer at the University of Pennsylvania
MOSTAFA RABEA
PhD, Parametric design and Architecture, SAS-UNICAM-Italy. Lecturer at Faculty of Architecture - MSA University-Egypt validated by Greenwich University-UK. Founder of Algoritm workshops and Epochal design studio-Egypt. Instructor of parametric design and Algorithmic generative Architecture
ALL TUTORS AND ASSISTANTS
…
bi-directional link, the link is unidirectional (downflow only), because of the use of proxies.
Matrix transforms and persistent constraints: I don't think this is true. The parts can have mates to other parts that preserve geometric relationships like 'coincident' , 'aligned' etc. These are essentially bi-directional. GH's algorithmic approach does not do relationships in the same / flexible way. In GH, the 'relationship' has to be part of the generation method that dependent on the creation sequence. I.e. draw line 2 perpendicularly from the end of point of line 1. If you are thinking about parts or assemblies sharing, or referencing parameters as part of the regen process, this is also possible. iLogic does this, and adds scripting. So does Catia. Inventor/iLogic can also access Excel and have all the parameter processing done centrally, if required.
Consequently, scripting the placement of components is irrelevant in GH, unless you decide that each component needs to be contained in its own separate file.
I wouldn't be too hasty here. Yes, you are right about compartmentalisation. I think this needs to happen with GH, in order to deal with scalability/everyday interoperability requirements. Confining projects to one script is not sustainable. MCAD apps have been doing this for ages with 'Relational Modeling'.The Adaptive Components placement example illustrates that it is beneficial to be able to script some 'hints' that can be used on placement of the component. Say, if your component requires points as inputs, then its should be able to find the nearest points to the cursor as it moves around. I think Aish's D# / DesignScript demo'd this kind of behaviour a few years ago. Similarly, Modo Toolpipe reminds me how a lot of UI based transactions can be captured as scripts (macro recorder etc). Allowing this input to be mixed in and/or extended by GH I think will yield a lot of 'modeling efficiency' around the edges. This is a (mis)using GH as an user-programmable 'jig' for placing/manipulating 'dumb' elements in Rhino. It may even give the 'dumb elements' a bit more 'intelligence' by leaving behind embedded attributes, like links to particular construction planes etc.Even if we confine ourselves to scripting. GH is a visual or graphic programming interface. A lot of 'insert and connect' tasks can be done more easily using graphic methods. If we need to select certain vertices on a mesh as inputs for, say, a facade panel, its going to be quicker to do this 'graphically' (like the AC example), then ferreting out the relevant indices in the data tree et al. The 'facade panel' script would then have some coding to filter/prompt the user as to what inputs were acceptable, and so on.
This also brings up the point that generating components and assemblies in MCAD is not as straightforward. In iParts and iAssemblies, each configuration needs to be generated as a "child" (the individual file needs to be created for each child) before those children can be used elsewhere.
Not sure what you mean here. If the i-parts are built up using sketches /profiles or other more rudimentary features (like Revits' profile/face etc family templates) then reuse should be fairly straight forward. I suppose you could make it like GH scripting, if you cut and paste or include script snippets that generate the desired Inventor features.
One of the reasons why the distributed file approach makes perfect sense in MCAD, is that in industry you deal with a finite set of objects. Generative tools are usually not a requirement. Most mechanical engineers, product engineers and machinists would never have any use for that.
I don't think this is true. Look at the automotive body design apps, which are mostly Catia based. All of the body parts are pretty much 'generative' and generated from splines, in a procedural way, using very similar approaches to GH. Or sheet metal design. It's not always about configuration of off-the-shelf items like bolts. And, the constraints manager is available to arbitrate which bit of script fires first, and your mundane workaday associative dimensions etc can update without getting run over by the DAG(s) :-)
…
m
-Area of blue line: min. 80% of the rectangel a x b
-Max. hight h of the top point: h,max = a
-Min. Volume between rectangel a x b and membrane: 500 m3
Can anyone help me?…