Низкоуровневая функция диалога выбора файлов

(defun _ru-dlg-file (dlg_caption
root_dir
start_dir
filter_mask
default_file_name
is_multiselect
is_can_edit
is_can_create_new_file
;; is_use_dirinfo
/
srv
result
i
) ;_ end of dlg_caption
;;;Диалог выбора файлов
;|
Последний вариант
TODO:
Выбор одного файла
(_ru-dlg-file
"Выбор одного файла"
"C:\"
"c:\Data"
"*.dwg"
(vl-filename-base (getvar "DWGNAME"))
nil
t
t
) ;_ end of _ru-dlg-file
("C:\.ru\cad\samples\dwg\Слои\Классификатор слоев.dwg")
Выбор нескольких файлов
(_ru-dlg-file
"Выбор нескольких файлов"
(getvar "DWGPREFIX")
(getvar "DWGPREFIX")
"*.dwg"
""
T
T
T
) ;_ end of _ru-dlg-file
("C:\.ru\cad\samples\dwg\Сантехника\Водомеры.DWG"
"C:\.ru\cad\samples\dwg\Сантехника\Sx_mag.dwg"
"C:\.ru\cad\samples\dwg\Сантехника\demo-Водомер.dwg"
)
|;
(if (setq srv (vlax-get-or-create-object "ruShellFileDlgSvr.FileDialog"))
(progn
(vlax-invoke-method srv "Create")
(vlax-put-property srv 'Caption dlg_caption)
(vlax-put-property srv 'RootDir root_dir)
(vlax-put-property srv 'StartDir start_dir)
(vlax-put-property srv 'FilterMask filter_mask)
(vlax-put-property srv 'DefaultFileName default_file_name)
(vlax-put-property
srv
'MultiSelect
(ru-conv-value-to-wordbool is_multiselect)
) ;_ end of vlax-put-property
(vlax-put-property srv 'CanEdit (ru-conv-value-to-wordbool is_can_edit))
(vlax-put-property
srv
'CanCreateNewFile
(ru-conv-value-to-wordbool is_can_create_new_file)
) ;_ end of vlax-put-property
;; (vlax-put-property
;; srv
;; 'UseDirinfo
;; (ru-conv-value-to-wordbool is_use_dirinfo)
;; ) ;_ end of vlax-put-property
(setq result (vlax-invoke-method
srv
"Execute"
) ;_ end of vlax-invoke
) ;_ end of setq
;; так работает, но ошибка
(if (= (vlax-variant-value result) :vlax-true)
(progn
(setq result '())
(setq i 0)
(repeat (vlax-get-property srv 'FilesCount)
;; (setq file_name )
(setq result (cons (vlax-variant-value (vlax-invoke-method srv "GetFile" i)) result))
(setq i (1+ i))
) ;_ end of repeat
(vlax-invoke-method srv "Free")
) ;_ end of progn
(setq result nil)
) ;_ end of if
) ;_ end of progn
(princ "
Не удалось запустить ruShellFileDlgSvr.FileDialog")
) ;_ end of if
result
) ;_ end of defun
;|«Visual LISP© Format Options»
(80 2 40 2 T "end of " 82 9 1 0 nil nil T nil T)
;*** DO NOT add text below the comment! ***|;