Cable trays network optimizer
A flagship project so far. Combination of a mathematical core for optimization and pre- and post-processing of data in Revit. A lot of tricks to improve performance on real scale.

Overview
The tool was made for one of the world's largest cable tray manufacturers. It optimizes the summary cost of cables and raceway network for given routings and cable schedule.
The tool is split into 2 parts: the mathematical core and the Revit interface. The core is a library of functions that can be used to optimize the cable trays network. The interface is a Revit addin that allows the user to input the data and get the optimized result.
This is a perfect example of how a business idea is implemented as a workflow and a tool. The client did not deal with the whole complexity of the problem, he has his own, so the tool is 100% self-sustained.
What I did
I started from analysis of existing software on the market as it is usually better than custom development. Only when I could not find any focused on cable trays and not cables themselves, I started to develop the tool.
Mathematical core was clear from the beginning: routings problems are well studied. The challenge was to properly formulate the problem and include engineering restrictions of real cable routing.
Next step was to consider the most underrated aspect of automation: changes. The task is not to route and optimize the cables once, but to do it iteratively and repeatedly. This significantly changes the core code.
Along with work on the core, I developed the Revit interface. Although the core is compatible with any .NET API, Revit provides the best experience in quick prototyping, modeling and optioning. I created a project template and a set of families based on client's catalogue to work with.
The development was iterative based on features priorities and engineers feedback. Inspite of the overall complexity of the project, the tool was delivered just in 3 months.
Design decisions
From the beginning the architecture was chosen to be independent from CAD software. The core is written as .NET library that can be connected to many other CAD software.
Project management, communication with engineers and coding is done by myself. There was no misunderstanding, misinterpretation or miscommunication.
Revit provides a very rich set of instruments to work with design on data level. Using it enables quick landing of engineers and significantly eases implementataion process. It does not mean that the tool stays Revit-only but first impression is crucial.
Outcome
Just in 3 months the client got a sel-sustained tool which 100% supports his business goal without compromises.
The tool is designed to be extended with new features and integrations with other systems so the client doesn't stuck with it.
A whole set of user documentation, developer documentation and training materials were provided as well to help the client to use the tool and extend it.