# Release Notes

# v2.6.0

# Feature

  • DWG Viewer now supports layouts. You can now switch between different layouts in the same DWG file.
  • BIMData Viewer can no be used on mobile with a special UI
  • Offline archives with PDF models can be lighter with the trade off of higher CPU usage during load.
  • Point density on point clouds is now better
  • Smartviews plugin has been improve and allow to mix many views

# Bugfixes

  • Editing properies works again
  • Fix annotations on 3D and 2D at the same time when 3D annotation goes behind the camera
  • Many fixes in PDF exports with drawings
  • Fix performance issue with Minimap

# v2.5.0

# Feature

  • Viewer Plan: add includeDrawings param to exportAsPdf() method
  • Add button-structure and button-properties plugins
  • Add bimdata_elevation field to state storeys
  • Add zone creation event on local/global contexts
  • Update translations
  • Add area and perimeter getters on state zones

# Bugfixes

  • Fix: injection for annotation components
  • Fix: pdf page selection in building maker
  • Fix: properly set localContext resolution on pdf export
  • Fix: load xkt file on models with no explicit xkt versions
  • Fix: add model name to IfcProject structure
  • Fix(Viewer 3D): LOD
  • Fix(Viewer Plan): properly handle models without document
  • Fix: add touch event for 3D annotation mode & annotations drag & drop

# v2.4.1

# Bugfixes

  • Correctly load viewpoint if no topic layout specified
  • Fix persistent spinner when opening BCF Manager
  • Fix Meta-Building storey change handler

# v2.4.0

# BREAKING CHANGES

# Window Lifecycle

loadWindow is called in setup intead of mounted, This means that it is no longer possible to access localContext.el in the created() hook, it will only be available from the mounted() hook and after.

Before:

export default {
  created() {
    this.$viewer.localContext.el.addEventListener(
      "contextmenu",
      this.onContextMenu
    );
  },
  // ...
};

Now:

export default {
  created() {
    // `this.$viewer.localContext.el` is null here
  },
  mounted() {
    this.$viewer.localContext.el.addEventListener(
      "contextmenu",
      this.onContextMenu
    );
  },
  // ...
};

# Annotation API

Annotation API has been simplified to provide developers with more flexibility and ease of use.

Examples (IFC and Plan) have been updated accordingly.

See viewer reference to learn more.

# Features

# Bugfixes

  • Fix keyboard shortcuts displayed in help modal
  • Fix 3D annotations visibility update
  • Fix IFC property edition

# v2.3.0

# Features

  • Meta-Building Structure
  • First person view + Mini map
  • Add offline options param
  • Add ability to remove the zone editor "Done" button
  • Viewer 3D parameters rework
  • Re-enabled structures root element to show/select all
  • Viewer plan fitView() now accepts zone/space UUIDs as parameters
  • Add the ability to dynamically change viewer 3D keyboard layout
  • PDF export optimization

# Bugfixes

  • Fix error on storey change when no model is loaded
  • Fix synchronization & background-2d plugins position
  • Fix viewer plan fitView()
  • Fix: buildingElevation fallbacks to siteElevation if not set
  • Fix: model loader spinner on initialization

# v2.2.0

# Features

  • Update english translations
  • Add loadDrawings and clearDrawings methods to drawing tools plugin interface

# Bugfixes

  • Fix "scroll on zoom" bug for 3D and point cloud viewers
  • Fix handle touch events for drawing tools
  • Keep current selection when opening BCF topic creation form
  • BCF topic auto open
  • Fix typos

# v2.1.0

# Features

# Bugfixes

  • Add missing iconOpen plugin option.
  • window open/close events payload was incorrect.
  • Change 'api.offline.dataFile' to 'api.offline.data'.
  • add bcfApi and collaborationApi offline customization options.
  • remove deprecated of local context & global context plugins getters.

# v2.0.0

# BREAKING CHANGES

# Vue 3

Update to Vue.js framework version 3 (opens new window). This brings some breaking changes in the writting of plugins due to the major version increase. Please follow this guide (opens new window) to update your plugins.

# Import via CDN

The UMD build is no longer available. To use the global makeBIMDataViewer function, you need to update the url and add type="module" in the script tag.

Before:

<script src="https://cdn.jsdelivr.net/npm/@bimdata/viewer@1.10.0/dist/bimdata-viewer.min.js"></script>
<script>
    const bimdataViewer = makeBIMDataViewer({ ... });
</script>

Now:

<script type="module" src="https://cdn.jsdelivr.net/npm/@bimdata/viewer@2.0.0/dist/bimdata-viewer.esm.min.js"></script>
<script>
    const bimdataViewer = makeBIMDataViewer({ ... });
</script>

# Viewer configuration

  • (1) menuVisible property of the makeBIMDataViewer ui configuration changed to header:
// OLD
makeBIMDataViewer({ ui: { menuVisible: true }});

// NEW
makeBIMDataViewer({ ui: { header: true }});
  • (2) "window-split" plugin replaced by "window-manager"

# FEATURES

Vue.js v3 (opens new window) brings the new composition API (opens new window) & the script setup support (opens new window).

