Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Introduction to Bimplus WebSDK

Bimplus WebSDK library was created with intention to provide easy access to Allplan Bimplus API via simple and easy to use SDK. It contains list of functions which you can call to obtain data from API servers.

 

Access to Allplan Bimplus API servers is not public, so you need a valid Bimplus account to use one of our servers.

With Bimplus account you obtain also unique application id for your application. If you don't have application id, please contact Allplan company to get one.

 

Please note that currently we have dev, stage, prod API servers and each of these uses separate accounts. It's not possible to use dev credentials to login into our prod or stage servers. Application id is the same for all api servers, so you can use the same for all our api servers.

In the next sections you can find some basic tutorials how to initialize and use Bimplus WebSDK.

Bimplus WebSdk initialization example

import BimWebSdk from 'bimplus-websdk';

// cache - flag if Bimplus WebSdk should use internal indexeddb cache to store all requests - Dexie plugin is required if it's turned on
// host - choose api server for connection, currently we have these servers - api-dev.bimplus.net, api-stage.bimplus.net, api.bimplus.net
// protocol - choose protocol - http or https
var apiConfig ={    cache: false,
                    host: "api-dev.bimplus.net",
                    protocol: "https:\\"
                }

var api = new BimWebSdk.Api(apiConfig);

Authorization example

Please note that authorization must be done prior to any other api calls ! It's important to set correct access token into api to provide credentials for other calls.

To successfully login you need to have account in Allplan Bimplus and application id assigned to your application.

Please note that dev, stage and prod api servers are using separate accounts so it's not possible to login to prod via dev credentials.

Application id is the same for all api servers and it identify your application.

 

api.authorize.post('demoEmail@allplan.com','password', 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX').done(function(data,status,xhr) {        
    api.setAccessToken(data.access_token);
}).fail(function(data) {     
    console.error('Login to Bimplus failed');
});

Set team by name function example

Here is the simple example how to obtain list of teams and set specific team by name into api. Api must be authorized otherwise this code will fail.

 

this.setTeamByName = function(teamName){
    var tn = teamName ?  teamName : this.defaultTeam;
    var deferred = $.Deferred();

    // prior the first execution of this code we need to login and set valid api access token into Bimplus WebSDK api
    return api.teams.get().done(function(data){
        var team = data.find(function(d){
            return d.name === tn;
        });

        api.setTeamSlug(team.slug);
        deferred.resolve(team.slug,team.id);
    }).fail(function(result){
        deferred.reject(result);
    });				

};

Get all projects example

Example how to get list of all projects. Please note that correct access token must be set in api and we must set also the teamslug via api.setTeamSlug(team.slug) call to specify for which team to obtain list of projects

 

api.projects.get().done(function(data){    
    deferred.resolve(data);
});
Warning

This page is invisible for public visitors, because of old / obsolete content

Bimplus Web SDK

