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



         

Функции Имени Примитива - часть 2


Ads_name ss, e1, e2;

// Set e1 to the name of first entity.

if (acdbEntNext(NULL, e1) != RTNORM) {

acdbFail("No entities in drawing\n");

return BAD;

}

// Set ss to a null selection set.

acedSSAdd(NULL, NULL, ss);

// Return the selection set ss with entity name e1 added.

if (acedSSAdd(e1, ss, ss) != RTNORM) {

acdbFail("Unable to add entity to selection set\n");

return BAD;

}

// Get the entity following e1.

if (acdbEntNext(e1, e2) != RTNORM) {

acdbFail("Not enough entities in drawing\n");

return BAD;

}

// Add e2 to selection set ss

if (acedSSAdd(e2, ss, ss) != RTNORM) {

acdbFail("Unable to add entity to selection set\n");

return BAD;

}

Следующий типовой кодовый фрагмент использует acdbEntNext () чтобы “идти” через базу данных, один примитив одновременно.

ads_name ent0, ent1;

struct resbuf *entdata;

if (acdbEntNext(NULL, ent0) != RTNORM) {

acdbFail("Drawing is empty\n");

return BAD;

}

do {

// Get entity’s definition data.

entdata = acdbEntGet(ent0);

if (entdata == NULL) {

acdbFail("Failed to get entity\n");

return BAD;

}

.

. // Process new entity.

.

if (acedUsrBrk() == TRUE) {

acdbFail("User break\n");

return BAD;

}

acutRelRb(entdata); // Release the list.

ads_name_set(ent0, ent1); // Bump the name.

} while (acdbEntNext(ent1, ent0) == RTNORM);

ПРИМЕЧАНИЕ Вы можете также пройти базу данных,  “наталкиваясь” одиночная переменная в acdbEntNext () запрос (типа acdbEntNext (ent0, ent0)), но если Вы делаете, значение переменной,  больше не определено однажды цикл концы.

AcdbEntLast () функция отыскивает имя последнего примитива в базе данных. Последний примитив - наиболее недавно созданный основной примитив, так что acdbEntLast () может быть вызван, чтобы получить имя примитива, который только что был создан посредством запроса к acedCommand (), acedCmd (), или acdbEntMake ().

AcedEntSel () функция запрашивает пользователя AutoCAD выбирать примитив,  определяя точку на графическом экране; acedEntSel () возвращает, и имя примитива и значение указанной точки. Некоторые операции примитива требуют знания точки,  которой примитив был выбран. Примеры от набора существующих команд AutoCAD включают ПЕРЕРЫВ, ВЫРЕЗКУ, ПРОСТИРАЮТСЯ, и OSNAP.




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