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



         

Поиск расширенных данных


Приложение может получить зарегистрированные расширенные данные,  вызывая acdbEntGetX () функция, которая является подобной acdbEntGet (). В то время как acdbEntGet () возвращает только данные определения, acdbEntGetX () возвращает оба

Данные определения и расширенные данные для приложений это запрашивают. Это требует дополнительного параметра, приложений, который определяет прикладные названия  (это отличается от AutoLISP, в котором (entget) функция была расширена на ввод необязательный параметр, который определяет прикладные названия).

Названия прошли к acdbEntGetX () должен соответствовать приложениям, зарегистрированным предыдущим запросом к acdbRegApp (); они могут также содержать групповые символы. Если параметр приложений - указатель NULL, запрос к acdbEntGetX () идентичен acdbEntGet () запрос.

Следующий типовой кодовый фрагмент показывает типичной последовательности для восстановления{*поиска*} расширенных{*продленных*} данных для двух указанных приложений. Обратите внимание, что параметр приложений передает прикладные названия в связанных буферах результатов.

static struct resbuf appname2 = {NULL, RTSTR},

appname1 = {&appname2, RTSTR},

*working_ent;

strsave(appname1.rstring, "MY_APP_1");

strsave(appname2.rstring, "SOMETHING_ELSE");

.

.

.

// Only extended data from "MY_APP_1" and

// "SOMETHING_ELSE" are retrieved:

working_ent = acdbEntGetX(&work_ent_addr, &appname1);

if (working_ent == NULL) {

// Gracefully handle this failure.

.

.

.

}

// Update working entity groups.

status = acdbEntMod(working_ent);

// Only extended data from registered applications still in the

// working_ent list are modified.

Как типовые показы кода, расширенные данные, отысканные acdbEntGetX() функция может изменяться последующим запросом к acdbEntMod (), также, как acdbEntMod () используется, чтобы изменить нормальные данные определения. (Расширенные данные могут также быть созданы,  определяя, это в списке примитива прошло к acdbEntMake ()).

При возвращении расширенных данных только определенно требуемые приложения защищают одно приложение от повреждения данных другого приложения. Это также управляет объемом памяти что прикладные использования, и упрощает расширенную обработку данных, которую приложение исполняет.

ОБРАТИТЕ ВНИМАНИЕ, поскольку строки прошли с приложениями, может включать групповые символы, прикладное имя “*” заставит acdbEntGetX () возвращать все расширенные данные, приложенные примитиву.




Содержание  Назад  Вперед