Группы пользователей Autodesk

Описание диалогового окна с помощью DCL


Создание проекта и добавление элементов интерфейса

 

Создание проекта и добавление элементов интерфейса 
 

Описание диалогового окна с помощью DCL



Сначала определим, какое окно нужно создать.

Диалоговое окно должно содержать следующие элементы:

  • Два переключателя.
  • Один переключатель управляет типом полилинии, образующей границу; другой задает метод создания плиток (ActiveX, entmake или command). Каждый из переключателей в определенный момент времени может быть установлен только в одно из положений.

  • Текстовые поля для задания радиуса плиток и расстояния между ними.
  • Стандартные кнопки «OK» и «Cancel».
  • Компоненты диалогового окна называются его элементами. Полное описание диалогового окна в файле DCL вначале может казаться трудной задачей. Поэтому нужно составить общую схему того, что необходимо включить в диалоговое окно, а затем разбить ее на несколько частей и описать каждую часть отдельно.

    Для описания диалогового окна

  • Откройте новый файл в текстовом редакторе VLISP.
  • В новом файле введите следующее выражение:
  • label = "Garden Path Tile Specifications";

    Это выражение DCL описывает заголовок диалогового окна.

  • Опишите с помощью следующего кода положения переключателя, используемые для задания типа полилинии:
  • : boxed_radio_column { // определяет положение кнопки-переключателя

    label = "Outline Polyline Type";

    : radio_button { // определяет компактную кнопку-переключатель

    label = "&Lightweight";

    key = "gp_lw";

    value = "1";

    }

    : radio_button { // определяет кнопку-переключатель полилинии старого формата

    label = "&Old-style";

    key = "gp_hw";

    }

    }

    DCL-директива boxed_radio_column описывает границу группы переключателя и позволяет указать его имя. Внутри границы отдельные положения переключателя задаются директивами radio_button. Для каждого положения переключателя необходимо задать имя и ключ. Ключ - это имя, по которому идентифицируется положение переключателя внутри AutoLISP .


    Обратите внимание, что положению переключателя «lightweight» (компактная полилиния) присвоено значение 1. Значение 1 (это строка, а не целое число) указывает, что данное положение должно быть активным по умолчанию. Другими словами, при появлении диалогового окна на экране в переключателе устанавливается выбранным именно этот вариант. Следует также запомнить, что в DCL-файлах символами комментариев являются две косых черты, а не точка с запятой, как в программах AutoLISP.
  • Опишите с помощью следующего кода переключатель, используемый для задания метода создания объектов:

  • : boxed_radio_column { // определяет положение кнопки-переключателя
    label = "Tile Creation Method";
    : radio_button { // определяет кнопку-переключатель ActiveX
    label = "&ActiveX Automation";
    key = "gp_actx";
    value = "1";
    }
    : radio_button { // определяет кнопку-переключатель (функции entmake)
    label = "&Entmake";
    key = "gp_emake";
    }
    : radio_button { // определяет кнопку-переключатель (команды)
    label = "&Command";
    key = "gp_cmd";
    }
    }
  • Для описания текстовых полей, в которых будет задаваться размер плиток и расстояния между ними, добавьте следующий код:

  • : edit_box { // определяет окно редактирования "Радиус плитки"
    label = "&Radius of tile";
    key = "gp_trad";
    edit_width = 6;
    }
    : edit_box { // определяет окно редактирования "Расстояние между плитками"
    label = "S&pacing between tiles";
    key = "gp_spac";
    edit_width = 6;
    }
    Обратим внимание, что текстовым полям не присваивается никакого исходного значения. Значение по умолчанию для каждого текстового поля задаются из AutoLISP-программы.
  • Добавьте следующий код для кнопок «OK» и «Cancel»:

  • : row { // определяет кнопки "OK"/"Отмена"
    : spacer { width = 1; }
    : button { // определяет кнопку "OK"
    label = "OK";
    is_default = true;
    key = "accept";
    width = 8;
    fixed_width = true;
    }
    : button { // определяет кнопку "Отмена"
    label = "Cancel";
    is_cancel = true;
    key = "cancel";
    width = 8;
    fixed_width = true;
    }
    : spacer { width = 1;}
    }
    Обе кнопки описаны внутри одного ряда, поэтому они устанавливаются по одной горизонтальной линии.
  • Установите курсор в верхней части окна текстового редактора и вставьте первой строкой следующее выражение:

  • gp_mainDialog : dialog {
  • Директива dialog требует закрывающей фигурной скобки. Поэтому поместите курсор в конец файла и вставьте закрывающую фигурную скобку последней строкой DCL-кода:

  • }
     

    Содержание раздела