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

Таблицы идентификаторов


Имена, используемые в записях таблицы идентификаторов и в словарях должны следовать за этими правилами:

§         Имена может быть любая длина в ObjectARX, но имена символа, введенные пользователями в AutoCAD ограничены 255 символами.

§         AutoCAD сохраняет регистр имен, но не использует регистр на сравнениях. Например, AutoCAD полагает ", что “этаж" будет тем же самым символом как “ЭТАЖ”.

§         Имена может быть составлен из всех символов, позволенных в именах файла Windows NT, кроме запятой (,), backquote (‘), точка с запятой (;), и знак "=" (=).

База данных AutoCAD содержит следующие таблицы идентификаторов (в круглых скобках -  имя класса и команда AutoCAD, используемая для добавления входов):

§         N Таблица блоков (AcDbBlockTable; BLOCK)

§         N таблица Уровня (AcDbLayerTable; LAYER)

§         N Текстовая таблица стиля (AcDbTextStyleTable; STYLE)

§         N Linetype таблица (AcDbLinetypeTable; LTYPE)

§         N таблица Представления{*вида*} (AcDbViewTable; VIEW)

§         N

таблица ВЕРХНИХ РЕГИСТРОВ (AcDbUCSTable; UCS)

§         N



таблица Области просмотра (AcDbViewportTable; VPORT)

§         N таблица приложений Registered (AcDbRegAppTable)

§         N

таблица стилей Измерения (AcDbDimStyleTable; DIMSTYLE)

Каждая таблица содержит объекты соответствующего подкласса AcDbSymbolTableRecord.

Каждый класс таблицы идентификаторов обеспечивает getAt () функцией для поиска записи, указанной по имени. Сигнатуры для перезагруженных форм getAt () функция следующие. (##BASE_NAME## Замещает любой из девяти типов класса таблицы идентификаторов.)


Acad::ErrorStatus
AcDb##BASE_NAME##Table::getAt(const char* pEntryName,
AcDb::OpenMode mode,
AcDb##BASE_NAME##TableRecord*&
pRecord,
Adesk::Boolean openErasedRecord =
Adesk::kFalse) const;
или
Acad::ErrorStatus
AcDb##BASE_NAME##Table::getAt(const char* pEntryName,
AcDbObjectId& recordId,
Adesk::Boolean getErasedRecord =
Adesk::kFalse) const;
Эта первая версия этой функции возвращает указатель на открытую запись в pRecord, если запись соответствия найдена, и операция открытия (с указанным режимом) преуспевает. Если openErasedRecord - kTrue, функция возвращает объект, даже если это было стерто. Если openErasedRecord - kFalse, функция возвращает указатель NULL и состояние ошибки eWasErased для стертых объектов.
Вторая версия getAt () функция возвращает AcDbObjectId записи, указанной по имени в значении recordId, если запись соответствия найдена.
Если getErasedRecord - kTrue, функция возвращает объект соответствия, даже если это было стерто. Объект не открыт.
Как только Вы получили запись и открыли это, Вы можете получить и устанавливать различные значения члена. Для определенного класса записи таблицы идентификаторов для законченного списка компонентных функций класса, см. ObjectARX Ссылку.
Другие важные функции, обеспеченные всеми классами таблицы идентификаторов -, has() и add() функции. См. пример в “ Создание и Изменение Записи Таблицы Уровня ” на странице 150.
Сигнатура для has()
Adesk::Boolean
AcDb##BASE_NAME##Table::has(const char* pName) const;
has() возвращает kTrue, если таблица содержит запись с именем, которое соответствует pName.
add() имеет следующие сигнатуры:
Acad::ErrorStatus
AcDb##BASE_NAME##Table::add(AcDb##BASE_NAME##TableRecord*
pRecord);
Acad::ErrorStatus
AcDb##BASE_NAME##Table::add(AcDbObjectId& recordId,
AcDb##BASE_NAME##TableRecord*
pRecord);
Эта функция добавляет запись, указанную pRecord, и к базе данных, содержащей таблицу и таблицу непосредственно. Если добавления преуспевают, и параметр pId - не-NULL, это установлено в AcDbObjectId записи в базе данных.

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