Работа со скриптами

Автор Тема: Работа со скриптами  (Прочитано 16432 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

Оффлайн Алексей ФедоровАвтор темы

  • ADN OPEN
  • Сообщений: 6
  • Карма: 0
Работа со скриптами
« : 31-10-2016, 13:21:22 »
Доброго времени суток!

Написал программу, открывающую и закрывающую DWG-файлы и выполняющие с каждым файлом определенные действия. Открытие-закрытие DWG-файлов выполняю скриптом. После окончания перебора всех файлов нужно запустить функцию. Почему-то выполнение функции происходит перед выполнением скрипта, хотя в программе она стоит после.

Код - Auto/Visual Lisp [Выбрать]
  1. (setq fo (open (strcat path_ritm_sudno "\\tmp\\myscript.scr") "w"))  
  2. (while (< i le_spis_file)
  3. (write-line "_.OPEN" fo)
  4. (write-line (strcat ORDER_DIR "DWG\\" (nth i spis_file)) fo)
  5. (write-line "(np_l \"fa_stat_f_l.vlx\")" fo)  
  6. (write-line "(one_pos_stat)" fo)
  7. (write-line "_.SAVE" fo)
  8. (write-line (strcat ORDER_DIR "DWG\\" (nth i spis_file)) fo)
  9. (write-line "_.CLOSE" fo)
  10. (setq i (+ i 1))
  11. )  
  12. (write-line "(np_l \"fa_stat_f_l.vlx\")" fo)  
  13. (write-line "(fa_svod_f_l)" fo)
  14. (close fo)
  15.  
  16. (setvar "SDI" 0)
  17. (command "_.delay" 1000)
  18. (command "_.SCRIPT" (strcat path_ritm_sudno "\\tmp\\myscript.scr"))
  19. (vl-file-delete (strcat path_ritm_sudno "\\tmp\\myscript.scr"))
  20. (fa_svod_f_l)

Подскажите почему так происходит и что мне сделать, чтоб функция (fa_svod_f_l) выполнялась после скрипта?
« Последнее редактирование: 02-11-2016, 14:17:39 от Александр Ривилис »

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1116
  • Карма: 173
Re: Работа со скриптами
« Ответ #1 : 31-10-2016, 13:52:40 »
Ничего не понял. Что ты собираешься делать с открытыми документами? Это самый главный вопрос.
Вопрос номер два: можно ли те же вещи сделать в консольном AutoCAD? Если да, то почему не делается в нем?
Скрипт, конечно, вещь хорошая - но я бы поискал альтернативные решения.
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Оффлайн Алексей ФедоровАвтор темы

  • ADN OPEN
  • Сообщений: 6
  • Карма: 0
Re: Работа со скриптами
« Ответ #2 : 31-10-2016, 14:25:58 »
Алексей, с каждого открытого документа я считываю уникальные значения атрибутов блока. Мне нужно перебрать все DWG-файлы папки и считать с каждого определенную информацию. Насколько я знаю в Лиспе открывать DWG-файлы можно только с помощью скриптов.

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1116
  • Карма: 173
Re: Работа со скриптами
« Ответ #3 : 31-10-2016, 14:39:46 »
Ай-яй-яй, неправда ваша :) А ObjectDBX на что? Открываем файл, считываем содержимое блока пространства модели и анализируем его как угодно. Другой момент, если во вхождениях блоков используются поля - тогда ситуация становится значительно более печальной.
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1116
  • Карма: 173
Re: Работа со скриптами
« Ответ #4 : 31-10-2016, 14:40:25 »
В крайнем случае есть другой вариант: вставить файл как внешнюю ссылку, пройтись по нему как по обычному блоку, выгрузить ссылку. И так далее, пока список файлов не кончится
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Оффлайн Алексей ФедоровАвтор темы

  • ADN OPEN
  • Сообщений: 6
  • Карма: 0
Re: Работа со скриптами
« Ответ #5 : 31-10-2016, 14:53:51 »
Понимаете, Алексей, программу я уже практически написал, и с использованием скриптов. Просто она с состоит из двух частей: первая часть - перебор файлов и запись нужных мне данных в блокнотовский файл;вторая - работа с получившимся блокнотовским файлом. Если запускать эти части программы последовательно порознь, то все получается как надо. Просто хотелось бы объединить эти две программы в одну.

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1116
  • Карма: 173
Re: Работа со скриптами
« Ответ #6 : 31-10-2016, 15:35:19 »
Ну, меня один ))
Я бы все же через ObjectDBX, наверное, шел - проще и дешевле. И ошибки отловить можно запросто. И сообщений о ненайденных шрифтах / ссылках / типах линий не появляется (но все это будет зависеть от состава блоков). Сейчас из описания я понял только то, что я ничего не понял...
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Работа со скриптами
« Ответ #7 : 31-10-2016, 16:10:35 »
Алексей Федоров
Зачем SDI устанавливаешь в 0? Для такой обработки скорее SDI следовало устанавливать в 1. _CLOSE придётся убрать.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Работа со скриптами
« Ответ #8 : 31-10-2016, 16:11:44 »
Алексей, с каждого открытого документа я считываю уникальные значения атрибутов блока. Мне нужно перебрать все DWG-файлы папки и считать с каждого определенную информацию.
Если только считываешь информацию, то зачем файл сохранять?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1116
  • Карма: 173
Re: Работа со скриптами
« Ответ #9 : 31-10-2016, 16:33:44 »
Я боюсь, что во вхождениях блоков (в атрибутах) участвуют поля, которые следует пересчитывать.
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Работа со скриптами
« Ответ #10 : 31-10-2016, 16:41:27 »
Я боюсь, что во вхождениях блоков (в атрибутах) участвуют поля, которые следует пересчитывать.
И? Для этого чертеж всё-равно не обязательно сохранять.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1116
  • Карма: 173
Re: Работа со скриптами
« Ответ #11 : 31-10-2016, 16:51:54 »
Логично :) С другой стороны, кто его знает - что там на событие сохранения "повешено" ;)
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Оффлайн Алексей ФедоровАвтор темы

  • ADN OPEN
  • Сообщений: 6
  • Карма: 0
Re: Работа со скриптами
« Ответ #12 : 02-11-2016, 10:39:04 »
Алексей Федоров
Зачем SDI устанавливаешь в 0? Для такой обработки скорее SDI следовало устанавливать в 1. _CLOSE придётся убрать.
Александр, если SDI равен 1, то задает вопрос "Really want to discard all changes to drawing?" и при любом ответе работа программы заканчивается.

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1116
  • Карма: 173
Re: Работа со скриптами
« Ответ #13 : 02-11-2016, 11:28:42 »
Алексей Федоров, приведи код своих функций. Я почему-то думаю, что можно обойтись и другими методами, без скриптов и проч. Ну или действительно задействовать консольный ACAD...
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Работа со скриптами
« Ответ #14 : 02-11-2016, 14:08:48 »
Александр, если SDI равен 1, то задает вопрос "Really want to discard all changes to drawing?" и при любом ответе работа программы заканчивается.
Если у тебя в коде _SAVE, то откуда этот запрос?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение