Rhino3dm ladybug-rhino connection

Hi all,

In these days I have been working on research project on Linux environment (because of use parallel computing with super-computers) for optimization with EnergyPlus. The workflow that I am planning to use is;

  1. Generate parametrically rhino3dm breps for thermal zones (done)
  2. Generate .idf from ladybug-tools
  3. Run EnergyPlus
    → Iterate process while stop condition satisfied.

When I was trying to use intersect_solids_parallel method by ladybug_rhino.intersects, I am getting import error of course. I think this library depends on rhinocommon not rhino3dm… So I could not use ladybug-tools with this workflow.

Is there any way or suggestion to convert rhino3dm breps to .idf file by using ladybug-tools’ libraries?

Best wishes to everyone for 2022!


I’m definitely not the right one to answer this one, but I think it’s possible with a rhino compute setup. You can’t for now use rhinocommon without a rhino instance running (with a license). So you’ll need a rhinocommon instance running somewhere that you can call from this setup.

Alternatively ladybug could use Compass geometry framework.

Alternatively 2; find a way to geometrically create your geometry without the intersect part from ladybug. Either with Compass or Gshark or other.



Thanks for your suggestions, I will look into it. I just wanted to let you know if you did not aware of this repository that you can run rhinocommon as headless mode. I write my unit tests by this way, it reaaly helps.

If we come back to topic again, does this libraries you suggest can possibly help me creating structured .idf files for EnergyPlus or those are just geometrical libraries like rhinocommon or rhino3dm ? I intentially wanted to extend this discussion for others maybe will interest in future.


You are correct. The entire ladybug_rhino package houses all of the dependencies that the Ladybug Tools plugin has on RhinoCommon. So, any time that you see that package being used, you will need to at least have Rhino Compute available as @Mathiassn says. I think McNeel charges 5 cents per compute-minute (or something like that) if you wanted to set up your own Rhino compute server. I don’t know if they’ve made it possible to run Rhino Compute on Linux.

I’ll also say that most of the heavy-lifting to correctly format Honeybee geometry for EnergyPlus is done by the ladybug_geometry package, which is pure Python and has no dependencies on RhinoCommon. The ladybug_geometry package is the fundamental reason why our HBJSON format that we use to transfer Honeybee energy models doesn’t have to obey the unbelievably restrictive rules of geometry in IDF format (eg. no windows can have more than 4 vertices, all geometry has to be ordered with counter-clockwise vertices pointed out from the room volume starting with the upper-left vertex). So you can run the ladybug_geometry package on a Linux server and that can get you most of the way there. You just have to respect the AGPL license of ladybug_geometry.

There are just two things that the ladybug_geometry package does NOT do and you will need to use a powerful compute engine like Rhino for:

  • Conversion of curved geometries to planar ones (essentially all of ladybug_geometry is for planar Faces)
  • Intersection of solids to form matching surfaces

And that’s a useful example for unit testing with Rhino common. I’ll use it as a reference when I write tests for the ladybug_rhino package.

1 Like

Hi @chris,

I have checked out the libraries and schema and achieved what I want. I am really glad that you guys documented the code excellent.


1 Like