PERFECTION vs. AWESOMENESS: Perfection is OLD & Awesomeness is NEW
Rationale BIM-Programmierung mit Forge und...
Transcript of Rationale BIM-Programmierung mit Forge und...
![Page 1: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/1.jpg)
Join the conversation #AU2017Join the conversation #AU2017
Rationale BIM-Programmierung mit Forge und Vergleich mit der Revit APIJeremy TammikThe Building Coder, Autodesk
![Page 2: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/2.jpg)
This presentation is in German.The slide deck is in English.For full English documentation, pleaserefer to the class handout at
http://thebuildingcoder.typepad.com/blog/2017/10/rational-bim-programming-at-au-darmstadt.html
English Handout
![Page 3: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/3.jpg)
§ Envision the most efficient, productive, optimal BIM workflow § Split software portfolio between desktop add-ins and cloud apps§ Optimal use of Revit, Forge and other programming environments§ Understand pros and cons of commercial, open source and DIY § Foster ubiquitous connectivity between components§ Enable informed software architecture analysis and design§ Overview of existing samples
Key learning objectives
![Page 4: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/4.jpg)
§ Desktop versus Cloud-Based BIM Programming§ Autodesk Forge and Design Automation for Revit§ Using Web Technologies for BIM Programming§ Connecting Desktop BIM and Cloud§ Technologies and Implementation Details§ Resources
Agenda
![Page 5: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/5.jpg)
§ Generic BIM programming using web technologies versus Revit-specific add-ins
§ BIM connections bridging desktop and cloud to make best use of both worlds
Shorter Still...
![Page 6: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/6.jpg)
Desktop versus Cloud-Based BIM Programming
![Page 7: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/7.jpg)
§ Split wisely between Revit API and cloud based programming§ Revit is for BIM design§ Many BIM related workflows are read-only§ Many BIM related programming tasks do not require Revit§ Design Automation API for Revit is coming soon
Takeaway
![Page 8: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/8.jpg)
§ What is your task?§ Who needs what? § Where, when, and how?§ Is your user involved in hard-core BIM design work?§ Or, more commonly: view, annotate, adjust, construct, mobile, field
work?
Optimal BIM Workflow
![Page 9: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/9.jpg)
§ Participant counts grow by orders of magnitude§ Building design, construction, maintenance, use§ design - architect, engineer - Revit§ visualise - client, everybody - Viewer§ collaborate - management – Glue, Plan§ make - construction – Field, Layout§ use - inhabit, maintain, FM
BIM Collaboration Roles
![Page 10: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/10.jpg)
§ Revit and BIM Design§ Expensive§ Shrinking numbers of desktop computers
§ Forge and BIM Use§ Partially free and open source§ Growing number of mobile devices
§ Glue code, connected custom components§ Open source libraries§ JavaScript, HTML5, SVG, WebGL
Trends, Tools and Technologies
![Page 11: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/11.jpg)
§ Locally installed, totally private§ 2D room editor uses private CouchDB web server
§ Global, open source, with standard security measures§ FireRatingCloud uses node.js web server on Heroku
and MongoDB database on mongolab§ Forge OAuth2 user access authorisation§ Roomedit3dv3
What Cloud? How Secure?
![Page 12: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/12.jpg)
§ Simplify your data§ Graphics? 2D? 3D? Properties? § Customise, optimal workflow, minimal complexity§ Based on 'need to know'
§ Use existing components§ Minimise add-ins, custom components, glue code§ Open source§ Forge
Keep It Simple!
![Page 13: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/13.jpg)
§ Perfection§ Perfection is achieved, not when there is nothing more to add, but when
there is nothing left to take away – Antoine de Saint-Exupéry§ Lazy
§ ... develop the three great virtues of a programmer: laziness, impatience, and hubris – Larry Wall
§ Simple§ Simplicity is the ultimate sophistication – Leonardo da Vinci§ There is no greatness where there is no simplicity – Leo Tolstoy
§ KISS
Quotes on Three Fundamental Aspects
![Page 14: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/14.jpg)
Autodesk Forge and Design Automation for Revit
![Page 15: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/15.jpg)
§ Forge is a platform to empower developers§ They can in turn empower their users
§ design§ visualise§ collaborate§ make§ use
Forge Empowers Developers to Empower Users
![Page 16: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/16.jpg)
§ Autodesk uses Forge to build its products § Your application has access to the same APIs
Forge is a Platform
Forge
BIM 360 Fusion 360 Etc.
Your app
Your app Your app Your app
![Page 17: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/17.jpg)
Forge APIs
https://autodesk-forge.github.io
![Page 18: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/18.jpg)
§ Do not misuse Revit as a server§ It is an end user product§ If you have such a requirement, talk with Autodesk
http://thebuildingcoder.typepad.com/blog/about-the-author.html#5.28b
Create or Manipulate BIM in the Web
![Page 19: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/19.jpg)
§ 3 years ago
Forge APIs in the Past
Share Collaborate CreateTranslation APIViewer
![Page 20: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/20.jpg)
§ Today, 'Forge 2.0'
Forge APIs at Present
Share Collaborate CreateModel Derivative API BIM 360 HQ API Design Automation - AutoCADViewer Data Management API
![Page 21: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/21.jpg)
§ Next year, 'Forge 3.0'
Forge APIs Near Future
Share Collaborate CreateModel Derivative API Data Management API Design Automation - AutoCADViewer Webhooks API Design Automation - Revit
BIM APIs (HQ, RFIs,Issues, Checklists)
Design Automation – Inventor
Photo-to-3D APIForge IDX
![Page 22: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/22.jpg)
§ What is the value?
Design Automation for Revit
For Partners
• Create and deploy services and apps that leverage partner’s core competencies to enhance customer workflows
For Customers
• Quickly extend Revit-based workflows to solve specific business problems
For Autodesk
• Facilitate the creation of new cloud-based solutions to common customer problems
![Page 23: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/23.jpg)
§ What can it do?§ Full access to Revit DB API outside Revit via cloud services§ Execute .NET add-ins and Dynamo scripts§ Access custom functionality while operating on a Revit model§ Read data from anywhere, save data anywhere
§ What can’t it do?§ No “sticky sessions” – only batch operations§ Access live Revit data in a RESTful way§ No Revit UI API access – there is no UI!
What Can and Can't It Do?
![Page 24: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/24.jpg)
Workflows
Revit
Create
Update
Extract
Partner/Customer Application
![Page 25: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/25.jpg)
© Autodesk, Inc. 2017
Workflow 1 – Create
Revit
Use Cases Hypothetical Example
• Create families (RFAs) from a catalog
• Create RVTs from layout app• Stair layout generator• Convert from third party
format to RVT/RFA• Generate full
documentation from specification
![Page 26: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/26.jpg)
© Autodesk, Inc. 2017
Workflow 2 – Extract
Revit
Use Cases Hypothetical Example
• Custom extraction (Excel, private database, unsupported formats, etc)
• Automated extraction (e.g. nightly PDF or DWG)
• Model QA/QC & code checks• Clash detection• Share model information
with consultants without need for Revit
![Page 27: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/27.jpg)
© Autodesk, Inc. 2017
Workflow 3 – Update
Revit
Use Cases Hypothetical Example
• Execute nightly model tasks on C4R models
• Fix common modeling and documentation mistakes
• Batch upgrades & updates • Automatically replace out-
of-date content• Scheduled Dynamo scripts• Design option generation• And many more!
![Page 28: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/28.jpg)
© Autodesk, Inc. 2017
How Does It Work?
Submit a work item. Track the progress.
Revit
Users Website or Service
Download Data or RVT.Upload results.
![Page 29: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/29.jpg)
Using Web Technologies for BIM Programming
![Page 30: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/30.jpg)
§ Revit API is BIM and end user product specific§ Many BIM related tasks can be solved more generically
Web-Based BIM Programming Opportunities
![Page 31: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/31.jpg)
§ Revit API is BIM specific§ Very powerful in certain areas§ Leverages Revit product functionalityTherefore:§ Making use of it requires Revit product understanding§ It works only within a running Revit session§ It is completely event driven, hard to 'drive from outside'§ It is limited to the UI oriented Revit end user product§ Programming it requires special training§ Using a Revit add-in requires a Revit installation
Revit API Characteristics and Limitations
![Page 32: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/32.jpg)
Ex: Calculate and Display Signal Attenuation
![Page 33: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/33.jpg)
§ C# .NET Revit add-in § Calculate and display signal attenuation
https://github.com/jeremytammik/RvtFader
§ The Analysis Visualisation Framework AVF§ Ray tracing using ReferenceIntersector
RvtFader
![Page 34: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/34.jpg)
§ Forge viewer extension app https://github.com/jeremytammik/forgefader
§ Demohttps://forge-rcdb.autodesk.io/configurator > Meta Properties
https://forge-rcdb.autodesk.io/configurator?id=59041f250007f5c0eef482f2
§ JavaScript§ Three.js § Custom shader
ForgeFader
![Page 35: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/35.jpg)
Connecting Desktop BIM and Cloud
![Page 36: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/36.jpg)
§ Simplified 2D BIM room editor, SVG graphics§ FireRating in the Cloud, the simplest sample§ Roomedit3d, Forge based 2D + 3D simplified round-trip BIM editor§ Forge meta property editor + RvtMetaProp
Sample Overview
![Page 37: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/37.jpg)
2D Room Editor
![Page 38: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/38.jpg)
§ Create the shared 'Fire Rating' parameter§ Export fire rating values for all doors§ Import the modified values back into BIM§ Store data for multiple projects§ Cloud database, Revit UniqueId
§ Subscribe to changes
FireRating in the Cloud Commands
![Page 39: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/39.jpg)
FireRating in the Cloud Architecture
![Page 40: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/40.jpg)
Forge Based BIM Editor
![Page 41: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/41.jpg)
§ Realistic model rendering in both 2D and 3D, optionally linked§ Complete access to all BIM data, geometry, structure, properties§ Not bound to any specific model§ Secure authenticated access§ Embedded in a full ecosystem of mature CAD related web services§ Minimal amount of coding based on boilerplate sample code
Advantages of a Forge Based App
![Page 42: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/42.jpg)
§ https://forge-rcdb.autodesk.io/configurator§ Meta Properties§ Use Model: Office
https://forge-rcdb.autodesk.io/configurator?id=59780eec17d671029c53420e
§ Add and edit custom properties on elements in Forge viewer§ Download custom property data in CSV or JSON
Forge Meta Property Editor
![Page 43: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/43.jpg)
https://github.com/jeremytammik/rvtmetaprop
§ Read custom property data in CSV or JSON§ Associated with individual building elements§ Modify existing element parameter data§ Generate shared parameters for new§ Requires suitable category sets
RvtMetaProp
![Page 44: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/44.jpg)
Technologies and Implementation Details
![Page 45: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/45.jpg)
§ “Not only SQL”§ Next generation database paradigm
§ Some characteristics§ Non-relational, distributed, open-source, scalable, huge data
§ Frequent other characteristics§ Schema-free, easy replication support, simple API, eventually
consistent, i.e., BASE, not ACID§ http://nosql-database.org§ https://en.wikipedia.org/wiki/NoSQL§ http://www.mongodb.com/nosql-explained
NoSQL
![Page 46: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/46.jpg)
§ ACID§ Atomicity, Consistency, Isolation and Durability guarantee that
database transactions are processed reliably§ CAP Theorem§ The ACID paradigm cannot simultaneously guarantee
consistency, availability and partition tolerance (distributed system)
§ BASE§ Basic Availability, Soft-state, Eventual consistency
http://thebuildingcoder.typepad.com/blog/2014/05/views-displaying-given-element-svg-and-nosql.html#5
CAP and ACID versus BASE
![Page 47: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/47.jpg)
§ BIM – Building Information Model§ Cloud-based data repository§ 2D rendering on mobile device
Data Source, Repository and Consumer Client
![Page 48: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/48.jpg)
§ Graphical room editor on mobile device§ Update cloud database§ Reflect real-time changes in BIM
Real-time Edit Triggers Database and BIM Update
![Page 49: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/49.jpg)
§ Everything is a document§ All documents are JSON§ Every document has built-in id and revision§ The database design is also a document§ The design defines views and attachments
CouchDB Database Implementation
![Page 50: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/50.jpg)
§ Model – a RVT project file§ Level§ Room§ FamilyInstance – furniture or equipment§ FamilySymbol – geometry
BIM Model
![Page 51: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/51.jpg)
§ Room has boundary loops and can contain holes§ FamilySymbol has a single boundary loop§ FamilyInstance has a 2D placement§ Translation§ Rotation
BIM Object Graphics
![Page 52: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/52.jpg)
§ CouchDB ids are Revit unique ids§ Family instance → room → level → model § Family instance → symbol
BIM Object Relationships
![Page 53: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/53.jpg)
§ DbObj base class§ DbModel§ DbLevel§ DbRoom§ DbFurniture§ DbSymbol
NoSQL Database Structure
![Page 54: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/54.jpg)
§ DbFurniture.symbolId → DbSymbol§ DbFurniture.roomId → DbRoom§ DbRoom.levelId → DbLevel§ DbLevel.modelId → DbModel
Database Object Relationships
![Page 55: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/55.jpg)
§ All graphics represented by SVG path element data
§ <svg width="4cm" height="4cm" viewBox="0 0 400 400"§ xmlns="http://www.w3.org/2000/svg" version="1.1">§ <rect x="1" y="1" width="398" height="398"§ fill="none" stroke="blue" />§ <path d="M 100 100 L 300 100 L 200 300 z"§ fill="red" stroke="blue" stroke-width="3" />§ </svg>
Database Object Graphics and Placement
![Page 56: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/56.jpg)
§ Family symbol§ Define geometry
§ {§ "_id": "11cc6e52-519e-49b2-9813-c9561b59a1fd-0005f5fc",§ "_rev": "1-d575ca095533db4ccbed9f7ab2607a12",§ "loop": "M-191 922 L190 922 216 862 190 859 -191 859 -216 862 -216 919Z",§ "type": "symbol",§ "description": "FamilySymbol Furniture <390652 Table ronde a chaises>",§ "name": "Table ronde avec chaises - 01"§ }
JSON Symbol Database Document
![Page 57: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/57.jpg)
§ Furniture doc represents family instance and defines§ Relationship to room and family symbol§ Placement = transform = translation + rotation
§ {§ "_id": "11cc6e52-519e-49b2-9813-c9561b59a1fd-0005f65b",§ "_rev": "1-c1b4fc969181267b55dab4c6857fc5d7",§ "roomId": "cbe571b0-0593-4350-a8e6-abf3c9239325-00061210",§ "symbolId": "11cc6e52-519e-49b2-9813-c9561b59a1fd-0005fe6d",§ "transform": "R-90T-10429,1020",§ "type": "furniture",§ "description": "FamilyInstance Furniture <390747 Canapé...§ "name": "Canapé 3 places"§ }
JSON Instance Database Document
![Page 58: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/58.jpg)
§ A view defines a map and optional reduce function§ The map produces key-value pairs§ Reduce produces an accumulation
§ exports.models = {§ map: function (doc) {§ if( 'model' == doc.type ) {§ emit(doc, null);§ }§ }, § reduce: function (key, values, rereduce) {§ return sum(values);§ }§ }
CouchDB Views
![Page 59: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/59.jpg)
RoomEditorViews
• models• levels• rooms• furniture• symbols• map_room_to_furniture• map_level_to_room• map_model_to_level
rooms = {map: function (doc) {
if( 'room' == doc.type ) {emit(doc, null);
}}
};
map_level_to_room = {map: function (doc) {
if( 'room' == doc.type ) {emit(doc.levelId, doc);
}}
};
![Page 60: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/60.jpg)
§ <h1>Room Editor</h1>
§ <div id="content"></div>
§ <ul id="navigatorlist"></ul>
§ <div id="editor"></div>
§ <p id="current_furniture"></p>
§ <script type="text/javascript" src="modules.js"></script>§ <script type="text/javascript" src="raphael-min-jt.js"></script>
§ Populated entirely using JavaScript adding HTML and SVG nodes using jquery, raphael and db for CouchDB queries
Minimal Predefined HTML Scaffolding
![Page 61: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/61.jpg)
Resources
![Page 62: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/62.jpg)
Please refer to the class handout documentation at
http://thebuildingcoder.typepad.com/blog/2017/10/rational-bim-programming-at-au-darmstadt.html
Full Documentation
![Page 63: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/63.jpg)
§ 2D RoomEditorApp and roomeditdbhttps://github.com/jeremytammik/RoomEditorApphttps://github.com/jeremytammik/roomedit
§ FireRatingCloud and fireratingdbhttps://github.com/jeremytammik/FireRatingCloudhttps://github.com/jeremytammik/firerating
§ Roomedit3dApp, roomedit3d and roomedit3dv3https://github.com/jeremytammik/Roomedit3dApphttps://github.com/jeremytammik/roomedit3dhttps://github.com/Autodesk-Forge/
forge- boilers.nodejs/tree/roomedit3d
Old Sample Repositories
![Page 64: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/64.jpg)
§ RvtFaderhttps://github.com/jeremytammik/RvtFader
§ ForgeFaderhttps://github.com/jeremytammik/forgefader
https://forge-rcdb.autodesk.io/configurator > Meta Propertieshttps://forge-rcdb.autodesk.io/configurator?id=59041f250007f5c0eef482f2
§ RvtMetaProphttps://github.com/jeremytammik/rvtmetaprop
New Sample Repositories and Demos
![Page 65: Rationale BIM-Programmierung mit Forge und …thebuildingcoder.typepad.com/...3_tammik_forge_revit_api_slides-2.pdf§Perfection §Perfection is achieved, not when there is nothing](https://reader031.fdocuments.in/reader031/viewer/2022022506/5ac0489c7f8b9ac6688bf67d/html5/thumbnails/65.jpg)
Autodesk and the Autodesk logo are registered trademarks or trademarks of Autodesk, Inc., and/or its subsidiaries and/or affiliates in the USA and/or other countries. All other brand names, product names, or trademarks belong to their respective holders. Autodesk reserves the right to alter product and services offerings, and specifications and pricing at any time without notice, and is not responsible for typographical or graphical errors that may appear in this document.© 2017 Autodesk. All rights reserved.