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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Очистка временных файлов после вызова команды Копировать в буфер

Очистка временных файлов после вызова команды Копировать в буфер

Ответ
Поиск в этой теме
Непрочитано 08.11.2017, 13:33 #1
Очистка временных файлов после вызова команды Копировать в буфер
olga87
 
Регистрация: 28.05.2007
Сообщений: 207

Здравствуйте Уважаемые программисты AutoCAD!
Подскажите пожалуйста как кодом выполнить следующее в AutoCAD 2007 (windows 7):
После запуска команды "Копировать в буфер обмена" выполнять удаление из папки "temp" всех файлов с именем "A$*.dwg".
Может быть можно внести изменение в стандартную команду AutoCAD: Копирование объектов в буфер обмена Windows: КБУФЕР^C^C_copyclip , дописав этот код?
Заранее спасибо!
Просмотров: 5113
 
Непрочитано 08.11.2017, 15:01
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


См.в сторону командных реакторов. Получишь каталог хранения временных файлов и через vl-directory-files отфильтруешь нужные. Потом в цикле пройтись и каждый попытаться удалить.
В чем конкретно вопрос?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 08.11.2017, 15:06
#3
olga87


 
Регистрация: 28.05.2007
Сообщений: 207


Код
Код:
[Выделить все]
(command "_DEL" (strcat (getenv "temp") "\\" "A$*.dwg"))
удаляет.
Подскажите пожалуйста как прописать это действие после выполнения команды "Копировать в буфер"?
Т.е. добавить после ^C^C_copyclip

Код:
[Выделить все]
^C^C_copyclip (command "_DEL" (strcat (getenv "temp")"\\""A$*.dwg"))
- не работает

Последний раз редактировалось olga87, 08.11.2017 в 15:48.
olga87 вне форума  
 
Непрочитано 08.11.2017, 16:13
#4
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,004


Алексей имел в виду следующее, наверно:
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
См.в сторону командных реакторов
1. Есть обработчики событий документа (Document Events), среди которых:
CommandWillStart - перед выполнением непосредственно самой команды
CommandEnded - успешное завершение команды
CommandCancelled и CommandFailed - отмена выполнения команды либо ошибка
2. В CommandWillStart ловите команду копирования в буфер (по ее названию) и взводите вспомогательный глобальный флаг.
3. В CommandEnded, CommandCancelled и CommandFailed - если был взведен глобальный флаг, то вызываете свой код:
Цитата:
Сообщение от olga87 Посмотреть сообщение
(command "_DEL" (strcat (getenv "temp") "\\" "A$*.dwg"))
p.s. Название событий даю для .NET API, в лиспе могут отличаться)
Сергей812 вне форума  
 
Непрочитано 09.11.2017, 14:40
#5
Alex.gomel


 
Регистрация: 09.11.2017
Сообщений: 28


Если буквально, по существу вопроса:
Код:
[Выделить все]
(progn (command "_copyclip" (ssget) "") (command "_DEL" (strcat (getenv "temp") "\\" "A$*.dwg")))
Alex.gomel вне форума  
 
Непрочитано 09.11.2017, 14:42
#6
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


И сработает или нет в таком случае буфер, можно будет только гадать.
Пока что никто не опроверг мое видение ситуации: http://autolisp.ru/2011/02/16/clipboard-working/ (прочитай про организацию временных файлов, в частности)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 13.11.2017, 21:37
#7
olga87


 
Регистрация: 28.05.2007
Сообщений: 207


Спасибо!
Подскажите пожалуйста с кодом в файле acaddoc.lsp (при каждом открытии чертежа происходит чистка от файлов A$*.dwg):
Код:
[Выделить все]
(command "_DEL" (strcat (getenv "temp") "\\" "A$*.dwg"))
(princ)
Как скрыть мелькание cmd-окна?
olga87 вне форума  
 
Непрочитано 13.11.2017, 22:07
#8
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Никак, поскольку используешь командное окно Windows.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 14.11.2017, 07:43
#9
Setvar


 
Регистрация: 10.02.2007
Москва
Сообщений: 611


Цитата:
Сообщение от olga87 Посмотреть сообщение
Как скрыть мелькание cmd-окна?
Применить другой способ.
Для удаления одного файла:
Код:
[Выделить все]
(defun C:DLF1 ( / lf)
(setq lf (vl-directory-files (getenv "temp")  "A$*.DWG"))
(if lf (vl-file-delete (strcat (getenv "temp") "\\" (car lf))))
(princ)
)
Для удаления нескольких файлов:
Код:
[Выделить все]
(defun C:DLF ( / lf n)
(setq lf T)
(while lf
    (setq lf (vl-directory-files (getenv "temp")  "A$*.DWG") n 0)
    (if lf 
        (vl-file-delete (strcat (getenv "temp") "\\" (nth n lf)))
    ) ; if
    (+ n 1)
) ; while
(princ)
)
Если папка для временных файлов другая, то код, соответственно, надо подправить. У меня, например, это папка TMP.
Я думаю, что таким образом можно вообще попробовать очищать папку для временных файлов, меняя маску, т.к. в этой папке всегда много мусора.
Setvar вне форума  
 
Непрочитано 14.11.2017, 10:58
| 1 #10
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Сносить все подряд я бы не стал - таким образом можно порушить файлы автосохранения.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 14.11.2017, 11:36
#11
Setvar


 
Регистрация: 10.02.2007
Москва
Сообщений: 611


Согласен, удалять надо аккуратно. Я вообще бы разбирался с этой папкой вне AutoCAD'а, тем более, что возможна ситуация, когда неудаляемый файл типа *.tmp при работе программы подвешивает AutoCAD намертво. Поэтому я осторожно предлагаю попробовать.
Setvar вне форума  
 
Автор темы   Непрочитано 14.11.2017, 12:45
#12
olga87


 
Регистрация: 28.05.2007
Сообщений: 207


Спасибо!
olga87 вне форума  
 
Непрочитано 15.11.2017, 12:45
#13
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


olga87, перед началом добавь строку (vl-load-com)
Сообщение “no function definition: VLAX-GET-ACAD-OBJECT ” и как с ним бороться
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Очистка временных файлов после вызова команды Копировать в буфер

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Мультитекст после команды "Расчленить" оставляет мусор как его удалить trotil AutoCAD 12 14.11.2013 12:04
Не освобождается память после закрытия файлов. Comediant AutoCAD 12 04.09.2013 13:26
AutoCAD 2011 Захват курсора после команды Realistic vn AutoCAD 2 15.11.2010 17:01
После ввода команды снимается выделение с обьектов (AutoCAD 2010) fobof_13 AutoCAD 3 29.09.2010 20:00
Блокировка панели с инструментами после команды Мтекст. Black Diamond AutoCAD 1 16.09.2010 21:34