Строковые Преобразования
Функции acdbRToS () и acdbAngToS () преобразовывают значения, используемые в AutoCAD к строковым значениям, которые могут использоваться в выводе или как текстовые данные. AcdbRToS () функция преобразовывает реальное значение, и acdbAngToS () преобразовывает угол. Формат строки результата управляется значением переменных системы AutoCAD: модули и точность определены LUNITS и LUPREC для реальных (линейных) значений и AUNITS и AUPREC для угловых значений. Для и функционирует, DIMZIN dimensioning переменное средство управления, как продвижение и конечные нули написаны к строке результата. Дополнительные функции acdbDisToF () и acdbAngToF () преобразовывают строки назад в реальные значения (расстояния) или углы. Если пропускается строка, сгенерированная acdbRToS () или acdbAngToS (), acdbDisToF () и acdbAngToF () (соответственно), как гарантируют, возвратят имеющее силу значение.
Например, следующие показы фрагмента вызывают к acdbRToS () (. Проверка Ошибки не показывается, но должна быть включена в приложения.)
Ads_real x = 17.5;
char fmtval [12];
// Точность - 3-ий параметр: 4 места в первом
// Вызвать, 2 места в другие.
AcdbRToS
(x, 1, 4, fmtval); // Режим 1 = научный
AcutPrintf
(" Значение, отформатированное как %s\n ", fmtval);
AcdbRToS
(x, 2, 2, fmtval); // Режим 2 = десятичное число
AcutPrintf
(" Значение, отформатированное как %s\n ", fmtval);
AcdbRToS
(x, 3, 2, fmtval); // Режим 3 = разработка
AcutPrintf
(" Значение, отформатированное как %s\n ", fmtval);
AcdbRToS
(x, 4, 2, fmtval); // Режим 4 = архитектурный
AcutPrintf
(" Значение, отформатированное как %s\n ", fmtval);
AcdbRToS
(x, 5, 2, fmtval); // Режим 5 = дробный
AcutPrintf
(" Значение, отформатированное как %s\n ", fmtval);
Они вызывают (принятие, что DIMZIN переменная равняется 0) отображают следующий
Значения на экране текста AutoCAD.
Значение, отформатированное как 1.7500E+01
Значение, отформатированное как 17.50
Значение, отформатированное как 1‘ -5.50 І
Значение, отформатированное как 1’ -5 1/2 І
Значение, отформатированное как 17 1/2
Когда UNITMODE переменная системы установлена в 1, который определяет, что модули отображены как введено, строка, возвращенная acdbRToS () отличается для разработки (режим равняется 3), архитектурный (режим равняется 4), и дробный (режим равняется 5) модулям. Например, первые две линии предшествующего типового вывода были бы, тот же самый, но последние строки будет появляться следующим образом:
Значение, отформатированное как 1 ‘ 5.50 І
Значение, отформатированное как 1 ‘ 5-1/2 І
Значение, отформатированное как 17-1/2
AcdbDisToF () функциональные дополнения acdbRToS (), так следующее вызывают, которые используют строки, сгенерированные в предыдущих примерах, весь результат набора к тому же самому значению, 17.5. (Снова, примеры не показывают проверку ошибок.)
acdbDisToF("1.7500E+01", 1, &result); // 1 = scientific
acdbDisToF("17.50", 2, &result); // 2 = decimal
// Note the backslashes. Needed for inches.
acdbDisToF("1’-5.50\"", 3, &result); // 3 = engineering
acdbDisToF("1’-5 1/2\"", 4, &result); // 4 = architectural
acdbDisToF("17 1/2", 5, &result); // 5 = fractional
Следующие показы фрагмента вызывают к acdbAngToS () которые являются подобными предыдущему acdbRToS () примеры.
ads_real ang = 3.14159;
char fmtval[12];
// Precision is the 3rd argument: 0 places in the first
// call, 4 places in the next 3, 2 in the last.
acdbAngToS(ang, 0, 0, fmtval); // Mode 0 = degrees
acutPrintf("Angle formatted as %s\n", fmtval);
acdbAngToS(ang, 1, 4, fmtval); // Mode 1 = deg/min/sec
acutPrintf("Angle formatted as %s\n", fmtval);
acdbAngToS(ang, 2, 4, fmtval); // Mode 2 = grads
acutPrintf("Angle formatted as %s\n", fmtval);
acdbAngToS(ang, 3, 4, fmtval); // Mode 3 = radians
acutPrintf("Angle formatted as %s\n", fmtval);
acdbAngToS(ang, 4, 2, fmtval); // Mode 4 = surveyor’s
acutPrintf("Angle formatted as %s\n", fmtval);
Они вызывают ( все еще принятие что DIMZIN равняется 0) отображают следующие значения на экране текста AutoCAD.
Angle formatted as 180
Angle formatted as 180d0¢0²
Angle formatted as 200.0000g
Angle formatted as 3.1416r
Angle formatted as W
ОБРАТИТЕ ВНИМАНИЕ, что UNITMODE переменная системы также воздействует на строки, возвращенные acdbAngToS () когда это возвращает строку в модулях инспектора (режим равняется 4). Если UNITMODE равняется 0, возвращенная строка может включать пробелы (например, “ N 45d E ”); если UNITMODE равняется 1, строка не содержит никакие пробелы (например, “N45dE”).
AcdbAngToF() функциональные дополнения acdbAngToS (), так следующее вызывает весь набор параметр результата к тому же самому значению, 3.14159. (Это округлено до 3.1416 в примере, который использует радианы.)
AcdbAngToF ("180", 0, *result); // 0 = градусы
AcdbAngToF ("180d0" 0 \ "", 1, *result); // 1 = deg/min/sec
AcdbAngToF ("200.0000g", 2, *result); // 2 = grads
AcdbAngToF ("3.1416r", 3, *result); // 3 = радианы
AcdbAngToF ("W", 4, *result); // 4 = инспектор
ОБРАТИТЕ ВНИМАНИЕ, когда Вы имеете строку, которая определяет угол в градусах{*степенях*}, минутах, и секундах, Вы должны использовать наклонную черту влево (\), чтобы выйти из символа секунд (І) так, чтобы, казалось, не было конца строки. Второй из предшествующего acdbAngToF () примеры демонстрируют это.