Thursday, 24 December 2009

BullAnt Contouring Colors

This screen capture quickly demonstrates the BullAnt command ggContour to apply a spectrum color range to subLayers of active layer. By typing the command, you can nominate to apply it to Rhino objects in a model (based on sequence of creation/modification or selection depending on how you pick the objects). Download the plug-in from

Wednesday, 23 December 2009

Orienting Structure to Rhino Surfaces

Here's an example/tutorial for you to follow to use the plug-in to calculate member orientation angles based on the defining surface normal or nearest point.

To try this yourself, here is the Rhino file: Rhino Ellipse

Now the same basic procedure will work presently with 3 analysis packages, GSA, Sofistik (shown) and SAP2000. Strand7 and others coming shortly.
Here's the analysis models:
Sofistik (Note LOCA 0 is assumed for the moment.)

More instructions coming soon....

Monday, 21 December 2009

Controlling GSA from a Rhino Plug-in

There's been a few requests for help with controlling Ansys from Grasshopper or Rhino on the Rhino newsgroup or Grasshopper forum lately, and in my discussions with them, it's generally been agreed that for a skeletal frame, it's likely to be easier and quicker to use a frame analysis program like GSA to do the exercise. (Possibly influenced by my limited experience with Ansys, which is an amazingly capable but complex analysis program).

GSA have a free version for any academics or students, refer

And to assist with getting started, I created a small Rhino Plug-in project that generates a GSA model from scratch and runs an analysis.

Download source code :

If you have GSA running, you can supervise and interact with the program after execution. If GSA is not running, it will run as a background process.

If you're looking for the GWA data on the rhino model objects created using the SSI tools, try using the command GetUserText (or the user string attributes in the Rhino SDK). I'll improve the event watcher shortly so that GWA node coordinates are updated when a node is moved.

This is just the start of interaction with Rhino, there's another level of using the Plug-in code as a library. Feel free to get in touch if you wish to learn more.

Tuesday, 1 December 2009

Weaire-Phelan intersecting a surface

I responded to a request for help on the Grasshopper forum with regards to generating Weire-Phelan polygons intersecting with a surface. I've recorded the screen capture below showing the difference as you halve the size of the polygons which I think is quite interesting. If you wish to try for yourself, the Rhino file can also be downloaded below, could be interesting to see how other shapes look (and to generate the intersecting curves using the command in the BullAnt plug-in)

Associated Rhino File

Sunday, 1 November 2009

British Museum Great Court Roof using StructDrawRhino

Another stunning, innovative structure that has inspired similar projects since.  It's a favorite space of mine, especially on a bright sunny day when the shadows and reflections are mesmerising.

Here's some papers, blog posts and links I found to determine how Happolds and Fosters designed this amazing roof.

So, now you can try to do something similar yourself using the structural plug-ins for Rhino.  My routines and commands don't follow exactly the description from the paper, but they allow something similar to be created.

To try this for yourself, the input Rhino file can be downloaded from here

I'm currently coding up algorithms for more powerful force density routines to include dynamic relaxation, but in the interim you can try the sdrMeshRepelVertex command to relax a rigid mesh outline with discontinuitys at nodes/vertices for continuing edges.  I used the sdrZigZagCurves command to divide the initial radial lines to generate the starting Grid.

From the starting flat grid, we can use the plug-in command sdrMeshProjectVerts to project the mesh vertices onto the mathematical surface.

