-
Notifications
You must be signed in to change notification settings - Fork 15
Geometry
Geometry_oM is the core library, on which all engineering BHoM objects are based. It provides a common foundation that allows to store and represent spatial information about any type of object in any scale: building elements, their properties and others, both physical and abstract.
All objects can be found here in the Geometry_oM
The code is divided into a few thematic domains, each stored in a separate folder:
- Coordinate System
- Curve
- Interface
- Math
- Mesh
- Misc
- SettingOut
- ShapeProfiles
- Solid
- Surface
- Vector
All classes belong to one namespace (BH.oM.Geometry
) with one exception of Coordinate Systems, which live under BH.oM.Geometry.CoordinateSystem
.
All methods referring to the geometry belong to BH.Engine.Geometry
namespace, which is a part of the BHoM_Engine.
Two separate families of interfaces coexist in Geometry_oM. First of them organizes the classes within the namespace:
Interface | Implementing classes |
---|---|
IGeometry |
All classes within the namespace |
ICurve |
Curve classes |
ISurface |
Surface classes |
The other extends the applicability of the geometry-related methods to all objects, which spatial characteristics are represented by a certain geometry type:
Interface | Implementing classes |
---|---|
IElement0D |
All classes represented by Point
|
IElement1D |
All classes represented by ICurve
|
IElement2D |
All classes represented by a planar set of closed ICurves (e.g. building panels) |
IElement3D |
All classes represented by a closed volume (e.g. room spaces) - not implemented yet |
There is a range of constants representing default tolerances depending on the tolerance type and scale of the model:
Scale | Value |
---|---|
Micro | 1e-9 |
Meso | 1e-6 |
Macro | 1e-3 |
Angle | 1e-6 |
While being pulled/pushed through the Adapters, the BHoM geometry is converted to relevant geometry format used by each software package.
BHoM Rhinoceros conversion table
At the current stage, Geometry_oM bears a few limitations:
- Nurbs are not supported (although there is a framework for them in place)
- 3-dimensional objects (curved surfaces, volumes etc.) are not supported with a few exceptions
- Boolean operations on regions contain a few bugs
-
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