Bimplus provides a javascript SDK for accessing & manipulating building information stored in the Bimplus platform. The SDK provides a rich set of web-interface tools to view any part or aspect of the 3D model of the given building, showing or hiding specific layers, such as Disciplines or Collisions and other details. It also provides user controls for creating and managing Bimplus projects, collaborating with team/project members, issue tracking etc.

  • Build your own web application for managing building projects from any location, simply from your preferred device using a browser supporting openGL(Chrome, Firefox, IE>10)
  • Build a web tool for managing building projects on the Bimplus platform (www.bimplus.net)
  • View a 3D model of any size
  • The SDK uses REST based Bimplus API for accessing, creating, modifying and deleting different levels of information in a building model on the Bimplus platform (Bimplus API)
  • The SDK is a javascript based library and Bimplus web explorer (https://portal.bimplus.net/) is built using this library

Features

The SDK offers various controllers for

  • Rendering & visualizing 3D Models/Objects of any size
  • Displaying Topologies (objects in a hierarchical tree structure)
  • Project related controllers
  • Object highlighting
  • Setting object transparency
  • Sectioning
  • Client & Server side(ETag) caching for performance improvement
  • Issue Tracking
  • Performing CRUD operations on Attachments in projects/objects/issues
  • Performing CRUD operations on Comments in Issues
  • Performing CRUD operations on Pins (for visualizing issues)
  • Slideshows & Slides
  • Hyperlinks

Downloading & using the SDK

The source code for the SDK is located under https://github.com/Bimplus/Web-SDK. This is a private repository and hence if you want to use the SDK please contact developer@bimplus.net. Please go through the "Getting Started" & "Using the SDK" sections of README.MD text.

Web SDK Reference

...

3D Model Renderer 

This control is used for rendering & displaying a 3D model of any size. This is the main view which displays the model.

 

Deck of Cards
idsdk3DModel
Card
defaulttrue
labelUI Control
titleInterface for rendering & displaying a 3D model of any size
 Image Removed
Card
labelController & Methods
titleThe modules to be loaded for using this interface

Controller: viewport3d, viewport3dController

Methods:

initViewport(): Initialize 3D viewport

select3DObject: Object properties and 3D preview will be shown in the object view if exists (This is a ember action helper which could be called from template or with sendAction() method)

getSelected3DObject(): Returns the currently selected 3D object id(String) in the viewport

stopLoadNode(): Stop node loading and processing on custom request

showPins(Array pins): Show specified pins in the 3D viewport and highlight the related objects

hidePins(): Hide pins in the 3D viewport and reset selected objects

cancelAddPin(): Cancels the addition of a pin

getPinObject(): Selects object in the 3D view to assign pin to

showRelatedObject(Object pin): Highlight the pin related object

setSlideScene(Object pin): Sets the scene according to the slide data

getObjectUnderMouse(): Returns the object(Object) which is under the mouse pointer

reset(): Resets the 3D view by deleting the node tree, geometry, objects and resetting the viewport. Used when new project will be loaded

setupScene(Object scene): Setup scene for particular slide in the slideshow. Set camera, selection mode, object picking mode, UI, etc. It returns Promise object

toggleNode(node, discipline): Toggles node visibility

setDisciplineOpacity(Object discipline, Object opacity): Sets the transparency of discipline

resetSize(): Sets the size of the viewport according to the container dimension

resetCamera(): Resets camera and controls to the initial values

setSectionAxis(String section_axis(i.e x, y, z)): Select axis for sectioning operation

setCameraResetAxis(String section_axis(i.e x, y, z)): Reset the sectioned axis

checkSelectionMode(): Checks the selection mode

setSelectionMode(): Sets the selection mode

unsetSelectionMode(): Unsets the selection mode in 3D viewport

find(Object node, Object discipline): Load objects with geometry

Info

Please note that viewport3dController acts like a proxy to the viewport3d and hence all the public methods are available under viewport3d.

Card
labelTemplate & View
titleThe template that has to be loaded

Template: main.hbs

View: viewport3dView

 

...

Attachment

This control is used for uploading & displaying the attachments (attachment control is already included for objects, issues & slideshows)

 

...

idsdkAttachmentsList
Card
defaulttrue
labelUI Control
titleInterface to create,update,delete & display the list of attachments
 Image Removed

...

labelController & Methods
titleThe modules to be loaded for using this interface

Controller: attachmentsListController

Methods:

addAttachment(Object form_data): Add an attachment to the current object. It returns a deferred object

deleteAttachment(Object attachment): Deletes the specified attachment and returns a deferred object

findAll(String object_id): Loads object attachments and returns a deferred object

Here is a list of Ember action helper methods which could be called from template or with sendAction() method 

createAttachment(): Create a new attachment object 

showNewAttachment(): Show DOM element for new attachment creation 

cancelNewAttachment(): Cancels the new attachment creation mode 

deleteIssueAttachment(Object attachment): Deletes the specified attachment from the current issue object 

downloadIssueAttachment(Object attachment): Download the specified attachment 

hideAttachmentPreview(): Hides the attachment preview of DOM object(div)

Card
labelTemplate & View
titleThe template that has to be loaded

Template: attachmentList.hbs

View: attachmentsListView

 

...

Comment

This control is used for working with the comments (comments control is already included for objects, issues & slideshows)

Deck of Cards
idsdkCommentsList
Card
defaulttrue
labelUI Control
titleInterface to create,update,delete & display the list of comments
 Image Removed
Card
labelController & Methods
titleThe modules to be loaded for using this interface

Controller: commentController, commentsListController

Methods:

commentController

find(): Loads the comment info

commentsListController

addComment(): Adds comment to the current object and returns a deferred object

updateComment(Object comment): Updates the specified comment.

deleteComment(Object comment): Deletes the specified comment from the current object and returns a deferred object

findAll(String issue_id): Loads issue's comments

 

Here is a list of Ember action helper methods which could be called from template or with sendAction() method 

editMode(): Sets the edit mode for writable fields 

cancel(): Sets the read mode for writable fields 

createComment(): Creates a new comment 

updateIssueComment(Object comment): Updates the specified comment 

showNewComment(String DOM_Object_id): Show input view for new comment 

cancelNewComment(String DOM_Object_id): Cancel new comment creation mode 

deleteComment(Object comment): Deletes the specified comment

Card
labelTemplate & View
titleThe template that has to be loaded

Template: commentsList.hbs

View: commentsListView

 

...

This control is used for working with the hyperlinks (hyperlinks control is already included for objects, issues & slideshows)

 

Deck of Cards
idsdkHyperlinksList
Card
defaulttrue
labelUI Control
titleInterface to create,update,delete & display the list of hyperlinks
 Image Removed
Card
labelController & Methods
titleThe modules to be loaded for using this interface

Controller: hyperlinksListController

Methods:

addHyperlink(): Adds hyperlink to an issue and returns a deferred object

updateHyperlink(object hyperlink): Update the hyperlink

deleteHyperlink(object hyperlink): Deletes hyperlink from the database and returns a deferred object

findAll(String issue_id): Load hyperlinks of an issue

 

Here is a list of Ember action helper methods which could be called from template or with sendAction() method 

cancel(object hyperlink): Sets the read only mode for that particular hyperlink

createHyperlink(): Creates a new hyperlink

showNewHyperlink(String DOM_Object_Id): Show input form for new hyperlink

cancelNewHyperlink(String DOM_Object_Id): Cancels hyperlink creation and go to preview mode

deleteHyperlink(object hyperlink): Deletes the selected hyperlink

Card
labelTemplate & View
titleThe template that has to be loaded

Template: hyperlinksList.hbs

View: hyperlinksListView

 

...

Issue

This control is used for working with issues inside a project. Please use Pins/Spot control for visualizing spots/pins(could be a problem) related to an issue (if the issue includes geometrical information)

Deck of Cards
idsdkIssues
Card
defaulttrue
labelUI Control
titleInterface to update,delete & display a particular issue details and its related components(pins, attachments, hyperlinks & comments)
 Image Removed
Card
labelController & Methods
titleThe modules to be loaded for using this interface

Controller: issueController

Methods:

addIssue(): Creates a new issue

updateIssue(object issue): Updates the selected issue

deleteIssue(object issue): Deletes the issue

find(String issue_id): Loads issue info

 

Here is a list of Ember action helper methods which could be called from template or with sendAction() method 

editMode(): Sets the edit mode for writable fields of the selected hyperlink

cancel(): Sets the read only mode for the selected hyperlink

addIssue(object issue): Creates a new issue

deleteIssue(object issue): Deletes the selected issue

updateIssue(object issue): Updates the selected issue

Card
labelTemplate & View
titleThe template that has to be loaded

Template: issue.hbs

View: issueView

 

...

Issue List

This control is used for displaying a list of issues inside a project.

 

Deck of Cards
idsdkIssueList
Card
defaulttrue
labelUI Control
titleInterface to display a list of project related issues
 Image Removed
Card
labelController & Methods
titleThe modules to be loaded for using this interface

Controller: issuesListController

Methods:

findAll(String project_id): Loads all the issues belonging to a project

Card
labelTemplate & View
titleThe template that has to be loaded

Template: issuesList.hbs

View: issuesListView

 

...

Object Properties 

This control is used for displaying object's properties. It includes comments, attachments & hyperlinks controls.

 

Deck of Cards
idsdkObjects
Card
defaulttrue
labelUI Control
titleInterface for displaying object's properties

 Image Removed

Please note that the selected objects can also be previewed(visualized) using the viewport3d, viewport3dController and its related templates.

Card
labelController & Methods
titleThe modules to be loaded for using this interface

Controller: object3dController

Methods:

initViewport(): Initialize 3D viewport object

showDetails(String object_id): Show object details

highlightNode(String object_id, Object parent_node_object): Highlight currently selected node in the object structure tree view

toggleObjectViewportNode(Object node): Show/hide branch in the node tree view

highlightViewportObject(Object object): Highlight the selected object in the tree view of the 3D viewport

reset(): Resets the object view

find(String object_guid): Gets the object details and returns a deferred object

findGeometry(String object_id, String model_id): Gets the object geometry and returns the deferred object

 

Here is a list of Ember action helper methods which could be called from template or with sendAction() method

toggleObjectNodeVisibility(Object node): Show / hide the selected object in tree view of the 3D viewport

toggleObjectNodeExpand(Object node): Show / hide the branch in the node tree view of the 3D viewport

highlightObject(Object node): Highlight the selected node and object in the 3D viewport

highlightObjectNode(): Hightlight node/branch in the tree view according to the selected object of the 3D viewport

Card
labelTemplate & View
titleThe template that has to be loaded

Template: object3d.hbs

View: object3dView

 

...

Spot / Pin

This control is used for visualizing spots/pins(could be a problem) related to an issue (if the issue includes geometrical information)

...

idsdkPins
Card
defaulttrue
labelUI Control
titleInterface for working with pins related to an issue

 Image Removed

Please note that for visualizing the spots/pins, you have to use viewport3d, viewport3dController and its related templates.

...

labelController & Methods
titleThe modules to be loaded for using this interface

Controller: pinsListController

Methods:

cancelAddPin(): Quits the pin add mode

showPins(): Show all pins

addPin(String issue_id, Object related_object): Add the pin object to the specified issue and returns a deferred object

deletePin(Object pin): Deletes the pin

findAll(String issue_id): Loads the pins that belong to an issue

Here is a list of Ember action helper methods which could be called from template or with sendAction() method

showPins(): Show all pins

addPin(): Adds the new pin to issue

addIssuePin(): Adds the new issue along with its pin

cancelAddPin(): Quits the pin add mode

showRelatedObject(Object object): Shows the specified object in 3D viewport

Card
labelTemplate & View
titleThe template that has to be loaded

Template: pinsList.hbs

View: pinsListView

 

...

Projects

This control is used for displaying project information. A project consists of one or more models and each model contains one or more disciplines/layers in it. Each model & discipline could be switched on/off and the transparency of the disciplines could also be switched on/off. 

 

Info

Please see the terminology page to get to know about what is a project / model / discipline(layer)

Deck of Cards
idsdkProject
Card
defaulttrue
labelUI Control
titleInterface for displaying project information

Image Removed

Card
labelController & Methods
titleThe modules to be loaded for using this interface

Controller: projectController

Methods:

findMembers(String project_id): Find the project members

find(Object project or String project_id): Loads the project details

Card
labelTemplate & View
titleThe template that has to be loaded

Template: project.hbs, project-details.hbs, mod-layers.hbs(For setting layer transparency & visibility)

View: projectView

 

...

Project List

This control is used for displaying a list of projects inside a team.

Deck of Cards
idsdkProjectList
Card
defaulttrue
labelUI Control
titleInterface for displaying list of projects

Image Removed

Card
labelController & Methods
titleThe modules to be loaded for using this interface

Controller: projectListController

Methods:

setLastOpened(String project_id): Move the specified project to the top of the project list

findAll(): Loads the project list

Card
labelTemplate & View
titleThe template that has to be loaded

Template: projectList.hbs

View: projectlistView

 

...

Slideshow

This control is used for working with a particular slideshow inside a project.

 

...

idsdkSlideshow
Card
defaulttrue
labelUI Control
titleInterface to update,delete & display a particular slideshow details

Image Removed

...

labelController & Methods
titleThe modules to be loaded for using this interface

Controller: slideshowController

Methods:

addSlideshow(): Creates a new slideshow and returns a deffered object

updateSlideshow(): Updates the specified slide

deleteSlideshow(Object slideshow): Deletes the specified slideshow

find(String slideshow_id): Loads the specified slideshow info

Here is a list of Ember action helper methods which could be called from template or with sendAction() method 

editMode(): Makes the writable fields editable

cancel(): Back to the read only mode

addSlideshow(Object slideshow): Creates a new slideshow

deleteSlideshow(Object slideshow): Deletes the specified slideshow

updateSlideshow(Object slideshow): Updates the specified slide

play(): Plays the slideshow

stop(): Stops the slideshow from playing

pause(): Pauses the slideshow

forward(): Shows the next slide

backward(): Shows the previous slide

Card
labelTemplate & View
titleThe template that has to be loaded

Template: slideshow.hbs

View: slideshowView

 

...

Slideshow List

This control is used for displaying a list of slideshows inside a project.

 

...

idsdkSlideshowList
Card
defaulttrue
labelUI Control
titleInterface for displaying a list of slideshows

Image Removed

...

labelController & Methods
titleThe modules to be loaded for using this interface

Controller: slideshowListController

Methods:

reset(): Resets the slideshow list

findAll(String model_id): Loads the slideshow list that belong to a model

Here is a list of Ember action helper methods which could be called from template or with sendAction() method 

createSlideshow(): Creates a new slideshow

slideshowPlayMode(String play_mode_name): Sets the play mode of the slideshow

addSlide(String slide_id): Adds a new slide to the current slideshow

Card
labelTemplate & View
titleThe template that has to be loaded

Template: slideshowsList.hbs

View: slideshowsListView

 

...

Slide

This control is used for working with a particular slide belonging to a slideshow.

 

...

idsdkSlides
Card
defaulttrue
labelUI Control
titleInterface to update,delete & display a particular slide details

Image Removed

...

labelController & Methods
titleThe modules to be loaded for using this interface

Controller: slideController

Methods:

getScene():Gets the scene parameters object from the slide

addSlide(String slideshow_id): Creates a new slide and add it to the slideshow

updateSlide(Object slide): Updates the speficified slide

deleteSlide(Object slide): Deletes the specified slide

find(String slide_id): Loads the slide info and returns a deferred object

Here is a list of Ember action helper methods which could be called from template or with sendAction() method 

editMode(): Makes the writable fields editable

cancel(): Back to the read only mode

addSlide(Object slide): Creates a new slide

deleteSlide(Object slide): Deletes the specified slide

updateSlide(Object slide): Updates the speficified slide

Card
labelTemplate & View
titleThe template that has to be loaded

Template: slide.hbs

View: slideView

 

...

Slide List

This control is used for displaying a list of slides belonging to a slideshow.

 

Deck of Cards
idsdkSlideList
Card
defaulttrue
labelUI Control
titleInterface for displaying a list of slides

Image Removed

Card
labelController & Methods
titleThe modules to be loaded for using this interface

Controller: slidesListController

Methods:

findAll(String Slideshow_id): Loads all the slides belonging to a slideshow

Card
labelTemplate & View
titleThe template that has to be loaded

Template: slidesList.hbs

View: slidesListView

 

...

Teams

This control is used for displaying the list of teams.

 

Deck of Cards
idsdkTeams
Card
defaulttrue
labelUI Control
titleInterface for displaying the list of teams

Image Removed

Card
labelController & Methods
titleThe modules to be loaded for using this interface

Controller: teamsController

Methods:

selectTeam(Object team): Selects the specified team

setTeamByName(String team_name, Object model): Select team by team owner name

find(): Loads the project list

Card
labelTemplate & View
titleThe template that has to be loaded

Template: teams.hbs

View: teamsView

 

...

Topology

This control is used for displaying the topology structure of a model.

Info

Please see the terminology page to get to know about topology

Deck of Cards
idsdkTopology
Card
defaulttrue
labelUI Control
titleInterface for displaying the topology structure of a model

Image Removed

Card
labelController & Methods
titleThe modules to be loaded for using this interface

Controller: topologyController

Methods:

toggleDisciplineVisibility(Object discipline): Toggles the layer/discipline visibility

toggleNodeVisibility(Object node): Toggles the visibility of the specified node object and its child elements

toggleNodeExpand(Object node): Expand/collapse the specified node in the tree view

find(String node_id): Loads the project topology

findObject(): Loads the object topology

Card
labelTemplate & View
titleThe template that has to be loaded

Template: topology.hbs

View: topologyView

 

...

User

This control is used for displaying user information & his application settings (context menus)

 

Deck of Cards
idsdkUser
Card
defaulttrue
labelUI Control
titleInterface for displaying user info & his application settings

Image Removed

Card
labelController & Methods
titleThe modules to be loaded for using this interface

Controller: userController, usermenuController

Methods:

userController

find(): Loads user info

usermenuController

init(): Initialize UI strings

gotoUsermenuLink(): Open portal deeplink in the same or new window

Card
labelTemplate & View
titleThe template that has to be loaded

Template: menu.hbs

View: userView, usermenuView

 

...

Properties

...