Do you speak my language? – Programming for the AEC Industry
At VIATechnik, we are constantly exploring and analyzing different programming languages to identify which tools align best with project goals. Here’s what we’ve learned.
As digital technologies become more pervasive in the design and construction space, the industry is no longer an exclusive domain to architects, engineers, and contractors. Many processes related to building design and construction increasingly depend on digital technologies. A decade ago, automating routines in AutoCAD with one programming language LISP might have been enough. Today, the industry’s changing dynamics are now in search professionals with knowledge of Python and C#, among others. These programming languages are essential for custom plug-in development or task automation. Autodesk has certainly been a key player in the cloud technologies and app development field. A clear example is Forge, which has helped popularize and streamline the development of AEC-specific apps.
The construction industry’s digitalization, along with the growing project complexity and duration, has forced construction professionals to transfer from design to design-development where apps and plug-in development can help improve efficiency and effectiveness within the industry. Many programming languages are available, and determining which one is right for a project can be overwhelming. Choosing the right language is crucial to get the best performance in the shortest time possible.
In this post, we’ll give you an overview of the following categories that VIATechnik views as essential to our software work: web development, plug-in and add-in development, visual scripting, VR/AR development, and iOS/Android development.
Web development means the building and maintenance of websites and web apps. It’s a combination of several different technologies exchanging data over the internet. Why should we consider web development for the AEC industry? How is it relevant to metal framing or cable tray fill capacity or spool sheet generation?
For example, some apps allow users to plan out and mass a rough shape of a building on a real-world map in 3D and then run energy and cost analysis.
Python. Artur Yolchan, Senior Software Engineer and owner of the website Coding Skills, says: “Python will probably be the most favorite programming language for developers in 2021.” It’s one of the top 5 programming languages and the fastest-growing major language in the world. Python’s growth skyrocketed in the last five years due to its adaptation of machine learning and data science.
Python’s general purpose is server-side programming. It works directly with file systems on the server side. Developers can use all its power to analyze data not only for machine learning but also for BIM data processing, math, and analytic fields. It does all this work for websites behind the scenes. Dice, one of the leading websites for tech careers, is prognosing the growth of interest in Python in 2021.
Add-in and Plug-in Development
Plug-ins can automate, customize, and expand even the most powerful BIM platforms. At VIATechnik’s Cirrus Studio, our team is constantly working on various Revit automation and data management plug-ins. Any BIM manager, architect, engineer, or motivated user can create custom plug-ins. (Note: Revit APIs are built on .NET Framework, so any language for this platform will be useful.) .NET is a free, cross-platform, open-source developer platform for building various types of apps.
C#. C# is a good choice for this field because it’s versatile and applicable to other programming areas. It’s fully integrated with Microsoft’s .NET software framework, which supports app development for Windows, browser plug-ins, and mobile devices. C# offers shared codebases, a large code library, and various data types.
With C#, developers can make custom Revit toolbars that contain different commands to automate daily tasks. It also allows for the development of apps that connect different platforms such as Salesforce, Procore, and Bluebeam.
Even though Dynamo and Grasshopper aren’t programming languages, they’re worth mentioning. The growing interest in visual programming throughout the last few years is hard to ignore. They’re both convenient and powerful tools for designers who don’t want to code. In Dynamo, regular nodes fit in a basic knowledge level of visual scripting. Intermediate level users can use assemblies created by others, where code can be written in the nodes already. However, more complicated tasks require complex scripts and extensive programming experience. At the advanced level, users can write code in Python and get access to the API and be on the same playing field as those seasoned developers.
Python. Can’t find the Dynamo node you need? Python lets you create powerful custom nodes that extend Dynamo’s functionality and solve your Revit modeling challenges faster and smarter. It offers much more achievable methods for writing conditional statements (if/then) and looping. It also lets you replace many nodes with a few concise lines of code.
Rhino users can use Python as well because Python runs on both the Windows and Mac versions of Rhino. Since both platforms have Rhino Python scripting, the same Python scripts can run on either platform.
Augmented Reality (AR) and Virtual Reality (VR) are now available for everyday use. Like web development, VR/AR development combines several different technologies. However, developers can use AR/VR viewers and build apps that allow for the display of any 3D model from BIM360, Revit, and Navisworks with an AR-enabled smartphone or tablet in your hands.
Image processing is another field that can bring the most value to the AEC industry in the nearest future. There are three levels of image processing machine learning:
- Image classification, where you can tell generically what’s in the image
- Object detection, where you can draw a bounding box around the image
- Image masking, where you can get the exact outline of the image
Developers can train their own models to detect construction objects, enabling them to automate on-site quality control.
C#. C# is the most popular programming language among AR/VR developers, according to SlashData. It’s widely used for developing games with Unity, the most popular game engine. It works on both Mac and PC, and several VR apps are created with C#. Unity’s platform can be used with Autodesk Forge AR/VR tool kit.
iOS/Android Native App Development
Since the percentage of smartphone ownership and usage posted by the Pew Research Center is growing every day, programming for mobile devices can be very valuable in the near future. In this case, the programming language is determined by the platform.
Kotlin. Android development requires the Kotlin programming language. The Dice report states, “In late 2018, an analysis of Dice data found that the number of job postings mentioning ‘Kotlin’ had skyrocketed since the second quarter of 2017, which roughly corresponds with Google announcing that Kotlin was officially a first-class language for Android.”
Swift. For the iOS platform, more and more developers choose Swift as a programming language.Unfortunately, Objective-C isn’t an option anymore. According to the same Tiobe index, Objective-C is losing popularity every year.
A number of useful mobile apps can increase project productivity by managing prints, punch lists, and other project issues.
While programming itself is becoming easier and more accessible for most people, newer languages are replacing big and more dated languages. A lot of pieces go into a modern app, and it’s not a “press of a button.”
With the growing complexity of BIM projects, it’s hard to get through without model data management or repetitive task automation. Software development extends BIM, as well as provides solutions for workflow automation and optimization for AEC companies already initiated in the BIM methodology. Getting a grip on code and what these languages do and how to assemble them into a working product is key to the success of the future state of BIM.
About the Author
Slava Krel is a Senior VDC Engineer at VIATechnik. Slava specializes in MEPF BIM coordination and Scan-to-BIM workflows. He leverages his understanding of data flow, from concept through construction. Over the past few years, Slava has been following his passion for app development, programming, and scripting for the AEC industry.
VIATechnik is the global leader in BIM services and virtual design and construction with a mission to transform the analog world of design and construction into a digital platform, enabling efficient design, industrialized construction, and a digital real estate service model. Through this transformation, we believe we can solve the world’s housing and infrastructure challenges and deliver spaces that nurture life, commerce, and relationships. Visit us on the web at viatechnik.com.