$viewer is available via injection.

Example of a plugin using the composition API:

import { inject } from "vue";

export default {
  setup() {
    const $viewer = inject("$viewer");
    // your code here
  }
};

# DEPRECATED

  • To limit incompatibility issues, destroyed & beforeDestroy vue.js component lifecyles are still available but logged as deprecated. Please migrate to beforeUnmount & unmounted.

  • localContext & globalContext incrementSpinnerProcesses & decrementSpinnerProcesses are deprecated, please use loadingProcessStart & loadingProcessEnd instead.

  • localContext.getPlugin(pluginName: string): Plugin is deprecated, please use localContext.plugins: Map<string, Plugin> instead.

  • globalContext.getPlugins(pluginName: string): Plugin[] is deprecated, please use globalContext.plugins: Map<string, Plugin[]> instead.

  • BIMDataViewerVue is the vue.js instance the viewer is based on. Use it to write render functions or if you use the composition API in your plugins.

# PLUGIN BUILD

Due to the major Vue.js update, plugin build configuration must be updated. As the h function is now exposed on the vue.js instance, please use the globally available BIMDataViewerVue singleton.

Example of vite configuration:

import { defineConfig } from "vite";

import vue from "@vitejs/plugin-vue";
import cssInjectedByJsPlugin from "vite-plugin-css-injected-by-js";
import externalGlobals from "rollup-plugin-external-globals";

export default defineConfig(() => {
  return {
    build: {
      lib: {
        entry: "./src/myPlugin.js",
        formats: ["es"],
        name: "myPlugin",
        fileName: "myPlugin.plugin",
      },
      minify: 'terser',
    },
    plugins: [
      vue(),
      cssInjectedByJsPlugin(),
      externalGlobals({
        vue: 'BIMDataViewerVue', // MANDATORY
      }),
    ],
  };
});

# v1.10.1

# Usages

  • Add Point Cloud Viewer section plugin
  • Add spinner while loading models on Point Cloud Viewer
  • Add PDF Viewer multipage & export features
  • Add BCF import/export features
  • The viewer embed native Roboto Font
  • New Smartview Plugin
  • Viewer DWG handles hatches / textures
  • Viewer 3D handles duplicated uuids - It is now possible to open two versions of the same model on the same Viewer 3D.
  • New viewer 2D shortcut help modal
  • Add nav-cube to Point Cloud Viewer
  • Rework DWG Layers
  • Show properties for systems and zones
  • Distinguish objects property sets from type property sets in the properties plugin

# Developers

# Bugfixes

  • Exported PDF have correct annotation size
  • Viewer DWG correctly handles unvisible objects when a new model is loaded
  • Viewer DWG handles opacity & stroke opacity
  • Selection is deactivated when annotation mode is turned on
  • Fix annotation API transform style - remove the transform: translate(-50%, -50%) native style
  • Update some english translations
  • Fix elevation loading on react and angular
  • Fix IFC Export
  • Fix select behaviour on GLTF models
  • Fix structure plugin translation types
  • Fix DWG texts anchors
  • An error when attempting to load an already loaded model
  • Do not clear object selection when opening BCF creation form
  • Handle deprecated BIMDataAPI IfcApi methods properly

# v1.9.0

# Usages

  • New DWG & DXF viewer windows
  • New GED window
  • New Building Maker window
  • New BCF Manager window
  • New Viewer Plan
  • It is now possible to open different models on different windows (2D, 3D, ...)
  • New 2D Plan synchronisation
  • Preview in 3D Model loader
  • Improved 2D performance
  • Improved 2D drawing capabilities
  • 2D Texts
  • Improved Properties: search + link documents + PDF preview
  • 3D Measures
  • Annotations
  • Calibration
  • 2D & 3D parameters Space visibility toggle
  • Rounded 2D lines
  • 2D Storey selector can be hidden

# Developers

  • Exposed Modelsloader
  • Upgrade xeokit dependency to 2.2
  • Upgrade bimdata 2d-engine dependency to 1.14
  • Command Manager removed
  • Logger removed
  • Warning plugin removed
  • Add getLocalContexts(windowName) on $viewer
  • Embed BIMData design system
  • Improve state performances
  • Customizable colors
  • Use BIMData model API
  • Refactor state: change ifc to model

# Bugfixes

  • Display 2D compass correctly while zoomed
  • Fix 2D storey navigation (2D state, plan draw order, )
  • Fix 2D zoom
  • Fix 2D measurement plugin
  • improve 3D LOD
  • Fix 3D orhtographic projection
  • Fix viewer 3D out of sync state
  • Fix 2D/3D canvas mouse detection behind Model loader & Storey selector
  • 2D/3D parameters clean destroy when the window is closed
  • Fix shortcut error while openning the same window twice
  • Handle properties long names
  • Fix property edition
  • Fix window registration
  • Fix context menu crash on some conditions
  • CSS/SCSS Fixes
  • Fix model loader dropdownlist
  • Fix autocomplete on search & tags inputs
  • Fix crash while openning the viewer twice
  • Better viewer bundle packing
  • Fix window switching style
  • Fix properties showing last selected object
  • Hide plugin as button tooltip while the plugin is open

