petrbroz / bim360-issue-editor

Prototype application for bulk-editing BIM 360 issues using Autodesk Forge APIs.
https://bim360-issue-editor.autodesk.io
MIT License
9 stars 11 forks source link
autodesk-forge bim360 bootstrap jquery

bim360-issue-editor

Platforms Node.js License

Data-Management BIM360

Intermediate

Prototype application for bulk-editing BIM 360 issues using Autodesk Forge APIs.

Screenshot

Running

Web Application

Live demo is running on https://bim360-issue-editor.autodesk.io.

In order to be able to access your BIM 360 project from this demo, you will need to add the following Forge credentials as a custom integration:

Command-Line Utility

The project includes two command-line scripts (under the bin/ folder) that can be used to export issues to XLSX and import them back, locally. The scripts require a configuration file that is generated by the web application.

Since the configuration contains sensitive data such as authentication tokens, it is provided in a password-protected ZIP archive. The password is configured using the CLI_CONFIG_PASSWORD environment variable.

  1. Navigate to the issue page for one of your BIM360 projects
  2. Use the "Command-Line Config" button in the bottom toolbar
  3. Download the archive and extract the configuration JSON
  4. Open your command-line (make sure that you have Node.js installed), and navigate to this project's root folder
  5. Try one of the following commands:
    • To export BIM360 issues to XLSX: node bin/bim360-to-excel.js <path/to/unzipped/config.json> <path/to/output/spreadsheet.xlsx>
    • To import issues from XLSX back to BIM360: node bin/excel-to-bim360.js <path/to/unzipped/config.json> <path/to/input/spreadsheet.xlsx>
    • Optionally, include the --sequential parameter to update issues in sequence instead of in parallel
    • Optionally, include a --range=<starting_row_number>-<ending_row_number> parameter to only update issues in a given range of spreadsheet rows

      The scripts assume that the path to the spreadsheet is valid, so make sure that the entire folders structure is available

Development

Prerequisites

Setup

On macOS

export FORGE_CLIENT_ID=<client id>
export FORGE_CLIENT_SECRET=<client secret>
export FORGE_APP_NAME=<app name>
export HOST_URL=<host url>
export SERVER_SESSION_SECRET=<secret phrase>
export CLI_CONFIG_PASSWORD=<another secret phrase>
yarn start

On Windows

set FORGE_CLIENT_ID=<client id>
set FORGE_CLIENT_SECRET=<client secret>
set FORGE_APP_NAME=<app name>
set HOST_URL=<host url>
set SERVER_SESSION_SECRET=<secret phrase>
set CLI_CONFIG_PASSWORD=<another secret phrase>
yarn start

Using VSCode

When using Visual Studio Code, add this configuration to your .vscode/launch.json:

{
    "type": "node",
    "request": "launch",
    "name": "Launch Server",
    "program": "${workspaceFolder}/server.js",
    "env": {
        "FORGE_CLIENT_ID": "<client id>",
        "FORGE_CLIENT_SECRET": "<client secret>",
        "FORGE_APP_NAME": "<app name>",
        "HOST_URL": "<host url>",
        "SERVER_SESSION_SECRET": "<secret phrase>",
        "CLI_CONFIG_PASSWORD": "<another secret phrase>"
    }
}

License

This sample is licensed under the terms of the MIT License. Refer to LICENSE for more details.

Author

Petr Broz (@ipetrbroz), Forge Partner Development Group