... boosting your innovation with engineering and manufacturing solutions in the cloud...



GoTools is a collection of C++ geometry libraries with a special focus on spline/NURBS representations for curves, surfaces and volumes. The algorithms support computer aided design (CAD) systems and preparing geometries for isogeometric analysis (IGA).

App related to Data analytics Model-based product & process optimisation Path planning & CAM Process development and optimization Process qualification Product design Prototyping Visualization in the context of Aerospace (Aeronautics) Automotive Industrial Machinery Manufacturing

Provided by SINTEF 1 year, 6 months ago (last modified 1 year, 5 months ago); viewed 865 times
application screenshot


GoTools is a collection of C++ libraries related to geometry with a special focus on spline/NURBS representation for curves, surfaces and volumes. The libraries target the needs of Computer Aided Design (CAD) systems and support Isogeometric Analysis (IGA). It provides operations such as the definition, intersection and evaluation of NURBS (Non-Uniform Rational B-spline) geometries. Since many applications use implicit geometric representations such as planes, cylinders, tori etc., GoTools also supports such geometries and can handle the interaction between those and NURBS. It also includes implementations of the novel locally refined (LR) B-spline representation, both in 2D and 3D.

GoTools is divided into 15 libraries with varying levels of interdependency. This allows users with specific requirements to make use of only subsets of GoTools as needed. At the centre of GoTools is gotools-core, a library containing basic functionality included in a general CAD system. This includes functionality such as creation of geometric objects (e.g., through interpolation or approximation) and shape interrogation methods. The core functionality is complemented by many other modules that offer various functionality such as computation of intersections, isogeometric modelling and locally refined (LR) splines, to name just a few. GoTools also includes a module for visualization of 3D geometric models, including uni-, bi- and tri-variate splines, LR-splines and point clouds.

In addition to GoTools, SINTEF Mathematics and Cybernetics also provides SISL, a comprehensive NURBS library for the modelling and interrogation of curves and surfaces. SISL is a mature library, written in C, that has been developed for more than three decades. GoTools depends on SISL for some of its core functionality.

GoTools uses two internal formats; the first known as .g2, provides a simple text-based representation of geometric objects, while the second, .g22, builds on .g2 to also include the topology of a CAD model. These internal formats can be converted to and from STEP (ISO-10303) files via the use of the GoTools Gateway marketplace item.

GoTools is an evolving collection of C++ libraries and has been gradually developed and enhanced for close to two decades by the Geometry Group at SINTEF in Oslo. Consequently, new versions will be released, with extended functionality as well as bug fixes and updated documentation.

The maturity of the functionality in GoTools varies depending on which module is used, but as an average, it is around TRL 5, which corresponds to “technology validated in a relevant environment”.

Use Case:

GoTools consists of several C++ modules that can be used individually and/or in combination to build powerful algorithms for processing geometric data. The functionality can be combined in multiple different ways, allowing for extra flexibility that complements existing CAD systems.

GoTools provides interoperability with CAD systems through the standard STEP format (ISO 10303) that can be converted to internal formats (.g2 or .g22) for further processing. The output can also be converted back to STEP, to be imported back into external CAD systems. Other data inputs may include scattered data in the form of point clouds, or raster data representing various types of information.


GoTools has minimal dependencies for most functionality, but has some dependencies for specific use cases. These include:

 - PugiXML

 - JsonCpp, Qt4/Qt5, OpenGL, GLUT (required for viewlib only)

 - Boost (required for the test suite)

GoTools is copyright of the Geometry Group at SINTEF Digital, Department of Mathematics and Cybernetics.

GoTools is available under the GNU Affero General Public License v3.0 or under a Commercial License.

Additional Information
PULSATE footer