Сообщество программистов Autodesk в СНГ

ADN Club => Организация проектирования => Тема начата: pavka_97 от 07-10-2020, 10:39:06

Название: Как остановить команду scr файла
Отправлено: pavka_97 от 07-10-2020, 10:39:06
Код - C# [Выбрать]
  1. double d1 = new double();
  2.             PromptStringOptions pStrOpts01 = new PromptStringOptions("\nEnter test1: ");
  3.             PromptResult pStrRes01 = doc.Editor.GetString(pStrOpts01);
  4.             if (pStrRes01.Status != PromptStatus.OK) return;
  5.             if (double.TryParse(pStrRes01.StringResult, out d1 ) == false) return;
  6.             if (d1 <= 0) return;
  7.  
  8.             double d2 = new double();
  9.             PromptStringOptions pStrOpts02 = new PromptStringOptions("\nEnter test2: ");
  10.             PromptResult pStrRes02 = doc.Editor.GetString(pStrOpts02);
  11.             if (pStrRes02.Status != PromptStatus.OK) return;
  12.             if (double.TryParse(pStrRes02.StringResult, out d2) == false) return;
  13.             if (d2 <= 0) return;
  14.  

Соответственно при первом "неудачном" вводе программа останавливается, но по "инерции"  в командную строку попадает и 2й ввод. Как избежать второго ввода?
Название: Re: Как остановить команду scr файла
Отправлено: Александр Ривилис от 07-10-2020, 11:55:23
Соответственно при первом "неудачном" вводе программа останавливается, но по "инерции"  в командную строку попадает и 2й ввод. Как избежать второго ввода?
1. При чем здесь scr-файл?
2. Второй ввод не может попадать при "неудачном" вводе. Или что ты понимаешь под неудачным вводом?
3. Почему вопрос в этом разделе, а не в .NET?
Название: Re: Как остановить команду scr файла
Отправлено: pavka_97 от 07-10-2020, 12:17:42
При чем здесь scr-файл?
Потому что я использую именно этот сценарий  в работе.
Допустим scr файл:
_FILEDIA
0
_SECURELOAD
0
_CMDDIA
0
_REPORTERROR
0
_NETLOAD
d:\cod\test.dll
mytestcommand
; здесь не double,выходим, но захватывает нижнее 333
notdouble
333

Второй ввод не может попадать при "неудачном" вводе. Или что ты понимаешь под неудачным вводом?
"Неудачный" ввод в данном конкретном случае это строка - notdouble,  а не double.
Но в командной строке, тем не менее:

Enter test1: notdouble

Command: 333
Unknown command "333".  Press F1 for help.

Почему вопрос в этом разделе, а не в .NET?
Потому что, я думаю что это особенность команды script (может ассинхронность какая то тут?) , а не NET.API
Название: Re: Как остановить команду scr файла
Отправлено: Александр Ривилис от 07-10-2020, 13:18:51
Но в командной строке, тем не менее:

Enter test1: notdouble

Command: 333
Unknown command "333".  Press F1 for help.
Так и должно быть. Ты вышел из команды mytestcommand, но в scr-файле у тебя дальше 333 - вот они и воспринимаются как следующая команда.
Название: Re: Как остановить команду scr файла
Отправлено: pavka_97 от 07-10-2020, 13:28:48
В этом и вопрос. Как прервать выполнение scr файла после notdouble, чтобы в комстроку не передавалось дальше 333?
Название: Re: Как остановить команду scr файла
Отправлено: Александр Ривилис от 07-10-2020, 13:34:28
В этом и вопрос. Как прервать выполнение scr файла после notdouble, чтобы в комстроку не передавалось дальше 333?

Вообще-то никак. Можешь попытаться отправить в командную строку ^C^C для прерывания команды, но шансы небольшие.
А если 333 в принципе должно обрабаватыся тоже в mytestcommand в случае успешного ввода первого значения, то не выходи из команды даже если ввод некорректный, а "съедай" и второй ввод тоже.
Название: Re: Как остановить команду scr файла
Отправлено: pavka_97 от 07-10-2020, 14:03:13
Вариант с ed.Command("^C^C") вываливается исключение.

Вариант c doc.SendStringToExecute("^C^C ", true, false, false);
В ком строке :
Enter BACKSPACE to interrupt script.
Command: 333 Unknown command "333".  Press F1 for help.

С "проглатыванием" всех команд  вариант. но придется алгоритм доступа перестроить в контексте моей программы.Спасибо.


Название: Re: Как остановить команду scr файла
Отправлено: Александр Ривилис от 07-10-2020, 14:07:24
Вариант c doc.SendStringToExecute("^C^C ", true, false, false);
В ком строке :
Enter BACKSPACE to interrupt script.
Command: 333 Unknown command "333".  Press F1 for help.
Попробуй:
Код - C# [Выбрать]
  1. doc.SendStringToExecute("\003\003", true, false, false);
или
Код - C# [Выбрать]
  1. doc.SendStringToExecute("\003\003 ", true, false, false);
Название: Re: Как остановить команду scr файла
Отправлено: pavka_97 от 07-10-2020, 14:15:02
Оба мимо. eInvalidInput
Название: Re: Как остановить команду scr файла
Отправлено: Александр Ривилис от 07-10-2020, 14:37:36
Осталось попробовать:
Код - C# [Выбрать]
  1. doc.SendStringToExecute("\x1B\x1B", true, false, false);
Название: Re: Как остановить команду scr файла
Отправлено: pavka_97 от 07-10-2020, 14:49:26
Увы. Enter BACKSPACE to interrupt script и  выскакивает следующая команда.
Название: Re: Как остановить команду scr файла
Отправлено: Александр Ривилис от 07-10-2020, 14:52:39
Увы. Enter BACKSPACE to interrupt script и  выскакивает следующая команда.
Ну можно еще попробовать через Windows API послать BACKSPACE. Но я не вижу смысла. Нужно менять логику программы.