Системные Переменные
Пара функций, 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);