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

       

Списки параметров в AutoLISP и C


Много встроенных функций AutoLISP принимают произвольное число параметров. Это естественно для среды LISP, но требовать, чтобы списки параметров переменной длины для каждой сопоставимой функции в ObjectARX библиотеке наложили бы бесполезную сложность. Чтобы избегать этой проблемы, простое правило применялось к библиотеке: функция ObjectARX, которая является аналогом функции AutoLISP, берет все параметры, которые функция AutoLISP берет. Где параметр необязательный в AutoLISP, в ObjectARX библиотеке специальное значение, обычно нулевой указатель, 0, или 1, можно проходить, чтобы указать, что опция не требуется.

Несколько ObjectARX библиотечные функции - исключения к этому правилу. AcutPrintf () функция подобен стандартной библиотеке для C printf () функция. Подобно стандартной версии, это осуществлено как функция variadic; то есть требуется список параметров переменной длины. AcedCommand () и acedCmd () функции более сложен. Функция команды AutoLISP не только принимает переменное число параметров различных типов, но это также принимает типы, определенные особенно для AutoCAD, типа наборов выбора и точек. Достигать той же самой гибкости в ObjectARX, acedCommand () берет список параметров переменной длины и кроме того берет параметры, чтобы определить тип значений, которые пропускают; acedCmd () требует подобного набора значений, но проходит как список связей. Поэтому, acedCommand () и acedCmd () параметры не соответствуют точно функции команды AutoLISP. Наконец, AutoLISP entget функция имеет необязательный параметр для etrieving расширенных данных. В ObjectARX, acdbEntGet () функция не имеет соответствующего параметра. Вместо этого, имеется дополнительная функция, acdbEntGetX (), если определенно для поиска расширенных данных.



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