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

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

Удаление файла после его загрузки

Ответ
Поиск в этой теме
Непрочитано 19.11.2008, 02:27 #1
Удаление файла после его загрузки
+Alex+
 
Архитектура
 
Регистрация: 05.03.2005
Сообщений: 96

Здравствуйте!
Есть такая задача:
В Автокад загружается короткая программа (сценарий), после завершения прописанных операций файл этой программы нужно удалить.
Но пока выполняется эта программа, удалить файл нельзя (он занят).
Можно ли как-то удалить его после, притом что команду на удаление прописать внутри самого файла?
Просмотров: 7911
 
Непрочитано 19.11.2008, 08:34
#2
Кулик Алексей aka kpblc
Moderator

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


Ну а почему бы и нет? Попробуй Код сохранить как c:\test.lsp
Код:
[Выделить все]
(defun test ()
  (alert "Программа загружена!")
  (if (findfile "c:\\test.lsp")
    (progn
      (alert "Файл найден")
      (vl-file-delete "c:\\test.lsp")
      ) ;_ end of progn
    (alert "Файл не существует")
    ) ;_ end of if
  ) ;_ end of defun

(test)
Загрузить в AutoCAD и потом посмотреть, существует ли файл test.lsp.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 19.11.2008, 11:14
#3
+Alex+

Архитектура
 
Регистрация: 05.03.2005
Сообщений: 96


Таким способом файл не удалить. Пока выполняется программа этого файла. Файл будет удален только если указание на выполнение программы этого файла (в данном случае "(test)") убрать из файла, а это нежелательно.
+Alex+ вне форума  
 
Непрочитано 19.11.2008, 11:19
#4
Кулик Алексей aka kpblc
Moderator

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


+Alex+, ты сохрани файл, потом загрузи его и посмотри, что получится.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 19.11.2008, 11:29
#5
+Alex+

Архитектура
 
Регистрация: 05.03.2005
Сообщений: 96


Что я и сделал еще раз...
(alert "Программа загружена!") -> (alert "Файл найден")
Файл удаляется только после второго вызова программы. А если второго вызова не будет вообще?
+Alex+ вне форума  
 
Непрочитано 19.11.2008, 11:38
#6
Кулик Алексей aka kpblc
Moderator

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


Значит, такое решение "в лоб" невозможно. Звиняй.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 19.11.2008, 12:01
#7
+Alex+

Архитектура
 
Регистрация: 05.03.2005
Сообщений: 96


Цитата:
...Звиняй.
Да что уж... Вот я сам ничего не могу придумать.
Разве что реализовал сторонний способ, который запускает цикличный процесс удаления (как только это будет возможно), но это выглядит слишком коряво, поэтому и спрашиваю.
+Alex+ вне форума  
 
Непрочитано 19.11.2008, 12:13
#8
Кулик Алексей aka kpblc
Moderator

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


Я не могу понять - а зачем удалять лисп-файл? Вся последовательность действий какова?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 19.11.2008, 12:18
#9
+Alex+

Архитектура
 
Регистрация: 05.03.2005
Сообщений: 96


В файле содержатся списки будущих примитивов и указания по их созданию. Они актуальны только на данный момент времени. Этот файл генерируется автоматически и он не является самостоятельным приложением и не может понадобиться впредь.
+Alex+ вне форума  
 
Непрочитано 19.11.2008, 12:25
#10
Кулик Алексей aka kpblc
Moderator

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


Эээээ.... А зачем его вообще генерировать? Не проще ли будет создавать список в памяти и с ним работать?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 19.11.2008, 12:27
#11
+Alex+

Архитектура
 
Регистрация: 05.03.2005
Сообщений: 96


Не все так просто. Нет полноценного доступа к объектной модели Автокада.
+Alex+ вне форума  
 
Непрочитано 19.11.2008, 12:29
#12
Кулик Алексей aka kpblc
Moderator

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


Как это "нет"?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 19.11.2008, 12:38
#13
+Alex+

Архитектура
 
Регистрация: 05.03.2005
Сообщений: 96


А вот так. Доступ к приложению имеется (только чтение и установка параметров true-false и передача строк), а вот создание вариантов - никак.
Может быть и возможно список в памяти...интересно, но как его создать? Есть ли метод организующий этот буфер?
+Alex+ вне форума  
 
Непрочитано 19.11.2008, 12:52
#14
Кулик Алексей aka kpblc
Moderator

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


Погнали с самого начала. Что за приложение? Стороннее? Или лисп, запускаемый внутри AutoCAD'a? Кто автор приложения?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 19.11.2008, 12:56
#15
+Alex+

Архитектура
 
Регистрация: 05.03.2005
Сообщений: 96


Приложение - Google SketchUp
Мое приложение реализует быстрый экспорт.
+Alex+ вне форума  
 
Непрочитано 19.11.2008, 12:58
#16
Кулик Алексей aka kpblc
Moderator

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


Оба-на... Ни себе фига, что же ты им делаешь (если не секрет, конечно)?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 19.11.2008, 13:09
#17
+Alex+

Архитектура
 
Регистрация: 05.03.2005
Сообщений: 96


Не секрет, разрабатываю уже почти полгода комплекс утилит для организации проектирования в SketchUp, но проектирование неразрывно связано с Автокадом, поэтому необходима быстрая передача некоторых данных из приложения-в приложение. Пока это реализовывается посредством временного файла. Например операция "переброса" проекции из файла SketchUp ~300000элементов (тяжелая сцена) в текущий документ Автокада занимает менее 3 секунд! Тем более, что стандартные средства не обеспечивают передачи атрибутов, слоев и многого другого.
+Alex+ вне форума  
 
Непрочитано 19.11.2008, 14:46
#18
Кулик Алексей aka kpblc
Moderator

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


SketchUp'ом не занимался, поэтому идея на уровне "терять уже нечего": имя файла для обмена предопределить и все время его перезаписывать. Ну болтается и пускай болтается на винте. Или такой номер не прокатит?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 19.11.2008, 14:51
#19
+Alex+

Архитектура
 
Регистрация: 05.03.2005
Сообщений: 96


Такой номер катит так и работает хотелось узнать можно ли аккуратнее.
+Alex+ вне форума  
 
Непрочитано 19.11.2008, 15:05
#20
Кулик Алексей aka kpblc
Moderator

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


Тогда вариант №2: из "родительского приложения" запустить обработку этого файла. Именно из "родителя". После окончания обработки файл сносить.
А еще лучше (если там в качестве программирования нечто типа VB(A)) попробовать по аналогии с
Код:
[Выделить все]
Dim oACAD As Object
  Set oACAD = GetObject(,"AutoCAD.Application")
Dun oDoc As Object
  Set oDoc = oACAD.ActiveDocument
  oDoc.ModelSpace.AddLine<...>
Код пишу "насухую" и для варианта позднего связывания. Если работать с ранним связыванием (то есть внедрить все необходимые библиотеки), то методы и свойства каждого примитива будут уже более очевидны.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Удаление файла после его загрузки

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ЮМОР 2006 =) Perezz!! Разное 1122 04.01.2007 00:46
БРЕД СИВОЙ КОБЫЛЫ Kryaker Разное 1876 29.12.2006 23:41
Как добавить в файл чертежа его имя (файла) ? Shura AutoCAD 7 02.12.2003 18:03