More API online docs, run free local open-source LLM queries on your BIM, and orchestrate add-ins in parallel on multiple servers:
By the way, The Building Coder was selected by feedspot as one of the Top 25 Revit Blogs. Thank you for the recognition, even if the list does look rather arbitrary to me...
After a long lack of online API documentation for Revit 2025, we suddenly have a whole collection of choices, and competition is increasing.
The newest candidate is from Erik Frits of LearnRevitAPI, who launched yet another Revit API documentation website:
Welcome to the pack!
Here is an overview of the choices that I am aware of to date:
Erik Gette of Strana Development, ГК Страна Девелопмент kindly shared several in-depth tutorials on Revit and Navisworks debugging and parallel task orchestration:
The debugging suggests an interesting approach using the journal file to launch Revit in the debugger:
The Runner.txt file is a VBA script (Revit journal) that allows executing specific commands in Revit upon startup. Essentially, it can be used to trigger any sequence of actions automatically. In the context of my article, this file is used to launch Revit without any third-party plugins, ensuring a clean environment for testing and debugging. Interestingly, Revit generates similar log files for each session. These files can be read and analyzed, which opens up a range of automation possibilities. For example, in our workflow, we use these logs to orchestrate 10 running instances of Revit to export over 5,000 files into NWC format efficiently. The use cases for this approach are vast, and I plan to explore them in more detail in future articles. Stay tuned! 😊
Thank you, Erik, for your valuable research and documentation. I'll share the Revit orchestration article here in full; please refer to Erik's LinkedIn publications for the others:
In large-scale BIM projects, it is often necessary to perform the same operations on multiple models. This could include exporting models to various formats (NWC, IFC), extracting data for further analysis, or even more complex tasks related to automated model processing.
When the number of models grows too large, performing these operations manually becomes inefficient and, in the case of working with Revit and Navisworks, also resource intensive. The optimal solution is to organize server-side orchestration of these processes, where tasks are executed automatically based on a predefined scenario.
In this article, we will explore how to set up process management for Revit on a server to execute BIM tasks in batch mode. This approach allows you to:
Orchestrating these processes on the server significantly reduces processing time, eliminates human errors, and makes working with models more predictable and manageable.
This controller is a simplified API example that manages a task queue in the server’s memory. The main goal is to demonstrate how tasks can be added and retrieved using ConcurrentQueue.
How this controller works:
Limitations of this approach:
What to use in a real project?
For reliable task processing, message brokers are recommended:
If you need to integrate RabbitMQ or another broker into this project, feel free to reach out to Erik.
The RevitRunner class is used to launch Revit with a journal file. This journal file can contain commands for automating tasks such as exporting NWC files or performing other operations.
🔹 How It Works?
Before we move on to executing Revit processes, we need to configure and develop a Revit plugin.
The first step is to create a manifest file for our command. This file defines the parameters and settings for the plugin. It tells Revit how to load and execute our command, ensuring it integrates properly with the Revit environment.
Next, we need to call our command inside the journal file (Runner.txt). This ensures that Revit executes the plugin correctly when launched.
⚠ Key point: The command ID in the manifest file and the journal file must be the same. This consistency is crucial for proper execution and debugging.
By maintaining this synchronization, we ensure that Revit picks up and runs our automation script without issues.
Now, let’s configure the journal file and see how it integrates with our command! 🚀
After setting up the manifest and the journal file, the next step is writing the external command that will execute tasks inside Revit.
The RevitCommand
class implements the IExternalCommand
interface, which allows it to be executed within Revit.
It runs in an infinite loop, constantly checking the server for new tasks.
When a task is found, it is processed accordingly.
How the Command Works:
Execute
Method:ProcessQueue
Method
– This method handles the task retrieval and processing loop:ExecuteTask
Method
– This method is responsible for executing the task. Here, you can implement various BIM automation processes, such as:By implementing this method, you can significantly reduce manual effort, improve efficiency, and ensure consistency in your BIM processes.
To streamline development and debugging, a profile has been created that allows you to run both the server and the client simultaneously. This setup makes it easier to:
With this configuration, you can fine-tune your Revit automation workflow and optimize task execution seamlessly. 🚀
In this test project, Scalar is used to simplify API interactions. It provides a clean and efficient way to work with the task queue. With Scalar, you can easily:
This makes the orchestration process more manageable and scalable, ensuring a seamless workflow for handling Revit tasks on the server. 🚀
Now, let’s move on to the most exciting part—running our tasks in parallel on multiple instances of Revit. To make the server configuration more flexible, we first need to update the appsettings.json file by adding fields that will allow us to:
This approach ensures that tasks are distributed efficiently across multiple Revit processes, significantly reducing execution time and improving overall performance. 🚀
Now that we've set up the configuration, the next step is to create a class that will launch Revit instances on the server side. This class will be responsible for:
With this setup, we can now use our API to enqueue an unlimited number of tasks, and they will be processed in parallel by three Revit instances. This approach ensures efficient workload distribution, minimizing idle time and optimizing execution speed. 🚀
We should also remember to register our service:
builder.Services.AddHostedService<RevitBackgroundService>();
Now we have the ability to batch-run tasks that can only be executed in the context of Revit. This can significantly increase the productivity of the BIM department, as it allows us to integrate existing plugins into this logic and batch process large volumes of models on the server machine.
In the following articles, I will elaborate on how to implement a similar approach with Navisworks, which will expand our capabilities in automation and integration with other tools.
If you have any questions about collaboration or would like to discuss potential opportunities, feel free to reach out to me on Telegram. I look forward to connecting with you! Let me know if you need any adjustments!
Chuong Ho published a one-minute video on Ollma3 LLM Agent APS WSL System (Autodesk Platform Services):
Exploring Open Source & Local LLM Ollama for Design Metadata Querying in Autodesk Platform Services!
I'm excited to share my recent experiment with an open-source project that brings Local LLM AI and Autodesk Platform Services (APS) together! You can choose any model from your localhost with free AI open source model, and use this chatbot for a wide range of purposes! This is just the first version of my hackathon project, and I’m excited about how it turned out. A huge thanks to Petr Broz for the repository and inspiration!
Check out the video below to see the real-time speed response using LLM on a local machine with WSL. It's fascinating how fast and efficient the response time is!
aps-local-chatbot GitHub repository
Simple chatbot for querying metadata of designs in Autodesk Platform Services using Ollama for chat completion. This project connects a powerful local LLM with zero cost into Autodesk Platform Services.
Many thanks to Chuong Ho for implementing and sharing this exciting innovative project.
Moore's law for agents: autonomy doubles every 7 months, cf. the paper on Measuring AI Ability to Complete Long Tasks.
Figure 1: The length of tasks (measured by how long they take human professionals) that generalist autonomous frontier model agents can complete with 50% reliability has been doubling approximately every 7 months for the last 6 years. The shaded region represents 95% CI calculated by hierarchical bootstrap over task families, tasks, and task attempts. Even if the absolute measurements are off by a factor of 10, the trend predicts that in under a decade we will see AI agents that can independently complete a large fraction of software tasks that currently take humans days or weeks.
At current rates, we will have:
- 1 (human work-) day autonomy in (5 exponentials * 7 months) = 3 years (2028)
- 1 (human work-) month autonomy in "late 2029" (+/- 2 years, only going for human working hours)
Non-Revit-related yet interesting to try out yourself, this conversational voice generation and simulation demo highlights Sesame – crossing the uncanny valley of conversational voice:
At Sesame, our goal is to achieve 'voice presence' – the magical quality that makes spoken interactions feel real, understood, and valued.