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

       

Фильтрация для Расширенных Данных


Расширенные данные (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]");


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