Boxes in the most efficient way within boundaries of object and follow the following constraints.
The Goal: To fit 125 boxes in the most efficient way inside the total area. Starting Variables:
(1) 40% of the Boxes need to be between 60 and 85MSQ. (2) 40% of the boxes need to be between 86 and 110MSQ.
(3) 20% of the boxes need to be between 111 and 125mSQ. The breakdown doesn’t have to be exact to give the script some flexibility. Meaning you can have 41% +39% +20% = 100%.
Constraints:
1. A total MAXIMUM area of approximately 1600M per layer.
2. A maximum of 8 layers for a total of 12,800M per layer. Optimization can make as little or as many as 8 layers vertical to accommodate all boxes. So if script can achieve with 3 levels great. If needed all 8 levels, that's fine too. However, pay attention to next constraint (#3).
3. Approximately 15% of that space on each layer is off limits. (internal area) (blue area in example script) and the shape of the boundary cannot be modified to accommodate box design resulting in jagged lines for the internal area.
4. All generated squares/rectangles must have at least 3m touching an outside border (The Green lines).
5. All boxes must also be touching minimum 1M of border of the blue line.
6. If the boxes generated go outside the green boundary, they must be fillet to maintain the straight lines of the green boundaries.
7. Get as many of the boxes as possible a view towards the dots.
Could any one provide me a method or a way to start, if there are any useful links, please share with me. Thank you!
…
re is my problem... I need to arrange Boxes in the most efficient way within boundaries of object and follow the following constraints.
The Goal: To fit 125 boxes in the most efficient way inside the total area. Starting Variables:
(1) 40% of the Boxes need to be between 60 and 85MSQ. (2) 40% of the boxes need to be between 86 and 110MSQ.
(3) 20% of the boxes need to be between 111 and 125mSQ. The breakdown doesn’t have to be exact to give the script some flexibility. Meaning you can have 41% +39% +20% = 100%.
Constraints:
1. A total MAXIMUM area of approximately 1600M per layer.
2. A maximum of 8 layers for a total of 12,800M per layer. Optimization can make as little or as many as 8 layers vertical to accommodate all boxes. So if script can achieve with 3 levels great. If needed all 8 levels, that's fine too. However, pay attention to next constraint (#3).
3. Approximately 15% of that space on each layer is off limits. (internal area) (blue area in example script) and the shape of the boundary cannot be modified to accommodate box design resulting in jagged lines for the internal area.
4. All generated squares/rectangles must have at least 3m touching an outside border (The Green lines).
5. All boxes must also be touching minimum 1M of border of the blue line.
6. If the boxes generated go outside the green boundary, they must be fillet to maintain the straight lines of the green boundaries.
7. Get as many of the boxes as possible a view towards the dots.
Could any one provide me a method or a way to start, if there are any useful links, please share with me. Thank you!
…
tunities offering new tools and ways to understand dataflow, performance analysis, logic constructions, etc. Over that statement, I've always observed that a definition is full of information at component level or small groups, but that informed-user-feeling disappears exponentially while you zoom out an get a more general picture of a big definition (small definitions are not a problem due to the good level of information supplied at that zoom factor).
So I though, why not to use this graphic potential to lead to a more complete data representation at low zoom factors in big/very big definitions? Have you ever noticed how annoying is to review big definitions captures printed in A1 project panels? These captures lack any kind of useful information (even if you are an expert in GH)...you can only conclude looking at them how organized or well planed was the definition coding process...but nothing else (not really, you can conclude other stuff, but not at the level that you could expect from a graphic-centric coding tool). Some users has invented ways to give more data to third-person users/tutors...: using panels with text scaled up, using scribble components, importing drawings from rhino...is even more frustrating if you want to explain how the definition works using one of those captures...there are not landmarks, etc to support your speech.
All this lead us to include certain components search (by name, plugin, tab...) into our mapping tool. Could be nice to be able to stack several layers of information visually, and it could lead to a better understanding on GH definitions as a whole and not as small pieces linked together.
Sorry for the big "tocho"...like we say in Spanish.
By the way, the histogram thing sounds great :D…
Added by Ángel Linares at 5:36am on November 6, 2015
uld draw, lets say opening locations which would then trigger certain code. Its fairly easy to convert formating, a cell with a certain color, to code, so in a way I would be using excel as a super basic cad program to manage lists of data. In order to do this I need to be able to call some Excel commands from Rhino and to add some functionality to LAN's rhino to excel script (http://www.livearchitecture.net/archives/1516) I would like to be able to get the Ubounds and dimension of an array or a list. . . ie somehow get the equivelenat number of rows and columns of an incoming list of data and then use this to generate some graphics in excel but . . . . It seems that the sytax for excel Vb script via interoperability
marshaling is a bit different:1)I can not use
the set command ie Set range 2) it does not allow me to use the typical excel
syntax such as:
Worksheets("Sheet1"). Range("A1:D4").BorderAround
ColorIndex:=3, Weight:=xlThick
I get the following errors
Error: Method arguments must be enclosed in parentheses. (line 114)
Error: Name 'xlThick' is not declared. (line 114)
Is their an alternate way to write the Excel commands? Or is there something I need to do in Rhino? Any advice would be appreciated.
Best,
Ben…
Added by Ben Fortunato at 11:10am on February 27, 2010
H are automated by using them as an ActiveX, the C# script object fails on the simplest tasks. That is, when initiating Rhino and GH externally (as by the following C# code):
Rhino5Application rhino_app = new Rhino5Application();
dynamic grasshopper = newRhino.rhino_app.GetPlugInObject("b45a29b1-4343-4035-989e-044e8580d9cf", "00000000-0000-0000-0000-000000000000") as dynamic;
The following very simple C# script component fails because it cant cast its input:
The c# code at the component is only:
Line 89 is simply casting of the input. Clearly, this makes the usage of C# component, under automation, impossible which is a major loss.
As said, when initiating Rhino and GH manually , all works well as in the following:
Any ideas why it misbehaves under automation (as an Active X ) ?
I added the gh file of this example.…
f my list.I don't understand why, but I guess I must be too young user ^^In the original list, i have a path {0;0;0;4} with two index and after the random node, {0;0;0;4} has 88 index.Items are not correct?I would have a comparable structure has the right list on my jpg (photomontage...)How I can do that?Thank you in advance
…
oCommonSDK, I modified a working C# component that does something similar (ReduceMesh, written by Andrew Heumann). Both scripts are attached.
Aside from changing the component name and eliminating the P parameter, I made two modifications to the script:1) changed line 87 from private void RunScript(Mesh M, double P, ref object A) to: private void RunScript(Mesh M, ref object A)2) changed line 93 from: Rhino.RhinoApp.RunScript("_-ReduceMesh _ReductionPercentage " + Convert.ToString(P) + " _Enter", false); to: Rhino.RhinoApp.RunScript("_-MatchMeshEdge " + " _Enter", false);When I run the ReduceMesh component, the mesh object I feed it gets baked, the ReduceMesh command is run, the temporary object is deleted, and the reduced mesh result is returned. (Thanks, Andrew).When I run the MatchMeshEdge component, the mesh object I feed it is baked, the MatchMeshEdge command is run, but the temporary object is not deleted and no result is returned. The runtime error reads: "Sequence contains no elements (line 0)". I have a feeling that the command line string I am handing to RunScript is incomplete. When I enter it manually on the Rhino command line I see that it wants a mesh and three parameters. Of course I can hit Enter to accept the default values, but when you invoke a command through RunScript do you have to supply all parameters regardless? Also, where would I find details on the argument types that the command wants? For example, the last parameter reads "RatchetMode=On" or "RatchetMode=Off". How do I know if the type is Bool or the literal string "On" or "Off"?I am a complete novice at this so any help you can provide would be greatly appreciated! …
o, presso la sede Eurac e il TIS, nei giorni 21,22 e 23 maggio 2015.
Il processo di progettazione integrata è riconosciuto come metodo per ottenere gli elevati livelli di qualità oggi richiesti agli edifici. Con questo approccio diventano sempre più rilevanti il comfort visivo e la gestione dell’illuminazione naturale in relazione al risparmio energetico. Di fatto, il nuovo protocollo Leed v4 riconosce crediti ad hoc e conferma l’importanza della progettazione daylighting per “collegare gli occupanti con lo spazio esterno, rinforzare i ritmi circadiani, ridurre l’uso dell’illuminazione elettrica con l’introduzione della luce naturale negli spazi”.
Una progettazione robusta richiede l’uso di strumenti di simulazione efficaci e Radiance è riconosciuto come uno dei software con le capacità di fornire risultati affidabili. Radiance è utilizzato sia a livello di ricerca che tra i progettisti, ed è tra i più accurati per la simulazione professionale della luce naturale ed artificiale. Non ha limiti di complessità geometrica ed è adatto a essere integrato in altri software di calcolo e interfacce grafiche. Le principali e più versatili tra queste (DIVA4Rhino, plug-ins per Grasshopper e Rhinoceros3D), essendo in grado di facilitare notevolmente le procedure di programmazione, saranno oggetto del corso.
Il corso è rivolto a progettisti e ricercatori che vogliano acquisire strumenti pratici per la simulazione con Radiance al fine di mettere a punto e verificare le soluzioni più adatte alle proprie esigenze. Sono previste lezioni di teoria e pratica con esempi ed esercitazioni volte a coprire in modo dimostrativo ed interattivo i concetti trattati.
Il corso viene riconosciuto con 15 crediti dall’Ordine degli Architetti.
Le domande di iscrizione devono essere presentate entro il 27 aprile 2015.
Scarica la brochure con tutte le informazioni Corso Radiance - EURAC.pdf
Il corso è sponsorizzato da Pellinindustrie.…
hop innovativo sulle prospettive e sfide future del design computazionale.
INFO ED ISCRIZIONI
PLUG IT | Rhino + Grasshopper | Livello Base | Modellazione parametrica e controllo di forme complesse
Plug it, primo step del percorso formativo in tre fasi “AAD Workshop Series“. Plug it fornirà ai partecipanti un’effettiva padronanza delle più avanzate tecniche di modellazione digitale, approfondendo le metodologie della modellazione algoritmica e parametrica nel campo dell’architettura e del design del prodotto. Il corso è rivolto a studenti e professionisti dei settori della progettazione architettonica, design, moda e gioielleria, con esperienza minima nel disegno CAD bidimensionale (acquisita su qualsiasi piattaforma software) e si articolerà in lezioni teoriche frontali ed esercitazioni guidate
FORM FINDING STRATEGIES | Livello Intermedio | Analisi ambientale ed ottimizzazione della forma
Form Finding Strategies è il secondo step del percorso formativo in tre fasi “AAD Workshop Series“. Il workshop intende esplorare le possibilità di generazione di forme efficienti in relazione ad influenze esterne ed alle caratteristiche intrinseche della materia stessa. Analisi ambientale (input solari, termici ed acustici) ed analisi/ottimizzazione strutturale FEM saranno le principali metodologie utilizzate per raggiungere gli obiettivi di ricerca della forma. Saranno introdotti numerosi plug-ins tra cui: Weaverbird, Kangaroo, Geco/Ecotect, Ladybug, Millipede. Il corso si rivolge a studenti e professionisti con conoscenza base di Rhino e Grasshopper.
PERSPECTIVES | Livello Avanzato | Python coding e modellazione algoritmica avanzata
Il nuovo corso Perspectives proposto per la prima volta nel 2019 (ed ultimo step del percorso formativo in tre fasi “AAD Workshop Series) introdurrà gli studenti alla programmazione Python ed alla sua integrazione con Grasshopper. Verranno inoltre esplorate tecniche avanzate di generazione formale basate su iterazioni. Tra i principali plugins utilizzati: GhPython, Anemone, Hoopsnake, Plankton, MeshMachine, Pufferfish. Pensato come workshop innovativo sulle prospettive e sfide future del design computazionale, è rivolto a studenti e professionisti con esperienza in modellazione algoritmica con Grasshopper.…
being driven by the wii nunchuck... But, here's my issue. I tried it first by having the output from the listener be a 6-digit number... so, I'm using the (CInt(Val(StoredValue))) command and it's writing out 181130... and I can easily split it up selecting the Left(x,3) or Right(x,3)... I first rant that number through a Format("{0:000000}",x) so that even if one of the accx or accy numbers were a 2-digit number (so my overall number would only have 5-digits)... with this Format function... I'm always assured a 6-digit number. And this method works... except...
If the first group of numbers coming in only has 2-digits... So, lets say the accelerometer read out of the first one (accx) is 89. Let's say the accy read out is 119. So, when I run this through the Format function to make it have at least 6 digits, my number now reads 011989. So, if I were to take the first three numbers on the right, my read out would be 989... which is much higher than my expected (60-180 range that is really coming over the Serial Port)... So, I'm back to where I started... in that I need to figure out a better way to split up the data.
Which brings me to your method. I tried it as well... in fact, I added a comma in the serial readout, so the string coming out of the listener reads 89,119. So, I can use your trick to go look for a delimeter and then read to the left and right a certain number of digits... The problem I still have is that the data going into the function is a string, and thus even if I split the 3 digits to the right of the comma out (so, my output says 119)... it's still a string, and my number parameter is still red. In your picture above, was your original 181 130 a number or a string? My guess is that it was understood as a number, because your number parameters at the end are accepting the value. But, in my case... I'm still stuck with the inability to convert a string to a number... Does this make sense? And are their any other workarounds?…
Added by Andy Payne at 9:42am on September 3, 2009