Красивый выбор каталога
Иногда надо в процессе выполнения лиспа указать каталог. Есть, конечно, вариант использовать getfiled, но как-то это не очень красиво...
Уже сто лет пользуюсь лиспом, стыренным на caduser.ru:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | (defun vl-browsefolder (caption / shlobj folder fldobj outval) ;| http://www.autocad.ru/cgi-bin/f1/board.cgi?t=21054YY * Без отображения файлов * Параметры вызова: caption показываемый заголовок (пояснение) окна (setq Folder (vlax-invoke-method ShlObj 'BrowseForFolder 0 "" 16384)) |; (setq shlobj (vla-getinterfaceobject (vlax-get-acad-object) "Shell.Application") ;_ end of vla-getInterfaceObject folder (vlax-invoke-method shlobj 'browseforfolder 0 caption 0) ) ;_ end of setq (vlax-release-object shlobj) (if folder (progn (setq fldobj (vlax-get-property folder 'self) outval (vlax-get-property fldobj 'path) ) ;_ end of setq (vlax-release-object folder) (vlax-release-object fldobj) ) ;_ end of progn ) ;_ end of if outval ) ;_ end of defun |
Пример использования:
1 | (vl-browsefolder "Проверка работы") |
Что самое главное, вопрос с кодировками в lisp-программах даже не возникает
P.S. Как всегда, исходник здесь