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



         

Функции Данных Примитива - часть 4


ОБРАТИТЕ ВНИМАНИЕ, чтобы восстановить значение по умолчанию цвета примитива или linetype, использовать acdbEntMod () чтобы установить цвет в 256, который является BYLAYER, или linetype к BYLAYER.

Следующий кодовый фрагмент отыскивает данные определения первого примитива в рисунке, и изменяет его свойство уровня к MYLAYER.

ads_name en;

struct resbuf *ed, *cb;

char *nl = "MYLAYER";

if (acdbEntNext(NULL, en) != RTNORM)

return BAD; // Error status

ed = acdbEntGet(en); // Retrieve entity data.

for (cb = ed; cb != NULL; cb = cb->rbnext)

if (cb->restype == 8) { // DXF code for Layer

// Check to make sure string buffer is long enough.

if (strlen(cb->resval.rstring) < (strlen(nl)))

// Allocate a new string buffer.

cb->resval.rstring = realloc(cb->resval.rstring,

strlen(nl) + 1);

strcpy(cb->resval.rstring, nl);

if (acdbEntMod(ed) != RTNORM) {

acutRelRb(ed);

return BAD; // Error

}

break; // From the for loop

}

acutRelRb(ed); // Release result buffer.

Управление памятью - ответственность ObjectARX-приложения.

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

ОБРАТИТЕ ВНИМАНИЕ, используете ли Вы acdbEntMod () чтобы изменить примитив на блочном определении, это воздействует на всю ВСТАВКУ или XREF к тому блоку; также, примитивы на блочных определениях не могут быть удалены acdbEntDel ().

Приложение может также добавлять примитив к базе данных рисунка,  вызывая acdbEntMake () функция. Подобно acdbEntMod (), параметр к acdbEntMake () - список буфера результата, чей формат подобен таковому списка, возвращенного acdbEntGet (). (AcdbEntMake () запрос игнорирует поле имени примитива [-1], если это присутствует.) новый примитив добавлен в конец к базе данных рисунка (это становится последним{*прошлым*} примитивом в рисунке). Если примитив - сложный примитив (ломаная линия или блок), это не добавлено в конец к базе данных, пока это не закончено.




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