Then we start the mesh relaxing process.  The command  sdrMeshRepelVerts uses force density to repel mesh vertex away from their neighbours.  Naked/Free edges/vertex will be restrained.  The more loops or iterations you allow, the better the result you will get.  Note that you can nominate a target surface that will vertically project the vertex back onto the surface (if you don't, the mesh will naturally flatten).  I found the best result was by nominating the balance force option for a number of iterations, and then to run a few loops of the target equal length for edges.

You can then extract the medge edges to curves using the sdrMeshDupEdges command.  By applying a structural profile (I assumed a much larger hollow profile than that used), the plug-in will automatically sweep the centreline curves.

There is also a number of routines in development for form finding and finding minimal surfaces.  Blog posts with worked examples will shortly follow, but if you look at sdrMinShapeMesh function you can try it for your self.  The other sdrMesh.... routines allow manipulation of mesh generated in Rhino to transform it to arrangements more appropriate for analysis/solving.

If you've any requests, ideas or suggestions for these routines (or need more help or other examples), don't hesitate to get in touch.

Monday, 12 October 2009

Infinity Bridge - Supreme Award for Structural Engineering Excellence

We're so thrilled at Expedition, for structural engineering this award excels amongst the best for peer recognition for design excellence.  Infinity Bridge won the 2009 IStructE Supreme Award for Structural Engineering Excellence, to crown it's recognition as the 2009 IStructE Award for Pedestrian Bridges.

Infinity Bridge was competing against over 100 global entries in 11 categories from stadia to public buildings to bridges to private houses.

And this project is a supreme example of the Structural Drawing Tools being developed for Rhino.  The arches of the bridge were form found to minimize flexural stress whilst the bridge is free standing, so no pure mathematical curves define the girder set out.  Setting out this structure in traditional 2d methods would have been painstaking and inefficient.  Current 3d structure modelling software appeared to lack key features to easily generate and manipulate this free flowing curved structure.  So we innovated and generated our own tools for our Rhino3D model, that was the principal means of defining the key bridge geometry (which tapered along it's length as well as in section).

Effectively an early version of the current plug-ins, we created tools where a primary spreadsheet generated model creation for both Rhino and Structural Analysis in GSA, ensuring coordination between assessment model and documented structure model.

Thursday, 1 October 2009

Extruding along Rhino Curves

A question raised on the Grasshopper forum for examples/instructions for extruding structural profiles along grasshopper curves prompted me to post a screen capture to you-tube demonstrating the capabilities of the Structural Drawing plug-in.

I thought I'd post the hypar grasshopper file here for those wishing to test it for themselves.

Note that it demonstrates how properties can now be assigned to layers, and that any curve added or modified on that layer will have an updated sweep. For some reason the event watcher doesn't presently identify when the grasshopper bake command finishes, hopefully I'll have this resolved soon.

Monday, 21 September 2009

Oasys GSA v8.4

Some GSA plug-in users might have been testing Oasys GSA v8.4 beta for some time, others might have downloaded the public release last week ( ) and others might do so shortly.

If you are in any of these groups, you'll hopefully be happy to hear that the Rhino plug-in can already exchange structural data happily with both versions (note there were significant GWA changes I've dealt with). And GSA v8.4 brings some neat new graphic exchange in relation to object colours etc. Always check the wiki ( ) for the latest version.

There's still work to be done, but in progress it's already up and running. Note if you need to update v8.4 model coordinates, you can right click on the export node button and opt for v8.4 format.

In about a week when I'll look to switch the default plug-in to be v8.4 compatible, but you'll still be able to use v8.3 if you're not upgrading. You can edit the export button (by shift-right click) and change the text to make left click export to v8.4

Thursday, 10 September 2009

3D Printing and Rapid Prototyping

David Allgayer has posted an interesting article to the Expedition Blog. 3D printing or rapid prototyping from Structural Analysis models was one of the early principles of writing the structural plug-ins for Rhino (back in the day when it was in Rhinoscript).

I've heard (and repeated) that the day will come when you won't go to a hardware store to buy a replacement shower hook, if one breaks you'll simply load the model on your computer and print a new one to hang on the rod.

The Economist Technology Quarterly Review article can be found here

Monday, 24 August 2009

BullAnt takes on the WaterCube

So here's my take on to model the Watercube, a stunning stadium if you're ever lucky enough to see it in person.

Download the basic Rhino file from here.

It would have been brilliant to work on a structure such as this. The design team included Arup, PTW Architects, CSCEC and CCDI

There's reports on how the geometry was derived here and here that form the basis of my demonstration.

Thursday, 20 August 2009

Interpreting Structural Models with Curved and Tapered Members

The theory and formulation behind structural analysis algorithms and solvers are based on theory of straight elements with constant cross-section.

This means that models representing structural elements curved or tapered in nature are "meshed" or broken into straight segments with a representative cross section property. To my knowledge, any analysis program featuring "curved or tapered members" is simply automating this process behind the scenes.

This results in a side effect that when exporting the structural model to CAD format, that this approximation although fine for the structural assessment, results in jagged and problematic geometry when sharing the model with other designers/clients that don't appreciate this process. (Ie, remarks such as "I like that design but I'd like it without the steps"). For curved elements the segments result in underlap/overlap of the cross section, which is a weak spot if you wished to directly 3d print/prototype the geometry. To date this has generally needed manual remodelling of the structure.

Whilst I believe the better process is to model the curved/tapered structure in CAD and then derive your structural analysis model from this, it's possible to automatically interpret the segmented data (although if precise results are required, you should carefully check the interpretation).

The SSI Rhino plug-in will check each section name for "tagged" descriptions that instruct the plug-in how to "interpret" that cross section. This post looks at the -rhl tag that instructs the plug-in to loft the cross sections.

Download this GWA file representing the summit of the Eiffel tower Download.

Now to create the Mast, simply type -rhl in beam properties 20,21 and 22. The plugin will act on the loft instruction and "join" any sequential elements that have "the same property (or 1 section property either side." The plug-in will fit a curve through the the sequential element nodes, and then orient the cross section curve for each element on this curve at the point closest to the mid-point of the element.
If properties differ by 1 at the ends of the element, the cross-section curve is extrapolated at the start and end of the curve. By adding the "-rhl" tag to property 13, the curved support element for the mast will also be lofted.

Try importing the model into Rhino before and after making the changes, and note the difference. If you haven't had it work as per these images, try downloading this file and check what is different in the section properties. Download

Note that the default iso-curves shown for the nurbs surface are the cross-section shape determined location and orientation.

Monday, 17 August 2009

User Defined Profile Libraries

I've just uploaded a new version of the Structural Drawing Plug-in with plenty of improvements. I'm preparing to post a detailed tutorial showing how these new tools could be implemented to model the Beijing Water Cube, so watch this space.

The plug-in can now use profile libraries defined by the user. These are simply created by creating (or copying) rhino files into the plug-in sub-folder at C:\Documents and Settings\USER\Application Data\GeometryGym\UserProfiles\ or C:\Users\USER\Application Data\GeometryGym\UserProfiles\  (Note folder may be hidden, and is now reported on the Manage Tab of the main StructDrawRhino dialog). There's an example file there showing some numbers and letters as example profiles (you'll find them now listed in the selection drop down boxes). You can create as many collections of profiles as you like, and they will be grouped by filename (First Selection Box), layer name (Second Selection Box) and object name (Third selection box). The profiles must be located in the model YZ plane, and the origin is used as the default insertion point. A curve can be used to define a simple singular profile, or if it has voids, add it as a planar surface.

