What’s DOSLib?
DOSLib is a free library of LISP functions that adds a lot of functionality to AutoLISP/Visual LISP/BricsCAD LISP. It makes a lot of programming tasks a lot easier, because instead of writing a bunch of code to do tricky stuff, you can just load the library and call a ready-made (dos_xxx) function. There are hundreds of functions that cover the following areas (taken from the McNeel Wiki):
- Drives – Check for drives, change between drives, and check available disk space.
- Paths – Manipulate path specifications.
- Folders – Create, rename, remove, select, and change folders. Return special operating system folders.
- Files – Copy, delete, move, rename, and select files; get directory listings, search and find multiple instances of files, and change file attributes.
- Print – Get and set default printers, and spool print files.
- Configuration – Manipulate Windows-style initialization (INI) files, and access the Windows Registry.
- Processes – Run operating system commands or other programs.
- Interface – Get strings, integers, reals, and lists from the user. Display Windows message boxes, progress meters, and splash screens.
- Strings – Tokenize strings, extract characters, find characters, insert, remove, and replace characters, and trim characters.
- Math – Trigonometric calculations, vector manipulation, statistical analysis, and more.
- CAD – Save all and close all open files. Preview drawings and list xrefs.
- System – Get system information, sort lists, change the system date and time, manipulate the keyboard, and play sounds.
Why would a CAD LISP programmer use it?
There are many DOSLib functions that would be difficult to write purely in LISP and quite a few that would be impossible. So for those people who want to code for AutoCAD and BricsCAD without the bother of learning ARX/BRX and dealing with the associated compiler requirements, DOSLib has been a godsend. It’s worth noting that some of the DOSLib functions have been added to BricsCAD’s LISP engine, so depending on the function you use, you may not even need to load the DOSLib library.
Do impressive-looking stuff without writing much code. You might call it being lazy. I call it being efficient.
A history of dependability
DOSLib has been around for many years. It is currently supported on AutoCAD 2013 and later and BricsCAD Pro V13 and later, but earlier versions have supported AutoCAD releases dating back to 1992! Dale Fugier at Robert McNeel and Associates has been providing outstanding service in developing DOSLib and keeping it up to date. For nothing!
So developers have been able to take advantage of the DOSLib functionality all that time, and Dale has always come up with the goods in terms of updates to work on new releases of AutoCAD and BricsCAD. However, you may have had a nagging doubt about writing code that relies on a third party, or as a CAD Manager relying on such code, no matter how rock-solid reliable that party has proven in the past.
That nagging doubt can now be put to bed, because Dale has announced that DOSLib has been made open source under the very open and simple MIT license. The GitHub DOSLib page has the source, with compilation and other relevant information.
All good news
Dale has also stated that he intends to continue to provide compiled binaries for the foreseeable future, so don’t worry about having to mess with compilers. Even if a meteor happens to land on McNeel headquarters, it’s a pretty safe bet that somebody in the AutoCAD/BricsCAD development community will, after a suitable period of mourning, step forward to compile the code for new AutoCAD/BricsCAD releases when required.
The availability of the source code also opens the door for DWG-based applications (other than BricsCAD) to attempt to provide a higher level of LISP compatibility, to the extent of supporting (dos_xxx) function calls. That means you, the CAD LISP programmer, will have a wider potential audience for any code you write that uses DOSLib functions.
Finally, if you’re an ARX/BRX developer who wants to do something similar to something in a DOSLib function, you now have some handy sample code.
So this is all good news, and yet another example of Dale and McNeel doing the right thing by the CAD community.