Как выбрать несколько точек до нажатия Enter

Автор Тема: Как выбрать несколько точек до нажатия Enter  (Прочитано 6713 раз)

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

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

Оффлайн EseАвтор темы

  • ADN OPEN
  • Сообщений: 22
  • Карма: 2
Добрый день!
Как в команде реализовать цикл для выбора точек GetPonit(), завершающийся нажатием клавиши Enter?
Если напишите код буду очень благодарен.

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Обернуть в while и выполнять пока PromptPointResult == Ok

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Как-то так:
Код - C# [Выбрать]
  1. var points = new List<Point3d>();
  2. while (true)
  3. {
  4.     var r = ed.GetPoint("\nPick point");
  5.     if (r.Status == PromptStatus.OK)
  6.         points.Add(r.Value);
  7.     else
  8.         break;
  9. }

Конечно могут быть другие статусы, в зависимости от задачи, которые нужно по своему обрабатывать

Оффлайн avc

  • ADN Club
  • *****
  • Сообщений: 822
  • Карма: 166
    • Мои плагины к Автокаду
Только это будет работать до нажатия ESC

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Только это будет работать до нажатия ESC
Там можно сделать так, чтобы работало и до нажатия Enter

Отмечено как Решение Александр Ривилис 26-10-2020, 15:33:47

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Только это будет работать до нажатия ESC
Там можно сделать так, чтобы работало и до нажатия Enter
Код - C# [Выбрать]
  1. var points = new List<Point3d>();
  2. while (true)
  3. {
  4.   var po = new PromptPointOptions("\nPick point") { AllowNone = true };
  5.   var r = ed.GetPoint(po);
  6.   if (r.Status == PromptStatus.OK)
  7.     points.Add(r.Value);
  8.   else if (r.Status == PromptStatus.Cancel) {
  9.     points.Clear();
  10.     break;
  11.   } else
  12.     break;
  13. }
P.S.: Интересно, что в ObjectARX фактически AllowNone = true по умолчанию и его не нужно задавать.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн EseАвтор темы

  • ADN OPEN
  • Сообщений: 22
  • Карма: 2
Всем спасибо. Я имел в виду то что у Александра Ривилиса, поторопился с отметкой решения