The files should allow easily to share and collate your profiles, let me know if you have any suggestions for improvements. Note that if you later rename either the file, layer or object, it will have to be reassigned. Another quick tip, the profiles are now assigned by dragging the first button over your model view (instead of clicking the button as per the previous release).

Wednesday, 29 July 2009

Generating Structure in Rhino

Here's the first public version and demonstration applying structure to curves in Rhino using the Rhino BullAnt plug-in. More to follow shortly.

Movie file for those without access to YouTube: AVI File

And here's the files to try yourself.
Note that hollow sections won't be hollow if centreline isn't straight (for the moment), and element orientation will be incorporated soon.

Mini-Gherkin Grasshopper Rhino File for Mini-Gherkin

Wednesday, 1 July 2009

Symmetry and Connectivity

Here's a screen capture that presents two new tools (amongst others) in the Rhino Structural plug-ins. I've added commentary to this video (feel free to mute if it's too much to bear), but hopefully this might help in following what is happening.

Download the screen capture from here if you can't access YouTube.

The first tool allows you to "contour connectivity", that is to graphically display how many elements connect to each node. This type of unexpected connectivity can often occur when importing and altering models from CAD environments, and a colorful visual check can make the process of verification much easier. Here's an image of the tool applied to the model from this blog post that you can also try for yourself.

The second tool is in the Struct Draw Rhino plug-in, that enables an event watcher (disable it by right clicking the button). This works for any rhino model of points. If any point moves, the plug-in searches for a matching point in the other three quadrants (within tolerance), and adjusts it's position accordingly. This will work for any rhino command that modify's the point coordinate, and can save a lot of work in maintaining symmetry, particularly in structures such as stadia. There's plans to expand the tool so that you can specify any axis (and number of axis) for the mirror planes.

Here's the files to try this for yourself.


Tuesday, 16 June 2009

Shape to Fabrication 3 - London April 2009

Simply Rhino organised and hosted Shape to Fabrication 3 in April this year.

I've just managed to get a FLV version of the AVI screen capture I presented at this event uploaded to You-Tube that hasn't suffered from compression display problems.

Fortunately/Unfortunately, I don't have the commentary of my presentation on the video, but Simply Rhino video taped each presentation, that they plan to host on their website.

The screen capture starts with showing the structural drawing toolset catalogue sections, including orientation cross sections on a nurb curve and using rhino tools to extrude or sweep the section shape.

Then some Expedition projects are presesented that the Rhino Plug-ins were developed to efficiently and effectively design these projects. Present BIM software capability

Chiswick Park footbridge was designed with many schemes, alterations and design changes. Many manual modelling hours were spent in maintaining and coordinating independent models, (structural analysis model, a 3d CAD model for renders and traditional 2d drawing CAD files).

This inspired the need to exchange data between structural analysis models and CAD programs such as Rhino, with a bespoke plug-in to ensure object attributes are retained and transferred from model environments. The plug-in allows "parametric" modelling where nodes defining member centerline can be transformed individually (or in bulk) using common or bespoke Rhino commands, and this information transferred back to the structural analyis model.

Quite often the scultping required to update to project geometry is not quite as dramatic as this sinusoidal roof, but sometimes it can be. Bulk node projection in Rhino allows a quick and rapid transformation of a detailed structural model.

Infinity Bridge has just opened on the river Tees. The girder profile string-line not defined by mathematical formula as it was form found for the bridge self weght to give effieciency. Combined with a box girder profile that has angled webs and tapers in size along it's length, it is very difficult to setout using traditional 2d drawings comprising plans, elevation and sections. 3d setout was defined in a 3d Rhino model directly used by the fabricator. Structural assessment of the bridge is conducted for each construction sequence state of the bridge, and this information can be directly used in the Rhino model to allow photo-realistic (or sketch) rendering that is very powerful in communication with a client or contractor.

Finally, a simplification of the infity box girder is used to show how Grasshopper can be used to parametrically define a structure (including size, polygon shape etc), and then the SSI plug-in used to generate a "skeletal" model from the baked rhino definition. There are several plug-in commands under development to generate structural data from "primitive" rhino geometry (ie curves, surfaces etc) that allow structural assessment rapidly, even from "sketched" models with loose tolerance in intersections and end connections.

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.

Sunday, 1 March 2009

Geometry Gym - Structural Analysis Data to/from Rhino

Geometry Gym has developed several plug-ins for Rhino that allows data to be transferred to and from Rhino from Structural Analysis programs used by Engineers to assess structural performance and strength.  This is currently released for Oasys GSA (which is used at our office at Expedition), and early versions are being worked on for other similar programs.

A lot of engineering time is spent on updating and altering structural analysis model geometry as projects and designs evolve and change.  Particularly when different design disciplines coordinate and accomodate to find efficient solutions.  By taking advantage of Rhino and using custom and default tools and commands, greater efficiency and productivity can be achieved in updating models.

You can watch this tutorial on this video link, then I'll explain the steps for you to try.

Initial GSA model here.
Initial Robot model here.
Initial SAP2000 model here.
Initial Sofistik model  here.
Initial SpaceGASS model here.
Initial Strand7 model here.

You can find the Rhino model with the a surface representing the desired shape here.

Download both these files to your computer.  Open the GSA model, but you can skip the step to export the model to GWA (text) format as the file is already supplied as such.  Note that all the nodes and elements lie on within a horizontal plane.

Open the Rhino model above, If you haven't already, install ssiGSA and then open the above rhino file.  Click on the import GWA button on the plug-in toolbar to import in the GSA model data.  Note that you can elect not to draw the 3d shapes for this example.

For this example, we want to move all the nodes in vertical location until they match the target surface.  This target surface was generated by the free Math Plug-in by Jess Maertterer.  

We can use the Rhino command project which will relocate objects perpendicular to the current cplane until they intersect with a target surface.  Only node data coordinates are sent back to GSA, so all the points can be selected by right clicking on the node layer.  Type in the Rhino command Project (ensuring you are in the Top view, or that a World Top Cplane is set in Perspective view), and select the surface as the target.  Ensure that the original data is deleted so that duplicate nodes are not present in the model.  You should see the planar nodes are now all lying on the surface.  The updated node coordinates can be obtained by clicking on the second button in the ssiGSA toolbar.  The GWA data will be copied to the clipboard, and can be imported into GSA by right clicking on the gateway and electing to paste data.  You can manually inspect the contents by pasting into WordPad (or similar text editior).  You will see the GSA nodes in their desired position.

Note this is one way of taking advantage of the advance sculpting and scripting environment of Rhino.  Upcoming blog entries will take a look at other simple but powerful ways of transforming models to efficiently change structure geometry.

Saturday, 28 February 2009

Geometry Gym-BullAnt

BullAnt is a plug-in that will be useful for CAD modellers, architects, engineers, and anyone developing Rhino models for construction projects that containing structural elements and representation.  The plug-in contains a library of catalogue sections, particularly hot-rolled and cold-formed steel sections available around the world.  This catalogue is still being developed so please forward any requests and suggestions through to me.

Here's some instructions to help with using the plug-in.

Once the installer has been downloaded and run on your computer, start Rhino and run the command ggStructDraw.  This will bring up the catalogue dialog (shown in the screen capture below) if it is not already visible.  This dialog can be docked in position, or float on your screen whereever is acceptable.

The radio buttons allow the user to specify the insertion point for the section, which will adjust how the section shape will relate to the points the user specified points when adding the structural shapes.  The default IP will generally match be the section centroid, except for asymetric shapes such as channels.  Top-Middle will orient the section shape below the insertion points.

We will look at adding straight extruded sections initially.  By clicking on the Add 3D button, the plug-in command ggStructDrawElement is run.  The user can now select the first point defining the straight line along which the section will be extruded.

After selecting the first insertion point, the user is prompted for a second.  The length of the extrusion may be specifed by tpying in the number, and then the second selection point will specify the direction. Before specifying the end point of the extrusion, the user can specify if they wish to specify the section direction point, and the orientation angle in plane for the cross section to be rotated (in degrees).  By hitting ENTER when the command completes, it will be repeated.  If your desired section shape is replaced (at random) with the SSI logo, you either need to rerun the command, or request a free trial license for the plug-in by running the command  ggZZLicenseRequest .

Note in the plug-in dialog box, a Nominate tab is available as an alternative for the pull-down menus of the libary catalogue.  A description of the section shape can be entered as a string, in a format consistent with that adopted in Oasys GSA.  GSA contains a wizard for creating these shapes, here's an example : STD CH(m) 0.5 0.3 2.E-002 4.E-002  .  If you don't have GSA (a trial version can be downloaded), the online help describing this is here.

The plug-in also allows users to add a single face surface, or a perimeter curve of the section shape to the rhino document.  The command ggStructDrawSect will be executed from the other two buttons on the dialog, which will prompt the user to select an existing curve to orient the section shape on, and then for a point on that curve.  For this example I have sketched a free form curve, and have oriented a I shape on the start of the curve.

Once the section has been added to the document, it can be used as input to other Rhino commands.  For this example, I've extruded the surface along the curve by using the command ExtrudeSrfAlongCrv .  The images below show the solid resulting from this operation.

All suggestions for improvements for this plug-in gratefully received.  Current thoughts include allowing section specification consistent with other engineering programs, adding more sections (including other countries), and automating process such as section extrusion one existing curve.  Please let me know any other ideas and suggestions.

Sunday, 22 February 2009

Geometry Gym Rhino Plug-ins

Geometry Gym (or SSI - Smart Structural Interpreter)

SSI is the beta branding for some Rhino plug-ins I've been developing for aprox. the past 12 months.

This project started as a response to various tasks and problems that I'd faced as an engineer working on projects of novel geometry.  Primarily this was difficulties in creating analysis models, checking analysis models were coordinated with project drawings, and for coordinating with other design team members, and in how to efficiently describe the geometry of these projects to other team members.  But the biggest problem was manipulating models to keep pace with project changes and evolution.  Although analysis software has made progress in this area, the methods were still largely manual and time consuming.  And part of the problem was that primarily all our drawings were done in 2D (plans, sections, elevations), and the CAD tools we used were focussed on this nature of drawing.

When I arrived in London and started work at Expedition I was introduced to Rhino3D, which is an amazing 3d modelling environment.  Rhino has many attributes that make it a fantastic tool for a designer, and I'll list a couple.  It can import and export so many CAD file formats (including Microstation and AutoCAD), it has an amazing support group of advanced users on it's newsgroup that will offer advice for everyone from beginner to expert, and for a scripter/programmer, it offers an excellent environment to allow automation and customization for generic and specific problems.

So the two initial plug-ins I've been developing for Rhino are an importer/exporter for structural analysis programs, and a catalouge structural section drawing tool.  I'll provide some instructions/examples for using these plug-ins in my following posts.  The importer/exporter allows automated drawing and updating of a 3d structural model without the need for manual interpretation and coordination.  It also provides advanced tools for efficiently manipulating and generating structural analysis data from within Rhino, so that analysis models can take advantage of the more sophisticated sculpting ability of Rhino than exists commonly in analysis programs.  The structural drawing plug-in is basically a sub-set (or by-product) of the first plug-in, that allows designers to manually extrude structural members, or easily add structural sections to rhino documents from a library of standard profiles.

Structural Modelling In Rhino3D

Here's some thoughts and opinions that I've formed in the 3 years I've been using Rhino to model structure and construction that might hopefully inform and assist any newer Rhino users reading this.  This is intended as a brief introduction to some of these topics, many of which I expect will form the basis of future posts.

Many users like to operate Rhino primarily using the toolbars via their mouse, but of course commands can also be run from the menus, or by typing commands (or shortcut aliases) in the command window.  Primarily this is the way I work, and the blog posts will generally refer to commands by their command name (hopefully this allows readers to find references in help files easier), with some menu references.  If you're a convert from CAD programs such as AutoCAD or Microstation, you'll probably be reluctant to learn a whole new suite of commands (however similar they may be) for Rhino.  The good news is, you won't have to.  I would highly reccommend using an rhino alias to allow you to use command names/shortcuts that you are already familiar with, and most importantly allows you to use multiple cad environments simultaneously without frustration.  To do this, use the menu Tools-Options-RhinoOptions-Aliases.  A simple example is assigning an alias id to '_evaluatept 

Rhino commands and tools work to a tolerance that is specified by the user within each Rhino Document, and it's quite important that designers are aware of this and have given thought to the tolerance before they start modelling.  Problems due to a "loose" tolerance can emerge at later stage of project design, particularly when the model is used as an input to other uses such as rapid prototyping, or Finite Element Analysis.  I would highly recommend setting your tolerance as tight as you dare, and relaxing it when necessary if commands such as the boolean operations, intersection, splitting etc are failing.

The default tolerance is specified in your Rhino Template files.  Because Rhino is used in so many industries and purposes, the installed defaults should be edited for your purpose.  You can save your own defualts by opening a new document in your required units (ie metre, or milimetre etc), go to 

Here's the Rhino wiki entry on tolerance.


It's common practise in CAD to model construction projects in worldwide position (ie OS coordinate system).  In Rhino, I'd strongly recommend keeping your model in space close to the origin by using a local project axes system.  You will likely observe display problems if you use a coordinate system with coordinates of a large value such as those typical in OS.  This is because Rhino uses numbers of "single" precision for display mesh positions.   But you can set up named construction planes (similar to User Coordinate Systems in  AutoCAD) that will enable you to interogate or specify coordinates in your model in large coordinate systems.

Friday, 20 February 2009

Working effectively with geometry for Construction Projects

This is the first post (hopefully of many) that will provide tutorials, examples and provoke discussion for effectively generating, manipulating and assessing geometry for construction projects from stadia, to bridges, to buildings, to roofs, to anything else that is built.

It will primarily focus on using Rhino to effectively design construction projects, and explain how to take advantage of some tools I am developing, that utilise the amazing scultping and modelling environment within Rhino3d.  The plug-ins I am writing create efficient ways of drawing, generating and manipulating models representing structure, as well as exchanging the information back and forth with structural analysis packages.  I have set up a wiki for the plug-in, that can be found at 

I hope and encourage anyone reading these posts to contribute comments, suggestions, alternatives, and to request topics and tools for further development.  I'm expecting that the blog will cover all sorts of topics, from how to draw and model in Rhino, how to write your own RhinoScripts to Automate tasks, parametric modelling using Grasshopper, and we'll see what else.