MBD Macro

'streamlining software to your workflow'

View GitHub
Being a machinist requires you to spend hours annotating and processing every part that comes through the shop. I built an app that increases your efficiency by up to 100%—keep scrolling to learn more!
Pictured: Project demo video!

What Tools?

The script is built in
AutoHotKey
, a
C++
based scripting language for easy interfacing with applications, and built for Capvidia's MBDVidia.

Why This Project?

For every part that comes through a machine shop, skilled machinists need a three-dimensionally annotated model, meaning a 3D model whose features include dimension and tolerance information embedded in the file itself. Many times, the machinists aren't sent this file, but instead a stripped 3D model (with no annotations) and a PDF part drawing with the desired specification.
Every time, someone must transfer the information from the PDF to the model using an MBD (Model Based Definition) software, like MBDVidia. I was tasked with doing this at first, and after a few hours, I realized how repetitive the actions I was taking were. For 90% of the annotations, the process would be exactly the same, and navigating the slightly clunky software made it even more tedious. So I decided to create a macro application that would automate repeated button presses and mouse clicks for our exact workflow.

What is it?

This is an application that, when launched, creates a graphical overlay and event listeners on top of MBDVidia, enabling hotkey-based controls that trigger scripts, manipulate windows, and interact with GUI elements. This means that previously manual and tedious processes become nearly instantaneous. This program supports the creation of dimensional and geometric tolerances by setting keybinds to common functions. To achieve this, the program uses multithreaded processing and image detection, as well as window and keyboard/mouse manipulation.
For example, for dimensional tolerances (tolerancing the distance between two planes), after the hotkey is pressed, the program listens for the user's inputs and when necessary, will automatically pop up a chat box, which the user can input their desired tolerance and the macro will do the rest of the work. For most dimensions, this process is 2 to 3 times faster than entering the information manually, and there are failsafes to dismiss the macro when the tolerance requires more manual input. In addition, the program includes overall quality of life improvements that increase both efficiency and user experience. More information can be found on the GitHub, which goes through all the possible shortcuts and explanations.

What did I learn?

Completing this process improved my user experience design skills, as it required me to consider all possibilities, such as ease of learning (ex. UI indicators) and incorporating failsafes (ex. LOTS of error handling). Additionally, improving existing software forced me to think creatively, taking advantage of its strengths while finding workarounds for its limitations.