# 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 toexportAsPdf()
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
andperimeter
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
- Add globalContext models API
- Provide annotated object to annotation callback (IFC only)
- Add
metaBuildingStructure
to viewer plan settings - Improve PDF export feature
- Save & restore BCF topic layout
- Update xeokit
- Update english and german translations
# 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 tositeElevation
if not set - Fix: model loader spinner on initialization
# v2.2.0
# Features
- Update english translations
- Add
loadDrawings
andclearDrawings
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 themakeBIMDataViewer
ui
configuration changed toheader
:
// 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 tobeforeUnmount
&unmounted
.localContext
&globalContext
incrementSpinnerProcesses
&decrementSpinnerProcesses
are deprecated, please useloadingProcessStart
&loadingProcessEnd
instead.localContext.getPlugin(pluginName: string): Plugin
is deprecated, please uselocalContext.plugins: Map<string, Plugin>
instead.globalContext.getPlugins(pluginName: string): Plugin[]
is deprecated, please useglobalContext.plugins: Map<string, Plugin[]>
instead.BIMDataViewerVue
is thevue.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
- Improved annotation api
- Add Viewer Plan "pdf-page-changed" event
- Add ability to pass params to plugin onOpen/onClose methods
- Add viewer common interface
- Context menu handles async predicates
- New bimdataViewer
destroy
method to propertly clean it - New
setObjectsOpacity
method on the Viewer3D plugin - Point Cloud Viewer has
xeokitSdk
exposed and itsviewer
property is renamed asxeokit
- Add Viewer Plan 'plan-model-loaded' and 'plan-model-unloaded' events
# 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 inindex.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
. Iftrue
, 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
andlistClassificationElementRelations
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
- Add
2d-model-loaded
and2d-model-unloaded
events - The new 2D engine is now documented (opens new window). You can develop plugin drawing stuff in 2D!
- Windows can now have an icon
- Add 3D annotations events (opens new window)
# Bugfixes
- Fix 2D crash if the page loading the viewer doesn't allow
eval
ornew 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
- Add showAllAnnotations option to BCF plugin
- Add structure window as available window by default.
bimdataViewer.unregisterWindow('structure')
to remove it. - Add getRawElements()
# 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
- Fix object properties that may not be accessible in some contexts
# v1.4.0
# Usages
- Improve 3D rendering performances up to 25%
# Developers
- BCF current-user can now be fetched from a custom endpoint
- Add method to reload Structure plugin
- Move getRawElements() method to $viewer.state.api
# 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 whenkeepOpen = 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
- BCF users can now be fetched from a custom endpoint
- Increase render and pick precision for very large models (opens new window)
- Add methods to retrieve objects, children, siblings and parents
- Add logger level configuration in makeBIMDataViewer
- Add viewer instance setLocale method
# 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:
- The 2D Viewer is now available.
- Implement your plugins in dedicated windows and build even more powerful tools.
- Implement loading screens.
- Modals.
- Custom Right click actions.
- Improved integration in various web environments.
- Better performances.
- Improved multi-models loading and positioning.
- Undo/Redo (CTRL-Z) on state change actions.
# 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
TIP