Some test text!

Search
Hamburger Icon

Web / Guides / Client API

WebViewer BIM Client APIs

initializeBimViewer

Construct initialized 3D viewer.

Params

instance

WebViewer instance that is available after initializing.

serverURL

URL of WebViewer BIM server.

options

An options object to configure the WebViewer BIM application. The following are possible arguments:

  • license - The WebViewer BIM license key.

  • dataSchema - An object that defines the schema of the properties panel.

Example

import  WebViewer  from  '@pdftron/webviewer';
import { initializeBimViewer } from '@pdftron/webviewer-bim-client'

WebViewer({
  path: '/webviewer/lib',
}, document.getElementById('viewer')).then(instance  => {

  const  license = `---- Insert commercial license key here after purchase ----`;
  const  serverURL = `---- Insert server URL after setup ----`;
  const  options = {
    license: license,
    dataSchema: {
      headerName: 'Name',
      defaultValues: {
        Description: 'Description',
        GlobalID: 'GlobalId',
        Handle: 'handle',
        EmptyRow1: 'EmptyRow1',
      },
      groups: {
        Dimensions: {
          Length: 'Length',
          Width: 'Width',
          Height: 'Height',
          EmptyRow2: 'EmptyRow2',
          GrossFootprintArea: 'GrossFootprintArea',
          GrossSideArea: 'GrossSideArea',
          GrossVolume: 'GrossVolume',
        }
        EmptyGroupTest: {
            ObjectType: 'Lions',
            EmptyRow3: 'Tigers',
            ObjectPlacement: 'Bears',
        },
      },
      groupOrder: ['EmptyGroupTest', 'Dimensions'],
      removeEmptyRows: true,
      removeEmptyGroups: true,
      createRawValueGroup: true,
    }
  };

  const WebViewerBIM = await initializeBimViewer(instance, serverURL, options);
}

Returns

A promise that resolves to an object containing the functions necessary for loading models in WebViewer.

load3dAsset

Loads a 3D model.

Params

pathToAsset

URL or path to 3D model.

options

An optional object that modifies the 3D loading process.

  • loadProperties, determines whether the server should extract and load 3D property data or not.
  • withCredentials, determines whether to set the credentials property to 'include' on the Fetch request. This is used when the BIM Server has allow_credentials enabled.
  • headers, carries additional information to be sent to the BIM server.
  • headers.extension, use this option to exclusively specify the file extension.

Example

const webviewerBIM = await initializeBimViewer(instance, serverURL, options);
const loadOptions = {
  loadProperties: true,
  withCredentials: true,
  headers: {
    extension: '.ifc',
  },
};

webviewerBIM.File.load3dAsset('Add URL to your 3D asset here', loadOptions);

Returns

void

preload3dAsset

Preloads a 3D model for future loading, allowing for the conversion of model data before loading.

Params

serverURL

URL to your BIM server instance.

pathToAsset

URL or path to 3D model.

preloadOptions

Optional options object to modify preload behavior.

  • loadProperties, determines whether the server should extract and load 3D property data or not.

  • withCredentials, determines whether to set the credentials property to 'include' on the Fetch request. This is used when the BIM Server has allow_credentials enabled.

  • headers, carries additional information to be sent to the BIM server. For instance, the extension attribute can be included in the header to exclusively specify the file extension.

Example

const preloadOptions = {
  loadProperties: true,
  withCredentials: true,
  headers: {
   extension: '.ifc', 
  },
};
const assetObject = await preload3dAsset(<serverURL>, <pathToAsset>, preloadOptions);

Returns

Promise<object> - An object containing IDs for model and, optionally, properties data. If enable_auth is enabled on your BIM server, it will return an authorization token for both the model and properties data.

// Sample return value.
assetObject = {
  modelData: {
    id: '7bdb6aeab27191a882b9d3ed1e48afd4b490d755',
    authorization: 'be36e17d84d9eac35f41aef4cd9dc6e894f9f452b96175b2075308725338c3fe',
  },
  propertiesData: {
    id: 'b204f18fb2168dc547d5056721c50ceb5bb3c62b',
    authorization: 'fa34e17d84g3awe35f41aef4cd9dc6e894f9f452b96175b2075308725338c3fe',
  },
};

loadCached3dAsset

Loads a cached 3D asset from the BIM server.

Params

loadCachedOptions

Options object containing credential options, model data IDs, and optional properties data. Authorization tokens are only required if enable_auth is set to true on the BIM Server.

  • withCredentials, determines whether to set the credentials property to 'include' on the Fetch request. This is used when the BIM Server has allow_credentials enabled.

Example

const loadCachedOptions = {
  withCredentials: true,
  modelData: {
    id: '7bdb6aeab27191a882b9d3ed1e48afd4b490d755',
    authorization: 'be36e17d84d9eac35f41aef4cd9dc6e894f9f452b96175b2075308725338c3fe',
  },
  propertiesData: {
    id: 'b204f18fb2168dc547d5056721c50ceb5bb3c62b',
    authorization: 'fa34e17d84g3awe35f41aef4cd9dc6e894f9f452b96175b2075308725338c3fe',
  },
};

const webviewerBIM = await initializeBimViewer(instance, serverURL, options);
await webviewerBIM.File.loadCached3dAsset(loadCachedOptions);

Returns

Promise<void>

checkAssetConversionProgress

Checks the status on asset conversion, returning true when an asset is ready to load.

Params

optionsObject

Options object containing credential options, model data IDs, and optional properties data. Authorization tokens are only required if enable_auth is set to true on the BIM Server.

  • withCredentials, determines whether to set the credentials property to 'include' on the Fetch request. This is used when the BIM Server has allow_credentials enabled.

Example

import { initializeBimViewer, preload3dAsset } from '@pdftron/webviewer-bim-client';

const webviewerBIM = await initializeBimViewer(<instance>, <serverURL>, <options>);
const asset = await preload3dAsset(<serverURL>, <assetURL>, {});

// Rudimentary polling against the BIM server to know when the asset is ready.
while (true) {
  const status = await webviewerBIM.File.checkAssetConversionProgress({
    ...asset,
    withCredentials: true
  });

  if (status === true) {
    break;
  }

  await new Promise((r) => setTimeout(r, 200));
}

await webviewerBIM.File.loadCached3dAsset(asset);

Returns

Promise<boolean> - A promise that resolves to true if the conversion has been completed successfully. false otherwise."

unmountBimViewer

Unmounts the BIM Viewer. Calling this will close the document and delete all annotations of the current session.

Params

instance

WebViewer instance that is available after initializing.

Example

import  Webviewer  from  '@pdftron/webviewer';
import { initializeBimViewer, unmountBimViewer } from '@pdftron/webviewer-bim-client'

Webviewer({
  path: '/webviewer/lib',
}, document.getElementById('viewer')).then(instance  => {
  const  license = `---- Insert commercial license key here after purchase ----`;
  const  serverURL = `---- Insert server URL after setup ----`;
  const  options = {
    license: license,
  }

  const WebViewerBIM = await initializeBimViewer(instance, serverURL, options);
  webviewerBIM.File.load3dAsset("Add URL to your 3D asset here");

  unmountBimViewer(instance);
}

Returns

void

Viewer APIs

enableSSAO

Enable screen-space ambient occlusion for the viewer.

Example

const webviewerBIM = await initializeBimViewer(instance, serverURL, options);
webviewerBIM.Viewer.enableSSAO();

Returns

void

disableSSAO

Disable screen-space ambient occlusion for the viewer.

Example

const webviewerBIM = await initializeBimViewer(instance, serverURL, options);
webviewerBIM.Viewer.disableSSAO();

Returns

void

setSSAOOptions

Adjust screen-space ambient occlusion for the viewer.

Example

const webviewerBIM = await initializeBimViewer(instance, serverURL, options);
webviewerBIM.Viewer.setSSAOOptions({
  // example parameters:
  isDynamicRadius: true,
  radius: 1,
  loops: 64,
  blurRadius: 2,
  power: 1.4,
});

Returns

void

enableAntiAliasing

Enable anti-aliasing for the viewer.

Example

const webviewerBIM = await initializeBimViewer(instance, serverURL, options);
webviewerBIM.Viewer.enableAntiAliasing();

Returns

void

disableAntiAliasing

Disable anti-aliasing for the viewer.

Example

const webviewerBIM = await initializeBimViewer(instance, serverURL, options);
webviewerBIM.Viewer.disableAntiAliasing();

Returns

void

enableShadows

Enable ground shadows for the viewer.

Example

const webviewerBIM = await initializeBimViewer(instance, serverURL, options);
webviewerBIM.Viewer.enableShadows();

Returns

void

disableShadows

Disable ground shadows for the viewer.

Example

const webviewerBIM = await initializeBimViewer(instance, serverURL, options);
webviewerBIM.Viewer.disableShadows();

Returns

void

getWalkMode

Gets the current Walk Mode for the First Person Mode.

Example

const webviewerBIM = await initializeBimViewer(instance, serverURL, options);
webviewerBIM.Viewer.FirstPersonMode.getWalkMode();

Returns

String - Returns either WalkThrough or FlyThrough.

setWalkMode

Sets the current Walk Mode for the First Person Mode, either WalkThrough or FlyThrough. WalkThrough simulates walking where going forward for example is always in reference to the ground plane. When set to FlyThrough directional movement is relative to the camera orientation.

Params

walkMode

String containing the desired walk mode, either WalkThrough or FlyThrough.

Example

const webviewerBIM = await initializeBimViewer(instance, serverURL, options);
webviewerBIM.Viewer.FirstPersonMode.setWalkMode('WalkThrough');

Returns

void

Orbit & Pan Tools APIs

setCameraSensitivity

Sets the sensitivity for Orbit/Pan tool.

Example

const cameraTools = {
  orbit: 'Orbit3D',
  pan: 'Pan3D',
  walk: 'Walk',
};
const panTool = instance.Core.DocumentViewer.getTool(cameraTools.pan);
panTool.setCameraSensitivity(10);

Returns

void

getCameraSensitivity

Gets the Orbit/Pan tool's sensitivity.

Example

const cameraTools = {
  orbit: 'Orbit3D',
  pan: 'Pan3D',
  walk: 'Walk',
};
const orbitTool = instance.Core.DocumentViewer.getTool(cameraTools.orbit);
orbitTool.getCameraSensitivity();

Returns

Number

Properties Panel APIs

setPanelSchema

Sets a new Properties Panel configuration based on a passed in Schema.

Params

schema

Object containing the desired configuration.

Example

const sampleSchema =  {
      headerName: 'Name',
      defaultValues: {
        Description: 'Description',
        GlobalID: 'GlobalId',
        Handle: 'handle',
        EmptyRow1: 'EmptyRow1',
      },
      groups: {
        Dimensions: {
          Length: 'Length',
          Width: 'Width',
          Height: 'Height',
          EmptyRow2: 'EmptyRow2',
          GrossFootprintArea: 'GrossFootprintArea',
          GrossSideArea: 'GrossSideArea',
          GrossVolume: 'GrossVolume',
        }
        EmptyGroupTest: {
            ObjectType: 'Lions',
            EmptyRow3: 'Tigers',
            ObjectPlacement: 'Bears',
        },
      },
      groupOrder: ['EmptyGroupTest', 'Dimensions'],
      removeEmptyRows: true,
      removeEmptyGroups: true,
      createRawValueGroup: true,
    }

    const webviewerBIM = await initializeBimViewer(instance, serverURL, options);
    webviewerBIM.PropertiesPanel.setSchema(sampleSchema);
}

Returns

void

toggleShowDefaultGroup

Toggles showing the Default group. This group contains all of the key/value pairs on a selected element without any adjustments.

Example

const webviewerBIM = await initializeBimViewer(instance, serverURL, options);
webviewerBIM.PropertiesPanel.toggleShowDefaultGroup();

Returns

void

toggleShowEmptyGroups

Toggles showing empty Groups on the properties panel. Empty Groups are defined as groups where every Row has an empty String.

Example

const webviewerBIM = await initializeBimViewer(instance, serverURL, options);
webviewerBIM.PropertiesPanel.toggleShowEmptyGroups();

Returns

void

toggleShowEmptyRows

Toggles showing empty Rows on the properties panel. An empty Row is defined as a row where the value is an empty String.

Example

const webviewerBIM = await initializeBimViewer(instance, serverURL, options);
webviewerBIM.PropertiesPanel.toggleShowEmptyRows();

Returns

void

Get the answers you need: Chat with us