Demand Loading a VLX File

Some years ago I wrote a small ObjectARX module named VLXLoad that loads a .vlx file of the same name and in the same directory as the .arx module. I never claimed credit for the utility, but now that I’ve released the source code, I guess I’ll have to own up to it.

If you’re interested in seeing an example of “dynamically” defining an ADS (lisp callable) function when an ObjectARX module loads, take a look at the VLXLoad source code. The code also demonstrates how to call the GetModuleFileName() WinAPI function to get the path of the executing module, and how to declare and use the undocumented ads_queueexpr() function.

There is no documentation (and probably no comments), so be warned. The download contains ready to build projects for Visual Studio 2002 (targeting AutoCAD 2004-2006) and Visual Studio 2005 (targeting AutoCAD 2007). These projects were both created with the corresponding ObjectARX wizard, and are included in the course materials for my “High-Octane ObjectARX” class at AU 2006 as an example of a simple (yet very useful) ObjectARX application.

If you just want to use VLXLoad, I’ve also made the original pre-built binaries available on my Freebies page. The idea is to rename the correct .arx file so it matches the name of your .vlx, then set up registry demand loading so that the .arx loads when AutoCAD starts. The .arx then loads the associated .vlx file, and voila, demand loading for .vlx files. Instructions for setting up demand loading have been posted on the ‘net in the past (and it is well documented in the ObjectARX SDK), so I won’t describe that here.

Have you made your mistake today?

It may seem strange to some of you, but I consider myself an artist. Visual Studio is my canvas, and the keyboard is my paintbrush. This is why I wouldn’t survive in a stuffy corporate environment with committees, red tape, and politics. I’m a visionary, not a software engineer. I don’t like to plan every little detail; I’d rather start with a grand vision and just let the code go wherever my vision leads it.

I confess this can be both a strength and a weakness. For example, I’ll spend two weeks refactoring perfectly working code because I don’t think it’s elegant enough. On the other hand, aesthetic beauty of structure and architecture is every bit as important in software as it is in other fields. It’s just that the benefits are intangible and more difficult to quantify.

Perfectly working code, you say? I admit, that’s a bit of a rarity these days. It’s a rarity precisely because not many programmers consider programming as an art form. Real artists are never satisfied with their work; they never stop working toward absolute perfection of both form and function.

This leads me to my real point. I have a favorite saying, “Have you made your mistake today?” Ironically, perfection can only be achieved by making mistakes. If you’re not making mistakes, you’re not learning. If you’re not learning, you’re not taking any risks. If you’re not taking any risks, you’re achieving mediocrity at best. Learn to make mistakes gracefully. Enjoy your capacity to learn and evolve toward perfection, no matter what kind of art you create.

Teaching and learning at AU

This year I taught an ObjectARX class at AU. As usual, there wasn’t nearly enough time to cover all the things I wanted to cover. I’m still contemplating what I want to do differently next year in order to be able to spend more time on the subject without boring everybody to death.

By the way, fellow programmers, do you agree that we need a Programming campus at AU 2007? I hate being lumped into a generic category like General Design. I suggest a new campus just for programmers, with our own industry reception (I’m thinking pizza, beer, and a Pink Floyd tribute band — and Lynn Allen of course).

If any of you went to the Programming Gurus Go Head To Head panel discussion on Thursday afternoon and were wondering why I wasn’t present… well, er, next time, could you please call me on my mobile phone a few minutes before the class to jog my aging memory? Sheesh. I always enjoy the quasi-chaotic gurus panel, and I can’t believe it completely slipped my mind.

Speaking of chaos, I like chaos — but more on that subject later. I like unscripted discussions where the topics are limited only by the imaginations of the participants. I usually sit in on a few classes at AU, but with a few rare exceptions, the only time I learn something new at AU is outside the structured classrooms.

This year I did learn something new in a class, though. I sat in on Josh Johnson’s Demystifying Installers class, and I learned how to create a new registry key that AutoCAD’s secondary install uses to trigger a third party secondary installer (this would occur when a new user logs in for the first time). Thanks, Josh! I did not know that! [An interesting sidenote: Josh taught the class with his father in the audience. How cool is that? Er, not cool at all, especially in Vegas! Seriously, I thought it was cool, and it was a pleasure to meet both of the Johnsons. Good thing I brought… never mind.]

Do you use protection?

If you were at AU this year, you may have seen some of my take5 and AUGI friends wearing blue T-shirts with this tag line on the back. This year my CADLock compatriots (Dietmar Rudolph of Germany and Steve Johnson of Australia) were both at AU, so we decided to have a little fun with this protection theme. We brought some “protection” to go along with the shirts (no, those little matchbooks did not contain matches).

Now that you’re back home, I hope you’ll take a few minutes to learn how to protect your AutoCAD drawings. You can download CADVault for AutoCAD from the CADLock web site and run it in fully functional evaluation mode to see for yourself how CADVault can securely lock your AutoCAD drawing content.

Help fight IP theft: practice safe CAD!

Toot Sweet

The French expression tuit de suite pretty much sums up how I feel after every Autodesk University, and this year is no exception. So much gets crammed into one week, with barely any time to decompress or collect my thoughts, let alone catch up with all the latest gossip or relax with old friends.

I had a tradition back in the early days to describe the people I met at AU. That tradition fell by the wayside as the heady days of youthful exuberance gave way to the practical realities of putting food on the table and making sure the bills got paid. Nowadays, the list would be far too large anyway.

Just like the old days, however, I come back from AU energized and replenished, not with more knowledge per se, but with information, ideas, and revitalized motivation. This year I’ve resolved to jump on the blogger bandwagon and share some of my thoughts for posterity.

Welcome aboard. I hope you enjoy the ride!