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!…
r interface to gsa, you'll find technical help/descriptions in it's help system. Certainly changing the type to Bar overrides any user defined releases.
The gsa solver must make special allowance for node "stability" when the elements connected are all bars (for rotation). If you're circumstance when you change type to Beams, your end releases are applied to axial and shear at all ends (note you can change the "close model" input on the solver component to false so you can see the analysis error). I think I previously discussed with Oasys about the COM interface sending back the "log" so I could display it in Grasshopper. Elements with axial and shear releases both ends are unrestrained, so it's causing the solver error. If you say released Fx and Fy at both ends it might work (I didn't test), certainly at one end only it should.
There's a hidden component (I can't remember if it's completed or not, i think so but not extensively tested) that can generate "tied interfaces" along edges of meshes to link nodes. Try dragging and dropping this string below onto the gh canvas.
{4661c381-1c36-4099-90f2-0d5cf0d30db3}
The trouble with rhino meshing is that polysurface edges can only have two adjacent faces, so getting coincident nodes along shared "edges" of surfaces is near impossible.
I do have some routines for "meshing" surfaces with simple geometry (ie 3 or 4 edged faces). This takes a distance setting and forces vertex spacing to respect this along edges, so tied interfaces wouldn't be necessary. If this is of interest, I'll see if I can provide it (or have done so) for the plugin. Let me know deadline/time frames you have for using this.
Look forward to hearing from you,
Jon…
he installation folder, Drag & drop SYNTACTIC(green one) over your grasshopper canvas.3. Close your rhino and reopen it. 4. Type GrasshopperDeveloperSettings5. Tick the Memory load *.GHA assemblies using COFF byte arrays option6. Run grasshopper and enjoy plugin…
it seems that was this. Now all is working fine !
Glad that it worked! But I am still a bit worried. Gismo components only modify the gdal-data/osmconf.ini file and no other MapWinGIS file. So your MapWinGIS installation files should not be compromised. The fact that you did not get the "COM CLSID" error message when running the "Gismo Gismo" component suggests that MapWinGIS has been properly installed. So I wonder if the cause for the permanent "invalid shapes" warning has again something with the fact that your system is again not allowing the MapWinGIS to properly edit the osmconf.ini. Maybe this problem will appear again, and again, and reinstallation of MapWinGIS every time can be somewhat bothersome.
- About the terrain generation, is it possible to have the texture from google or other provider mapped onto the terrain surface from gismo component ? (Same as using the ladybug terrain generator in fact). I try to used the image extracted by ladybug component and then applied it to the gismo terrain but the texture is rotated by 90°.
The issue with the rotation can be solved by swapping/reversing the U,V directions of the terrain surface. A slightly more important issue is that terrain surface generated with Gismo "Terrain Generator" component might have a bit smaller radius than what the radius_ input required. This stems from the fact that the terrain data first needs to be downloaded in geographic coordinate system, and then projected. Some projecting issues may occur at the very edges of the projected terrain, so I had to slightly cut out the very edges of the terrain which results in the actual terrain diameters being slightly shorted in both directions. This means that if you apply the same satellite image from Ladybug "Terrain Generator" component to Gismo "Terrain Generator" component the results may not be the same.I attached below a python component which tries to solve this issue by extending the edges of Gismo "Terrain Generator" terrain, and then cutting them with the cuboid of the exact dimensions as the radius_ input. Have in mind that this extension of the original terrain at its edges is not a correct representation of the actual terrain in that location. But rather just an extension of the isoparameteric curve of the terrain surface. So basically: some 0 to 10% (0 to 10 percent of the width and length) of the terrain around all four edges is not the actual terrain for that location, but rather just its extension.The python component is located at the very right of the definition attached below.
Also, if you would like to use the satellite images from Ladybug "Terrain Generator" component along with "OSM shapes", sometimes you may find slight differences in position of the shapes. This is due to openstreetmap data not being based on Google Maps (that's what Ladybug "Terrain Generator" component is using), but rather on Bing, MapQuest and a few others.
- About the requiredKeys_ input of OSM shapes, I understand what you mean and your advice, but in most cases I use it, the component was working fine even without input. I think it's better to extract all tags, values and keys of the selected area, instead of searching for specific ones as I try to find all data related to what I want after, isn't it ? To check what keys are present on the area also.
Ineed, you are correct.I though you were trying to only create a terrain, 3d buildings and maybe find some school or similar 3d building, for these two locations. The recommendation I mentioned previously is due to shapefiles having a limit (2044) to how many keys it can contain. This requires further testing of some big cities locations with maybe larger radii, which I haven't performed due to my poor PC configuration. But in theory, I imagine that it may happen that a downloaded .osm file may have more than 2044 keys. In that case shapefile will only record 2044 of them, and disregard the others. That was my point.But again 2044 is a lot of keys, and I haven't been checking much this in practice. For example, when I set the radius_ to 1000 meters, and use your "3 Rue de Bretonvilliers Paris" location I get around 350 something keys, which is way below the 2044.Another reason why one should use the requiredKeys_ input is to make the Gismo OSM components run quicker: for example, the upper mentioned 350 something keys will result in 350 values for each branch of the "OSM shapes" component's "values" output.Which means if you have 10 000 shapes, the "OSM shapes" component will have 10 000 branches with 350 items on each branch (values). This can make all Gismo OSM components very heavy, and significantly elongate the calculation process.With requiredKeys_ input you may end up with only a couple of tens of items per each branch.Sorry for the long reply.…
Added by djordje to Gismo at 8:57am on June 11, 2017
basis" problem ... all of a sudden - quite recently - a girl posted the MITESIGF (Most Important Thread Even Seen In Grasshopper Forums). She doesn't even realized that: she's novice:
http://www.grasshopper3d.com/forum/topics/array-1
4. Why this MITESIGF is MITESIGF? For 2 reasons:
4.a: Wooden pairs (Beams) Profile Curves (belonging in some tree) MUST allow individual control on a per "item basis" (OK, that's obvious) - see Images posted in the thread. No attractor (or any other "global" policy) can cut the mustard here (to tell you the truth this happens in 99% of pure engineering cases, but they appear very rarely in GH Forums - if at all, mind). If the profile curves are defined with 5 points (or 9 for the double thing) we need "on-the-fly" control over this Array (like the radii in your Sphere Manipulator) :
4.b: Critical Bottom-to-Top issues arise: Create a "global" topology (call it "parent") - the beams - and then place real-life "components" (call them "childs") that affect (most probably) the "parent". OK, that's impossible to do with GH/Rhino (peace of cake with CATIA/Microstation) but you can "approximate" things up to a point. Alternatively: you can "trigger" some interest from GH/Rhino developers if they have any AEC market(s) in mind.
Topic 4.a requires the master-to-slave slider thingy (iterate over branches (index slider:master) > reset the 5 values (value slider:slave) > modify them on the fly > save > increase/decrease branch > ...).
Other than that my definitions are far more challenging than this simple case ... but ... anyway ... long is the path (and hilly).
more soon.
best, The Troll
…
up structural systems in the parametric environment of Grasshopper. Participants will be guided through the basics of analysing and interpreting structural models, to optimisation processes and how to integrate Karamba3D into C# scripts.
This workshop is aimed towards beginner to intermediate users of Karamba3D however advanced users are also encouraged to apply. It is open to both professional and academic users.
Earlybird (until May 10):
Professional EUR 750 (+VAT)
Educational EUR 375 (+VAT)
Course Fee:
Professional EUR 825 (+VAT)
Educational EUR 415 (+VAT)
Course Outline
Introduction & Presentation of project examples
Optimization of cross sections of line based and surface based elements
Geometric Optimization
Topological Optimization
Structural Performance Informed Form Finding
Understanding analysis algorithms embedded in Karamba and visualising results
Complex Workflow processes in Rhino3d, Grasshopper3d and Karamba3d
Places are limited to a maximum of 10 participants with limited educational places. A minimum of 4 places are required for the workshop to take place.
The workshop will be cancelled should this quota not be filled by May 31st.
The workshop will be taught in English. Basic Rhino and Grasshopper knowledge is recommended. No knowledge of Karamba3D is needed.
Participants should bring their own laptops with either Rhino5/Rhino6 and Grasshopper3d installed. A 90 day trial version of Rhino can be downloaded from Rhino3d.
Karamba3D ½ year licenses for non-commercial use will be provided to all participants.
…
e and i get it. If you have time check the attached papers we published a while ago in relation to the contribution of thermal mass in the reduction of temperature in residential buildings. See the nice contribution of the heavy TM or the lower one for light TM.
As for the solarHeatCapacity, your description (of the 50W) is derived on a 1 Facade/Floor ratio and fully glazed. The only way to reduce it is to increase the ratio (bigger facade area). Which is not recommended (energy losses), but this is a different issue. So, roughly, we can say that 50 is the lower value. If i have less glazing area this number will be higher (right?)
I want to define a value list of "architectural situations", so it is easy to explain and understand. One situation can be:
"Ratio facade/floor 1 & Fully glazed" = 50
"Ratio facade/floor 1 & Half glazed" = 75
"Ratio facade/floor 1.5 & Fully glazed" = 30
"Ratio facade/floor 1.5 & Half glazed" = 50
"Ratio facade/floor 0.75 & Fully glazed" = 70
"Ratio facade/floor 0.75 & Half glazed" = 90
Makes sense for you something like this?
I also defined a value list for the timeConstant like this:
Light Building (Mobile home) = 1Medium-light building (Cement tiles on floor) = 4Semi Heavy Building (Concrete floor + Tiles) = 8Heavy Building (Concrete floors/ceilings + Heavy external and internal walls) = 12
As for the first 5-10 cm effective TM in general my assumption is that you take half of the mass to your space and half to the space above/below you. Will be interesting to do a parametric study on just the thermal mass, uninsulated and insulated to see what the depth limits effectivity will be. Interested in doing such a study together? Can be a nice work even for publishing.
Thanks a lot ... again,
-A.…
393&xg_source=activity
In this case we see a geometrically approach, which doesn’t works efficient, because it required knowing how they behaviors together before, and I think it is not the ‘really behaves’.
To make the structure ‘really behaves’ I tried use kangaroo and the result works very well! As you can see I simply give the 2-set reverse UForce, and then they start to rotate until they found their equilibrium. That means 90 degree rotation. I was wondering what we can do to make a endless-rotation. I am mean 360 degree or more like this:
https://www.youtube.com/watch?v=4owFczeqqMQ
By the way, I try to give supports which allow a horizontal movement only (Just curious how we could keep the anchor-movement horizontally and in the same layer, for example like usual supports for compression ring…). I use the AnchorXYZ, but Kangaroo-Engine seems don’t accept its output.
So maybe some one knows a better solution?
…
Added by Jon to Kangaroo at 7:40am on March 11, 2014
problem later) to fit more shapes that are otherwise won't fit in.
On the example below horizontal rectangle couldn't fit in but its rotated analog could and thus was placed in.
Later, when placed shapes are used to generate frames, because of this rotation, the position of the starting points changes and because of the approach I use to generate the frames some angle values are attached to the wrong corners, this brakes the frame shape and looks like this (on the left the frame of sick shape and on the right the frame of the healthy shape):
Again, this happens because the angle values are assigned to the specific corners (points) and previously rotated shapes get these all messed up:
Easy fix, don't rotate the shapes, problem is, I've already baked a good number of them for later use. I'd like to avoid regeneration because it takes a lot of time and without rotation I constrict the algorithm even more.
Better fix, use a different approach, this is where I'd like to hear suggestions and kicks in a right direction. Please take a look at my definition. It works but I have a feeling like giving an amputee a job of sweeping the floor.
…
ns. but first allow me to explain what i'm trying to do: i have a serial device i want to talk to, but i have to do it using some sort of handshaking. for instance, when i send a command/data, i need to wait for an appropriate response before sending another. i have used andy payne's general serial components from firefly, but i don't think they'll work for what i want to do, and in general, i want to know how to do this from scratch. i'm using the pyserial library to do the comm, and i can get it to work within one script. here's an example of a working (mostly) port open/close script (x=input param for baud, y=input param for port name, z=boolean input param for open/close):
import serialmyPort=serial.Serial()myPort.baudrate = xmyPort.port = yif z == True: try: myPort.open() except: print "Something went wrong. Cannot open port." if myPort.isOpen() == True: print myPort.name + " is open" if z != True: try: myPort.close() except: print "Something went wrong. Cannot close port." if myPort.isOpen != True: print myPort.name + " is closed"
this all works well and good. here are my questions:
1) I can open the port and then close it. however, if i try to re-open it, i get an access denied error. it seems rhino is holding the port open, as i have to re-start rhino to get it working again. i read through the discussions and didn't see any definitive answers to this problem. any advice?
2) I'd like to share this port with other components (or at least break up the functions of opening/closing the port and read/write, not unlike how the firefly components are organized), but i have no idea how to share an object instance between components. i did see that there is a sticky dict and tried to add myPort to it, but i kept getting errors in the other component when i try to use the object's methods. for instance:
Component 1 Script:
import serial
import scriptcontext
myPort=serial.Serial("COM4", 9600)
scriptcontext.sticky['myPort']=myPort
Component 2 Script:
import serial
import scriptcontext
myPort=scriptcontext.sticky['myPort']
print myPort.read()
but i get messages like:
Runtime error (MissingMemberException): 'Serial' object has no attribute '_port_handle'
any assistance would be greatly appreciated!!
best,
~BB~…