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

       

Системные Переменные


Пара функций, acedGetVar () и acedSetVar (), дает возможность ObjectARX-приложениям осматривать и изменить значение переменных системы AutoCAD.

Эти функции используют строку, чтобы определить имя переменной (или в верхнем регистре или нижнем регистре), и (одиночном) буфере результатов для типа и значения переменной.

Буфер результатов требуется в этом случае, потому что переменные системы AutoCAD входят в разнообразие типов: целые числа, реальные значения, строки, 2-ые точки, и трехмерные точки.

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

struct resbuf rb, rb1;

acedGetVar("FILLETRAD", &rb);

rb1.restype = RTREAL;

rb1.resval.rreal = 1.0;

if (rb.resval.rreal < 1.0)

if (acedSetVar("FILLETRAD", &rb1) != RTNORM)

return BAD; // Setvar failed.

В этом примере, буфер результатов распределен как динамическая локальная переменная, когда это объявлено в приложении. Приложение должно явно не управлять использованием памяти буфера, поскольку это делает с динамически распределенными буферами.

Если переменная системы AutoCAD - строковый тип, acedGetVar () распределяет пространство для строки. Приложение ответствено за освобождение этого пространства{*пробела*}. Вы можете делать это,  вызывая функцию стандартной библиотеки для C свободный (), как показано в следующем примере:

acedGetVar("TEXTSTYLE", &rb);

if (rb.resval.rstring != NULL)

// Release memory acquired for string:

free(rb.resval.rstring);



Содержание раздела