In Cheetah plugin, we not only replaced built-in solver of AutoCAD by our Cheetah solver, but we were to replace a lot of AutoCAD parametric functionality, to the new functionality.
For Instance, we replaced constraints icons to the new icons (that’s why, constraints icons in Cheetah mode look a little bit different, and behave a little bit different – see section 6.2 below). Besides this we replaced dimensional constraints tools to something a little bit different (see section 6.3 below).
One can ask: “Why you did it? Why not to use the nice AutoCAD parametric functionality, and just replace the AutoCAD solver by Cheetah solver?”
The answer is: “This is exactly what we expected to do, when we started Cheetah plugin for AutoCAD project”. Moreover, this is exactly what was implemented in the Alpha versions of our plugin (Alpha 0.3 became available for download from our site in March 2015).
This was really nice approach that allowed easily switch from AutoCAD solver to Cheetah solver (and wise verse) and use all AutoCAD parametric functionality without any changes.
However, AutoCAD prepared two surprises for us. It appeared that parametric of AutoCAD besides constraints solver contains two important subsystems that don’t allow our solver to work efficiently.
Let’s call these subsystems “Analyze” and “Audit”:
“Analyze” works before constraints solver and check constraints system for inconsistency. “Audit” works after constraints solver and check results of the solver – whether the regenerated model satisfies the given constraints. Both of them are not well-matched for working together with Cheetah solver.
“Analyze” subsystem works very slow and (similar to AutoCAD solver) not able to work with constraints systems having more than some hundreds of constraints.
“Audit” subsystem (if the model becomes more complicated) very often don’t want to recognize a model, resolved by Cheetah solver, as a model, that satisfies all given constraints. In this case, Audit simply removes constraints that it considers to be non-satisfied (and, what is most unpleasant, Audit do it silently, without any warning).
Therefore, we were to dispose both Analyze and Audit subsystems. However, AutoCAD API doesn’t provide us an option to switch off these subsystems. So, we decided not to use AutoCAD parametrics at all, and to create our own Cheetah parametrics inside AutoCAD, where we are 100% responsible for analyze, solver, and audit.
The drawback of such a decision was that we were to replace a lot of AutoCAD functionality with our own functionality. To begin with, we were to replace some UI functionality both for geometric and dimensional constraints.
We tried to make constraints UI (geometric constraints icons and dimensional constraints annotation) to look and behave similar to the original AutoCAD parametric, but still there are some differences both in the outlook and in the behavior of Cheetah constrains.