Реклама i
Стань нашим партнером - зарабатывай с нами!
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Библиотека функций > DwgRuLispLib: Функция открытия диалога Open\Save As файла (файлов)

DwgRuLispLib: Функция открытия диалога Open\Save As файла (файлов)

Ответ
Поиск в этой теме
Непрочитано 13.01.2008, 15:35
DwgRuLispLib: Функция открытия диалога Open\Save As файла (файлов)
Supermax
 
Руководитель фирмы
 
Москва
Регистрация: 28.03.2007
Сообщений: 1,831

Код:
[Выделить все]
;;; ************************************************************************
;;; * Библиотека DWGruLispLib Copyright ©2007  DWGru Programmers Group
;;; *
;;; * DwgRu-BrowseForFile
;;; *
;;; * 14/01/2008 Версия 0001.    Андрей Лазебный (Supermax), Кулик Алексей (Kpblc)
;;; ************************************************************************
;;; Функция использует функции свободно распостраняемой библиотеки  Allosys.dll
;;; Автор - Юрий Лукач © Студия "АЛЛО" http://allo.usaaa.ru/workshop/sample...ns/sysfuns.htm
;;; использование функции DwgRu-BrowseForFile требует инсталяцию данной библиотеки.
;;; В функции использована функция PL:String->List автор - Лоскутов П.В. 
;;; Опубликована в книге Полещук Н.Н. Лоскутов П.В."AutoLISP и Visual LISP в среде AutuCAD"
;;;
 ;;; Описание:
  ;;; Вызывает стандартный диалог Open/Save As и возвращает список состоящий из строк 
  ;;; в которых заключены полные пути и имена выбранных файлов, если нажато "Открыть", или список с пустой строкой, если нажато "Отмена".
 ;;; Синтаксис: 
  ;;; (dwgru-BrowseForFile toggle title initDir filter flags x y)
 ;;; Аргументы:
  ;;; toggle - тип диалога (строка) (true = Open, false = Save As), по умолчанию true
  ;;; title - заголовок диалога (строка), по умолчанию системный заголовок
  ;;; initDir - начальный каталог диалога (строка), по умолчанию текущий каталог
  ;;; filter - фильтры диалога (строка), по умолчанию "All files (*.*)|*.*|"
  ;;; flags - флаги диалога (строка с числом), по умолчанию OFN_HIDEREADONLY | OFN_ALLOWMULTISELECT
  ;;; x - смещение окна диалога от верхнего левого угла экрана; по X. (строка с числом) По умолчанию окно центруется
  ;;; y - смещение окна диалога от верхнего левого угла экрана; по Y. (строка с числом) По умолчанию окно центруется
  ;;; 
  ;;; Умолчания - пустые строки "".
  ;;; filter должен иметь следующий формат:  "Executable files (*.exe)|*.exe|All files (*.*)|*.*|".
  ;;; 
  ;;; flags - это комбинация следующих флагов:
   ;;; 0x00000001 (OFN_READONLY)          Включает переключатель диалога "Read Only"
   ;;; 0x00000002 (OFN_OVERWRITEPROMPT)   При задании имени существующего файла выводит запрос
   ;;;                                    на подтверждение перезаписи файла (Save As)
   ;;; 0x00000004 (OFN_HIDEREADONLY)      Прячет переключатель диалога "Read Only"
   ;;; 0x00000008 (OFN_NOCHANGEDIR)       Восстанавливает текущий каталог после выхода из диалога
   ;;; 0x00000200 (OFN_ALLOWMULTISELECT)  Разрешает выбор нескольких файлов
   ;;; 0x00000800 (OFN_PATHMUSTEXIST)   Запрещает ввод имен несуществующих путей и файлов
   ;;; 0x00001000 (OFN_FILEMUSTEXIST)     Запрещает ввод имен несуществующих файлов
   ;;; 0x00002000 (OFN_CREATEPROMPT)    При задании имени несуществующего файла выводит запрос
   ;;;                                    на подтверждение создания файла (Open)
   ;;; 0x00020000 (OFN_NONETWORKBUTTON)   Прячет и запрещает кнопку диалога "Network"
   ;;; 
   ;;; Если флаг OFN_HIDEREADONLY не был установлен, то в конец возвращаемой строки добавляется
   ;;; подстрока "|1" или "|0" в зависимости то того, выбрал или нет пользователь опцию Read Only.
   ;;; 
  ;;; Возврат: 
   ;;; Cписок состоящий из строк в которых заключены полные пути и имена выбранных файлов, если нажато "Открыть", или список с пустой строкой, если нажато "Отмена".
  ;;; 
  ;;;   Для регистрации компоненты в меню пуск\выполнить наберите команду: regsvr32 allosys.dll.

(defun dwgru-BrowseForFile ( toggle title initDir filter flags x y / svr res PL:String->List)
  (if (setq svr (vlax-get-or-create-object "ALLO.SystemFunctions"))
       (setq res (vlax-variant-value (vlax-invoke-method svr 'BrowseForFile toggle title initDir filter flags x y))))
       (vl-catch-all-apply '(lambda () (vlax-release-object svr)))
; Глава 10\Book01\PL_String-_List.lsp
; В книге: Н.Н.Полещук, П.В.Лоскутов
;"AutoLISP и Visual LISP в среде AutoCAD"
; (издательство "БХВ-Петербург", 2006)
;
; Листинг 10.2. Функция PL:String->List
;
; Функция разделяет строку на список строк по заданному разделителю.

(defun PL:String->List (_str _br / _pos)
  (if (setq _pos (vl-string-search _br _str))
;;; Если в строке обнаружено вхождение подстроки-разделителя,
;;; то запоминается его начальная позиция в переменной _pos.
    (cons (substr _str 1 _pos)
;;; Отрезается фрагмент исходной строки, от ее начала и до начала
;;; строки-разделителя. Функция cons ожидает возврата следующего
;;; рекурсивного вызова. По завершению этого вызова фрагмент исходной
;;; строки добавляется в начало возвращенного списка.
          (PL:String->List (substr _str (+ (strlen _br) _pos 1)) _br))
;;; Рекурсивный вызов. В качестве первого аргумента выступает фрагмент
;;; исходной строки, от конца первого вхождения строки-разделителя
;;; и до конца исходной строки.
    (list _str)
;;; Если строка-разделитель в исходной не обнаружена, то возвращается
;;; список, в который помещается исходная строка без изменений.
  ))
;;; Пример применения:
;(PL:String->List "Тест разделения  строки" " ")
;;; ("Тест" "разделения" "" "строки")
(princ (PL:String->List res "|"))
); конец (defun dwgru-BrowseForFile
Пример использования:
Код:
[Выделить все]
(dwgru-browseforfile "true" "Множественное открытие файлов *.txt" "" "Текстовые файлы (*.txt) |*.txt|" "0x00000008" "" "")

Вложения
Тип файла: rar allosys.rar (12.3 Кб, 513 просмотров)
Тип файла: lsp DwgRu-BrowseForFile.lsp (5.1 Кб, 492 просмотров)


Последний раз редактировалось Supermax, 14.01.2008 в 17:18.
Просмотров: 32898
 
Непрочитано 14.03.2018, 10:05
#21
trir


 
Регистрация: 18.12.2010
Сообщений: 5,047


не работает
trir вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Библиотека функций > DwgRuLispLib: Функция открытия диалога Open\Save As файла (файлов)

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна функция импорта блока из файла Krieger Программирование 20 18.01.2017 07:19
структурированный список Holon Программирование 22 11.09.2007 14:09
чтение данных из файла Александер Программирование 6 08.09.2005 10:24