-
Notifications
You must be signed in to change notification settings - Fork 16
Getting started for developers
Welcome Developers! 🚀
Here's a quick start guide. After reading this, you might want to head to the Introduction to BHoM_Adapter, and then create your own Toolkit.
Please follow the steps below:
- Use git
clone
(or use GitHub desktop) to download the repositories in the list below. - Use your preferred IDE to build the solutions in the order as they appear below. We recommend Visual Studio Community.
The first time you build BHoM you need to clone and build the repos in the order specified below. You must pick all the Mandatory repos.
When building the project, the compiled assemblies will go in the
./Build
folder of your Repo, plus there is a Post-Build event that copies the files in the central BHoM folder:C:\ProgramData\BHoM\Assemblies
. When you build, if there is any UI open (e.g. Rhino/Grasshopper/Revit/Excel), the dlls will not be overwritten in the central folder (because they are referenced by the UI software), so you must make sure to close all UI software and reopening it if you want to see updated changes.A 🔰 "Pro-tip" 🔰 to work around this is explained at the bottom of this page
Compile each of these, one after the other:
Compile one or more of the following - depending on the User interface software you want to use:
- Rhinoceros_Toolkit and then Grasshopper_Toolkit (requires Rhinoceros_Toolkit)
- Excel_Toolkit
- Dynamo_Toolkit
The following repos are optional.
These repos are sometimes used as stand-alone, and sometimes are also referenced by other repos.
You might find them useful 🚀
- BHoM_Datasets - makes Datasets available (some test scripts might be using them)
- Socket_Toolkit - send messages through Sockets. Some toolkits use this.
- Mongo_Toolkit - database connection. Some toolkits use this.
- Versioning_Toolkit - allows retro-compatibility of components (auto upgrade to newest version).
Toolkits provide the connection to other software.
Clone and build any toolkit you want to use!
Some examples:
- For Structural FEA analysis
- Robot_Toolkit (for students, Robot offers a free version)
- GSA_Toolkit
- ETABS_Toolkit
- Many others available!
- For Environmental simulation
- IES_Toolkit
- EnergyPlus_Toolkit
- Many others available too!
- Others:
When developing a Toolkit, in order to reduce rebuild iterations, you might want to:
- Rebuild your Toolkit
- Rebuild BHoM_UI
- Start Debugging your Toolkit with an UI application attached.
The last step will fire up your UI application and you will be able to modify the code while debugging, on-the-fly (just press the Pause
button in Visual Studio).
Note that not all IDEs support this (notably, not the Express editions of Visual Studio – only the Community, Professional and Enterprise ones do).
An alternative that always works is, after steps 1 and 2 above, simply fire up your UI application and attach to its process. This way you will be able to follow code execution and check exceptions; however, this does not allow for code modification while debugging.
Sometimes you might encounter this error. Although Visual Studio "Rebuild All" command should take care of Restoring the NuGet packages for you, to solve this just run that manually.
Right click the solution → Restore NuGet Packages
.
-
Introduction to the BHoM:
What is the BHoM for?
Structure of the BHoM
Technical Philosophy of the BHoM -
Getting Started:
Installing the BHoM
Using the BHoM
Submitting an Issue
Getting started for developers -
Use GitHub & Visual Studio:
Using the SCRUM Board
Resolving an Issue
Avoiding Conflicts
Creating a new Repository
Using Visual Studio
Using Visual Studio Code -
Contribute:
The oM
The Engine
The Adapter
The Toolkit
The UI
The Tests -
Guidelines:
Unit convention
Geometry
BHoM_Engine Classes
The IImmutable Interface
Handling Exceptional Events
BHoM Structural Conventions
BHoM View Quality Conventions
Code Versioning
Wiki Style
Coding Style
Null Handling
Code Attributes
Creating Icons
Changelog
Releases and Versioning
Open Sourcing Procedure
Dataset guidelines -
Foundational Interfaces:
IElement Required Extension Methods -
Continuous Integration:
Introduction
Check-PR-Builds
Check-Core
Check-Installer -
Code Compliance:
Compliance -
Further Reading:
FAQ
Structural Adapters
Mongo_Toolkit
Socket_Toolkit