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



         

Манипуляция наборами выборов - часть 2


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

AcedSSDel (fname, ourset);

Если имеются больше чем один примитив в рисунке (то есть если fname и lname не равны), выбор устанавливает ourset, теперь содержит только lname, последний{*прошлый*} примитив в рисунке.

Функция acedSSLength () возвращает число примитивов в наборе выборов, и acedSSMemb () испытания,является ли специфический примитив членом набора выборов. Наконец, функция acedSSName () возвращает имя специфического примитива в наборе выборов, используя индекс в набор (примитивы в наборе выборов пронумерованы от 0).

ОБРАТИТЕ ВНИМАНИЕ, поскольку наборы выбора могут быть весьма большие, len параметр, возвращенный acedSSLength () должен быть объявлен как длинное целое число. Я параметр, используемый как индекс в звонит к acedSSName () должен также быть длинное целое число. (В этом контексте, стандартные компиляторы C правильно преобразуют простое целое число.)

Следующий типовой код показывает несколько, вызывает к acedSSName ().

ads_name sset, ent1, ent4, lastent;

long ilast;

// Create the selection set (by prompting the user).

acedSSGet(NULL, NULL, NULL, NULL, sset);

// Get the name of first entity in sset.

if (acedSSName(sset, 0L, ent1) != RTNORM)

return BAD;

// Get the name of the fourth entity in sset.

if (acedSSName(sset, 3L, ent4) != RTNORM) {

acdbFail("Need to select at least four entities\n");

return BAD;

}

// Find the index of the last entity in sset.

if (acedSSLength(sset, &ilast) != RTNORM)

return BAD;

// Get the name of the last entity in sset.

if (acedSSName(sset, ilast-1, lastent) != RTNORM)

return BAD;

Преобразование Наборов Выбора

Функция acedXformSS () преобразовывает выбор, установленный,  применяя матрицу преобразования (типа ads_matrix) к примитивам в наборе. Это обеспечивает эффективную альтернативу к вызову ВРАЩАЮЩЕГОСЯ, МАСШТАБУ, ЗЕРКАЛУ, или командам ПЕРЕМЕЩЕНИЯ с acedCommand () (или acedCmd ()) или к изменению{*замене*} значений в базе данных с acdbEntMod (). Набор выборов может быть получен способом из обычных путей. Матрица должна делать однородное масштабирование. То есть элементы в векторе масштабирования S X S Y S Z должны весь быть равными; в матричном примечании, М. 00 М. 11 М. 22.




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