Диалоговое окно Автокад.

Диалоговые окна являются важным компонентом любого приложения.

Диалоговые окна используют:

  • для отображения полезной информация,
  • для удобного ввода исходных данных,
  • для изменения настроек программы.

Создать диалоговое окно  Автокад, не прибегая к сторонним программам,  можно при помощи редактора Visual LISP. Для этого в редакторе Visual LISP используют язык DCL, который предназначен для программирования диалоговых окон.

Давайте для примера создадим диалоговое окно для более удобного ввода исходных данных прямого участка воздуховода.

Добавим в эту форму настройки программы – выбор формы сечения.

И в качестве полезной информации, при вводе исходных данных, покажем пользователю скорость движения воздуха.

В результате хотелось бы получить следующее диалоговое окно. См. Рис. 1.

Диалоговое окно  Автокад

Рис. 1. Диалоговое окно.

И так притупим:

Откройте Автокад.

Запустите редактор Visual LISP (наберите в командной строке VLIDE и нажмите <Enter>).

Нажмите на кнопку «Новый файл».

Затем на кнопку «Сохранить».

Откроется диалоговое окно «Сохранение файла». Найдите папку, в которой хотите сохранить файл (в моем случаи D:\MyLisp).

В строке Тип файла: выберите «Исходные DCL-файлы».

Задайте имя файла и нажмите на кнопку «Сохранить». См. Рис. 2.

Диалоговое окно  Автокад

Рис. 2. Создание DCL файла.

Директива описания диалога.

Программа, написанная на языке DCL, состоит из логических единиц – директив.

Программный код диалогового окна всегда начинается с директивы описания диалога.

В общем виде она имеет следующий вид:

<Name> : dialog { <атрибуты окна>;
    <поля>
}
<Name> —  это имя, по которому диалоговое окно из LISP программы 
вызывается на экран.
Далее следует «:», ключевое слово dialog, и фигурная открывающаяся скобка «{»

Параметр <атрибуты окна> представляет собой последовательность атрибутов и их значений. В общем виде это выглядит следующим образом:

<Атрибут> = <значение>;

После атрибута и его значения ставиться «;»

Параметр <поля> является набором директив описание полей (текстового поля, редактируемого текстового поля, раскрывающегося списка, кнопок)

Директива описания диалога заканчивается закрывающей фигурной скобкой «}».

Давайте дадим имя диалогу:

pr_uch

Добавим атрибут:

label = "Прямой участок" ;

— начальный заголовок диалогового окна;

Добавим директиву описания поля кнопок:

ok_cancel;

— директива  которая является ссылкой на группу кнопок (ОК и Отмена), описанную в базовом файле AutoCAD “base.dcl

В результате получим. См. Рис. 3.

Диалоговое окно  Автокад

Рис. 3. Директива описания диалога.

Просмотр диалогового окна.

Чтобы посмотреть, как выглядит диалоговое окно, в главном меню выбираем  «Сервис», далее переводим указатель мыши на «Инструменты интерфейса» и щелкаем на «Просмотр DCL из редактора».

См. Рис. 4.

Диалоговое окно  Автокад

Рис. 4. Просмотр DCL из редактора.

Появится окно «Введите имя диалогового окна» см. Рис. 5.

Диалоговое окно  Автокад

Рис. 5.  Введите имя диалогового окна.

Нажимаем «ОК» и в рабочем окне AutoCAD появится диалоговое окно.

Что делать если диалоговое окно DCL не отображается?

Директивы описание полей.

Радиоколонка.

Далее добавим директиву описание радиоколонки (колонка переключателей):

:radio_column {label = "Выберите форму сечения"; key = "rc_S";
              }
: - директива начинается с двоеточия;
radio_column – ключевое слово директивы радиоколонки;
Атрибуты:
label = "Выберите форму сечения"; - заголовок радиоколонки;
key = "rc_S"; - код поля, по которому к полю можно будет обратится
из программ LISP.

См. Рис. 6.

Диалоговое окно  Автокад

Рис. 6. Директиву описания радиоколонки.

Радиокнопки.

Далее добавим два элемента внутрь радиоколонки:

Для круглого сечения:

:radio_button {label = "Круглый";
               key = "rb_K";
               value = "1";
              }
: - директива начинается с двоеточия;
radio_button – ключевое слово директивы радиокнопка;
Атрибуты:
label = "Круглый"; - заголовок радиокнопки;
key = "rb_K"; - код поля, по которому к кнопке можно будет обратится 
из программ LISP;
value = "1"; - соответствует включенной радиокнопке ( “0” – выключенной).

Для прямоугольного сечения:

:radio_button {label = "Прямоугольный";
               key = "rb_P";
               value = "0";
              }
: - директива начинается с двоеточия;
radio_button – ключевое слово директивы радиокнопка;
Атрибуты:
label = "Прямоугольный"; - заголовок радиокнопки;
key = "rb_Р"; - код поля, по которому к полю можно будет обратится 
из программ LISP;
value = "0"; - соответствует выключенной радиокнопке ( “1” – включенной).
См. Рис. 7.
Диалоговое окно  Автокад

Рис. 7. Директивы описания радиокнопок.

