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


Списки AutoLISP


AcutBuildList() функция вызвана в сочетании и с acedRetList(), который возвращает структуру списка AutoLISP.

Следующий типовой кодовый фрагмент передает список четырех точек:

struct resbuf *res_list;

ads_point ptarray[4];

// Initialize the point values here.

.

.

.

res_list = acutBuildList(

RT3DPOINT, ptarray[0],

RT3DPOINT, ptarray[1],

RT3DPOINT, ptarray[2],

RT3DPOINT, ptarray[3], 0);

if (res_list == NULL) {

acdbFail("Couldn’t create list\n");

return BAD;

}

acedRetList(res_list);

acutRelRb(res_list);

 

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

ОБРАТИТЕ ВНИМАНИЕ список, возвращенный AutoLISP acedRetList () может включать только следующие коды типа результата: RTREAL, RTPOINT, RTSHORT, RTANG, RTSTR, RTENAME, RTPICKS, RTORINT, RT3DPOINT, RTLB, RTLE, RTDOTE, RTNIL, и RTT. (Хотя имеется RTNIL код возврата, если Вы возвращаете только список ноля, Вы можете вызывать acedRetNil ()). Это может содержать типы результата RTLONG, если список возвращается другому ObjectARX-приложению.

Использование кодов типа строительства списка просто. В acutBuildList () запросу, вложенный список предшествует тип результата, закодируют RTLB (для Списка, начинают) и сопровождается типом результата, закодируют RTLE (для Списка Конец). Точечная пара может также быть создана. Точечные пары также начинаются с RTLB и конца с RTLE; точка обозначена типом результата, закодируют RTDOTE, и появляется между двумя членами пары.

 

ПРИМЕЧАНИЕ Это – изменение от более ранних версий. Приложения, которые не получают точечную пару от AutoLISP больше, должны изменить формат точечной пары перед возвращением этого с acedRetList () (. Более ранний порядок, с RTDOTE в конец, все еще поддерживается.)




Начало  Назад  Вперед



Книжный магазин