Рассмотрим следующую ситуацию. В начале работы над чертежом была использована команда scr программы Format, в результате чего в пространстве модели организовано поле чертежа. Независимо от того, какие действия выполнялись оператором в течение сеанса, в чертеже уже присутствуют типы линий Acad_ISO02w100 и Acad_ISO04w100 и несколько слоев. При переходе в пространство бумаги и программном вызове необходимого формата происходит повторная загрузка тех же типов линий и слоев. При выполнении команды linetype Автокад сообщает, что соответствующий тип линий уже загружен, и запрашивает оператора, следует ли произвести перезагрузку. Этот запрос останавливает работу программы и все последующие запрограммированные действия приходится производить вручную.
Подобная ситуация может возникнуть при запуске программ, написанных пользователями с целью автоматизации изображения часто включаемых в чертежи деталей и узлов. Поэтому проверка наличия в базе данных загружаемых элементов является необходимой.
Целый ряд параметров чертежа (например список слоев) хранится в виде таблиц. Для обработки таких таблиц используются функции tblnext и tblsearch. Обработке могут подвергаться таблицы с именами “АРРID”, “BLOCK”, “DIMSTYLE”, LAYER”, “LTYPE”, “STYLE”, “USC”, “VEW”, “VPORT”. Регистр записи имен не играет роли.
(tbInext имя_таблицы [символ]). Функция возвращает параметры первого элемента таблицы. Повторный вызов функции возвращает параметры следующего элемента и так далее. Выведенные параметры представляют собой присущий этому элементу список DXF-кодов и их значений. Параметр символ, если он присутствует и отличен от nil, влечет за собой возврат к первому элементу таблицы. Если же функция вызывается после tblsearch, то механизм ее действия несколько отличен от описанного (см. ниже). Выражение
(tblnext “block”)
может возвратить, например,
( (0 . “BLOCK”)
(2 . “L6”)
(70.2)
(10 0.0 0.0 0.0)
(-2 . )
).
(tblsearch имя_таблицы имя_элемента [символ]). Функция отыскивает нужный элемент таблицы и возвращает его параметры. Например,
(tblsearch “block” “L6”)
возвратит тот же список, что и в предыдущем примере.
Аргумент символ закрепляет этот символ за искомым элементом:
(tblsearch “block” “L3” 6)
возвратит, например,
( (0 . “BLOCK”)
(2 . “L3”)
(70. 2)
(10 0.0 0.0 0.0 0.0)