Добавим следующие директивы:

Текстовое поле:

:text {value = "Введите расход и размер сечения";
       key = "t1";
      }
: - директива начинается с двоеточия;
text – ключевое слово директивы текстовое поле;
Атрибуты:
value = "Введите расход и размер сечения"; - начальное значение текстового поля;
key = "t1"; - код поля, по которому к полю можно будет обратится из программ LISP.

Редактируемое текстовое поле:

:edit_box {label = "Расход  м3/ч:";
           key = "eb_L";
           edit_width=15;
           value = "150";
          }
: - директива начинается с двоеточия;
edit_box – ключевое слово директивы редактируемое текстовое поле;
Атрибуты:
label = "Расход  м3/ч:"; - заголовок редактируемого текстового поля;
key = "eb_L"; - код поля, по которому к полю можно будет обратится 
из программ LISP.
edit_width=15; - ширина редактируемого текстового поля;
value = "150"; - начальное значение редактируемого текстового поля;

Раскрывающийся список:

:popup_list{label="Сечение  мм:";
            key="pop1";
            list="100" "\n125";
            edit_width=15;
           }
: - директива начинается с двоеточия;
popup_list – ключевое слово директивы раскрывающийся список;
Атрибуты:
label="Сечение  мм:"; - заголовок раскрывающегося списка;
key = "pop1"; - код поля, по которому к полю можно будет обратится 
из программ LISP;
list="100" "\n125";- начальный список значение раскрывающегося списка;
edit_width=15; - ширина раскрывающегося списка.

И снова редактируемое текстовое поле:

:edit_box {label = "Скорость м3/ч:";
           key = "eb_V";
           edit_width=15;
           value = "0";
          }
: - директива начинается с двоеточия;
edit_box – ключевое слово директивы редактируемое текстовое поле;
Атрибуты:
label = "Скорость м3/ч:"; - заголовок редактируемого текстового поля;
key = "eb_V"; - код поля, по которому к полю можно будет обратится 
из программ LISP.
edit_width=15; - ширина редактируемого текстового поля;
value = "0"; - начальное значение редактируемого текстового поля;

См.Рис. 8.

Диалоговое окно  Автокад

Рис. 8 . Директивы описание полей.

Директива пустой строки.

Что проще было ориентироваться в нашем диалоговом окне, давайте добавим директивы пустой строки:

: spacer{height=1;} – директива вставки пустой строки.
: - директива начинается с двоеточия;
spacer – ключевое слово директивы пустая строка;
height=1; - атрибут задает высоту пустой строки.

См.Рис. 9.

Диалоговое окно  Автокад

Рис. 9. Окончательный вариант программы.

В результате наше диалоговое окно создано. Осталось научиться запускать и управлять им из LISP программы. Как это делать мы рассмотрим в следующей статье: «Пример LISP программы управления диалоговым окном в Автокад.»

Если у Вас появились вопросы, задавайте их в комментариях.

Если Вы нашли что-то полезное на моем сайте не забудьте порекомендовать статью в социальных сетях.

Пишите в комментариях или мне на почту Ваши пожелания о том, какие статьи Вы хотели бы увидеть на моем сайте.

Хотите получать информацию о выходе новых статей. Оформляйте подписку.

До новых встреч.

«Автор: Михаил Орлов»

Также на эту тему Вы можете почитать:

11 комментарии на “Диалоговое окно Автокад.

  1. Юрий 07.03.2016 09:53

    Сколько лазил по Инету, искал описание работы с диал. окнами АКАДа, а оно тут расписано до уровня атомов. Очень Вам, Михаил Орлов, признателен. К тому же программировать для DCL-окон, как оказалось, проще простого. Большое спасибо за описание.

    • Михаил Орлов 07.03.2016 10:15

      Спасибо. Рад, моя статья Вам помогла.

  2. Надежда 20.09.2016 19:03

    спасибо за урок!
    Вроде все понятно. Копировала строки.
    Но после окна «Введите имя диалогового окна» ввожу pr_uch и в Автокаде
    выдается ошибка Ошибка в файле диалога C:\…. в признаке конца файла: преждевременный конец файла.

  3. Игорь 04.02.2017 20:06

    Огромное спасибо Вам Михаил за уроки для чайников ,первый раз в жизни начал что-то программировать ,разобрался как добавить асортимент сечений воздуховодов,только почему-то при выборе прямоугольных исчезает все и приходится по новой редактор вызывать ,Автокад 2017 честная лицензия,вроде все без ошибок

    • Михаил Орлов 05.02.2017 18:47

      Пришлите Ваш DCL-файл на почту: acadprog@gmail.com
      Я проверю, его у себя.

      • Игорь 06.02.2017 20:06

        Разобрался Михаил ,программа то получается незаконченная ,а я поспешил с выводами,еще раз огромное спасибо,уже учу следующий ваш урок

  4. Виталий 15.08.2019 04:54

    Михаил, есть ли у вас уроки по ActiveX?

  5. Василий 23.01.2021 20:59

    Спасибо большое!

Оставить комментарий

Ваш mail не будет опубликован.

Вы можете использовать HTML теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>