hat said, the processes that would benefit most from it in Rhino and Grasshopper actually lend themselves remarkably well to multi-threading. Things like Intersections, Meshing, operations on individual items in arrays would all benefit since they involve a lot of repetition where one iteration does not depend on the previous one.
Rhino4 was not designed to be threadsafe, and there were places where it was not possible to thread certain tasks. For example, imagine the Contour command. You'd think that it would be a piece of cake to thread that, you assign the first 25 contour intersections to core 1, the next 25 to core 2, the next 25 to core 3 and so on and so forth. But as it turns out intersecting a Brep and a Plane requires Rhino to build a spatial tree of the Brep first (assuming it doesn't exist yet). These trees vastly speed up a lot of operations and they are created lazily, meaning they get created the first time they are needed. Now we suddenly have four threads all trying to run a Brep Plane intersection and all trying to build the same spatial tree at the same time. This cannot end well. So in Rhino5 we made sure that when the spatial tree is getting build, every other thread that tries to access the Brep gets put on hold until the tree is done.
Then there's problems that the Intersection function might store temporary data on the Brep during the intersection, which makes threading intersections on the same Brep an absolute impossibility.
Then there's the even worse problem that the Intersection function might store temporary data in a static cache, which means you cannot run the function more than once at a time, even if it's on different Breps.
In Rhino5 we tried to rectify all of these problems. I think we got most of them by now.
When Grasshopper switches to Rhino5 for good, we'll start looking into threading a lot more seriously, not in the least because we'll also switch to .NET 4, which has some pretty cool mechanisms for writing decent MT code.
Until then, we'll have to stick to good old fashioned optimization. Christoph's problem was that it takes 12 minutes to open a file. Even if you thread that and you get 100% efficiency (which you won't, there's always additional overhead when threading) it would still take 3 minutes if you have 4 cores. It's an improvement sure, but not much of one. I'd like to know exactly where all that time is spend, then maybe we can remove specific bottlenecks.
--
David Rutten
david@mcneel.com
Poprad, Slovakia…
ke very easy parts of Jewelry, like for sample:
1) Cutters
2) Prongs
3) Heads
Then, we have another that copies, scales and orients these parts to a Pave.
And the last part, is to make few definitions for making all kind of rings... But, using Generative Modeling. In other words, different than Matrix or RhinoGOLD, they do not have this.
Hope it helps some...
Today, I may make a video for the Cutters and Orient, Scale and Remap, see them on www.GJD3D.com and then, you will see the WHOLE idea...
Last, I want to teach this, and as a PLUS, give all 30 GH definitions to the students, that is like 900 US$ just for the definitions! :-)
Say hello to your friends in Aplicraf ok…
ive methods for synthesising drawing and 3D printing. Working with Objet Geometries high resolution, multimaterial liquid 3D printing technology, participants will be involved inan intensive ten-day programme of making and testing 2D, ‘thick 2D’ and 3D digital printing techniques to invent architectural surfaces.
The workshop programme is inspired by British pioneers of art and architectural representation –Joseph Gandy, Robert Adam, James Stirling, David Hockney and John Outram – and informed by Israel’s unique cultural heritage
of textiles and ceramics. The workshop is the testing ground for AA Intermediate Unit 9’s ongoing experiments to blur the boundary between drawing and 3D printing. The objet trouvé, exquisite corpse and other Surrealist and Dadaist techniques form the basis for these investigations.
The workshop’s objective is to deliver an atlas of prints (working with measured drawings from non-architectural disciplines) from each participant (a ‘3D takeaway’) that they will incorporate into future projects and
publications, giving the workshop a wide-ranging material and intellectual influence.
Participants will work in at least two of four different AA-led design units over the ten days. The teaching staff also includes
Eran Neuman and Aaron Sprecher of Open Source Architecture, as well as Marco Ginex and Adam Nathaniel Furman of Madam Studio, and Arthur Mamou-Mani from the AA
In addition to advanced software tuition, there will be regular evening lectures (invited speakers include Benjamin Samuel Koren and Erez Ella) and workshops including a hands-on working session with Objet Geometries.…
en)1. Traceback: line 25, in run, "C:\Users\nholland\AppData\Roaming\McNeel\Rhinoceros\5.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\ghpythonlib\parallel.py" line 8, in script line 21, in helper, "C:\Users\nholland\AppData\Roaming\McNeel\Rhinoceros\5.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\ghpythonlib\parallel.py"
I'm not sure what this error is telling me either.
…
Added by Nate Holland at 10:46am on December 23, 2013
ath to move down then rejoin them again. Right now it is not randomized.
Also I needed to scale the top triangles so that as the height increases the size decreases.
Anyway, hopefully with this, you or someone else can keep working with it.
…
e:
Modulo 1Il workshop è finalizzato a fornire ai partecipanti i fondamenti della modellazione parametrica e generativa attraverso Grasshopper, plug-in di programmazione visuale per Rhinoceros 3D (uno dei più diffusi modellatori NURBS per l‘architettura e il design). Il workshop mira a gestire e sviluppare il rapporto tra informazione e geometria lavorando sui sistemi di involucro in condizioni specifiche. La discretizzazione di superfici (pannellizazione sia Nurbs che Mesh), la modellazione delle geometrie attraverso informazioni (siano esse provenienti da dati di analisi ambientali, da mappe di colore o da database), l’estrazione e la gestione di informazioni richiedono la comprensione delle strutture dei dati al fine di definire un processo che va dalla progettazione alla costruzione.I partecipanti impareranno come costruire e sviluppare strutture di dati parametrici per informare geometrie ‘data-driven’ e come estrarre le informazioni rilevanti da tali modelli per il processo di costruzione.Modulo 2Il workshop, volto a promuovere le nuove tecnologie digitali di supporto alla progettazione e alla fabbricazione, fornirà ai partecipanti gli strumenti per la preparazione, attraverso Grasshopper, dei modelli per il processo di stampa 3d. Il workshop inoltre, darà ai partecipanti i fondamenti dell’uso della stampante 3d e si concluderà con la fabbricazione del proprio modello realizzato durante il corso.
[.] Date:Modulo 1 – 25/26/27 Luglio 2014 – SiracusaModulo 2 – 28/29 Luglio 2014 – Catania
[.] Tutors:Arch. Andrea Graziano (Co-de-iT)Arch. Salvo Pappalardo (Studio Aion)Arch. David Montenegro (Hackspace_Catania)
[.] Luogo:Modulo 1Officina Ermocrate – Viale Ermocrate 7, 96100 – SiracusaModulo 2Hackspace_Catania – Via Grotte Bianche, 112 – Catania
[more info]
…
lp you much, getting a single fast core is a much better choice. Fast and lots of memory also helps a great deal.
In the near future, the processes that would benefit most from it in Rhino and Grasshopper actually lend themselves remarkably well to multi-threading. Things like Intersections, Meshing, operations on individual items in arrays would all benefit since they involve a lot of repetition where one iteration does not depend on the previous one.
Rhino4 was not designed to be threadsafe, and there were places where it was not possible to thread certain tasks. For example, imagine the Contour command. You'd think that it would be a piece of cake to thread that, you assign the first 25 contour intersections to core 1, the next 25 to core 2, the next 25 to core 3 and so on and so forth. But as it turns out intersecting a Brep and a Plane requires Rhino to build a spatial tree of the Brep first (assuming it doesn't exist yet). These trees vastly speed up a lot of operations and they are created lazily, meaning they get created the first time they are needed. Now we suddenly have four threads all trying to run a Brep Plane intersection and all trying to build the same spatial tree at the same time. This cannot end well. So in Rhino5 we made sure that when the spatial tree is getting build, every other thread that tries to access the Brep gets put on hold until the tree is done.
Then there's problems that the Intersection function might store temporary data on the Brep during the intersection, which makes threading intersections on the same Brep an absolute impossibility.
Then there's the even worse problem that the Intersection function might store temporary data in a static cache, which means you cannot run the function more than once at a time, even if it's on different Breps.
In Rhino5 we tried to rectify all of these problems. I think we got most of them by now.
When Grasshopper switches to Rhino5 for good, we'll start looking into threading a lot more seriously, not in the least because we'll also switch to .NET 4, which has some pretty cool mechanisms for writing decent MT code.
--
David Rutten
david@mcneel.com
Poprad, Slovakia…
ommand as well. You can get the GH plugin from here. http://www.tsplines.com/forum/viewtopic.php?f=9&t=30340
If you only have V2 i would download the trial from here that has 25 saves same as rhino trial but does not work with the GH Plug-in unless you request a 30 day trial verison http://www.tsplines.com/products/tsplines-for-rhino/overview.html
Hope this Helps.
Matt…
re-organized code, the preview at "(1)" is static, before the simulation; it is hidden to see the simulation. The preview at "(2)" is the simulation, which traces each tool path and then reveals each one piped.
…
Added by Joseph Oster at 5:56pm on November 1, 2017
ertainly not a % of the slider value)
here is an example
There are two values with 0.4, they should be 25% of the slider of range 0.3 to 0.7. I am getting 2 different values 0.766 and 0.111. It is confusing since they should at least have the same value. And the value doesn't correspond to a percentage.
Thanks,
…