Click or drag to resize

Version 0.11.0

[This is preliminary documentation and is subject to change.]

This version has been released on 2020-05-11.


Here is the list of objects that have been added in this release.



  • IHasParentId: Marker interface for objects that have a ParentId property.


  • ICoordinateExtensions: Added 2 new extension methods for ICoordinate implementations.

    • ICoordinate.CrossProduct(ICoordinate other) will calculate the cross product between 2 coordinates. This treats a coordinate as a 3D vector

    • ICoordinate.Magnitude() will calculate the magnitude (= length) of a coordinate in meters. This treats a coordinate as a 3D vector and the size of the vector is from origin (0,0,0) to the coordinate.


Here are the objects that have been changed in this release.

Structural Elements


  • CurveExtensions: Added method CalculateArea to calculate an Area from a list of curves that outline the area. Please note that this calculation is only usable on simple areas (straight lines only), so use it at your own risk. Will be updated at a later stage to be more correct all over the board.

  • ModelInformation: Added property LocalCoordinateSystem to keep track in which coordinate system the model is defined.

  • IAnalysisModelLocalCoordinateSystemTransformationService: Service used to transform an AnalysisModel from one local coordinate system to another. Based on the transformation, some objects will be modified.

    • Loads will generally have their values inverted and their direction changed, depending on the transformation.

    • Beams will have their LCS rotated, depending on the transformation.

    • Hinges and supports will have their constraints swapped, depending on the transformation.

    For more information on the supported local coordinate systems, see LocalCoordinateSystem

  • Updated validation for StructuralCurveMember: Removed constraint for LCS rotation to be between -360° and 360°.

    With the new LCS transformation service, it's possible that the rotation would exceed these values, and it was not possible to normalize these values to values within that range

    It would cause different values when converting back to the original LCS and that would mess up equality comparison.