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



         

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


ОБРАТИТЕ ВНИМАНИЕ На printdxf () функция печатает вывод в формате ассоциативного списка AutoLISP, но элементы сохранены в списке связей буферов результатов.

Буфер результатов в начале списка (с -1 кодом стража) содержит имя примитива, который этот список представляет. AcdbEntMod () функциональные использования это, чтобы идентифицировать примитив, который нужно изменить.

Коды для компонентов примитива (сохраненный в restype поле) - используемые DXF. Как с DXF, элементы заголовка примитива возвращены только, если они имеют значения другие чем значение по умолчанию. В отличие от DXF, необязательные поля определения примитива возвращены независимо от того, равняются ли они их значениям по умолчанию. Это упрощает обработку; приложение может всегда предполагать, что эти поля присутствуют. Также в отличие от DXF, связанного X, Y, и координат Z возвращены как одиночная переменная точки (resval.rpoint), не как отдельный X (10), Y (20), и Z (30) групп. Значение restype содержит номер группы координаты X (в диапазоне 10-19).

Чтобы находить группу с определенным кодом, приложение может пересекать список. Entitem () функция, показанная здесь ищет список буфера результата группу указанного типа.

static struct resbuf *entitem(rchain, gcode)

struct resbuf *rchain;

int gcode;

{

while ((rchain != NULL) && (rchain->restype != gcode))

rchain = rchain->rbnext;

return rchain;

}

Если код группы DXF, указанный gcode параметром - не подарок{*настоящее*} в списке (или если gcode - не,  правильная{*допустимая*} группа DXF), entitem () “ уменьшается конец ” и возвращает NULL. Обратите внимание, что entitem () эквивалентен функции AutoLISP (assoc).

AcdbEntMod () функция изменяет примитив. Это передает список, который имеет тот же самый формат как список, возвращенный acdbEntGet (), но с некоторыми из значений группы примитива (возможно) изменяемых приложением. Эти функциональные дополнения acdbEntGet (); первичные средства,  которыми ObjectARX-приложение модифицирует базу данных - восстанавливая{*отыскивая*} примитив с acdbEntGet (), изменяя его список примитива, и затем пропуская список назад к базе данных с acdbEntMod ().




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