I'm currently working on a project that, among the other things, requires some scripting on CATIA v5 (for those unfamiliar, this is one of the leading CAD platforms on the market). The CATIA thing is really powerful - besides the expected CAD functionality, it provides a lot of high-level conceptual design stuff that simplifies and boosts the development process.
Bashing mode on
The thing is, the API that it uses is the ugly abomination called #!@%. I cannot even force myself pronouncing the name.
VBA! Okay, you got it. It's not even the .NET platform, with all the goodies of the managed code, version control, you name it. I am surprised that such a weak scripting language was used to build so complex environment. VBA [sic] seems to be kind of object-oriented, but you can't use polymorphism or method overloading, which kind of sucks, especially when you are building a library which is supposedly reusable. Yeah, all right, you get some basic class support, but that's not enough for the high-level programming I am doing. The only solution is rigid and disciplinary development practices - fortunately, something I'm good at.
Extending the bashing to CATIA:
The CATIA object model is.. let's just say that it can be used to scare little children with, you can easily count more than 100 deeply-nested classes, and several hundred available methods and properties. On top of this, the documentation available is appalling - examples are sparse or trivial, and some obscurely-sounding methods are so poorly documented that you consider yourself lucky even to find the number of parameters required for a method. Some "case studies" are provided, but boy, aren't they useless, using so sloppy programming practices, that my programming teacher would have me kicked out of the class right away if I dared to present him such a program.
Seriously, when one pays that ridiculous amount of money for licensing, one might expect slightly better support for the unfortunate third-party extension developers. On top of everything, some methods are not available through the API. Seriously, how come that I cannot use a
GetCoordinate method for a point?! I mean, is there a more basic functionality than that in such an application? However, I am able to invoke much more complex methods that I won't be able to write on my own without some serious research. This is what really confuses me. They provide the API and some documentation for it, but for some unknown reason restrict the usage of the API for basic stuff. Now I'm left outside in the cold to try to figure out an efficient planar triangulation algorithm...
Summarizing the bashing:
Dear proprietary developers.. I understand that you have families to feed.. But please, consider the remote possibility that there are also some fellow devs that are trying to make a living off the platform you are building. A little more effort in documentation might be useful, and *please* take out the restrictions from the API, thankyouverymuch. And would you consider the possibility to gather together with other CAD developers from the competitors, and figure out an open common building platform, which is to be jointly supported by the companies, and allows in the same time some community feedback and contribution - I am the first to jump on the wagon if such an initiative launches, mark my words.
Image courtesy of http://www.flickr.com/photos/bm5k/ - Creative Commons Attribution-Noncommercial-No Derivative Works 2.0 Generic
You need to be a member of House of Hackers to add comments!
Join this network