Красивый выбор каталога

Иногда надо в процессе выполнения лиспа указать каталог. Есть, конечно, вариант использовать 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. Как всегда, исходник здесь

Размещено в Код LISP, Функции LISP · Метки: ,



Поделитесь своим мнением


Я не робот.