Click or drag to resize

BIM+

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

We provide the option to import/export a model defined in ADM from/to BIM+

Usage
  1. Install NuGet package ModelExchanger.BimPlus and it's dependencies.

  2. Use BimPlusModuleBootstrapper to bootstrap the BIM+ module and gain access to an IScopedServiceProvider, used to resolve services.

  3. Create a new BimPlusApiConnectionInfo instance.

  4. Fetch an instance of IBimPlusExportService or IBimPlusExportServiceWithRevision using IScopedServiceProvider if you want to export an AnalysisModel to BIM+.

  5. Fetch an instance of IBimPlusImportService using IScopedServiceProvider if you want to import an AnalysisModel from BIM+.

Please note, whether you are importing or exporting, the project and model must exist in BIM+. You are expected to provide their IDs to the BimPlusApiConnectionInfo.

Version history

Here we will outline the most significant changes based on each release.

1.11.2

  • Included type attribute on geometry templates for solid transformations, as it was needed for additional functionality

1.10.0

  • Updated configuration for RelConnectsRigidLink so it no longer uses obsolete attributes (overlooked in 1.9.0)

  • Added support for importing and exporting StructuralManufactured cross section's new Definition property

  • Updated default color of StructuralProxyElement from black to something that shows the edges and faces more clearly (#7F007F)

1.9.0

  • Added ability to force the upload of objects that are considered unchanged in the model being uploaded, compared to the model already uploaded

  • Fixed issue in mapping of StructuralCurveAction when DirectionVector is not set

  • Added support importing and exporting StructuralSurfaceActionDistribution object

  • Enabled upload of StructuralSurfaceAction objects which reference StructuralSurfaceActionDistribution

  • Tweaked fluent configuration to support "obsolete" attributes that are no longer used, or attributes whos value should be stored in another attribute

  • Tweaked fluent configuration to support default values for properties when importing or exporting (e.g. Ids)

  • Updated attributes for hinge rotation and translation types. We now consolidated all objects to use the same attributes

1.8.0

  • Added function to IBimPlusClient to retrieve a mapping of name and ADM id from a Bimplus model

  • Added support for StructuralCurveActionThermal. Please note that his is only for the data, the rendering (a.k.a the geometry) still needs to be done. But we need the data for round-tripping purposes.

  • Added support for StructuralSurfaceActionThermal. Please note that his is only for the data, the rendering (a.k.a the geometry) still needs to be done. But we need the data for round-tripping purposes.

  • Updated mapping for ModelInformation so that the NationalCode property is now exported & imported correctly

  • Updated mapping for StructuralCurveAction, so that loads applied on opening and subregion edges are now exported & imported properly.

  • Updated mapping for StructuralCurveMoment, so that loads applied on opening and subregion edges are now exported & imported properly.

  • Updated mapping for StructuralEdgeConnection, so that loads applied on opening and subregion edges are now exported & imported properly.

  • Updated mapping for StructuralEdgeConnection so that the BoundaryCondition property is now exported & imported correctly

  • Updated mapping for StructuralLoadCombination so that the Type property is now exported & imported correctly

  • Added new IBimPlusHasMember2DReference marker interface for objects that reference StructuralSurfaceMember objects.

    This is because in the Bimplus module, we split up StructuralSurfaceMember objects into two different objects, one for constant thickness and one for variable thickness

    This interface is now applied to any existing object that has a reference to StructuralSurfaceMember

  • Updated to the latest version of the S2ALibrary

1.7.0

  • Updated mapping for StructuralCurveAction to skip loads applied on opening and subregion edges, since we're not supporting them yet in this module

  • Updated mapping for StructuralCurveMoment to skip loads applied on opening and subregion edges, since we're not supporting them yet in this module

  • Updated mapping for StructuralEdgeConnection to only map when the connection is made on surface edges. The newly added connections on subregion or opening edges are not supported yet in this module

  • Updated mapping for StructuralLoadCombination to ignore the new Type property, since we do not support it yet

  • Fixed issue in mapping of direction vectors in StructuralPointAction when the string defining the vector is NULL

  • Updated mapping for StructuralSurfaceAction to skip mapping the object entirely if it has a reference to StructuralSurfaceActionDistribution, since we do not have that object yet in this module

  • Updated mapping for ModelInformation to skip the NationalCode property, since we do not support it yet in this module

1.5.0

  • Added support for direction vectors on applicable loads

  • Added support for virtual eccentricities

1.4.0

  • Added support for StructuralCurveMoment object.

  • Updated client to support retrieving user information from BIM+

  • Updated AutoMapper to 10.1.1

  • Fixed issue when uploading to new revision and a ModelInformation object was part of the ADM model being uploaded.

  • Fixed issue with unsupported constraint types on StructuralPointSupport

  • Removed restriction of curve geometrical shape "Bezier". These shapes are now allowed when importing / exporting.

1.4.2 hotfix:

  • Added missing mapping table between BIM+ ID and structural object id for StructuralProxyElements

1.4.3 hotfix:

  • Created separate NuGet package containing only the interfaces of the module.

1.4.4 hotfix:

  • Fixed issue with content attributes being skipped for collection properties.

1.4.5 hotfix:

  • Fixed issue with rendering of solids

1.4.6 hotfix:

  • Added support for project offset when uploading data to BIM+

1.3.0

  • Added support for importing invalid models.

  • Updated StructuralCurveMember 'Type' property and configuration, it is now uploaded to a single attribute.

  • Updated StructuralSurfaceMember 'Type' property and configuration, it is now uploaded to a single attribute.

  • Updated StructuralCrossSection 'Parameters' property, the values in mm are now being rounded before being uploaded.

  • Updated StructuralPointAction and StructuralPointActionFree configurations to also upload load case information when exporting (description, action type, name of load group and type of load).

  • Updated StructuralCurveAction and StructuralCurveActionFree configurations to also upload load case information when exporting (description, action type, name of load group and type of load).

  • Updated StructuralSurfaceAction and StructuralSurfaceActionFree configurations to also upload load case information when exporting (description, action type, name of load group and type of load).

  • Updated StructuralPointMoment configurations to also upload load case information when exporting (description, action type, name of load group and type of load).

  • Replaced Triangle.Net with LibTess.Net for triangulation, since we were having issues with triangulation

1.2.0

  • Added support for rights on project level to our API client.

  • Fixed issue with downloaded geometry for openings of surfaces.

  • Added rounding of cross-section parameter values when uploading.

  • Added support for solid replacement workflow when using the async file upload.

1.1.0

  • Added support for importing & exporting ModelInformation from & to BIM+

  • Added support for importing ProjectInformation from BIM+ (Please note that exporting ProjectInformation is not possible)

  • Refactored IBimPlusImportService to correctly use async await

  • Added support for keeping track of related structural model objects when replacing a solid (StructuralProxyElement) with another analysis object.

    This works based on the name of the objects involved.

    Assume a StructuralProxyElement with name SPE1 that maps with a structural object. When replacing the solid with a more concrete analysis object, such as a StructuralCurveMember, you must re-use the name "SPE1".

    When uploading the updated model to BIM+, we will automatically update the mapping table to reflect this change, that the "SPE1" solid has been replaced with a new analytical object called "SPE1".

    After the initial update, you may rename the object if desired.

1.0.0

  • Added support for ParentId properties on the additional affected objects

  • Updated EnumDefinition of the FormCode attribute

0.11.0

  • Added support for downloading a list of filtered cross-sections from the API.

  • Added support for ParentId and Area properties on the affected objects

0.10.0

  • Downloading geometry of StructuralProxyElement objects now happens in a single API call, instead of 1 call per object.

  • Added support for StructuralCurveMemberVarying and StructuralStorey types

  • Fixed issue in triangulation algorithm when used on StructuralProxyElement

0.9.1

  • Fixed issue when downloading geometry of StructuralProxyElement. When uploading, BIM+ created a template of the geometry and moved it to (0,0,0), so we had to re-apply a transformation matrix when downloading the geometry.

  • Added support for rendering 2D shells

  • Fixed minor issues related to LCS in the drawings

  • Fixed issue in triangulation algorithm, caused by the refactoring of the geometry in 0.9.0

0.9.0

  • Added support for uploading and downloading StructuralProxyElement

  • Refactored geometry part of the BIM+ module.

    Concretely we have removed the use of Edges and now only use vertices and faces.

    We've also updated the polyeder to re-use vertices and no longer allowed duplicates, in an attempt to shrink the amount of vertices being generated in the more complex geometries

  • Removed Specification property from load case

  • Added missing Translation and Rotation resistance attributes on RelConnectsRigidLink. These were not being uploaded yet.

0.8.0

  • Added support for asynchronous file upload.

    This is useful for larger models because the entire model is uploaded as files to the BIM+ server, and the server then processes those files separately.

    The user that uploaded the files will be notified by e-mail when the processing is done.

    The entire model will always be uploaded, the BIM+ server performs checks to determine which objects are new, updated or deleted.

    The model is divided into sub-topologies, based on the object types in the model.

0.7.0

  • Added support for some new objects that were added to ADM

  • Added support for dedicated 1D result objects (= StructuralCurveReaction). Up until now, results data for 1D members has been uploaded as an attribute of those members. By turning them into separate objects, it is possible to download just the (1D) results of a model. This also allows us to skip the export of these results when uploading, which significantly reduces the amount of data being uploaded to the BIM+ API.

  • Refactored how data is uploaded to BIM+ in an attempt to improve performance. We now support several uploading 'strategies':

    • Alter: Export using single alter command, store objects under root topology. Uploads entire model in one request. Full model must always be provided

    • AlterSubtopology: Export using single alter command, store objects per type in sub-topologies. Uploads entire model in one request. Full model must always be provided

    • PutRoot: Export using single PUT command, store objects under root topology. Uploads entire model in one request. Detects new, changed & deleted objects

    • PutSubTopology: Export using single PUT command, store objects per type in sub-topologies. Uploads entire model in one request. Detects new, changed & deleted objects

    • PutSubTopologyParallel: Export using multiple PUT commands, store objects per type in sub-topologies. Uploads entire sub-topology per request. Detects new, changed & deleted objects. Supports resume / retry upload

    • PutSubTopologyParallelChunks: Export using multiple PUT commands, store objects per type in sub-topologies. Uploads each sub-topology divided in chunks (= multiple requests per sub-topology). Detects new, changed & deleted objects. Supports resume / retry upload

    To determine which upload strategy to use, we check the values of several properties on the BimPlusApiConnectionInfo object, provided when using the import / export services.

  • Improved geometry code, reduced data being generated overall, especially when rendering curved objects.

  • Added additional calls to BIM+ API to support new development.

  • Separated ADM Ids from BIM+ Ids: We are no longer using the ADM ids as the IDs of objects in BIM+. Instead, we let BIM+ generate IDs for newly uploaded objects and store our ADM id with the object.