Coder Social home page Coder Social logo

urbansurgery / rimshot Goto Github PK

View Code? Open in Web Editor NEW
11.0 2.0 2.0 41.77 MB

Realtime collaborative Model Review workshops facilitated by integration of Autodesk Navisworks with Speckle and Firebase

Home Page: https://rimshot.app

JavaScript 10.64% TypeScript 0.16% HTML 0.47% Vue 51.22% CSS 0.03% SCSS 0.01% C# 37.47%
issue-management navisworks-plugin speckle

rimshot's Introduction

This is definitely being developed in the open, but don't count on any of the code being fully functional until a Release announcement.

logo

Rimshot
Realtime Issue Management with Speckle

During the Great Lockdown of the last two years, in what has so quickly become a remote-working, online-first-meetings, broadcast only way of doing business. One really striking aspect of the AECO world, away from the Teams, Google Docs, Zoom and the like, was that the manner of Model Analysis and review has not been in the same class of technological delivery.

I've sat through many dozens of streamed Navisworks sessions and engagement amongst teams has definitely waned or defaulted to a broadcast rather than a collaboration. Attention spent managing the remote experience means the analyst is taxed to the point of only making scant notes about issues, and contributors may not all be heard to register their input.

For this professional/social need I introduce Rimshot - Realtime Issue Management with Speckle.

Utilising two aspects that I admire of Speckle:

  1. Information Hub and low-friction data transfer.
  2. Bring people to the Model. Speckle is multiplayer.

logo
Watch the submission video

The XYZ project stream used in the demo

Usage

Analyst view within Navisworks

  1. Install the addin as a application plugin bundle

  2. Launch Navisworks and select plugin
    Screenshot 2022-05-15 at 15 52 06

  3. Select a project and workshop (already created in the rimshot database)
    logo

  4. Select an issue to commit to.

  5. Elements selected in Navisworks will be committed as Speckle Mesh to the corresponding branch (created new if not existing)
    logo

  6. Selecting Snapshot adds an image to the existing issue of whatever is visible in the viewport. If no issue is selected, snapshotting ceates a new issue and corresponding branch.
    logo