# v1.8.2

# Developers

# v1.8.1

# Developers

  • getLastEvent is now referenced in index.d.ts. Don't forget to use it (even with .js files) to bring auto-complete in your development tools.

# v1.8.0

# Usages

  • 2D Measurement can now snap to lines. Press CTRL (or cmd) while measuring.
  • 3D and 2D camera synchronization is now available in 2D parameters.
  • IFC Entities (IfcWall, IfcDoor, etc) are now translated in French (If you want to help us translate them into other languages, please contact us!)
  • BCF search now filters on all BCF fields and not only on the title.
  • Upgraded Spanish translation

# Developers

  • 2D engine now uses the same coordinates as the 3D engine. You can build even more powerful 2D and 3D interactions.
  • Events now have an option getLastEvent. If true, the last event (if any) is instantly triggered. It is useful for state synchronization on plugin initialization.

# v1.7.4

# Usages

  • Archived models can now be loaded in multi-model if the first model loaded is archived

# v1.7.3

# Usages

  • Add first iteration of Spanish translations

# v1.7.2

# Usages

  • Add first iteration of German translations

# v1.7.1

# Developers

  • Alerts plugin is now enabled on 2d window by default

# Bugfixes

  • Update api client to fix issues with getExtensions, updateExtensions, createClassificationElementRelations and listClassificationElementRelations methods

# v1.7.0

# Usages

  • New menu to select windowed plugins
  • New UI to manage viewers and windows
  • You can now open properties in a new window
  • Add ability to take 2D screenshots with annotations
  • 3D lights have been improved
  • Viewpoint is no more reset when loading another model in the viewer
  • Improved 2D rendering
  • 2D plan are now aligned to the screen
  • 2D now have a compass
  • UX improvements with 2D zoom
  • 2D improve path measure validation

# Developers

# Bugfixes

  • Fix 2D crash if the page loading the viewer doesn't allow eval or new Function()
  • Fix rare 2D crash
  • Improve 2D performances on some models
  • Fix some French BCF translations
  • Fix many small bugs on some browsers
  • Object state is now correctly set when opening a new 3D window

# v1.6.2

# Bugfixes

  • Fix bug with logarithmicDepthBuffer. It could cause glitches if two surfaces were too close to each other

# v1.6.1

# Usages

  • Improve default 2D and 3D parameters (Edges, highlight, spaces and space names are enabled by default)

# v1.6.0

# Usages

  • Brand new 2D viewer
  • Faster and more accurate rendering
  • New measurment plugin: Measure distances, angle and surfaces easily!
  • Space names are shown in 2D
  • Door openings are shown in 2D
  • You can disable and enable door openings and space names
  • 2D objects can be colorized
  • 2D objects can be textured
  • User's 3D and 2D configurations are saved
  • Many performances improvements

# Developers

  • Open and close event are now always triggered on edge-cases

# Bugfixes

  • Section plane plugin now show sections loaded from BCF
  • Fix loadIfc method when ifcId is a string instead of an integer

# v1.5.6

# Bugfixes

  • Performance fixes

# v1.5.0

# Developers

# Bugfixes

  • Fix BCF bucket tip which showed the wrong shortcut
  • Fix objects being cut when to close from camera
  • Fix xraySetters

# v1.4.1

# Bugfixes

# v1.4.0

# Usages

  • Improve 3D rendering performances up to 25%

# Developers

# Bugfixes

  • Fix picking on big 3D models
  • Fix object.getFirstAncestorWithType() which may be not defined on some cases
  • Fix plugin $close() triggered even if the plugin wasn't opened when keepOpen = false

# v1.3.0

# Usages

  • New Section planes tool
  • New pivot marker
  • New pivot behavior when clicking outside the model. It's easier than ever to navigate in the model
  • Spatial tree is no more opened if model have more than 8 IfcBuildings (to decrease loading time)
  • First person projection is now named "Flight mode"
  • Elements highlight on mouse hover is now disabled in Flight mode

# Developers

# Bugfixes

  • Fix BCF interface if loading was slower than the human
  • Fix multi model selection if there was too many models in the project
  • Fix context menu (right click) after full screen is swifted off
  • Fix french typo

# Migration Guide from 0.x to 1.x

This is the first major BIMData Viewer update. Thanks to your feebacks, we have improved the API. It is now more intuitive, more powerful and there are many new features. This guide will only show you how to upgrade your plugins. If you want to see the new feature in detail, see the viewer documentation.

Major features:

# Viewer instance

# ES Module

# Script tag

# Refresh access token

# Change language

# Plugin configuration file

# Plugin API

# Object change

WARNING

Version 0.x used objects uuids as id. To handle identical uuids (eg: in model versioning), objects in version 1.x now have a unique id added by the viewer. It is still possible to access uuid using object.uuid. All viewer methods used id and not uuid. Be carefull to correctly link the two properties.

TIP

There are uuids utilities. See the state reference.

# Setters

# Getters

# BIMData API Client

# Structure helpers

# Model Loading

# Error message

# Modals