|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
07.02.2009, 13:52 | #1 | |
Последовательное применение lisp-функции к множеству файлов DWG
Проектировщик ВК. LISP-любитель.
Москва
Регистрация: 15.12.2003
Сообщений: 1,186
|
||
Просмотров: 22055
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787
|
Самый главный вопрос - в функции применяются интерактивные лисповые функции (типа get*) и командные методы или нет?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Проектировщик ВК. LISP-любитель. Регистрация: 15.12.2003
Москва
Сообщений: 1,186
|
|
|||
|
||||
Это ответ на половину вопроса.
Цитата:
Как реализовать обработку нескольких файлов в каталоге ? Там приведена заготовка с ф-цией dofile, в которую передается указатель на активный документ. Длальше с помощью vla можно что-то делать. Код:
2. Если есть командные методы, то связка bat scr и lsp думаю актуальна до сих пор. В свое время обрабатывал достаточно большие (по тем временам) объемы информации. Запускал перед обедом и шел кушать Все что нужно здесь в посте #11 3. На theswamp.org помотри тему Execute commands on all open drawings (требуется регистрация) PS. Код перенесен на Exchange ( OpenDwgsCmds) (ссылка LISP и DVB) 4. См. пост 10 5. Используя ObjectDBX: Пример ObjectDBX Base Program и Пример2 6. Автодесковский ScriptPro 2.0. Подробнее см #32 Сам пока не пользовался, но есть отзывы 7. Для тех, кому словосочетания DLL, .NET, ObjectArx не являются матерными Менеджер пакетной обработки чертежей 8. Программа для пакетной обработки файлов v.1.1
__________________
Как использовать код на Лиспе читаем здесь Последний раз редактировалось VVA, 28.05.2016 в 12:45. Причина: Добавлен п.6 |
||||
|
||||
Проектировщик ВК. LISP-любитель. Регистрация: 15.12.2003
Москва
Сообщений: 1,186
|
VVA, спасибо за такой подробный ответ!
из соображений совместимости больше всего понравилась "связка bat scr и lsp", посмотрел файлы по ссылке, там есть такой bat: Код:
Можно ли сделать так, чтобы батник работал не только папками в корне дирректории, но и с теми, что во вложенных папках? Вопрос о сохранении обработанных файлов можно не рассматривать, так, как думаю буду сохранять по старым путям с измененным именем. |
|||
|
||||
- Регистрация: 24.07.2005
Москва
Сообщений: 1,335
|
http://forum.dwg.ru/showthread.php?t=16562
может быть это поможет. |
|||
|
|||||
Apelsinov,
Цитата:
Цитата:
Справку можно посмотреть, набрав for /? >>for.txt Фрагмент Цитата:
Лиспом по ссылке с поста #6 создаешь bat файл, где построчно перечисляешь каждый найденный файл. Пример bat: Цитата:
__________________
Как использовать код на Лиспе читаем здесь Последний раз редактировалось VVA, 06.10.2010 в 18:55. |
|||||
|
||||
Проектировщик ВК. LISP-любитель. Регистрация: 15.12.2003
Москва
Сообщений: 1,186
|
открывая файлы батником в виде
Код:
|
|||
|
||||
Apelsinov, Это самый большой минус bat'а. У меня в свое время не вышло. . Это 10-й Автокад пулей загружался. Сейчас нужно терпение.
__________________
Как использовать код на Лиспе читаем здесь |
||||
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381
|
Кроме того, при работе по сценарию никак не обрабатываются возможные ситуации. Понадобится Автокаду для какого-нибудь файла какой-то SHX, он задаст вопрос и весь сценарий поломается. Таким образом можно обрабатывать знакомые файлы, у которых не будет взбрыков.
Я чаще всего использую вот такую функцию Код:
first_message — предупреждающее сообщение перед запуском массовых операций, или NIL, если предупреждения не требуется; files_list — список полных имен обрабатываемых файлов; test_func — имя тестовой функции, выводящей first_message и проверяющей возможность начала обработки файлов по списку; quoted_func — имя функции, выполняющей операцию с именем одного файла из списка. С файлами могут производиться любые операции, не обязательно требующие открытия самих файлов. Вот пример применения, не имеющий практического смысла, но иллюстрирующий механизм работы функции: Код:
Разумеется, нам нужны функции, делающие что-то полезное, и их можно разработать сколько угодно, главное, чтобы в момент выполнения функции ru-batch-file-operations и тестовая, и основная функции были определены. Типовой алгоритм (не универсальный), применяемый нами для обработки посторонних DWG-файлов: 1. создается новый пустой рабочий файл; 2. в него вставляется обрабатываемый файл в виде блока; 3. производится требуемая обработка; 4. обработанный блок вновь сохраняется в файл . В конкретных вариантах возможны нюансы (например расчленение вставленного блока, запись в другой каталог, ведение LOG-файлов), но обязательным является дублированное несколько раз до и после обработки удаление «мусора», обеспечивающее постоянную «пустоту» рабочего файла. Таким способом я обрабатывал за раз до тысячи файлов топографических планшетов. Запускал на выходной и на дачу уезжал. Но способ не универсальный. Для DWG где всё только в модели - подходит хорошо. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787
|
Мне кажется, что вариант #4 (при соответствующей квалификации, конечно) является самым оптимальным.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 15.02.2008
Сообщений: 32
|
Добрый день!
В продолжение этой темы. Необходимо напечатать в PDF 500 файлов. Чертежи сделаны и в модели, и в листах. Подскажите, что я делаю не так. В функцию DOFILE - дописала печать документа. Но на печать выводится активный документ. Вот мой код. Код:
Последний раз редактировалось Кулик Алексей aka kpblc, 01.11.2010 в 16:47. |
|||
|
||||
elena_k, тебе надо вывести на напечать много файлов. Допустим, подшивка тебя не устраивает.
1. У тебя все эти файлы уже открыты или есть их список? Если есть список, где он в коде? 2. Ты так уверенно берешь чужой лисп, который лезет в реестр и не боишся? 3. Ты запускаешь код в одном файле, а хочешь чтобы он продолжал работать в других? 4. Что такое curDOC тебе расшифровать? "текущий документ". Ты загрузила функцию в текущий документ и распечатала его, дальше что? Кто загрузит следующий документ и загрузит в него эту функцию? На мой взгляд надо делать так: 1. Определится из какого документа ты собираешся работать со всем массивом остальных документов. 2. Создать список dwg файлов с полными путями. 3. прочесть эти две ссылки http://forum.dwg.ru/showpost.php?p=636946&postcount=47 http://forum.dwg.ru/showthread.php?t=58328 в первой запуск лиспа при открытии документа во второй запуск лиспа в уже открытом документе и многократно, если это необходимо. Имеется в виду запуск лиспа из вне, то есть из другого документа. 4. Если твоя функция работает, в смысле распечатывает активный документ, то запускай ее при каждом открытии нового документа. (бедный, бедный твой реестр) |
||||
|
||||
Регистрация: 15.02.2008
Сообщений: 32
|
Я не стала полностью приводить код. Он взят с форума
http://www.caduser.ru/forum/index.ph...#message161511 сообщение VVA. У меня есть список файлов.Я пыталась изменить только функцию DOFILE Я для себя писала программу вывода в PDF активного файла, в которой нужно только выбрать область печати, а дальше автоматом определяю какой это формат, в зависимости от ориентации чертежа выбираю файл *.pc3 ( заранее создала для альбомной и книжной ). А в реестр пишу путь, где лежит DWG файл.Не нужно выбирать куда сохранять PDF. Получалось значительно быстрее, чем просто печать файла. Но хотелось все сделать автоматом. Спасибо за участие и ссылки - буду изучать. |
|||
|
||||
Вы, как я уже говорил, должны определиться откуда будете по очереди открывать файлы?
Вариантов всего два. Либо из скрипт-файла, либо из какого-то документа самого автокада. Я так понимаю, что вы выбираете второй путь? Если да, то переделайте свою функцию DOFILE и уберите в ней аргумент. Функция DOFILE должна всегда обрабатывать текущий активный. Весьма рекомендую в ней разобраться и в реестр не лезть! Запишите ее временно в acaddoc.lsp не забыв в конце дописать закрытие документа. Создайте функцию, которая создает список и по очереди просто открывает файлы. Файл откроется, обработается и сам закроется. Если такое не нравится, то создайте лисп с этой функцией, и как я вам написал в ссылках запускайте по очереди этот файл в разных документах. |
||||
|
||||
elena_k, Можешь попробовать использовать еще ObjectDBX. Я добавил п.5 к посту #4
__________________
Как использовать код на Лиспе читаем здесь |
||||
|
Опции темы | Поиск в этой теме |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
DwgRuLispLib: Команда. Загрузка lisp файлов из указанной папки | VVA | Библиотека функций | 7 | 15.02.2018 10:10 |
Грамотное открытие файлов DWG из макса (6,7,8) | Chuma | AutoCAD | 11 | 03.02.2010 08:05 |
Где можно найти в инете обширную библиотеку DWG файлов для проектирования??? | Romeo1786 | Поиск литературы, чертежей, моделей и прочих материалов | 7 | 28.05.2008 10:30 |
Программирование с использованием файлов DWG | fiandy | Программирование | 3 | 22.03.2008 20:27 |