Contributors view

  1. The analyst can share a unique secure URL to the workshop record. (https://rimshot.app/issues/{UNIQUE ID})
    logo

  2. All visitors to that web page can see images and Speckle commits being added.
    logo

  3. "Follow-mode" scrolls to the issue currently being presented by the Analyst. Selecting a different issue cancels Follow Mode
    image

  4. All contributors can comment and edit the descriptive and the metadata fields.
    logo

  5. The commited model can be viewed in the Rimshot app or the corresponding Speckle Server branch.
    logo

  6. The workshop record can be downloaded as in CSV file format.
    image

Components

The hackathon submission consists of:

Geometry and Data Connector for Navisworks

* Full conversion of selected elements from Navis to Specklemesh

* Full fidelity of Geometry @ real world coordinates

* Full Property stack with nested Geometric and Non-geometric elements reflecting the Navis selection tree

An installed webview addin for Navisworks.

logo

* Model elements selected in Navis will be committed and synced to the app. * Model elements are converted on the fly while the discussion continues. * The addin allows for immediate viewport screen capture.

An Issue Mangement workshop capture interface.

logo

* Structuring the database around a collaborative experience aids quality of Issue resolution.

A realtime multi-party data capture app and database for desktop and mobile devices.

logo logo

  • Using a real-time database allows for all authenticate users to comment and properly describe and issue and its path to resolution.* The responsive app design scales to full screen to handheld.
  • Contributions can be immediate and collaborative.
  • Backend webhook and cloud function support to reinforce the Navis<>App interaction and capture events that may fail due to connecttivity issues or lag. Both events may happen without conflict and eventual consistency is assured.

A pattern for managing Model based issues within the Speckle interface.

logo

* Each issue is a separate Speckle branch. * Multiple sub-issues can be made as separate commits to the branch. * New issue branches are created automatically

Roadmap Post Hackathon

  • Proper linking with Auth flow and project/stream selection.
  • Syncing of Comments between the two databases - near realtime.
  • More responsive syncing. Allow Speckle to push to the app (perhaps closing out issues, 3rd party commits)
  • Sorting out the 🔥HOT MESS🔥 of the Navisworks geometry translation.

logo

  • Integate the Speckle Viewer rather than embed views.
  • Responsive Event driven model analysis to push metadata into the issue record.

rimshot's People

Contributors

jsdbroughton avatar renovate-bot avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

chuongmep bewqet

rimshot's Issues

Handle Addin Errors in UI

Errors in the commit elements adddin method have started to handle SpeckleExceptions and NotifyUI of the error rather than throwing the error unhandled.

For now, non SpeckleExceptions are rethrown.

This is embryonic Exception handling and will need to manage the full set of potential errors, for now these are the ones reported to the UI.

UI currently has no response to the Error and the commit selection option remains disabled.

Tree-walk to start at the geometry object and aggregate properties upwards

Problem
The deeply nested tree structure of Navisworks can be replicated within Speckle Base objects, but this leads to complications when using that geometry in Grasshopper for example. The geometry held in the displayValue property will be at differing levels in the tree; requiring nodes at many levels to extract the geometry (e.g. in grasshopper).

Solution
Options to resolve this:

  1. Geometry at root node with all Ancestor data properties aggregated at that node level. The Flat List.
  2. Geometry at root node with Ancestor data properties nested as per the Selection Tree.
  3. Geometry at root node with Ancestor data properties nested in reverse order.
  4. Geometry at root node with Ancestor data properties listed as an array in tree order from trunk to leaf.
  5. Maintain the current object model.

Crash on stream not found

If the active Speckle account doesn't have access to the stream recorded in the Rimshot DB this will exit with a Speckle Exception.

TODO: Check if the stream is available at some point in the process. Either show only projects to which the current user has access, link Speckle user with Rimshot user, or in the first instance handle the exception.

The stack doesn't actually trigger on a code breakpoint, so which call this is, is unclear.

Dependency Dashboard

This issue provides visibility into Renovate updates and their statuses. Learn more

Rate Limited

These updates are currently rate limited. Click on a checkbox below to force their creation now.

  • fix(deps): update dependency firebase-functions to v3.21.2
  • fix(deps): update dependency vue-router to v3.5.4
  • fix(deps): update dependency vuetify to v2.6.6
  • chore(deps): update dependency firebase-functions-test to v2.1.0
  • chore(deps): update typescript-eslint monorepo to v5.25.0 (@typescript-eslint/eslint-plugin, @typescript-eslint/parser)
  • chore(deps): update dependency cefsharp.common to v98
  • chore(deps): update dependency cefsharp.wpf to v98
  • chore(deps): update dependency eslint to v8
  • chore(deps): update dependency eslint-plugin-vue to v9
  • chore(deps): update dependency html-webpack-plugin to v5
  • chore(deps): update dependency mini-css-extract-plugin to v2
  • chore(deps): update dependency node-sass to v7
  • chore(deps): update dependency sass-loader to v13
  • chore(deps): update dependency system.reactive to v5
  • fix(deps): update dependency firebase to v9

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Detected dependencies

npm
package.json
  • eslint ^8.15.0
  • eslint-config-google ^0.14.0
  • eslint-config-prettier ^8.5.0
  • eslint-plugin-json ^3.1.0
  • prettier ^2.6.2
topics/functions/package.json
  • firebase-admin ^10.0.2
  • firebase-functions 3.21.1
  • @typescript-eslint/eslint-plugin ^5.12.0
  • @typescript-eslint/parser ^5.12.0
  • eslint ^8.9.0
  • eslint-config-google ^0.14.0
  • eslint-plugin-import ^2.25.4
  • firebase-functions-test 2.0.2
  • typescript ^4.5.4
  • node 16
topics/ui/package.json
  • core-js ^3.22.5
  • dayjs ^1.11.2
  • register-service-worker ^1.7.2
  • vue ^2.6.14
  • vue-router ^3.5.3
  • vuetify ^2.6.5
  • vuex ^3.6.2
  • vuexfire ^3.2.5
  • firebase 8.10.1
  • v-hotkey ^0.9.0
  • vue-svg-pan-zoom ^1.1.0
  • vue-blob-json-csv ^0.1.7
  • @vue/cli-plugin-eslint 5.0.4
  • @vue/cli-plugin-pwa 5.0.4
  • @vue/cli-plugin-router 4.5.17
  • @vue/cli-plugin-vuex 4.5.17
  • @vue/cli-service 5.0.4
  • @vue/devtools 6.1.4
  • @vue/preload-webpack-plugin 2.0.0
  • babel-eslint 10.1.0
  • css-loader 5.2.7
  • deepmerge 4.2.2
  • del-cli 4.0.1
  • eslint 7.32.0
  • eslint-config-prettier 8.5.0
  • eslint-import-resolver-alias 1.1.2
  • eslint-plugin-import 2.26.0
  • eslint-plugin-json 3.1.0
  • eslint-plugin-prettier 4.0.0
  • eslint-plugin-prettier-vue 3.1.0
  • eslint-plugin-vue 8.7.1
  • eslint-plugin-vuetify 1.1.0
  • fibers 5.0.1
  • html-webpack-plugin 3.2.0
  • mini-css-extract-plugin 0.12.0
  • node-sass 6.0.1
  • prettier 2.6.2
  • sass 1.32.12
  • sass-loader 10.2.1
  • sass-resources-loader 2.2.5
  • vue-cli-plugin-vuetify 2.4.8
  • vue-cli-plugin-webpack-bundle-analyzer 4.0.0
  • vue-eslint-parser 8.3.0
  • vue-jest 3.0.7
  • vue-template-compiler 2.6.14
  • vuetify-loader 1.7.3
  • node 16
nuget
topics/addin/Rimshot.2020/Rimshot.2020.csproj
  • System.Console 4.3.1
  • Newtonsoft.Json 13.0.1
  • Ionic.Zip-1.9.1.8 1.9.1.8
  • Google.Cloud.Storage.V1 3.4.0
  • Google.Cloud.SecretManager.V1 1.4.0
  • CefSharp.Wpf 89.0.170
  • CefSharp.Common 89.0.170
  • cef.redist.x86 89.0.17
  • cef.redist.x64 89.0.17
topics/addin/Rimshot.2021/Rimshot.2021.csproj
  • Newtonsoft.Json 13.0.1
  • Ionic.Zip-1.9.1.8 1.9.1.8
  • Google.Cloud.Storage.V1 3.4.0
  • Google.Cloud.SecretManager.V1 1.4.0
  • CefSharp.Wpf 89.0.170
  • CefSharp.Common 89.0.170
  • cef.redist.x86 89.0.17
  • cef.redist.x64 89.0.17
topics/addin/Rimshot.2022/Rimshot.2022.csproj
  • System.Reactive 4.3.2
  • System.Data.SQLite.Core 1.0.115.5
  • SQLite.Interop.dll 1.0.103
  • Speckle.Objects 2.5.2
  • Speckle.Newtonsoft.Json 12.0.3.1
  • Speckle.Core 2.5.2
  • Ionic.Zip-1.9.1.8 1.9.1.8
  • CefSharp.Wpf 89.0.170
  • CefSharp.Common 89.0.170
  • cef.redist.x86 89.0.17
  • cef.redist.x64 89.0.17

  • Check this box to trigger a request for Renovate to run again on this repository

Any Plan to Merge with Speckle Sharp

Is your feature request related to a problem? Please describe.
Hi @jsdbroughton , do you have any plan to merge with speckle-sharp github to develop support for navisworks ?

Describe the solution you'd like
Add connector support Navisworks to https://github.com/specklesystems/speckle-sharp

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Implement tree walk in COM

Problem
Iterating/navigating the Navisworks tree is non-performant with the .NET API.

Solution
ModelItem and Properties tree walking is significantly faster using the original COM API rather than the .NET wrappers.

Note
Whichever form is settled upon for the Object Model and tree walk take will need to be performant and utilise this.

Commit progress incorrectly registering Element and Nested Element counts

Due to the element hierarchy, the number of elements shown in the progress bars is incorrect as they are discovered during the tree walk.

Total Elements should probably be related to Descendants and Self property and a counter used as Elements are added to the commit rather reporting the index of nested for loops.

Realworld coordinates are problematic for receiving clients.

Problem
While Navis has no problem handling the double-precision floats needed for the real-world coordinates and Speckle DB has no problem storing them, the speckle server web view and also the Blender cannot easily handle the incoming streams - resulting in borked meshes and assorted visual jitter.

Solution
The project GetLocalToWorldMatrix transformation…

object matrix = localToWorld.Matrix;

…that de-decimates the geometry and assembles in place, will need to then have applied a single matrix for the full model.

This would be two-stage as each element has its own transform matrix as they are all stored individually at 0,0,0.

The second matrix of Bounding Box centre-to-world origin could then be stored as a commit property to be used to reassemble in connectors that could handle it.


cf discussions around Project vs Survey base points:
specklesystems/speckle-sharp#1299
https://speckle.community/t/new-settings-page-feature-for-desktop-ui-2-test/2365/3
https://speckle.community/t/new-speckle-2-0-autocad-civil3d-suggestions/1155/17

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.