First off, I'd really like to thank Bentley Systems for helping me through this code and providing an IModel to use for my projects or future projects to come. This will surely come in handy when the time comes. Bently Systems also provided good sample code, so make sure to check out their githubs well! This application utilizes javascript and typescript to read iModels and display them on a computer. I hope this gives you an idea of what iModels are and how useful their api is. Just a thank again for helping me through the entire process.

What is this So you may be wondering what my program is and why I decided to do this. Well for starters, my program is basically a viewer for your own iModels, except it should be faster than normal. The iModels are basically the "currency for information exchange" (Bentley). What this means is that iModels allow for the easy transfer of information, construction, etc. You may be wondering what can make this thing unique. To name a few unique reasons, iModels are open to see through various interfaces, they are flexible, meaning they can conform to a specific standard, and finally they are portable, which means they're purpose is for sharing and distribution. A lot more information in this tab link.

early difficulties Since iModels use typescript, node.js, javascript, and their own api, it was kind of difficult understanding how to receive information from an iModel. Luckily, Bentley Systems has their own getting started section on understanding their iModel.js library link. First one needs Node.js for the npm command, Google Chrome as a debugger, and Git as code control, though Visual Studio Code works just as well. Then comes the long reading of many lines of code and languages; some of which include typescript and Node Package Manager. Even the sample code wasn't ready to use yet. One would have to install many things using "npm install" which installs every dependency. Then one has to update rush through node, so it would look like "node ./common/scripts/install-run-rush update" which then translates to "node ./common/scripts/install-run-rush build" later on to use the webservice.

what's in my code My code consists of almost everything that I don't know of; the backend, the frontend, the common file, the UI. The backend of the code consists of 'snapshots' and the 'the @bentley/imodeljs-native module'. The snapshot creates a static point in time for each iModel that cannot be changed after creating it. The use of this is to export the iModel at a certain point in time to archive it. The other backend, the module, is very useful since it is able to access the iModel using SQlite. It's basis use is to implement authorization, which is BENTLEY SYSTEMS'S MAIN COMMERCIAL MOTIVATION. For a web application, the frontend outnumber the backend. The widgets that are part of the iModel api are very useful in displaying the iModel.

errors The entire time coding this, I've gotten so many errors. I think 3 hours of the time here was spent trying to fix my errors. Even the people at Bentley System's were stumped sometimes. First off, I received the error when I couldn't download the dependency when running the code "npm install." This happened when I downloaded the wrong version of Node.js and the dependencies wouldn't work with the newest version of it. Even when I ran it again with the right version of Node, it still wouldn't download. It turns out that my old files wouldn't delete at all, so the people at Bentley System's had to manually delete it. The next challenge was the directories, since I couldn't load in without the right login. In Bentley Systems, one has to log in to work on the iModel, but for me, it would just be stuck at the login phase. That can be explained at the configurations.ts not at the correct values, which was an easy fix. The next time it didn't work, it was just the wrong directory. My final problem was also my unsolved issue as well. I couldn't figure out why I couldn't log in to my Bentley System's account at all through electron. Whenever I had to log in through electron, it would open a separate window and give me a 400 error code. I asked people at Bentley System's if they have an idea of how to fix it, but they were baffled too. This is still an issue I haven't resolved yet, so I just stuck with a web application.

Share this project: