We work with different AEC software every day and is a constant struggle the migration of data and to work collaborative with people who are not in the same office, even more in the current Covid times.

What it does

BIMSOCKet is a bidirectional cloud socket to connect any type of AEC software in real time.

How we built it

We used Google Firebase under the hood to create each socket, so every time there are changes on the database it will let the connectors know to update any new data. As an exchange format we used Json V3 but our idea is to keep our solution agnostic so any format can be used with it. As an starting point we developed our own custom viewer using Three js and Javascript and started modifying the database from multiple computers at the same time. After we made sure that the connection with the database was working in real time, we decide to develop connectors for Revit, Rhino, VIM, Unity, Google spreadsheets and Power BI.

Challenges we ran into

-We discover there are so many incompatibilities between different 3D engines: units, scale,normals, faces, vector,3D coordinates,languages, etc -We started using just one Document per model in Firebase but we faced problems due to the size limitations of said Documents. Our testing models exceed the 10 mb limit of the Firestore structure which lead us to re think the whole process.

  • Checking for Nulls on almost any normal programming language it is something to be worry about. We had to deal with multiple platforms interconnecting in real time and chasing those null was half of the work.
  • Transactional software such as Revit need special care during modification of its elements. We develop creative solutions to deal with it.
  • Object change during Revit Events.
  • Javascript
  • Specially JS event handlers and triggering changes in ThreeJs
  • While git submodules are an amazing way to connect repos, it's a struggle to keep them update.

Accomplishments that we're proud of

We had a blast coding and we learnt many concepts that we didn't know! That we got the solution working between all the different programs in real time, hooray!!

What we learned

-We learnt a lot about the way that each different API of 3D software works. -Building on top of a simple concept allowed us a world of different possibilities of what to do. -KISS is the key. -It is important to learn to prioritize and be lean. -Talk to potential users made us change so many things that though we had a clear path. -Good ideas don't grow in the vacuum, sometime it just connecting something existing in new ways.

What's next for BIMSOCKet

-Add more connector to it and increase the ecosystem -Improve stability of the Three js Viewer -Include glTF as another format. -Get the community involved with the project -Improve the system to get bigger files -Add the clash detection feature to our viewer

Share this project: