Фильтрация для Расширенных Данных
Расширенные данные (xdata) - текстовые строки, числовые значения, трехмерные точки, расстояния, названия уровня, или другие данные, приложенные к объекту, типично внешним приложением.
Размер расширенных данных - байты 16КБ.
Вы можете отыскивать расширенные данные для специфического приложения, определяя его имя в списке фильтра, используя -3 код группы. AcedSSGet () функциональные примитивы возвращений с расширенными данными, зарегистрированными к указанному имени; acedSSGet () не отыскивает индивидуума, расширил элементы данных (с кодами группы в диапазоне 1000-2000).
Следующий типовой кодовый фрагмент выбирает все круги, которые расширили данные, зарегистрированные на приложение, чей ИДЕНТИФИКАТОР - “APPNAME”.
eb1.restype = 0; // Entity type
strcpy(sbuf1, "CIRCLE");
eb1.resval.rstring = sbuf1; // Circle
eb1.rbnext = &eb2;
eb2.restype = -3; // Extended data
eb2.rbnext = &eb3;
eb3.restype = 1001;
strcpy(sbuf2, "APPNAME");
eb3.resval.rstring = sbuf2; // APPNAME application
eb3.rbnext = NULL;
// Select circles with XDATA registered to APPNAME.
acedSSGet("X", NULL, NULL, &eb1, ssname1);
Если больше чем одно прикладное имя включены в список, acedSSGet () включает примитив в выбор, устанавливают только, если это расширило{*продлило*} данные для всех указанных приложений. Например, следующий код выбирает круги расширенными{*продленными*} данными, зарегистрированными к “APP1” и “APP2”.
eb1.restype = 0; // Entity type
strcpy(sbuf1, "CIRCLE");
eb1.resval.rstring = sbuf1; // Circle
eb1.rbnext = &eb2;
eb2.restype = -3; // Extended data
eb2.rbnext = &eb3;
eb3.restype = 1001;
strcpy(sbuf2, "APP1");
eb2.resval.rstring = sbuf2; // APP1 application
eb2.rbnext = &eb4;
eb4.restype = 1001; // Extended data
strcpy(sbuf3, "APP2");
eb4.resval.rstring = sbuf3; // APP2 application
eb4.rbnext = NULL;
// Select circles with XDATA registered to APP1 & APP2.
acedSSGet("X", NULL, NULL, &eb1, ssname1);
Вы можете определить прикладные названия, использующие строки подстановочных знаков, так что Вы можете искать данные множественных приложений в одно время. Например, следующий код выбирает все круги расширенными данными, зарегистрированными к “APP1” или “APP2” (или оба).
eb1.restype = 0; // Entity type
strcpy(sbuf1, "CIRCLE");
eb1.resval.rstring = sbuf1; // Circle
eb1.rbnext = &eb2;
eb2.restype = -3; // Extended data
eb2.rbnext = &eb3;
eb3.restype = 1001; // Extended data
strcpy(sbuf2, "APP1,APP2");
eb3.resval.rstring = sbuf2; // Application names
eb3.rbnext = NULL;
// Select circles with XDATA registered to APP1 or APP2.
acedSSGet("X", NULL, NULL, &eb1, ssname1);
Следующая строка находит расширенные данные того же самого приложения.
strcpy(sbuf2, "APP[12]");