|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Много однотипных действий на всех открытых файлах
Иркутск
Регистрация: 04.07.2005
Сообщений: 213
|
||
Просмотров: 7553
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
Несколько вариантов, фактически различающиеся только методом открытия.
1. Открывать файлы через vla-open в фоновом режиме (достаточно медленно). 2. Открывать файлы через ObjectDBX (Олег jr. на autocad.ru несколько раз показывал подобный подход) - работает очень быстро; самое главное, чтобы обрабатываемые файлы не были никем уже открыты: для такого варианта надо прописывать свою обработку. После открытия пройтись по всем вставкам блоков всех пространств и выполнить им vla-explode с последующим vla-erase. Как ты будешь поступать с арибутами и динамическими блоками, к примеру, я боюсь даже представить (а есть еще таблицы, proxy-Объекты). После этого сохранить файл. Учти, что обращение к другому файлу возможно только через vla-функции. Применение (command), (vl-cmdf), а также интерактивных функций типа (entsel), (ssget) и т.п. недопустимо.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
Готовый лисп, гришь... Тут одним лиспом можно и не обойтись... Давай-ка не так - я тебе покажу на что меня хватит, а ты уж там сам попробуй разобаться
![]() Погнали ? Код:
Да, вот еще. Здесь не учитывается, кажись, вариант открытого файла из списка. При пакетной обработке вообще вопрос открытия уже открытого файла - по-моему, самый болезненный. Файл может быть открыт текущей сессией AutoCAD (еще хоть как-то отловить можно), другой сессией AutoCAD либо вообще другим пользователем. Как бы то ни было, файл заблокирован от изменений, поэтому открытие этого файла, может, еще и сработает. Но вот сохранить с изменениями - это уж вряд ли ![]() ![]() === Добавлено: Да, кстати. Определи, надо работать над уже открытыми файлами или вообще над всеми, которые болтаются в определенном каталоге?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 14.03.2006
Сообщений: 863
|
в Migration assistance есть такая замечательная прога Script Manager - в ней задаешь список файлов, потом задаешь *.scr файл и над каждым файлом из этого списка выполняются команды из скрипта
конечно несколько старомодно пользовать scr но по мне так самый быстрый вариант обработать сотню-другую файлов - scr быстрее создать-отладить нежели нормальную прогу |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
Насчет скорости я б поспорил, если честно - все-таки файл надо открыть; обновить вид; изменить; опять обновить вид; сохранить... Если визуальное обновление снести, уже быстрее будет раза в полтора-два (ИМХО).
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 14.03.2006
Сообщений: 863
|
я только про скорость отладки скрипта - мне часто приходится обрабатывать файлы примитивно, но по разному... написание скрипта занимает минут 5-10, программы (у меня %) ) обычно намного больше
проигрыш в скорости в данном случае не беспокоит особо - покурить/кофепопить тоже надо ![]() |
|||
![]() |
|
||||
Регистрация: 04.07.2005
Иркутск
Сообщений: 213
|
to kpblc
Спасибо за лисп. Пуржит шуба заворачивается ![]() Цитата:
Самое главное чуть не забыл, вручную останавливает и то, что много чертежей начерчено в пространстве листа, а модель совершенно пуста to Zouss где сие добро взять ? to Лентяй попробовал, почему-то говорит, что взорван один блок, хотя их там толпа целая и мультитекста много. Пробовал как на открытых, так и из каталога. |
|||
![]() |
|
||||
Регистрация: 04.07.2005
Иркутск
Сообщений: 213
|
to kpblc
Вот в процессе обнаружил просто прямо старую болячку. При отпурживании чертежей если в них есть proxy акад клинит намертво. Есть такая хорошая штука, которую сделал Alexander Rivilis и называется она ExplodeProxy2007. Дак вот нельзя ли сделать так, чтоб при команде batch-purge вначале на каждом файле запускался бы этот arx, а затем все остальное ? |
|||
![]() |
|
||||
Project Engineer Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392
|
Цитата:
![]() Код:
|
|||
![]() |
|
||||
Регистрация: 04.07.2005
Иркутск
Сообщений: 213
|
to Лентяй
чего-то я туплю тут ![]() Если пробовать на открытом файле, то вот чего говорит : Purge Opened File or <List> [Opened/List]?o Command: 1 а если пробовать из каталога, то вот чего : Purge Opened File or <List> [Opened/List]?l Command: ; error: bad argument type: stringp #<VLA-OBJECT Folder3 0ed57d88> Ничего не понимаю :shock: |
|||
![]() |
|
||||
Регистрация: 04.07.2005
Иркутск
Сообщений: 213
|
Лентяй
Теперь вообще ничего не хочет ![]() В 2007 говорит вот это: AlQuaida ; error: Automation Error. Problem in loading application а в 2006 каде вот это: AlQuaida ; error: ActiveX Server returned the error: unknown name: Utility Да ладно, буду в ручную эксплодить. |
|||
![]() |
|
||||
Engineer Регистрация: 05.09.2003
New-York
Сообщений: 10,288
|
Цитата:
|
|||
![]() |
|
||||
Project Engineer Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392
|
Цитата:
Код:
|
|||
![]() |
|
||||
Регистрация: 04.07.2005
Иркутск
Сообщений: 213
|
Vova
Надо это за тем, чтоб всякие хитрые "рыбы" не пользовали наработанные болванки. Бывают случаи когда чертежи просят, аж не могут и начальство давит на то, чтоб их вот так взять и отдать. Жаба то давит. Работаешь, работаешь и тут на тебе! По поводу черчения в layout согласен, не дело это. Лентяй ![]() - при команде l (из каталога) говорит, что ничего не нашел; - если на загруженном файле, то за один раз не разбивает, т.е. надо ее 10 раз нажимать. ЗЫ. А они вообще проверяются перед выкладыванием ? |
|||
![]() |
|
||||
Engineer Регистрация: 05.09.2003
New-York
Сообщений: 10,288
|
Цитата:
Взрывать все - плохое решение. Если у них нет грамотных (по автокаду) спецов, то сделайте так как показано здесь http://www.autocad.ru/cgi-bin/f1/board.cgi?t=29287el |
|||
![]() |
|
||||
Project Engineer Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392
|
Цитата:
|
|||
![]() |