Sunday, 5 April 2009

More on Manipulating Structural Models

Here's the next entry with a tutorial/example on ways of manipulating your structural analysis model within Rhino.

It's been a month since my last post, but there's some great improvements on the way for the plug-ins, and you can see a sneak preview of some of this on the video clip for this tutorial.

Better quality AVI file for those that can't access YouTube or wish to see more detail.

In the current released version, when nodes are moved in the model, the centreline curves and 3d extrusions remain static to the old node positions.   To update the geometry, the nodes are updated in the GSA model, and then the existing Rhino representation must be manually replaced by running the interpreter command again.

The plug-in has now been developed with dynamically response to geometry manipulations made in rhino.  If you move or relocate nodes in the Rhino, the element centrelines (and shortly 3d extruded representations) will update on the new node positions.  Also the upcoming version will automatically replace/update any existing structural data in the rhino file, rather than require the user to manually delete it to avoid duplicate representation.

Anyway, here's some more methods/examples for manipulating your structural model node positions in Rhino.

This example is a simple representation of a bridge, for which we wish to investigate the form and shape.

GSA model: archBridge.gwb
Robot model: archBridge.str
SAP200 model : archBridge.s2k
Sofistik model: archBridge.dat
SpaceGASS : archBridge.txt
Strand7 model : archBridge.txt
And if you want the 3dm file with the parabola : archBridge.3dm

Open the GSA model, and copy all the GWA data from the gateway.
In rhino, right-click on the ggInterpretGWA button to generate the structural analysis model in Rhino (alternatively you can export the model to GWA from GSA, and left click to open the file).

We don't really need the 3d extrusions at this stage, so either untick the option, or turn off the layers once interpreted.

I'm going to use some point moving commands I've scripted into the latest version of the BullAnt plug-in which you can download from here:  Note that most of the new commands and functionality being developed will only become active when you activate the free trial license for the plug-ins.
I hope to give some tutorials for creating your own RhinoScripts for some of these manipulations in the near future.

The first bulk node manipulation we're going to do, is to move the points to equidistant points on the parabolic curve which represents the arch shape we wish to assess and update our model.

In the BullAnt plug-in toolbar, there is a button for the command ggUtilMovePointsToCurve that will prompt the user for multiple points, and then a curve to move the points onto.  During the selection of the curve, the user may toggle whether end points on the curve should be included, and a tolerance for coincident points (useful if your model contains joints with coincident nodes).  The command will attempt to sort the points into a logical order, and then update each point position to the corresponding division point on the curve.  A confirmation step visually draws arrows and dotted lines representing the changes (you might have to zoom depending on the scale of the movements and overall selection).  Once updated (remember the present version of the plug-in won't update the element centerlines yet), you can copy the node coordinates to the clipboard, and then update your GSA model by pasting the GWA data to the gateway.

The video then shows the same sequence having scaled the parabolic shape to give it more height.

Note that the hangers are no longer vertical for our new profile.  If retaining vertical hangers is important, we'll use a slightly different , you can mov the vertical hangers in position so that they all interesect the desired parabolic curve.  I recommend changing the current layer to a new empty layer, so we can bulk select in a minute.  Then run the Rhino Intersect command to generate a point at all of the desired intersection locations.   We can then use the BullAnt plugin command ggUtilMatchClosestPoint to select an original and target set of points to match.  As the command can utilise a specified maximum distance to move any point, we can bulk select all the structural nodes by right-clicking on the "OasysGSA NODES" layer.  Confirm the selection (by enter or spacebar), and then similarly select the newly created intersection points in the second selection.  Every point in the first group within distance of a point in the second group will have it's position updated to the nearest, and we can update our analysis model.

Rhino allows so many methods and options of generating/updating point positions that you'll find you're only really restricted by your own experience or ability to learn new ones.  Many situations might require manual processing, others will allow techniques such as grasshopper, scripting and all tools and plug-ins available.  Some upcoming blog entries will look at these options.