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

       

Команда и Функциональные Списки Обращения


Наконец, acutBuildList () вызван в сочетании с acedCmd (), который берет список буфера результата, чтобы вызвать AutoCAD, командует, и с acedInvoke (), который вызывает внешнюю функцию от различного

ObjectARX-приложение.

Следующий типовой кодовый фрагмент вызывает acutBuildList () и acedInvoke () чтобы вызвать команду RESET, определенную приложением выборки gravity.c:

struct resbuf *callist, *results = NULL;

callist = acutBuildList(RTSTR, "c:reset", 0);

if (acedInvoke(callist, &results) == RTERROR)

acdbFail("Cannot run RESET -- GRAVITY program may not be loaded\n");

acutRelRb(callist);

acutRelRb(results);

Эксклюзивные типы для расширенных данных

Расширенные данные (xdata) могут включать двоичные данные, организованные в куски переменной длины. Они обработаны структурой ads_binary, следующим образом:

struct ads_binary { // Binary data chunk structure

short clen; // Length of chunk in bytes

char *buf; // Binary data

};

Значение clen поля должно быть в диапазоне от 0 до 127. Если приложение требует больше чем 127 байтов двоичных данных, это должно организовать данные в множественные куски.

С Выпуском 13, DXF представление таблицы идентификаторов может включать расширенные данные примитива. Xdata

возвращен как метка.

ОБРАТИТЕ ВНИМАНИЕ, что не имеется никакого механизма для возвращения двоичных данных к AutoLISP. Двоичные куски можно пропускать к другим внешним функциям посредством acedInvoke (), но только, когда они принадлежат группам (1004 в пределах расширенных данных примитива.

Вы не можете проходить, изолировал двоичные куски.

Xdata может также включать длинные целых числа. Ads_u_val объединение resval поля буфера результатов включает, и ads_binary и длинного члена для обработки расширенных данных примитива.

ОБРАТИТЕ ВНИМАНИЕ, что не имеется никакого механизма для возвращения длинного целого числа к AutoLISP. Длинные целых числа можно пропускать к другим внешним функциям посредством acedInvoke (), но только, когда они принадлежат группам (1071 в пределах расширенных данных примитива. В AutoLISP, 1071 группы поддержаны как реальные значения.



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