hat aren’t completely there. BIM will have to continue to evolve some more if their supporters want to get to realize the promise that still is. I can’t say much about PLM, but I would say that both BIM and PLM should be considered in future developments of GH and Rhino. David has said several times that some GH limitations regarding geometry and data structures (central to interoperability) are actually Rhino limitations. So, I wouldn’t put so much pressure on David for this, or at least I would distribute the pressure also on the core Rhino development team.
Talking about Rhino vs. GH geometry, there is one (1) wish I have: support for extrusion geometry. GH already inputs extrusion elements from Rhino, but they are converted to breps. Is not a bad thing per se. The problem is when you need to bake several breps that make the Rhino file to weight several hundred MB. When these breps are actually prismatic, extrusion-like solids, is a shame that they aren’t stored as Rhino V5’s extrusion geometry in a file of just a couple of MB (I overcame this once with an inelegant RhinoScript that wasn’t good for other people). This was one of RhinoBIM’s main arguments. We can develop a structural model made of I-beams in GH using the Extrude components. We should be able to bake them as extrusions. That would also work for urban models with thousands of prismatic massing buildings (e.g. extruded footprints). Even GH’s boxes are baked as breps! Baking boxes as extrusions could be practical for voxelated or Minecraft-like models.
(2) Collaborative network support. Maybe with worksession handling, or something that aloud project team members to work on a single definition or in external references or something alike. I know there is another Rhino limitation on this, but maybe clusters are already going in that direction?
And maybe on the plug-ins domain:
(3) Remote control panel that could be really “remote”, like from other computer or device. There is an old Android App for that, but is not only a matter of updating. I mean, it would be great to control a slider with the accelerometer of an Android phone, but to have that on an iPhone will require another development team. If GH could support networks, a remote counterpart of a RCP plug-in could be developed as a cross-platform web app. I don’t know if you can access accelerometer functionality through HTML5 already, but for now, asking a client (or an spectator or any stakeholder for that matter) to control your sliders from gestures of his/her own phone would be awesome (maybe Firefly will fill that hole?).
(4) GIS support. GH already imports .shp files. Meerkat can even access the database, but what about writing to shapefiles or generating our own with databases processed/generated in GH?
(5) SketchUp support. Not only starchitects and corporations are using GH in the AEC. There are a lot of small firms, freelancers and students interested. Most of them use SketchUp for 3D modeling (not CATIA, neither Revit). Yes, you can import/export .skp from Rhino, but if GH could support nested block at bake time (also mentioned by others), it could write .skp files with complex relations of blocks (that are called components in SketchUp) and nested groups, going beyond what Rhino can export.
(6) Read/Write other formats. There are some challenges with proprietary formats that are not completely supported by Rhino, but they’re still a lot of open formats that are relevant to the fields of GH users, like stl and ply for 3D-printing. It could be nice to write mesh colors to a ply for 3D-printing a colored prototype based on GH colors. There are others, like IGES, STEP, COLLADA, etc. and 2D, like svg, odg and pdf. Some of them could offer special formatting options like custom data that the format supports but nobody uses just because is impractical to access this from direct modeling environments (but not from visual programming).
--Ernesto…
It was originally developed at NBBJ by the Design Computation Leadership Team over the course of about 10 months in 2015-2016.
Primary development by:
Andrew Heumann / andheum / @andrewheumann
Lead Developer
Marc Syp / marcsyp / @mpsyp
Product Manager
Nate Holland / nateholland / @_NateHolland
Contributing Developer
----
Gone are the days of faking a user interface by laying out sliders and text panels and hiding wires on the Grasshopper canvas. Human UI interfaces are entirely separate from the Grasshopper canvas and leverage the power of Windows Presentation Foundation (WPF), a graphical subsystem for rendering user interfaces in the Windows environment.
OLD NEW
In other words: Human UI makes your GH definition feel like a Windows app. Create tabbed views, dynamic sliders, pulldown menus, checkboxes, and even 3D viewports and web browsers that look great and make sense to anyone--including designers and clients with no understanding of Grasshopper.
Download the plugin + sample files:
Food4Rhino
View the project on Bitbucket:
Bitbucket
We look forward to seeing where this project takes you, please share your projects made with Human UI!…
ave the bytes available, they also need to be adjacent. All 4 frikkin trillion of them (assuming you need a million 1000x1000 pixel tiles). That's just not going to happen.
It could be that Photoshop has very clever memory management that allows it to store image data in non-consecutive chunks, but .NET does not allow this.
In fact this can be a real problem with much smaller images as well. In 32-bit Windows you're allowed 2GB of memory per application (sometimes 3). If Rhino+Grasshopper are already using up 1.5GB it's not like you can fit in an extra 0.5GB image before running into problems. Memory is almost never used in a consecutive fashion.
Rhino uses a clever memory manager (not the default Windows one) that results in less memory fragmentation and Grasshopper uses the .NET memory allocator and garbage collector which is capable of defragmenting memory usage. But even with these two optimizations memory fragmentation will occur (and the longer Rhino runs the worse it will get) making it less and less likely that you'll be able to find large consecutive areas of free memory.
The Grasshopper hi-res image exporter creates image tiles of 1000x1000 pixels and saves these files immediately. So it never requires more than 4MB while running. Once it's done making the images, it will start a different application that will stitch these images together. That's what the GrasshopperImageStitcher.exe in your screenshot is. Since this is a new app, it has 2GB of absolutely pristine memory to play with so it's a lot longer before it runs into problems. And when it does run into memory problems it won't bring down Rhino with it.
--
David Rutten
david@mcneel.com
Poprad, Slovakia…
t ... have a close look on these weird "slots" in the base mount plate - allow the struts to "follow" some base "auto" arrangement (up to a point).
2. After various ... er ... hmm... "communications" with a variety of apps.(some of them are not for public eyes) ...here's a concept demo about what could be done and fool the academics (that's the bit that I like the most)
In plain English (work in GH):
1. Create some wires that represent the struts and PAY attention on their limits of adjustability.
2. Create a nurbs curve through the points indicated with "balls" in the demo. Patch the nurbs.
3. Trim the nurbs surface with some "indicative" profiles OR use Kangaroo by applying a minimum possible relax state (if the latter add the rhomboid cables as well - they deform by pulling the membrane downwards).
4. Optionally put the real things in place (quite GPU taxing that one - do some Viz control).
best, Peter
…
her than an exotic type.
It is available on food4rhino and the source code is available on bitbucket. It is free for use under the GPL license. Contributions and suggestions are welcome.
It's secondary purpose is to provide tools for creation and streaming of point clouds with common scanning techniques (Kinect V1, V2 and OpenNI2). This is made possible due to the speed increases afforded by the use of the point cloud class. For example, a full point cloud from a Kinect V2 is released in approximately 10-20ms on standard machines, which is more than enough for most purposes. A multi-threaded KD-Tree is also implemented to allow very fast spatial searching.
Alternatives
Firefly offers an extensive suite of tools dealing with vision and image processing, including Kinect streaming. However, in some cases interpreting the stream as a point cloud is more useful (and often faster!).
Volvox offers an extensive suite of tools dealing with Point Clouds, and if conventional use is your ambition it is very fully featured and highly recommended.
There are some notes about interoprability on the Wiki: https://bitbucket.org/camnewnham/tarsier/wiki/Interoperability
If you have suggestions about how the overlap and interoperability may be improved between these plugins please post below.
…
Added by Cam Newnham at 6:19pm on December 21, 2016
an almost planar tissue (your case) can cause a variety of issues up to the undo able state (metal parts/components grow in size as well for no reason). See forces estimated by FF below.
2. Therefor I strongly suggest to consider Plan B (a) mastermind a secondary "anchor" capability in order to achieve a far more stable system (b) use a mount design that can support this (and comply with the attractor concept of yours). Here's a variable mount custom system (mostly machined AND not cast) that is suitable for the scope (Rhino reads the stp file OK .... but makes a colossally big file - thus I attach here the original).
3. On first sight lot's of things in this system appear "odd". For instance: is it stable? Why these double cables are used? How far can be adjusted? (that's a classic case for feature driven parametric design - not doable with Rhino).
4. This concept (strut axis exported only) is tested in FORMFINDER and some other far more complex membrane apps that I use quite often (not RhinoMembrane). Here's is what FF tells us about:
Observe a different kind of "stress" when this is converted to radial type:
5. If you insert the stp file to the Rhino file provided (exactly as exported from FORMFINDER - no mods of mine of any kind) you'll see what goes where (and why). That way the usage of double cables is rather obvious (and a lot other things - for instance the way that the struts achieve "equilibrium", see the slots in the base mount plate.
6. If this approach is worth considering your definition requires some serious rethinking (far more simpler/manageable with the drawback that the real parts they are "static" they can adjust only as far this particular solution allows them to do - controlling them parametrically is clearly impossible with the current state of R/GH capabilities).`
All in all: this case works because the cables push the anchor points downwards and the struts push them upwards.
more in a while
…
reaky thing consisting from triangulated "modules" (i.e an assembly out of this, this and that) where the exterior edges ARE always under tension (= SS 304/316 cables OR nylon) and the interior ones MAY be under compression ( = steel, aluminum, wood, carbon) OR ... some of them ...may be under tension. Bastardized T trusses deviate a bit from theory ... but who cares? (not me anyway). T trusses have many variants (but as the greatest ever said: Less is More).
2. Large scale T for AEC is the art of pointless since it costs around the GNP of Nigeria. Here's some indicative components from a module of a multi adjustable TX system costing (the module) ~ the price of my Panigale (Google that):
The above is mailed to a friend who has MIT (yes, that MIT: the top dog) on sight ... therefor he needs some appropriate "credentials", he he.
3. The distance that separates the above with the demo TDT node provided is around 666.666 miles - but we don't care: we are after Art not some testimony to vanity.
4. On purpose I've used a smallish ring to give you a clear indication upon the constrain numero uno in truss design: CLASH matters.
5. You'll need:
(a) A decision related with the tensioners (classic Norseman + SS cables or nylon machined thingies?).
(b) A machinist who can do elementary stuff (like the adapters) and can weld this to that (the "ring" for instance). His abilities must be 1 in a scale of 100. If the fella has a computer (not a CRAY) and he knows what 3dPDF is (hmm) ... well ... use that way to communicate with him PRIOR designing anything: He must agree on the parts BEFORE the whole is attempted (as a design in GH or in some other app).
(c) A carpenter with a wood lathe for the obvious. BTW: BEFORE doing any TDT attempt > ask the carpenter about the available wood strut sizes. Against popular belief DO NOT varnish the wood (use exterior alkyd/oil stains from some top maker like the notorious US company PPG).
http://www.ppgpaints.com/products/paints-stains-data-sheets
(d) Good quality cigars (and espresso) plus some classic music (ZZTop, PFloyd, Cure, Stones, U2 etc etc) during the assembly.
(e) Faith to the Dark Side (see my avatar).
May the Force (the dark option) be with you.…
rella - Revit/AECOSim etc etc) then scripting is the only way to do business. In fact Dynamo/Generative Components would be your main parametric app ... but GH can offer a thing or two as well.
Other than that here's a very brief explanation upon the "steps":
1. Using connectivity trees (faces to edges, edges to faces, faces to faces) ...
2. ... Find the "internal" edges (meaning edges that are connected to more than ONE face) and store them in a tree. Doing this find the smallest edge as well (for defining the "module" of the pts divisions minus the start/end offset). Used an object type tree since I store the indices of the adjacent faces as well (an object type is a "general" container that can hold cats, dogs, numbers, bananas etc etc ... with the cost of un-boxing when an item is to be used [Note: un-boxing costs time but in this very simple case we can afford the "luxury"]).
NOTE: if you observe the paths on that tree you'll notice that they correspond 1:1 to the indices of the related edges in the EList List (of type Curve).
3. Loop withing the "interior" edges and define the coplanar vectors per edge related with the 2 adjacent faces. These vectors are the Cross Product (Google that) between the edge direction and the normal per face (at u/v: 0,0). Divide the edge (taking into account the start offset AND the ratio of the edge length/ minEdge [as derived from phase 2 as above]). Using these points create a "zing-zag" polyline and store it in the same path as the OEM edge.
NOTE: The polyline is not planar since each teeth is laying to the corresponding adjacent face plane (if the Brep Faces are not planar more "smart" stuff is required).
From this point (not included in V1):
4. Using Face to Edge connectivity data: IF a path exists (in the polyline tree as in 3 above) with the given index sample this polyline as Curve ... if not get the OEM Curve (case: "boundary"/perimeter Brep Faces). Join the Curves (take provision to report failures) and project them to the corresponding Brep Face plane (case: planar face) or ... to some suitable "mean" plane. Define a planar Brep out of the newly created closed planar Curve and extrude it (actually the Brep Face of it) both sides at once for doing a "solid". If Brep Faces are not planar ... well things are a bit more complicated (not nuclear science ... just another approach is required).
In fact ... is a bit more challenging than that since there's assembly tolerance AND clash issues around ... but this is the "general" idea anyway. …
ts connectors and slots that allow CNC machining the facets and connectors for assembly.
https://www.youtube.com/watch?v=34OvgflJEmI
We developed this construction methodology earlier this year while working on a large scale parametric structure for Midburn, the Israeli Burning Man. While doing so I used grasshopper to generate the facets for the geometry, while a friend on the team (Matan Zohar) wrote a javascript app that translated the mesh into connectors and slots for CNC manufacturing. You can see more about the project here:
http://www.shlomimir.com/triped/
I wrote this component as an exercise in learning rhinoscript and python, with the purpose of bringing the functionality into the grasshopper workflow. It's now to the point where it is working for triangle and square welded meshes while outputting the connectors and slots as an unorganized list.
Questions and To Do List
1. I'm new to object oriented coding and functions, and basically just wrote the whole thing as a series of conditional loops with two dimensional arrays holding the data. Planning on restructuring this better, would love any tips.
2. Right now outputting the connectors and slots on the input mesh itself in 3D, planning on setting this up layed out on one plane to organize for cutting. I was wondering if there are any existing tools for this or if I need to do this manually.
3. Labeling connectors and slots. Is there anyway to output text from python that can be later baked into the rhino for labeling?…