Schöck
dwg.ru forum rss xml
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму |

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

AutoCAD-2016 - как открыть файл из скрипта без диалогового окна ?

Версия для печати
 
Ответ
Опции темы Поиск в этой теме
Непрочитано 02.08.2018, 08:41 #1
AutoCAD-2016 - как открыть файл из скрипта без диалогового окна ?
===AAA===
 
г. Норильск
Регистрация: 15.08.2005
Сообщений: 181

===AAA=== вне форума Вставить имя

Всем привет!

Есть программа для групповой обработки чертежей.
Она формирует динамически меняющийся скрипт
(который изменяется после каждого обработанного
файла), устанавливает sdi = 1 - и погнали.

Каждый очередной скрипт начинается со строки типа
(command "_.open" "D:/Test.dwg")

Всё работает замечательно (на последнем файл sdi,
разумеется, возвращается в "ноль"), пока на одном
из файлов не произойдет сбой Автокада с его
последующим закрытием.

Задача - корректно возобновить работу скрипта,
который будет подгружен при запуске Автокада
после его аварийного завершения в предыдущем
сеансе.

Раньше (на предыдущих версиях Автокада) всё
работало нормально, а сейчас команда

(command "_.open" "D:/Test.dwg")

вызываемая из скрипта при запуске "голого" Автокада
(т.е. имеем пустой экран и никакой чертёж ещё не
открыт) вызывает диалоговое окно выбора файла.

filedia = 0 не помогает, метод

(vla-open (vla-get-Documents (vlax-get-acad-object)) "d:/test.dwg" :vlax-false " ")

утыкается в установленную sdi = 1 и не работает.

Да, можно концептуально поменять способ перебора файлов, отказавшись
от скриптов в принципе, но для этого нужно полностью переписывать программу.

Может быть, кто-то знает решение, как просто подавить диалоговое окно?
Не в принципе любое, а возникающие именно в этих стартовых условиях.

Может быть, есть какая-нибудь альтернативная "open", которая никогда
не запрашивает окно?
__________________
Счастливо, Алексей!
Просмотров: 675
 
Непрочитано 02.08.2018, 08:59
#2
Кулик Алексей aka kpblc
Moderator

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


Может, проще всего будет использовать консольный acad? Ну или через ObjectDBX идти?
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 02.08.2018, 09:39
#3
Сергей812


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


Цитата:
Сообщение от ===AAA=== Посмотреть сообщение
Всё работает замечательно (на последнем файл sdi,
разумеется, возвращается в "ноль"), пока на одном
из файлов не произойдет сбой Автокада с его
последующим закрытием.
и проводить чистку/аудит файлов перед обработкой. А если сам скрипт может вызвать фаталити акада на определенном наборе входных данных - это не рабочий инструмент...
Сергей812 вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 02.08.2018, 10:13
#4
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 181


Да АвтоКАД-то нормальный, лицензионный и сам по себе не сбоит.

Сбой может произойти, скажем, из-за ошибки в ЛИСП-программе.
Для меня это не проблема, а вот ставить такую программу на
ПК пользователям не хочется...
__________________
Счастливо, Алексей!
===AAA=== вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 02.08.2018, 10:19
#5
Кулик Алексей aka kpblc
Moderator

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


И кто мешает выполнять максимальное тестирование? И исправление багов, когда они обнаружатся?
P.S. Лично у меня тестирование и вылавливание багов занимает достаточно ощутимое время...
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 02.08.2018, 10:23
#6
Сергей812


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


Цитата:
Сообщение от ===AAA=== Посмотреть сообщение
Сбой может произойти, скажем, из-за ошибки в ЛИСП-программе.
Для меня это не проблема, а вот ставить такую программу на
ПК пользователям не хочется...
зато у пользователей появится еще один повод свалить свои косяки на другого
Обрабатывайте ошибки в самой программе, если какая то часть кода вызывает регулярно ошибку и эту ошибку не перехватить - переписывайте код.
Сергей812 вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 02.08.2018, 10:26
#7
Кулик Алексей aka kpblc
Moderator

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


Ставь отлов ошибок, благо для этого варианты на лиспе весьма несложны.
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 02.08.2018, 12:55
#8
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 181


Ну, "отлов ошибок" - навскидку - это у меня примерно 40% кода программы.
Только этим и занимаюсь, что пытаюсь предугадать и корректно обработать
все мыслимые и немыслимые случаи.

В данном случае аварийное завершение цепочек скриптов - это просто ещё
один из маловероятных вариантов развития событий, который у меня прекрасно
обрабатывался раньше и упорно не хочет обрабатываться в 2016 Акаде.

В принципе, выкрутиться можно, но просто хочется реализовать так, как это
у меня было раньше, а именно: произошёл сбой -> открыли Акад по новой ->
программа сама продолжила работу с этого же самого места.

И всего-то нужно - это молча открыть файл, без диалогового окна.

Ладно, буду думать дальше...

----- добавлено через ~41 мин. -----
Причём, что забавно - если сбросить Esc это диалоговое окно
открытия файла и тут же в командной строке ввести

(command "_.script" "имя-скрипта")

то всё радостно шурует дальше без всяких диалоговых окон.

Пока лучшее, что пришло в голову - это определить функцию
типа

(defun С:ДАЛЬШЕ! ()
(command "_.script" "имя-скрипта")
)

и дать пользователю инструкцию:

"Появится какое-то окно, сбрось его Esc и набери с клавиатуры ДАЛЬШЕ!"

Но неспортивно оно как-то...

----- добавлено через ~19 ч. -----
В принципе - решение найдено.

Оказалось достаточным выбросить перед запуском скрипта
диалоговое окно с сообщением о том, что произошёл сбой
в работе программы. После нажатия ОК скрипт преспокойно
идёт себе дальше.

Получилось даже лучше, чем было раньше.

Конечно, экзотика - но вдруг кому эта информация и пригодится.
__________________
Счастливо, Алексей!
===AAA=== вне форума вставить имя Обратить внимание модератора на это сообщение  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > AutoCAD-2016 - как открыть файл из скрипта без диалогового окна ?

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

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

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу открыть файл с помощью Открыть частично в Акад 2016 Geolog_Toxa AutoCAD 2 19.09.2016 17:29
AutoCAD MEP 2013 Rus Как облегчить файл для чтения в Autocad 2007 Rus? Sh_C Вертикальные решения на базе AutoCAD 3 05.08.2013 10:52
Как открыть файл в AutoCAD Structural Detailing 2014 Andreyweb Вертикальные решения на базе AutoCAD 1 05.07.2013 12:27
AutoCAD 2009: перестала работать кнопка ОТКРЫТЬ ФАЙЛ, в место нее появляется что то вроде коммандной строки. Как нормально восстановить эту функцию jimaul AutoCAD 3 01.03.2012 13:39

|| Главная || Каталог САПР || Тендеры || Публикации || Объявления || Биржа труда || Download || Галерея ||
|| Библиотека || Кунсткамера || Каталог предприятий || Контакты || Файлообменник || Блоги ||