ObjectARX, AutoCAD. Среда программирования библиотеки C++

         

Входные Опции для Функций Ввода пользователя


Следующая таблица суммирует служебные биты, которые могут быть определены val параметром. Чтобы устанавливать больше чем одно условие одновременно, добавьте значения вместе, чтобы создать значение val между 0 и 127. Если val установлен на нуль, ни один из условий контроля не обращается к следующему запросу функции ввода пользователя.

ОБРАТИТЕ ВНИМАНИЕ На будущие версии AutoCAD, или ObjectARX может определять дополнительный acedInitGet () служебные биты, так что Вы должны избежать устанавливать любые биты, что не показывается в таблице или описано в этой секции.

Входные опции, установленные acedInitGet ()

Код

 Бит

 Описание Значения

RSG_NONULL

 1



 Отвергают нулевой{*пустой*} ввод

RSG_NOZERO

 2

 Отвергают нулевые значения

RSG_NONEG

 4

 Отвергают отрицательные значения

RSG_NOLIM

 8

 Не проверяют пределы рисунка, даже если LIMCHECK включен

RSG_DASH

 32

 Пунктирные линии Использования при рисунке резиновой полосы выравнивают или поле

RSG_2D

 64

 Игнорируют координату Z трехмерных точек (acedGetDist () только)

RSG_OTHER

 128

 Позволяют произвольный ввод — вводит ли пользователь

Следующая выборка программы показывает использование acedInitGet() чтобы основать запрос к acedGetInt () функция.

int age;

acedInitGet(RSG_NONULL | RSG_NOZERO | RSG_NONEG, NULL);

acedGetInt("How old are you? ", &age);

Эта последовательность спрашивает возраст пользователя. AutoCAD автоматически отображает сообщение об ошибках и повторяет подсказку, если пользователь пробует вводить отрицательное или нулевое значение, нажмите ENTER только, или введите ключевое слово. (Сам AutoCAD отклоняет попытки ввести значение, которое - не целое число.)

Опция RSG_OTHER позволяет следующему запросу функции ввода пользователя принять произвольный ввод. Если RSG_OTHER установлен, и пользователь вводит непризнанное значение, acedGetxxx () функциональные возвращения RTKWORD, и ввод могут быть восстановлены{*отысканы*} запросом к acedGetInput (). Поскольку конечный пользователь пространств{*пробелов*} вводит также, как ВВОДЯТ, делает, произвольный ввод никогда не содержит пространство{*пробел*}. Опция RSG_OTHER имеет самый низкий приоритет всех опций, перечисленных в предшествующей таблице; если acedInitGet () запрос отверг отрицательные числа{*номера*} с RSG_NONEG, например, AutoCAD все еще отклоняет их.


Следующий код позволяет произвольный ввод (проверка ошибок минимальна).

int age, rc;

char userstring[511];

acedInitGet(RSG_NONULL | RSG_NOZERO | RSG_NONEG | RSG_OTHER, "Mine Yours");

if ((rc = acedGetInt("How old are you? ", &age)) == RTKWORD) {

// Keyword or arbitrary input

acedGetInput(userstring);

}

В этом примере, acedGetInt () возвращает значения, показанные в следующей таблице, в зависимости от ввода пользователя.

Произвольный ввод пользователя

 Ввода пользователя

Результат

41

 AcedGetInt () возвращает RTNORM и устанавливает возраст в 41

m

 AcedGetInt () возвращает RTKWORD, и acedGetInput () возвращает “Источник”

y

 AcedGetInt () возвращает RTKWORD, и acedGetInput () “Ваши” возвращения

Двадцать

 AcedGetInt () возвращает RTKWORD, и acedGetInput () возвращается “двадцать”

Какой???

 AcedGetInt () возвращает RTKWORD, и acedGetInput () возвращения “ какой??? ”

-10

 AutoCAD отклоняет этот ввод и восстанавливает изображение подсказки, поскольку RSG_NONEG установлен (другие разрядные коды имеют приоритет по RSG_OTHER)

-34.5

 AcedGetInt () возвращает RTKWORD, и acedGetInput () возвращается ", “-34.5" AutoCAD не отклоняет это значение, потому что это ожидает целое число, не реальное значение (если бы бы это было acedGetReal () запрос, AutoCAD принял бы отрицательное целое число как произвольный ввод, но отклонил бы отрицательное реальное значение)

ОБРАТИТЕ ВНИМАНИЕ На acedDragGen () функция указала бы произвольный ввод (если этому позволил предшествующий acedInitGet () запрос) возвращая RTSTR вместо RTKWORD.


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