Тема: Выбор группы файлов
С помощью функции DOS_GETFILEM из DOSLIB можно выбрать группу файлов. А есть-ли способ выбора файлов указанием папки.
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → LISP → Выбор группы файлов
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
С помощью функции DOS_GETFILEM из DOSLIB можно выбрать группу файлов. А есть-ли способ выбора файлов указанием папки.
точнее:
(dos_dir (strcat (dos_getdir "Select a folder") "*.dwg") 1)
> Василий Алибабаевич
(vl-directory-files "путь"[шаблон]"флаг")
-список с именами файлов
флаг
-1-выводить только списки директорий
0-и то и другое
1-только файлы
Нашёл с конфы ещё вариант типа:
(setq PATH "c:\\Program Files\\AutoCAD 2000i") (command "shell" (strcat "dir \"" PATH "\" > " (strcat "\"" PATH "\\files.txt\"")))
опосля прочитать files.txt
Но, только толку от этого и от vl-directory-files нет без графического интерфейса выбора папки :(
Но, только толку от этого и от vl-directory-files нет без графического интерфейса выбора папки
А хотя-бы getfiled c выделением пути?
getfiled не даёт выбирать группу файлов.
Поэтому только DOS_GETFILEM или вариант DMS
(dos_dir (strcat (dos_getdir "Select a folder") "*.dwg") 1)
> AVDВасилий Алибабаевич
getfiled позволяет выбать файл в директории и определить
путь к ней , а далее (vl-directory-files "путь"[шаблон]"флаг")
в виде списка Вы получаете все файлы этой директории.
А если Вы пишете программу не для себя Вам придется
устанавливать на чужом компьютере библиотеку Doslib если
ее нет.
> DMS
Взглянул только на конец ветки, а про начало забыл (понедельник)
если папка пуста, то и лезть к ней нечего.
:)
Надо только окно как-то обозвать, что бы название говорило о малтивыборе.
Подниму старую тему, ибо она стала для меня актуальной.
Вопрос сформулирую несколько иначе, чем в топике: как дать пользователю возможность указать папку с использованием Windows-подобного интерфейса? (примерно как в функции getfiled).
Как я понял из предыдущего обсуждения - стандартными средствами LISP - никак (vl-directory-files не предлагать по причине отсутствия визуальности). Только DOSLib? Или есть еще какие-нибудь варианты?
______________
Удачи.
Да, вдогонку.
...если папка пуста, то и лезть к ней нечего.
А если там нужно что-нибудь сохранить?...
den-si, все-таки нужна возможность правки собственных сообщений, нужна...
______________
Удачи.
> kos
Все, что нельзя сделать "вижуального" в Visual LISP, можно реализовать двумя путями:
1. Сделать собственную библиотеку функций, наподобие DOSLib с использованием ObjectARX.
Недостатки известны - надо уметь работать в VC++ и с ObjectARX. И такая библиотека будет привязана к версиям AutoCAD и продуктов Microsoft.
2. Использовать COM-технологии. В этом случае можно писать в любой среде, поддерживающей COM (VC, Delphi, VB - да хоть на чем). Созданные объекты не будут зависеть от версий AutoCAD и компиляторов и могут использоваться и вне AutoCAD. Написать такие приложения может и человек, вообще не знакомый с AutoCAD. А в LISP для них будут только функции вызова.
Подробно и с исходниками эти технологии описаны в книге "САПР на базе AutoCAD - как это делается". Выбор папки - это очень простой частный случай.
Возможно также использование чужих COM-объектов из других программ и библиотек, но это ненадежно, да их надо еще разыскать.
> Василий Алибабаевич
> serzh
БО-О-Ольшое спасибо. Именно то, что нужно.
ЗЫ: а поиском я эту тему почему-то не откопал, хотя getfiled в аргументах поиска задавал...
______________
Удачи.
Да, кстати. Посмотрел на даты указанного обсуждения. Оказывается, был в отпуске, потому и пропустил :( :(
ЗЫ: первый смайлик касается закончившегося отпуска, второй - пропущенной темы...
______________
Удачи.
Насчет
https://www.caduser.ru/forum/topic20307.html
Зайдите на
http://discussion.autodesk.com/
(придется за"login"иться)
и введите для поиска хотя бы "BrowseforFolder",
массу интересного найдете.
BrowseFolder найдёш https://www.caduser.ru/forum/topic19699.html
Может это подойдет:
(код не мой)
(defun BrowseFolder ( / ShlObj Folder FldObj OutVal) (vl-load-com) (setq ShlObj (vla-getInterfaceObject (vlax-get-acad-object) "Shell.Application" ) Folder (vlax-invoke-method ShlObj 'BrowseForFolder 0 "" 0) ) (vlax-release-object ShlObj) (if Folder (progn (setq FldObj (vlax-get-property Folder 'Self) OutVal (vlax-get-property FldObj 'Path) ) (vlax-release-object Folder) (vlax-release-object FldObj) OutVal ) ) )
> Random
Рекомендую при прочтении заглядывать на ссылки...
> Евгений Елпанов
Я б с радостью, да комп с инетом ни-ка-кой.
Рекомендую относиться с пониманием.
Ok!
Просто много ссылок на одну и ту-же программу (все ссылки ведут к ней), а дальше приведен ее код...
Кстати, когда я ее притащил на форум - написал, что взял с
http://discussion.autodesk.com/
На самом деле этот лисп принадлежит:
Tony Tanzillo
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → LISP → Выбор группы файлов
Форум работает на PunBB, при поддержке Informer Technologies, Inc