Grasshopper plugin RhFEM enables interoperability with Dlubal RFEM software. Nodes, lines, members and surfaces can be created in RFEM from geometry defined in Rhino.

Current nodes are:

  • Delete all data from existing RFEM model;
  • Write to RFEM – Point;
  • Write to RFEM – Line;
  • Write to RFEM – Member;
  • Write to RFEM – Surface;
  • Read from RFEM – All Nodes;
  • Read from RFEM – All lines (only straight lines are being read);
  • Create RFEM property – Node support;
  • Create RFEM property – Line support;
  • Create RFEM property – Member Hinge;
  • Materials catalogue;
  • Sections catalogue;

So how do you start:

  • Download .gha component;
  • Drag and drop the component on Grasshopper workspace. You may need to “unblock it” as it has been downloaded from the internet;
  • A grasshopper tab “RFEM” will appear;
  • Open RFEM and new model. The component will write data in the active model (be careful – it may overwrite data if you use existing model);
  • First use “RFEM model clear” component to ensure that model is “clean”;
  • Add “toggle” component to “RFEM model clear” component.
  • use point/curve/brep Grasshopper component to select geometry;
  • drag and drop the relevant RFEM component.
  • Use output for “success” in “RFEM model clear” component as toggle for “run” on any other components;

Other notes:

  • Tested with RFEM 5.17.01. Note that you need a licence for add-on RF-COM for this component to work. Also works on trial versions.
  • Note that plugin will not work with very early RFEM 5 versions (well, you need to upgrade anyway – a lot has been improved since 2012)
  • To enable import of curved/arched lines and edges of surfaces, these are “segmented” during the import process. The parameter “MaxSegmentLength” determines the accuracy.
  • Components assume that Rhino units are [meters]. If your Rhino units are millimetres, the RFEM model will be scaled-up 1000 times. Be careful with this when importing curved lines/surfaces and choosing maximum line segment length;
  • Line component creates nodes automatically, the surface element creates lines and nodes automatically. If you need to transfer surfaces, no need to transfer the surface defining lines separately.
  • Only planar surfaces are supported;

A simple disclaimer. I am a structural engineer (and not software developer):

  • Not all exceptions are properly handled. It means that in case of error, your RFEM instance may stay frozen – make sure that you save&close all other models before geometry import.
  • I am not affiliated with Dlubal team, and I hope&believe that they will work on a decent GrassHopper link in future;


Grasshopper component ghMath lets you read and execute the math calculations defined with sMath mathematical software (http://en.smath.com).

The intention of this Grasshopper plugin is to prove the concept. And hopefully, promote a new approach in the way how design checks’ calculations could be done and recorded.

If you have never came across sMath – it is basically MathCAD, just quicker and completely for free (free for commercial purposes as well, you can install it without admin rights).

So using ghMath you can define the “logic” of calculation using sMath and then rapidly iterate through many sets of input data to optimize the design (e.g using evolutionary solvers). Eventually, you can save the final calculations file as output. Few of potential uses for component are:

  • Quickly implement math equations/logic into Grasshopper, without many grasshopper blocks. e.g. deflection and/or stress calculation;
  • Use Galapagos/Ocotopus to to optimize the size of member for full utilization;
  • Use this plugin in combination with Karamba or manual load take-down scripts to check/optimize elements.

As a feature in future, I intend to implement export to .html with results.

Currently, the plugin supports all basic math operators, pow, sqrt, min, max, log, and trigonometric functions. It does not support integrals, conditional statements, and any advanced features.

I have provided two relatively simple examples, more power can be unleashed by combining the plugin with reading input from excel using Lunchbox plugin, stepping through multiple calcs using Anemone, or Karamba combining analysis output with member checks with sMath.

Background for creation of this plug-in:

The idea of this plugin came from looking at different ways of producing design calculations. And none of them is ideal.
So what does the ideal “design calculation” looks like? 

In this post I refer to “design calculation” as one in engineering that checks element/connection for compliance to code or first principles. e.g. reinforcement area calculation, steel column buckling check etc.

Software/approach independent points:

  • Engineer should understand trust the calculation.
  • Code references shown;
  • Process should work well with other existing processes within the company.

Points where “visual software” (MathCAD, sMath, or hand calculations) are better

  • The logic of calculation must be clearly described.
  • Output should be visually well formatted with units described.
  • The calculation must be easily check-able.
  • Calculation should be adjustable to particular project needs.
  • Inputs and outputs should be clearly indicated.

Points where Excel or custom-scripted calculation forms are better:

  • Calculation should be able to perform checks for static results from many different software.
  • Tools already developed allow to transfer data from majority of general FEA analysis packages to Grasshopper. e.g. check out the work of my former colleagues from BuroHappold https://bhom.xyz/
  • Design calculations for many combinations/members should be automated.
  • Calculation should be able to interact with optimization tools. e.g. evolutionary solvers.

Additional points:

  • Saved calculation file must be in “open format” (.e.g. sMath saves data in XML, whereas Mathcad in “closed format”)

ghMath and the general approach of creating “visual calculation” and then pushing it through automation process aims to combine the benefits of two software groups mentioned above.