Skip to content

The BHoM Toolkit

A Toolkit is a set of tools (definitions, functionality, and connectivity) used for a specific purpose.

For example, you will find a Robot_Toolkit to do structural analysis with Autodesk Robot; similarly, you can find a Revit_Toolkit, a LifeCycleAssessment_Toolkit, and many many others.

Structure of a Toolkit

In short, a Toolkit can contain one or more of the following projects:

  • A BHoM_oM project, that contains the definitions specific to your Toolkit (the types, or the schema, needed for your purposes).
  • A BHoM_Engine project, that contains the functionality specific to your Toolkit.
  • A BHoM_Adapter project, that contains the connectivity required to interface with an external software.

If you are an User, head to one of the sections linked above to learn more (oM, Engine, Adapter).

If you are interested in programming, creating your own new Toolkit, or contributing to the code of an existing one, keep reading.

Implementing a new Toolkit

In order to implement a new Toolkit, we prepared a Toolkit Template that prepares a Visual Studio solution with all the scaffolding done for you: create an new Toolkit using the BHoM Toolkit Template.

Create a new software Toolkit using the BHoM Toolkit Template

Create a new Toolkit repository

Use the template repository to create a new repository. See the readme there.

Implement the oM

The oM should contain property-only classes that make the schema for your Toolkit. All functionality should be placed in the Engine. Functionality that is specific to a class should be defined in the Engine as an extension method.

See The Object Model and The Engine for more information.

Implement the Engine

The Engine should contain the functions applicable to the objects you've defined in the oM.

See The Engine for more information.

Implement the Adapter

See the dedicated page to Implementing an Adapter.


Last update: November 25, 2023