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



         

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


rt = RT3DPOINT;

else if ((eb->restype >= 38) && (eb->restype <= 59))

rt = RTREAL ;

else if ((eb->restype >= 60) && (eb->restype <= 79))

rt = RTSHORT ;

else if ((eb->restype >= 210) && (eb->restype <= 239))

rt = RT3DPOINT ;

else if (eb->restype < 0)

// Entity name (or other sentinel)

rt = eb->restype;

else

rt = RTNONE;

switch (rt) {

case RTSHORT:

acutPrintf("(%d . %d)\n", eb->restype,

eb->resval.rint);

break;

case RTREAL:

acutPrintf("(%d . %0.3f)\n", eb->restype,

eb->resval.rreal);

break;

case RTSTR:

acutPrintf("(%d . \"%s\")\n", eb->restype,

eb->resval.rstring);

break;

case RT3DPOINT:

acutPrintf("(%d . %0.3f %0.3f %0.3f)\n",

eb->restype,

eb->resval.rpoint[X], eb->resval.rpoint[Y],

eb->resval.rpoint[Z]);

break;

case RTNONE:

acutPrintf("(%d . Unknown type)\n", eb->restype);

break;

case -1:

case -2:

// First block entity

acutPrintf("(%d . <Entity name: %8lx>)\n", eb->restype, eb->resval.rlname[0]);

}

return eb->restype;

}

В следующем примере, следующие (заданные по умолчанию) условия{*состояния*} обращаются к текущему рисунку.

§         текущий уровень - 0

§         linetype - НЕПРЕРЫВЕН

§         текущее повышение - 0

§         маркеры примитива заблокированы

Также, пользователь рисовал линию со следующей последовательностью команд:

Command: line

From point: 1,2

To point: 6,6

To point: ENTER

Тогда запрос к getlast () печатал бы следующий (значение имени изменится).

Результат выполнения acdbEntGet () для последнего примитива:

(-1 . <Entity name: 60000014>)

(0 . "LINE")

(8 . "0")

(10 1.0 2.0 0.0)

(11 6.0 6.0 0.0)

(210 0.0 0.0 1.0)




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